1.4.0 Change Notes
Geometry
Summary
- New class
CurveFactoryto hold future static methods that construct multi-component curves.- First method: CurveFactory.createFilletsInLineString
PolyfaceBuilderstatic method to build xy triangulation of array of points.PolyfaceClipstatic 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
point0topointandpoint1topoint. - 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 ofCurveLocationDetailPairin 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
hullPointsin 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)
ClipPlaneandConvexClipPlaneSetsupportmyClipPlane.convexPolygonSplitInsideOutsideGrowableArrays(xyz: GrowableXYZArray, xyzIn: GrowableXYZArray, xyzOut: GrowableXYZArray, altitudeRange: Range1d): void;- Split a polygon across a plane; optimized for
GrowableXYZArraystorage.
- 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
resultparameter
- (preexisting) added optional
Ray3dinterval = myRay.intersectionWithRange3d(range: Range3d, result?: Range1d): Range1d- return fractions (along the ray
myRay) where themyRayenters and exits aRange3d, or nullRange1dif 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: 11 June, 2025
Found something wrong, missing, or unclear on this page? Raise an issue in our repo.