CurveCollection Class

A CurveCollection is an abstract (non-instantiable) class for various sets of curves with particular structures:

  • CurveChain is a (non-instantiable) intermediate class for a sequence of CurvePrimitive joining head-to-tail. The two instantiable forms of CurveChain are
    • Path - A chain not required to close, and not enclosing a planar area
    • Loop - A chain required to close from last to first so that a planar area is enclosed.
  • ParityRegion -- a collection of coplanar Loops, with "in/out" classification by parity rules
  • UnionRegion -- a collection of coplanar Loops, with "in/out" classification by union rules
  • BagOfCurves -- a collection of AnyCurve with no implied structure.

see Curve Collections learning article.

Extends

Extended by

Methods

Name Description
constructor(): CurveCollection    
announceToCurveProcessor(processor: RecursiveCurveProcessor): void Abstract Support method for ICurvePrimitive ...  
checkForNonLinearPrimitives(): boolean return true if the curve collection has any primitives other than LineSegment3d and LineString3d  
clone(): CurveCollection Return a deep copy.  
cloneEmptyPeer(): CurveCollection Abstract clone an empty collection.  
cloneStroked(options?: StrokeOptions): AnyCurve Abstract Return a CurveCollection with the same structure but all curves replaced by strokes.  
cloneTransformed(transform: Transform): undefined | CurveCollection Create a deep copy of transformed curves.  
cloneWithExpandedLineStrings(): CurveCollection Create a deep copy with all linestrings expanded to multiple LineSegment3d.  
closestPoint(spacePoint: Point3d): undefined | CurveLocationDetail Return the closest point on the contained curves  
collectCurvePrimitives(collectorArray?: CurvePrimitive[], smallestPossiblePrimitives: boolean = false, explodeLineStrings: boolean = false): CurvePrimitive[] Return an array containing only the curve primitives.  
dgnBoundaryType(): number Abstract Return the boundary type of a corresponding MicroStation CurveVector.  
extendRange(rangeToExtend: Range3d, transform?: Transform): void Extend (increase) rangeToExtend as needed to include these curves (optionally transformed)  
getChild(i: number): undefined | AnyCurve Abstract Return a child identified by by index  
maxGap(): number return the max gap between adjacent primitives in Path and Loop collections.  
projectedParameterRange(ray: Ray3d | Vector3d, lowHigh?: Range1d): undefined | Range1d Project instance geometry (via dispatch) onto the given ray, and return the extreme fractional parameters of projection.  
sumLengths(): number Return the sum of the lengths of all contained curves.  
tryAddChild(child: undefined | AnyCurve): boolean Abstract Try to add a child.  
tryTransformInPlace(transform: Transform): boolean Apply transform recursively to children  
createCurveLocationDetailOnAnyCurvePrimitive(source: undefined | GeometryQuery, fraction: number = 0.5): undefined | CurveLocationDetail Static * Find any curve primitive in the source.  

Inherited methods

Name Inherited from Description
dispatchToGeometryHandler(handler: GeometryHandler): any Abstract GeometryQuery * "double dispatch" call pattern.
isAlmostEqual(other: GeometryQuery): boolean GeometryQuery test for exact structure and nearly identical geometry.
isSameGeometryClass(other: GeometryQuery): boolean Abstract GeometryQuery test if (other instanceof this.Type).
range(transform?: Transform, result?: Range3d): Range3d GeometryQuery return the range of the entire (tree) GeometryQuery
tryTranslateInPlace(dx: number, dy: number = 0.0, dz: number = 0.0): boolean GeometryQuery try to move the geometry by dx,dy,dz
areAlmostEqual(a: undefined | GeometryQuery, b: undefined | GeometryQuery): boolean Static GeometryQuery apply instance method isAlmostEqual if both are defined.

Properties

Name Type Description
curveCollectionType AbstractReadonly CurveCollectionType Type discriminator.  
geometryCategory Readonly "curveCollection" String name for schema properties  
isAnyRegionType Accessor ReadOnly boolean Return true for planar region types:  
isClosedPath Accessor ReadOnly boolean Return true for a single-loop planar region type, i.e.  
isInner boolean Flag for inner loop status.  
isOpenPath Accessor ReadOnly boolean Return true for a Path, i.e.  

Inherited properties

Name Type Inherited from Description
children Accessor ReadOnly undefined | GeometryQuery[] GeometryQuery return GeometryQuery children for recursive queries.

* leaf classes do not need to implement.

Defined in

Last Updated: 20 June, 2023