1.4.0 Change Notes
Geometry
Summary
- New class
CurveFactory
to hold future static methods that construct multi-component curves.- First method: CurveFactory.createFilletsInLineString
PolyfaceBuilder
static method to build xy triangulation of array of points.PolyfaceClip
static method to compute cut-fill between 2.5D meshes.
Details
Arc3d
- (static)
Arc3d.createFilletArc(point0: Point3d, point1: Point3d, point2: Point3d, radius: number): ArcBlendData;
- Create (if possible) a single arc that is a fillet between line segment from
point0
topoint
andpoint1
topoint
. - Annotated return with fractional position of tangent, fractions from middle point outward along segments.
point1
(middle points) is commonly called the PI (point of inflection) for the linestring being filleted.- See new support interface
ArcBlendData
- Create (if possible) a single arc that is a fillet between line segment from
- (static)
CurveFactory
- (static)
CurveFactory.createFilletsInLineString(points: LineString3d | IndexedXYZCollection | Point3d[], radius: number, allowBackupAlongEdge?: boolean): Path | undefined;
- Create a path with alternating lines and tangent arcs.
- (static)
CurveCollection
- (static)
static createCurveLocationDetailOnAnyCurvePrimitive(source: GeometryQuery | undefined, fraction?: number): CurveLocationDetail | undefined;
- Find any curve primitive in the collection. Evaluate it at a fractional position.
- (static)
CurveCurve
- (static)
CurveCurve.intersectionXYPairs(geometryA: GeometryQuery, extendA: boolean, geometryB: GeometryQuery, extendB: boolean): CurveLocationDetailPair[]
- Same as existing (deprecated)
CurveCurve.intersectionXY
, but bundles pairs ofCurveLocationDetailPair
in single array more useful for processing.
- Same as existing (deprecated)
- (static)
Point3dArray
- (static)
Point3dArray.static computeConvexHullXY(points: Point3d[], hullPoints: Point3d[], insidePoints: Point3d[], addClosurePoint?: boolean): void;
- Return
hullPoints
in CCW order around the hull - Return all non-hull points in
insidePoints
- Return
- (static)
PolyfaceBuilder
- (static)
PolyfaceBuilder.pointsToTriangulatedPolyface(points: Point3d[]): IndexedPolyface | undefined;
- Return triangulated mesh within the convex hull around the points.
- (static)
PolyfaceClip
- (static)
ClipPlane
andConvexClipPlaneSet
supportmyClipPlane.convexPolygonSplitInsideOutsideGrowableArrays(xyz: GrowableXYZArray, xyzIn: GrowableXYZArray, xyzOut: GrowableXYZArray, altitudeRange: Range1d): void;
- Split a polygon across a plane; optimized for
GrowableXYZArray
storage.
- Split a polygon across a plane; optimized for
- (static)
ClipPlane.createNormalAndPointXYZXYZ(normalX: number, normalY: number, normalZ: number, originX: number, originY: number, originZ: number, invisible?: boolean, interior?: boolean, result?: ClipPlane): ClipPlane | undefined;
- (preexisting) added optional
result
parameter
- (preexisting) added optional
Ray3d
interval = myRay.intersectionWithRange3d(range: Range3d, result?: Range1d): Range1d
- return fractions (along the ray
myRay
) where themyRay
enters and exits aRange3d
, or nullRange1d
if no in intersection.
- return fractions (along the ray
Enhancements to IModelDb.exportGraphics
- IModelDb.exportGraphics and associated functions are now out of beta and tagged as public.
- Added ExportGraphicsOptions.minBRepFeatureSize to improve performance when exporting graphics for breps.
Authorization Changes
Changes to Agent authorization
OidcAgentClient now implements IAuthorizationClient. The following methods are now marked deprecated -
The access token is now stored in the client, and can be accessed by calling AgentAuthorizationClient.getAccessToken. This method validates and refreshes the token as necessary.
Swapping backend authorization to use agents
The API now allows swapping the authorization client used for backend operations like downloading a briefcase or change sets of an iModel. Set IModelHost.authorizationClient to the required authorization client - e.g., an instance of OidcAgentClient.
Last Updated: 15 June, 2021