@itwin/core-geometry 5.9.0-dev.1 → 5.9.0-dev.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -1
- package/lib/cjs/Geometry.d.ts +10 -7
- package/lib/cjs/Geometry.d.ts.map +1 -1
- package/lib/cjs/Geometry.js +8 -6
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/curve/Arc3d.d.ts +7 -0
- package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
- package/lib/cjs/curve/Arc3d.js +18 -6
- package/lib/cjs/curve/Arc3d.js.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +11 -2
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js +25 -15
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.d.ts +15 -6
- package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCollection.js +15 -6
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveCurve.d.ts +1 -1
- package/lib/cjs/curve/CurveCurve.d.ts.map +1 -1
- package/lib/cjs/curve/CurveCurve.js +2 -1
- package/lib/cjs/curve/CurveCurve.js.map +1 -1
- package/lib/cjs/curve/CurveFactory.d.ts +73 -1
- package/lib/cjs/curve/CurveFactory.d.ts.map +1 -1
- package/lib/cjs/curve/CurveFactory.js +228 -1
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.d.ts +21 -0
- package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.js +59 -0
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.d.ts +13 -12
- package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.js +12 -11
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
- package/lib/cjs/curve/RegionOps.d.ts +17 -4
- package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOps.js +114 -18
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts +3 -11
- package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js +1 -91
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/cjs/curve/StrokeOptions.d.ts +13 -6
- package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -1
- package/lib/cjs/curve/StrokeOptions.js +13 -6
- package/lib/cjs/curve/StrokeOptions.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts +1 -1
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js +1 -2
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.d.ts +1 -1
- package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +1 -2
- package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js +1 -2
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +113 -103
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +368 -337
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts +2 -3
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +20 -32
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts +1 -2
- package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.js +9 -3
- package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts +1 -2
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +10 -4
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/cjs/geometry3d/AngleSweep.d.ts +3 -1
- package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -1
- package/lib/cjs/geometry3d/AngleSweep.js +6 -2
- package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
- package/lib/cjs/geometry3d/GeometryHandler.d.ts +33 -4
- package/lib/cjs/geometry3d/GeometryHandler.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GeometryHandler.js +79 -1
- package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.d.ts +9 -6
- package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.js +20 -10
- package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts +9 -6
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js +20 -10
- package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.d.ts +4 -4
- package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.js +5 -4
- package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/numerics/BezierPolynomials.d.ts.map +1 -1
- package/lib/cjs/numerics/BezierPolynomials.js +1 -1
- package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
- package/lib/cjs/numerics/Newton.d.ts +44 -13
- package/lib/cjs/numerics/Newton.d.ts.map +1 -1
- package/lib/cjs/numerics/Newton.js +73 -23
- package/lib/cjs/numerics/Newton.js.map +1 -1
- package/lib/cjs/numerics/Polynomials.d.ts +1 -1
- package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
- package/lib/cjs/numerics/Polynomials.js +21 -9
- package/lib/cjs/numerics/Polynomials.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.d.ts +14 -14
- package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.js +14 -14
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/cjs/serialization/BGFBReader.js +2 -2
- package/lib/cjs/serialization/BGFBReader.js.map +1 -1
- package/lib/cjs/topology/Graph.d.ts +15 -15
- package/lib/cjs/topology/Graph.d.ts.map +1 -1
- package/lib/cjs/topology/Graph.js +1 -1
- package/lib/cjs/topology/Graph.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts +3 -3
- package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/esm/Geometry.d.ts +10 -7
- package/lib/esm/Geometry.d.ts.map +1 -1
- package/lib/esm/Geometry.js +8 -6
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/curve/Arc3d.d.ts +7 -0
- package/lib/esm/curve/Arc3d.d.ts.map +1 -1
- package/lib/esm/curve/Arc3d.js +18 -6
- package/lib/esm/curve/Arc3d.js.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +11 -2
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.js +25 -15
- package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/esm/curve/CurveCollection.d.ts +15 -6
- package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
- package/lib/esm/curve/CurveCollection.js +15 -6
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveCurve.d.ts +1 -1
- package/lib/esm/curve/CurveCurve.d.ts.map +1 -1
- package/lib/esm/curve/CurveCurve.js +2 -1
- package/lib/esm/curve/CurveCurve.js.map +1 -1
- package/lib/esm/curve/CurveFactory.d.ts +73 -1
- package/lib/esm/curve/CurveFactory.d.ts.map +1 -1
- package/lib/esm/curve/CurveFactory.js +228 -1
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.d.ts +21 -0
- package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.js +59 -0
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.d.ts +13 -12
- package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -1
- package/lib/esm/curve/CurvePrimitive.js +12 -11
- package/lib/esm/curve/CurvePrimitive.js.map +1 -1
- package/lib/esm/curve/RegionOps.d.ts +17 -4
- package/lib/esm/curve/RegionOps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOps.js +116 -20
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts +3 -11
- package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js +2 -92
- package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/esm/curve/StrokeOptions.d.ts +13 -6
- package/lib/esm/curve/StrokeOptions.d.ts.map +1 -1
- package/lib/esm/curve/StrokeOptions.js +13 -6
- package/lib/esm/curve/StrokeOptions.js.map +1 -1
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts +1 -1
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js +1 -2
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.d.ts +1 -1
- package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js +1 -2
- package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js +1 -2
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +113 -103
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +370 -339
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts +2 -3
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +20 -32
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.d.ts +1 -2
- package/lib/esm/curve/spiral/DirectSpiral3d.d.ts.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.js +9 -3
- package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts +1 -2
- package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js +10 -4
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/esm/geometry3d/AngleSweep.d.ts +3 -1
- package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -1
- package/lib/esm/geometry3d/AngleSweep.js +6 -2
- package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
- package/lib/esm/geometry3d/GeometryHandler.d.ts +33 -4
- package/lib/esm/geometry3d/GeometryHandler.d.ts.map +1 -1
- package/lib/esm/geometry3d/GeometryHandler.js +77 -0
- package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.d.ts +9 -6
- package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.js +20 -10
- package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts +9 -6
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js +20 -10
- package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.d.ts +4 -4
- package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.js +5 -4
- package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/numerics/BezierPolynomials.d.ts.map +1 -1
- package/lib/esm/numerics/BezierPolynomials.js +1 -1
- package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
- package/lib/esm/numerics/Newton.d.ts +44 -13
- package/lib/esm/numerics/Newton.d.ts.map +1 -1
- package/lib/esm/numerics/Newton.js +71 -22
- package/lib/esm/numerics/Newton.js.map +1 -1
- package/lib/esm/numerics/Polynomials.d.ts +1 -1
- package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
- package/lib/esm/numerics/Polynomials.js +21 -9
- package/lib/esm/numerics/Polynomials.js.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.d.ts +14 -14
- package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.js +14 -14
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/esm/serialization/BGFBReader.js +2 -2
- package/lib/esm/serialization/BGFBReader.js.map +1 -1
- package/lib/esm/topology/Graph.d.ts +15 -15
- package/lib/esm/topology/Graph.d.ts.map +1 -1
- package/lib/esm/topology/Graph.js +1 -1
- package/lib/esm/topology/Graph.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.d.ts +3 -3
- package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/package.json +3 -3
- package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts +0 -23
- package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts.map +0 -1
- package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js +0 -37
- package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +0 -1
- package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts +0 -23
- package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.d.ts.map +0 -1
- package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js +0 -33
- package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +0 -1
|
@@ -730,8 +730,8 @@ class DgnSpiralTypeQueries {
|
|
|
730
730
|
[12, "biquadratic"],
|
|
731
731
|
[13, "cosine"],
|
|
732
732
|
[14, "sine"],
|
|
733
|
-
[15, "Viennese"],
|
|
734
|
-
[16, "weightedViennese"],
|
|
733
|
+
[15, "Viennese"], // not supported
|
|
734
|
+
[16, "weightedViennese"], // not supported
|
|
735
735
|
[50, "WesternAustralian"],
|
|
736
736
|
[51, "Czech"],
|
|
737
737
|
[52, "AustralianRailCorp"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BGFBReader.js","sourceRoot":"","sources":["../../../src/serialization/BGFBReader.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { flatbuffers } from \"flatbuffers\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { AkimaCurve3d, AkimaCurve3dOptions } from \"../bspline/AkimaCurve3d\";\nimport { BSplineCurve3d } from \"../bspline/BSplineCurve\";\nimport { BSplineCurve3dH } from \"../bspline/BSplineCurve3dH\";\nimport { BSplineSurface3d, BSplineSurface3dH, UVSelect } from \"../bspline/BSplineSurface\";\nimport { InterpolationCurve3d, InterpolationCurve3dOptions } from \"../bspline/InterpolationCurve3d\";\nimport { Arc3d } from \"../curve/Arc3d\";\nimport { BagOfCurves, CurveCollection } from \"../curve/CurveCollection\";\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\nimport { LineSegment3d } from \"../curve/LineSegment3d\";\nimport { LineString3d } from \"../curve/LineString3d\";\nimport { Loop } from \"../curve/Loop\";\nimport { ParityRegion } from \"../curve/ParityRegion\";\nimport { Path } from \"../curve/Path\";\nimport { PointString3d } from \"../curve/PointString3d\";\nimport { DirectSpiral3d } from \"../curve/spiral/DirectSpiral3d\";\nimport { IntegratedSpiral3d } from \"../curve/spiral/IntegratedSpiral3d\";\nimport { TransitionSpiral3d } from \"../curve/spiral/TransitionSpiral3d\";\nimport { UnionRegion } from \"../curve/UnionRegion\";\nimport { Geometry } from \"../Geometry\";\nimport { Angle } from \"../geometry3d/Angle\";\nimport { AngleSweep } from \"../geometry3d/AngleSweep\";\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { NumberArray, Point3dArray } from \"../geometry3d/PointHelpers\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { Segment1d } from \"../geometry3d/Segment1d\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { AuxChannel, AuxChannelData, PolyfaceAuxData } from \"../polyface/AuxData\";\nimport { IndexedPolyface } from \"../polyface/Polyface\";\nimport { TaggedNumericData } from \"../polyface/TaggedNumericData\";\nimport { Box } from \"../solid/Box\";\nimport { Cone } from \"../solid/Cone\";\nimport { LinearSweep } from \"../solid/LinearSweep\";\nimport { RotationalSweep } from \"../solid/RotationalSweep\";\nimport { RuledSweep } from \"../solid/RuledSweep\";\nimport { SolidPrimitive } from \"../solid/SolidPrimitive\";\nimport { Sphere } from \"../solid/Sphere\";\nimport { TorusPipe } from \"../solid/TorusPipe\";\nimport { BGFBAccessors } from \"./BGFBAccessors\";\nimport { SerializationHelpers } from \"./SerializationHelpers\";\n\n/** * Context to write to a flatbuffer blob.\n * * This class is internal.\n * * Public access is through BentleyGeometryFlatBuffer.geometryToBytes()\n * @internal\n */\nexport class BGFBReader {\n public constructor() {\n }\n /**\n * Extract a bspline surface\n * @param variant read position in the flat buffer.\n */\n public readBSplineSurfaceFromVariant(variantHeader: BGFBAccessors.VariantGeometry): BSplineSurface3d | BSplineSurface3dH | undefined {\n let newSurface: BSplineSurface3d | BSplineSurface3dH | undefined;\n const geometryType = variantHeader.geometryType();\n if (geometryType === BGFBAccessors.VariantGeometryUnion.tagBsplineSurface) {\n const bsurfHeader = variantHeader.geometry(new BGFBAccessors.BsplineSurface());\n if (bsurfHeader !== null) {\n const orderU = bsurfHeader.orderU();\n const orderV = bsurfHeader.orderV();\n const numPolesU = bsurfHeader.numPolesU();\n const numPolesV = bsurfHeader.numPolesV();\n const xyzArray = bsurfHeader.polesArray();\n const knotArrayU = bsurfHeader.knotsUArray();\n const knotArrayV = bsurfHeader.knotsVArray();\n const weightArray = bsurfHeader.weightsArray();\n const closedU = bsurfHeader.closedU();\n const closedV = bsurfHeader.closedV();\n\n if (xyzArray !== null && knotArrayU !== null && knotArrayV !== null) {\n const myData = SerializationHelpers.createBSplineSurfaceData(xyzArray, 3, knotArrayU, numPolesU, orderU, knotArrayV, numPolesV, orderV);\n if (weightArray !== null)\n myData.weights = weightArray;\n if (closedU)\n myData.uParams.closed = true;\n if (closedV)\n myData.vParams.closed = true;\n\n if (SerializationHelpers.Import.prepareBSplineSurfaceData(myData, { jsonPoles: false })) {\n if (undefined === myData.weights)\n newSurface = BSplineSurface3d.create(myData.poles as Float64Array, myData.uParams.numPoles, myData.uParams.order, myData.uParams.knots, myData.vParams.numPoles, myData.vParams.order, myData.vParams.knots);\n else\n newSurface = BSplineSurface3dH.create(myData.poles as Float64Array, myData.weights as Float64Array, myData.uParams.numPoles, myData.uParams.order, myData.uParams.knots, myData.vParams.numPoles, myData.vParams.order, myData.vParams.knots);\n\n if (undefined !== newSurface) {\n if (undefined !== myData.uParams.wrapMode)\n newSurface.setWrappable(UVSelect.uDirection, myData.uParams.wrapMode);\n if (undefined !== myData.vParams.wrapMode)\n newSurface.setWrappable(UVSelect.vDirection, myData.vParams.wrapMode);\n }\n }\n }\n }\n }\n return newSurface;\n }\n\n /**\n * Extract an interpolating curve\n * @param header read position in the flat buffer.\n */\n public readInterpolationCurve3d(header: BGFBAccessors.InterpolationCurve): InterpolationCurve3d | undefined {\n const xyzArray = header.fitPointsArray();\n if (xyzArray instanceof Float64Array) {\n const knots = header.knotsArray();\n const options = new InterpolationCurve3dOptions(Point3dArray.clonePoint3dArray(xyzArray), knots ? NumberArray.create(knots) : undefined);\n const startTangent = header.startTangent();\n const endTangent = header.endTangent();\n options.captureOptionalProps(\n header.order(),\n header.closed(),\n header.isChordLenKnots(),\n header.isColinearTangents(),\n header.isChordLenTangents(),\n header.isNaturalTangents(),\n startTangent !== null ? Vector3d.create(startTangent.x(), startTangent.y(), startTangent.z()) : undefined,\n endTangent !== null ? Vector3d.create(endTangent.x(), endTangent.y(), endTangent.z()) : undefined);\n return InterpolationCurve3d.createCapture(options);\n }\n return undefined;\n }\n\n /**\n * Extract an akima curve\n * @param header read position in the flat buffer.\n */\n public readAkimaCurve3d(header: BGFBAccessors.AkimaCurve): AkimaCurve3d | undefined {\n const xyzArray = header.pointsArray();\n if (xyzArray instanceof Float64Array) {\n const options = new AkimaCurve3dOptions(Point3dArray.clonePoint3dArray(xyzArray));\n return AkimaCurve3d.createCapture(options);\n }\n return undefined;\n }\n /**\n * Extract a bspline curve\n * @param variant read position in the flat buffer.\n */\n public readBSplineCurve(header: BGFBAccessors.BsplineCurve): BSplineCurve3d | BSplineCurve3dH | undefined {\n let newCurve: BSplineCurve3d | BSplineCurve3dH | undefined;\n const order = header.order();\n const xyzArray = header.polesArray();\n const knots = header.knotsArray();\n const weightsArray = header.weightsArray();\n const closed = header.closed();\n\n if (xyzArray !== null && knots !== null) {\n const numPoles = Math.floor(xyzArray.length / 3);\n const myData = SerializationHelpers.createBSplineCurveData(xyzArray, 3, knots, numPoles, order);\n if (closed)\n myData.params.closed = true;\n\n if (weightsArray === null) {\n if (SerializationHelpers.Import.prepareBSplineCurveData(myData))\n newCurve = BSplineCurve3d.create(myData.poles, myData.params.knots, myData.params.order);\n } else {\n myData.weights = weightsArray;\n if (SerializationHelpers.Import.prepareBSplineCurveData(myData, { jsonPoles: false }))\n newCurve = BSplineCurve3dH.create({ xyz: myData.poles as Float64Array, weights: myData.weights }, myData.params.knots, myData.params.order);\n }\n\n if (undefined !== newCurve) {\n if (undefined !== myData.params.wrapMode)\n newCurve.setWrappable(myData.params.wrapMode);\n }\n }\n return newCurve;\n }\n /**\n * Extract a bspline curve\n * @param variant read position in the flat buffer.\n */\n public readTransitionSpiral(header: BGFBAccessors.TransitionSpiral): TransitionSpiral3d | undefined {\n const detailHeader = header.detail();\n if (detailHeader) {\n const directDetailHeader = header.directDetail(); // unpersisted but repopulated\n // const extraDataArray = header.extraDataArray(); // unpersisted and ignored\n const spiralTypeName = DgnSpiralTypeQueries.typeCodeToString(detailHeader.spiralType());\n if (!spiralTypeName)\n return undefined;\n const curvature0 = detailHeader.curvature0();\n const curvature1 = detailHeader.curvature1();\n const bearing0Radians = detailHeader.bearing0Radians();\n const bearing1Radians = detailHeader.bearing1Radians();\n const fbTransform = detailHeader.transform();\n const localToWorld = fbTransform ? Transform.createRowValues(\n fbTransform.axx(), fbTransform.axy(), fbTransform.axz(), fbTransform.axw(),\n fbTransform.ayx(), fbTransform.ayy(), fbTransform.ayz(), fbTransform.ayw(),\n fbTransform.azx(), fbTransform.azy(), fbTransform.azz(), fbTransform.azw()) :\n Transform.createIdentity();\n\n const activeFractionInterval = Segment1d.create(detailHeader.fractionA(),\n detailHeader.fractionB());\n if (!directDetailHeader) {\n const integratedSpiral = IntegratedSpiral3d.createRadiusRadiusBearingBearing(\n Segment1d.create(IntegratedSpiral3d.curvatureToRadius(curvature0), IntegratedSpiral3d.curvatureToRadius(curvature1)),\n AngleSweep.createStartEndRadians(bearing0Radians, bearing1Radians),\n activeFractionInterval, localToWorld, spiralTypeName);\n if (integratedSpiral)\n return integratedSpiral;\n const radius0 = TransitionSpiral3d.curvatureToRadius(curvature0);\n const radius1 = TransitionSpiral3d.curvatureToRadius(curvature1);\n const arcLength = TransitionSpiral3d.radiusRadiusSweepRadiansToArcLength(radius0, radius1,\n bearing1Radians - bearing0Radians);\n const directSpiral = DirectSpiral3d.createFromLengthAndRadius(\n spiralTypeName,\n radius0, radius1,\n Angle.createRadians(bearing0Radians),\n Angle.createRadians(bearing1Radians),\n arcLength,\n activeFractionInterval,\n localToWorld);\n if (directSpiral)\n return directSpiral;\n }\n }\n return undefined;\n }\n /**\n * Extract a curve primitive\n * @param variant read position in the flat buffer.\n */\n public readCurvePrimitiveFromVariant(variant: BGFBAccessors.VariantGeometry): CurvePrimitive | undefined {\n const geometryType = variant.geometryType();\n if (geometryType === BGFBAccessors.VariantGeometryUnion.tagLineSegment) {\n const offsetToLineSegment = variant.geometry(new BGFBAccessors.LineSegment());\n assert(offsetToLineSegment !== null, \"expect defined because LineSegment is defined by VariantGeometryUnion schema\");\n const offsetToCoordinates = offsetToLineSegment.segment();\n assert(offsetToCoordinates !== null, \"expect defined because `segment` is defined by LineSegment schema\");\n return LineSegment3d.createXYZXYZ(\n offsetToCoordinates.point0X(), offsetToCoordinates.point0Y(), offsetToCoordinates.point0Z(),\n offsetToCoordinates.point1X(), offsetToCoordinates.point1Y(), offsetToCoordinates.point1Z());\n } else if (geometryType === BGFBAccessors.VariantGeometryUnion.tagEllipticArc) {\n const offsetToEllipticArc = variant.geometry(new BGFBAccessors.EllipticArc());\n assert(offsetToEllipticArc !== null, \"expect defined because EllipticArc is defined by VariantGeometryUnion schema\");\n const offsetToCoordinates = offsetToEllipticArc.arc();\n assert(offsetToCoordinates !== null, \"expect defined because `arc` is defined by EllipticArc schema\");\n return Arc3d.createXYZXYZXYZ(\n offsetToCoordinates.centerX(), offsetToCoordinates.centerY(), offsetToCoordinates.centerZ(),\n offsetToCoordinates.vector0X(), offsetToCoordinates.vector0Y(), offsetToCoordinates.vector0Z(),\n offsetToCoordinates.vector90X(), offsetToCoordinates.vector90Y(), offsetToCoordinates.vector90Z(),\n AngleSweep.createStartSweepRadians(offsetToCoordinates.startRadians(), offsetToCoordinates.sweepRadians()));\n } else if (geometryType === BGFBAccessors.VariantGeometryUnion.tagLineString) {\n const offsetToLineString = variant.geometry(new BGFBAccessors.LineString());\n assert(offsetToLineString !== null, \"expect defined because LineString is defined by VariantGeometryUnion schema\");\n const numCoordinates = offsetToLineString.pointsLength();\n const result = LineString3d.create();\n for (let i = 0; i + 2 < numCoordinates; i += 3) {\n const p0 = offsetToLineString.points(i);\n const p1 = offsetToLineString.points(i + 1);\n const p2 = offsetToLineString.points(i + 2);\n assert(p0 !== null && p1 !== null && p2 !== null, \"expect defined because `points` is defined by LineString schema and indices are valid\");\n result.packedPoints.pushXYZ(p0, p1, p2);\n }\n return result;\n } else if (geometryType === BGFBAccessors.VariantGeometryUnion.tagBsplineCurve) {\n const offsetToBCurve = variant.geometry(new BGFBAccessors.BsplineCurve());\n if (offsetToBCurve !== null)\n return this.readBSplineCurve(offsetToBCurve);\n } else if (geometryType === BGFBAccessors.VariantGeometryUnion.tagTransitionSpiral) {\n const offsetToTransitionSpiralTable = variant.geometry(new BGFBAccessors.TransitionSpiral());\n if (offsetToTransitionSpiralTable !== null)\n return this.readTransitionSpiral(offsetToTransitionSpiralTable);\n } else if (geometryType === BGFBAccessors.VariantGeometryUnion.tagInterpolationCurve) {\n const offsetToInterpolationCurveTable = variant.geometry(new BGFBAccessors.InterpolationCurve());\n if (offsetToInterpolationCurveTable !== null)\n return this.readInterpolationCurve3d(offsetToInterpolationCurveTable);\n } else if (geometryType === BGFBAccessors.VariantGeometryUnion.tagAkimaCurve) {\n const offsetToAkimaCurveTable = variant.geometry(new BGFBAccessors.AkimaCurve());\n if (offsetToAkimaCurveTable !== null)\n return this.readAkimaCurve3d(offsetToAkimaCurveTable);\n }\n return undefined;\n }\n /**\n * Extract a curve primitive\n * @param variant read position in the flat buffer.\n */\n public readPointStringFromVariant(variant: BGFBAccessors.VariantGeometry): PointString3d | undefined {\n const geometryType = variant.geometryType();\n if (geometryType === BGFBAccessors.VariantGeometryUnion.tagPointString) {\n const offsetToLineString = variant.geometry(new BGFBAccessors.PointString());\n assert(offsetToLineString !== null, \"expect defined because PointString is defined by VariantGeometryUnion schema\");\n const numCoordinates = offsetToLineString.pointsLength();\n const result = PointString3d.create();\n for (let i = 0; i + 2 < numCoordinates; i += 3) {\n const p0 = offsetToLineString.points(i);\n const p1 = offsetToLineString.points(i + 1);\n const p2 = offsetToLineString.points(i + 2);\n assert(p0 !== null && p1 !== null && p2 !== null, \"expect defined because `points` is defined by PointString schema and indices are valid\");\n result.points.push(Point3d.create(p0, p1, p2));\n }\n return result;\n }\n return undefined;\n }\n /** Extract auxData channel data for a mesh */\n public readPolyfaceAuxChannelData(channelDataHeader: BGFBAccessors.PolyfaceAuxChannelData | null): AuxChannelData | undefined {\n if (channelDataHeader !== null) {\n const input = channelDataHeader.input();\n const values = channelDataHeader.valuesArray();\n if (values !== null)\n return new AuxChannelData(input, values);\n }\n return undefined;\n }\n\n /** Extract auxData channel for a mesh */\n public readPolyfaceAuxChannel(channelHeader: BGFBAccessors.PolyfaceAuxChannel | null): AuxChannel | undefined {\n if (channelHeader) {\n const dataType = channelHeader.dataType();\n const dataLength = channelHeader.dataLength();\n const channelDataArray: AuxChannelData[] = [];\n const name = channelHeader.name();\n const inputName = channelHeader.inputName();\n for (let i = 0; i < dataLength; i++) {\n const channelData = this.readPolyfaceAuxChannelData(channelHeader.data(i));\n if (channelData)\n channelDataArray.push(channelData);\n }\n return new AuxChannel(channelDataArray, dataType, name ? name : undefined, inputName ? inputName : undefined);\n }\n return undefined;\n }\n\n /** Compute the number of logical entries in every flat data array in the AuxData */\n private static channelDataLength(fbAuxData: BGFBAccessors.PolyfaceAuxData): number {\n if (fbAuxData.channelsLength() <= 0)\n return 0;\n\n const fbChannel0 = nullToUndefined<BGFBAccessors.PolyfaceAuxChannel>(fbAuxData.channels(0));\n if (!fbChannel0)\n return 0;\n\n const numChannel0Data = fbChannel0.dataLength();\n if (numChannel0Data <= 0)\n return 0;\n\n const fbChannel0Data0 = nullToUndefined<BGFBAccessors.PolyfaceAuxChannelData>(fbChannel0.data(0));\n if (!fbChannel0Data0)\n return 0;\n\n const numChannelDataValues = fbChannel0Data0.valuesLength();\n if (numChannelDataValues <= 0)\n return 0;\n\n return numChannelDataValues / AuxChannel.entriesPerValue(fbChannel0.dataType());\n }\n\n /** Examine int array for range and zero count */\n private countIntArray(ints: Int32Array): { min: number, max: number, numZeroes: number } {\n let min = Infinity;\n let max = -Infinity;\n let numZeroes = 0;\n for (const i of ints) {\n if (min > i)\n min = i;\n if (max < i)\n max = i;\n if (0 === i)\n ++numZeroes;\n }\n return { min, max, numZeroes };\n }\n\n /**\n * Extract auxData for a mesh.\n * Typescript object format for Polyface/PolyfaceAuxData indices is 0-based, unterminated.\n * FlatBuffer format for Polyface/PolyfaceAuxData indices is 1-based, 0-terminated/padded.\n * Typescript API previously wrote FlatBuffer PolyfaceAuxData indices as 0-based, unterminated;\n * heuristics are used herein to identify this legacy format so it can still be read.\n */\n public readPolyfaceAuxData(fbPolyface: BGFBAccessors.Polyface | null, fbAuxData: BGFBAccessors.PolyfaceAuxData | null): PolyfaceAuxData | undefined {\n if (!fbPolyface || !fbAuxData)\n return undefined;\n\n const fbPointIndices = nullToUndefined<Int32Array>(fbPolyface.pointIndexArray());\n const fbAuxIndices = nullToUndefined<Int32Array>(fbAuxData.indicesArray());\n const numChannels = fbAuxData.channelsLength();\n const fbNumData = BGFBReader.channelDataLength(fbAuxData);\n if (!fbPointIndices || !fbPointIndices.length || !fbAuxIndices || !fbAuxIndices.length || numChannels <= 0 || fbNumData <= 0)\n return undefined;\n\n const numPerFace = fbPolyface.numPerFace();\n\n // HEURISTICS to detect legacy AuxData indices, previously mistakenly serialized by BGFBWriter.writePolyfaceAsFBVariantGeometry as 0-based unblocked indices\n let isLegacy = false;\n const pointIndicesPadCount = fbPointIndices.filter((index) => index === 0).length;\n if (numPerFace > 1) {\n const auxIndexCounts = this.countIntArray(fbAuxIndices);\n if (auxIndexCounts.max > fbNumData) // auxIndices invalid\n return undefined;\n if (auxIndexCounts.max === fbNumData) // auxIndices 1-based\n isLegacy = false;\n else if (auxIndexCounts.max <= 0 || auxIndexCounts.min < 0) // auxIndices 1-based (signed)\n isLegacy = false;\n else if (auxIndexCounts.min === 0) // auxIndices likely legacy 0-based index, but could be modern with padding\n isLegacy = pointIndicesPadCount !== auxIndexCounts.numZeroes;\n else if (auxIndexCounts.min > 0) // auxIndices likely modern without padding, but could be legacy if first datum not indexed\n isLegacy = pointIndicesPadCount > 0;\n } else {\n isLegacy = (fbAuxIndices.length < fbPointIndices.length) && (fbAuxIndices.length + pointIndicesPadCount === fbPointIndices.length);\n }\n if (!isLegacy && fbAuxIndices.length !== fbPointIndices.length)\n return undefined; // auxIndices invalid\n\n const indices: number[] = [];\n if (isLegacy)\n SerializationHelpers.announceZeroBasedIndicesWithExternalBlocking(fbAuxIndices, fbPointIndices, numPerFace, (i0: number) => { indices.push(i0); });\n else\n SerializationHelpers.announceZeroBasedIndicesFromSignedOneBasedIndices(fbAuxIndices, numPerFace, (i0: number) => { indices.push(i0); });\n if (indices.length + pointIndicesPadCount !== fbPointIndices.length)\n return undefined;\n const maxIndex = Math.max(...indices);\n\n const channels: AuxChannel[] = [];\n for (let i = 0; i < numChannels; i++) {\n const channelHeader = fbAuxData.channels(i);\n const channelContent = this.readPolyfaceAuxChannel(channelHeader);\n if (channelContent) {\n if (maxIndex >= channelContent.valueCount)\n return undefined; // invalid index\n channels.push(channelContent);\n }\n }\n if (!channels.length)\n return undefined;\n\n return new PolyfaceAuxData(channels, indices);\n }\n\n /** Extract tagged numeric data for a mesh */\n public readTaggedNumericData(accessor: BGFBAccessors.TaggedNumericData | undefined): TaggedNumericData | undefined {\n if (accessor) {\n const taggedNumericData = new TaggedNumericData(accessor.tagA(), accessor.tagB());\n const intDataArray = nullToUndefined<Int32Array>(accessor.intDataArray());\n const doubleDataArray = nullToUndefined<Float64Array>(accessor.doubleDataArray());\n if (intDataArray) {\n taggedNumericData.intData = [];\n for (const c of intDataArray)\n taggedNumericData.intData.push(c);\n\n }\n if (doubleDataArray) {\n taggedNumericData.doubleData = [];\n for (const c of doubleDataArray)\n taggedNumericData.doubleData.push(c);\n }\n return taggedNumericData;\n }\n return undefined;\n }\n\n /**\n * Extract a mesh\n * @param variant read position in the flat buffer.\n */\n public readPolyfaceFromVariant(variant: BGFBAccessors.VariantGeometry): IndexedPolyface | undefined {\n const geometryType = variant.geometryType();\n if (geometryType === BGFBAccessors.VariantGeometryUnion.tagPolyface) {\n const polyfaceHeader = variant.geometry(new BGFBAccessors.Polyface());\n if (polyfaceHeader) {\n const twoSided = polyfaceHeader.twoSided();\n const expectedClosure = polyfaceHeader.expectedClosure();\n const meshStyle = polyfaceHeader.meshStyle();\n const numPerFace = polyfaceHeader.numPerFace();\n\n const pointF64 = nullToUndefined<Float64Array>(polyfaceHeader.pointArray());\n const paramF64 = nullToUndefined<Float64Array>(polyfaceHeader.paramArray());\n const normalF64 = nullToUndefined<Float64Array>(polyfaceHeader.normalArray());\n const intColorU32 = nullToUndefined<Uint32Array>(polyfaceHeader.intColorArray());\n\n const pointIndexI32 = nullToUndefined<Int32Array>(polyfaceHeader.pointIndexArray());\n const paramIndexI32 = nullToUndefined<Int32Array>(polyfaceHeader.paramIndexArray());\n const normalIndexI32 = nullToUndefined<Int32Array>(polyfaceHeader.normalIndexArray());\n const colorIndexI32 = nullToUndefined<Int32Array>(polyfaceHeader.colorIndexArray());\n const edgeMateIndexI32 = nullToUndefined<Int32Array>(polyfaceHeader.edgeMateIndexArray());\n const taggedNumericDataOffset = polyfaceHeader.taggedNumericData();\n\n // FB polyfaces are always indexed face loop style, but we recognize both variable and fixed-size face loops.\n // (BGFBWriter only writes variable-sized face loops, but native FBWriter can write both.)\n assert(meshStyle === 1, \"Unrecognized flatbuffer mesh style\");\n\n if (meshStyle === 1 && pointF64 && pointIndexI32) {\n const polyface = IndexedPolyface.create();\n polyface.twoSided = twoSided;\n polyface.expectedClosure = expectedClosure;\n\n // Flatbuffer parallel index array values are:\n // * signed 1-based index into the respective data array\n // * 0 indicates variable-sized face loop terminator (numPerFace < 2)\n // * 0 indicates fixed-sized face loop padding (numPerFace >= 2)\n // Native format is the same as flatbuffer.\n // TypeScript format is 0-based indices sans terminator/padding\n if (normalF64 && normalIndexI32) {\n for (let i = 0; i + 2 < normalF64.length; i += 3)\n polyface.addNormalXYZ(normalF64[i], normalF64[i + 1], normalF64[i + 2]);\n SerializationHelpers.announceZeroBasedIndicesFromSignedOneBasedIndices(normalIndexI32, numPerFace,\n (i: number) => { polyface.addNormalIndex(i); });\n }\n if (paramF64 && paramIndexI32) {\n for (let i = 0; i + 1 < paramF64.length; i += 2)\n polyface.addParamUV(paramF64[i], paramF64[i + 1]);\n SerializationHelpers.announceZeroBasedIndicesFromSignedOneBasedIndices(paramIndexI32, numPerFace,\n (i: number) => { polyface.addParamIndex(i); });\n }\n if (intColorU32 && colorIndexI32) {\n for (const c of intColorU32)\n polyface.addColor(c);\n SerializationHelpers.announceZeroBasedIndicesFromSignedOneBasedIndices(colorIndexI32, numPerFace,\n (i: number) => { polyface.addColorIndex(i); });\n }\n\n // the second callback below builds up the facetStart array as we process the main point index array\n for (let i = 0; i + 2 < pointF64.length; i += 3)\n polyface.addPointXYZ(pointF64[i], pointF64[i + 1], pointF64[i + 2]);\n SerializationHelpers.announceZeroBasedIndicesFromSignedOneBasedIndices(pointIndexI32, numPerFace,\n (i: number, v?: boolean) => { polyface.addPointIndex(i, v); },\n () => { polyface.terminateFacet(false); });\n\n // FB/JSON/native edgeMateIndex array format:\n // 0-based edgeMate indices into the parallel Polyface index arrays (and edgeMateIndex!),\n // -1 terminator/pad, not present in TypeScript,\n // -2 for \"no edgeMate\", maps to `undefined` in TypeScript\n if (edgeMateIndexI32) {\n const edgeMateIndex: Array<number | undefined> = [];\n if (SerializationHelpers.announceCompressedZeroBasedReflexiveIndices(edgeMateIndexI32, numPerFace,\n SerializationHelpers.EdgeMateIndex.BlockSeparator, SerializationHelpers.EdgeMateIndex.NoEdgeMate,\n (i: number | undefined) => edgeMateIndex.push(i),\n )) {\n polyface.data.edgeMateIndex = edgeMateIndex;\n }\n }\n\n if (!polyface.validateAllIndices())\n return undefined;\n\n polyface.data.auxData = this.readPolyfaceAuxData(polyfaceHeader, polyfaceHeader.auxData());\n\n if (taggedNumericDataOffset) {\n const taggedNumericDataAccessor = nullToUndefined<BGFBAccessors.TaggedNumericData>(taggedNumericDataOffset);\n if (taggedNumericDataAccessor !== undefined) {\n const taggedNumericData = this.readTaggedNumericData(taggedNumericDataAccessor);\n if (taggedNumericData !== undefined)\n polyface.data.setTaggedNumericData(taggedNumericData);\n }\n }\n\n // NOTE: faceData is ignored\n return polyface;\n }\n }\n }\n return undefined;\n }\n\n public readCurveCollectionFromCurveVectorTable(cvTable: BGFBAccessors.CurveVector): CurveCollection {\n const numChildren = cvTable.curvesLength();\n const collectionType = cvTable.type();\n const collection = createTypedCurveCollection(collectionType);\n for (let i = 0; i < numChildren; i++) {\n const childOffset = cvTable.curves(i);\n if (childOffset !== null) {\n const child = this.readCurvePrimitiveFromVariant(childOffset);\n if (child)\n collection.tryAddChild(child);\n else {\n const childCollection = this.readCurveCollectionFromVariantGeometry(childOffset);\n if (childCollection)\n collection.tryAddChild(childCollection);\n }\n }\n }\n return collection;\n }\n /**\n * Extract a curve collection\n * @param variant read position in the flat buffer.\n */\n public readCurveCollectionFromVariantGeometry(variant: BGFBAccessors.VariantGeometry): CurveCollection | undefined {\n const geometryType = variant.geometryType();\n if (geometryType === BGFBAccessors.VariantGeometryUnion.tagCurveVector) {\n const cvTable = variant.geometry(new BGFBAccessors.CurveVector());\n assert(cvTable !== null, \"expect defined because CurveVector is defined by VariantGeometryUnion schema\");\n return this.readCurveCollectionFromCurveVectorTable(cvTable);\n }\n return undefined;\n }\n /**\n * Extract a curve collection\n * @param variant read position in the flat buffer.\n */\n public readSolidPrimitiveFromVariant(variant: BGFBAccessors.VariantGeometry): SolidPrimitive | undefined {\n const geometryType = variant.geometryType();\n if (geometryType === BGFBAccessors.VariantGeometryUnion.tagDgnBox) {\n const header = variant.geometry(new BGFBAccessors.DgnBox());\n assert(header !== null, \"expect defined because DgnBox is defined by VariantGeometryUnion schema\");\n const detail = header.detail();\n assert(detail !== null, \"expect defined because `detail` is defined by DgnBox schema\");\n return Box.createDgnBox(\n Point3d.create(detail.baseOriginX(), detail.baseOriginY(), detail.baseOriginZ()),\n Vector3d.create(detail.vectorXX(), detail.vectorXY(), detail.vectorXZ()),\n Vector3d.create(detail.vectorYX(), detail.vectorYY(), detail.vectorYZ()),\n Point3d.create(detail.topOriginX(), detail.topOriginY(), detail.topOriginZ()),\n detail.baseX(), detail.baseY(), detail.topX(), detail.topY(),\n detail.capped());\n } if (geometryType === BGFBAccessors.VariantGeometryUnion.tagDgnSphere) {\n const header = variant.geometry(new BGFBAccessors.DgnSphere());\n assert(header !== null, \"expect defined because DgnSphere is defined by VariantGeometryUnion schema\");\n const detail = header.detail();\n assert(detail !== null, \"expect defined because `detail` is defined by DgnSphere schema\");\n const dLocalToWorld = detail.localToWorld();\n assert(dLocalToWorld !== null, \"expect defined because `localToWorld` is defined by DgnSphereDetail schema\");\n const localToWorld = Transform.createRowValues(\n dLocalToWorld.axx(), dLocalToWorld.axy(), dLocalToWorld.axz(), dLocalToWorld.axw(),\n dLocalToWorld.ayx(), dLocalToWorld.ayy(), dLocalToWorld.ayz(), dLocalToWorld.ayw(),\n dLocalToWorld.azx(), dLocalToWorld.azy(), dLocalToWorld.azz(), dLocalToWorld.azw());\n return Sphere.createEllipsoid(localToWorld,\n AngleSweep.createStartSweepRadians(detail.startLatitudeRadians(), detail.latitudeSweepRadians()),\n detail.capped());\n } if (geometryType === BGFBAccessors.VariantGeometryUnion.tagDgnCone) {\n const header = variant.geometry(new BGFBAccessors.DgnCone());\n assert(header !== null, \"expect defined because DgnCone is defined by VariantGeometryUnion schema\");\n const detail = header.detail();\n assert(detail !== null, \"expect defined because `detail` is defined by DgnCone schema\");\n const centerA = Point3d.create(detail.centerAX(), detail.centerAY(), detail.centerAZ());\n const centerB = Point3d.create(detail.centerBX(), detail.centerBY(), detail.centerBZ());\n const vector0 = Vector3d.create(detail.vector0X(), detail.vector0Y(), detail.vector0Z());\n const vector90 = Vector3d.create(detail.vector90X(), detail.vector90Y(), detail.vector90Z());\n const radiusA = detail.radiusA();\n const radiusB = detail.radiusB();\n return Cone.createBaseAndTarget(centerA, centerB, vector0, vector90, radiusA, radiusB, detail.capped());\n } if (geometryType === BGFBAccessors.VariantGeometryUnion.tagDgnTorusPipe) {\n const header = variant.geometry(new BGFBAccessors.DgnTorusPipe());\n assert(header !== null, \"expect defined because DgnTorusPipe is defined by VariantGeometryUnion schema\");\n const detail = header.detail();\n assert(detail !== null, \"expect defined because `detail` is defined by DgnTorusPipe schema\");\n const center = Point3d.create(detail.centerX(), detail.centerY(), detail.centerZ());\n const vectorX = Vector3d.create(detail.vectorXX(), detail.vectorXY(), detail.vectorXZ());\n const vectorY = Vector3d.create(detail.vectorYX(), detail.vectorYY(), detail.vectorYZ());\n const sweepRadians = detail.sweepRadians();\n const majorRadius = detail.majorRadius();\n const minorRadius = detail.minorRadius();\n return TorusPipe.createDgnTorusPipe(center, vectorX, vectorY, majorRadius, minorRadius, Angle.createRadians(sweepRadians), detail.capped());\n } if (geometryType === BGFBAccessors.VariantGeometryUnion.tagDgnExtrusion) {\n const header = variant.geometry(new BGFBAccessors.DgnExtrusion());\n assert(header !== null, \"expect defined because DgnExtrusion is defined by VariantGeometryUnion schema\");\n const dVector = new BGFBAccessors.DVector3d();\n header.extrusionVector(dVector);\n const extrusionVector = Vector3d.create(dVector.x(), dVector.y(), dVector.z());\n const baseCurve = header.baseCurve();\n if (baseCurve !== null) {\n const contour = this.readCurveCollectionFromCurveVectorTable(baseCurve);\n return LinearSweep.create(contour, extrusionVector, header.capped());\n }\n } if (geometryType === BGFBAccessors.VariantGeometryUnion.tagDgnRotationalSweep) {\n const header = variant.geometry(new BGFBAccessors.DgnRotationalSweep());\n assert(header !== null, \"expect defined because DgnRotationalSweep is defined by VariantGeometryUnion schema\");\n const dAxis = new BGFBAccessors.DRay3d();\n header.axis(dAxis);\n const axis = Ray3d.createXYZUVW(dAxis.x(), dAxis.y(), dAxis.z(), dAxis.ux(), dAxis.uy(), dAxis.uz());\n const sweepAngle = Angle.createRadians(header.sweepRadians());\n // const numVRules = header.numVRules();\n const baseCurve = header.baseCurve();\n if (baseCurve !== null) {\n const contour = this.readCurveCollectionFromCurveVectorTable(baseCurve);\n return RotationalSweep.create(contour, axis, sweepAngle, header.capped());\n }\n } if (geometryType === BGFBAccessors.VariantGeometryUnion.tagDgnRuledSweep) {\n const header = variant.geometry(new BGFBAccessors.DgnRuledSweep());\n assert(header !== null, \"expect defined because DgnRuledSweep is defined by VariantGeometryUnion schema\");\n const numCurves = header.curvesLength();\n const contours: CurveCollection[] = [];\n for (let i = 0; i < numCurves; i++) {\n const contourTable = header.curves(i);\n if (contourTable) {\n const contour = this.readCurveCollectionFromCurveVectorTable(contourTable);\n if (contour)\n contours.push(contour);\n }\n }\n if (contours.length > 0) {\n return RuledSweep.create(contours, header.capped());\n }\n }\n return undefined;\n }\n /**\n * Extract any geometry type or array of geometry.\n * @param variant read position in the flat buffer.\n */\n public readGeometryQueryFromVariant(variant: BGFBAccessors.VariantGeometry): GeometryQuery | GeometryQuery[] | undefined {\n const rootType = variant.geometryType();\n switch (rootType) {\n case BGFBAccessors.VariantGeometryUnion.tagLineSegment:\n case BGFBAccessors.VariantGeometryUnion.tagLineString:\n case BGFBAccessors.VariantGeometryUnion.tagEllipticArc:\n case BGFBAccessors.VariantGeometryUnion.tagBsplineCurve:\n case BGFBAccessors.VariantGeometryUnion.tagTransitionSpiral:\n case BGFBAccessors.VariantGeometryUnion.tagInterpolationCurve:\n case BGFBAccessors.VariantGeometryUnion.tagAkimaCurve: {\n return this.readCurvePrimitiveFromVariant(variant);\n }\n case BGFBAccessors.VariantGeometryUnion.tagCurveVector: {\n return this.readCurveCollectionFromVariantGeometry(variant);\n }\n case BGFBAccessors.VariantGeometryUnion.tagPolyface: {\n return this.readPolyfaceFromVariant(variant);\n }\n case BGFBAccessors.VariantGeometryUnion.tagDgnBox:\n case BGFBAccessors.VariantGeometryUnion.tagDgnCone:\n case BGFBAccessors.VariantGeometryUnion.tagDgnTorusPipe:\n case BGFBAccessors.VariantGeometryUnion.tagDgnSphere:\n case BGFBAccessors.VariantGeometryUnion.tagDgnExtrusion:\n case BGFBAccessors.VariantGeometryUnion.tagDgnRotationalSweep:\n case BGFBAccessors.VariantGeometryUnion.tagDgnRuledSweep: {\n return this.readSolidPrimitiveFromVariant(variant);\n }\n case BGFBAccessors.VariantGeometryUnion.tagVectorOfVariantGeometry: {\n const geometry: GeometryQuery[] = [];\n const offsetToVectorOfVariantGeometry = variant.geometry(new BGFBAccessors.VectorOfVariantGeometry());\n assert(offsetToVectorOfVariantGeometry !== null, \"expect defined because VectorOfVariantGeometry is defined by VariantGeometryUnion schema\");\n for (let i = 0; i < offsetToVectorOfVariantGeometry.membersLength(); i++) {\n const child = offsetToVectorOfVariantGeometry.members(i);\n if (child !== null) {\n const childGeometry = this.readGeometryQueryFromVariant(child);\n if (childGeometry instanceof GeometryQuery) {\n geometry.push(childGeometry);\n } else if (Array.isArray(childGeometry)) {\n geometry.push(...childGeometry);\n }\n }\n }\n return geometry;\n }\n case BGFBAccessors.VariantGeometryUnion.tagBsplineSurface: {\n return this.readBSplineSurfaceFromVariant(variant);\n }\n case BGFBAccessors.VariantGeometryUnion.tagPointString: {\n return this.readPointStringFromVariant(variant);\n }\n }\n return undefined;\n }\n /**\n * Deserialize bytes from a flatbuffer.\n * @param justTheBytes FlatBuffer bytes as created by BGFBWriter.createFlatBuffer (g);\n */\n public static bytesToGeometry(theBytes: Uint8Array, signature?: Uint8Array): GeometryQuery | GeometryQuery[] | undefined {\n const newByteBuffer = new flatbuffers.ByteBuffer(theBytes);\n if (signature) {\n if (theBytes.length < signature.length)\n return undefined;\n for (let i = 0; i < signature.length; i++)\n if (theBytes[i] !== signature[i])\n return undefined;\n newByteBuffer.setPosition(signature.length);\n }\n const root = BGFBAccessors.VariantGeometry.getRootAsVariantGeometry(newByteBuffer);\n const reader = new BGFBReader();\n return reader.readGeometryQueryFromVariant(root);\n }\n\n}\n/**\n * if data is \"null\" (the deprecated javascript idiom!) return undefined. Otherwise return the data as its own type.\n * @param data\n */\nfunction nullToUndefined<T>(data: any): T | undefined {\n if (data === null)\n return undefined;\n return data;\n}\n\nfunction createTypedCurveCollection(collectionType: number): CurveCollection {\n if (collectionType === 1) return new Path();\n if (collectionType === 2 || collectionType === 3) return new Loop();\n if (collectionType === 4) return new ParityRegion();\n if (collectionType === 5) return new UnionRegion();\n return new BagOfCurves();\n}\n/**\n * mappings between typescript spiral type strings and native integers.\n * @internal\n */\nexport class DgnSpiralTypeQueries {\n // remark: this is the full list based on native DSpiral2dBase.h.\n // This does not guarantee all types are supported.\n private static spiralTypeCodeMap = [\n [10, \"clothoid\"],\n [11, \"bloss\"],\n [12, \"biquadratic\"],\n [13, \"cosine\"],\n [14, \"sine\"],\n [15, \"Viennese\"],\n [16, \"weightedViennese\"],\n\n [50, \"WesternAustralian\"],\n [51, \"Czech\"],\n [52, \"AustralianRailCorp\"],\n [53, \"Italian\"],\n [54, \"PolishCubic\"],\n [55, \"Arema\"],\n [56, \"MXCubicAlongArc\"],\n [57, \"MXCubicAlongTangent\"],\n [58, \"ChineseCubic\"],\n [60, \"HalfCosine\"],\n [61, \"JapaneseCubic\"],\n ];\n /** Convert native integer type (e.g. from flatbuffer) to typescript string */\n public static typeCodeToString(typeCode: number): string | undefined {\n for (const entry of DgnSpiralTypeQueries.spiralTypeCodeMap) {\n if (entry[0] === typeCode)\n return entry[1] as string;\n }\n return undefined;\n }\n\n /** Convert typescript string to native integer type */\n public static stringToTypeCode(s: string, defaultToClothoid: boolean = true): number | undefined {\n for (const entry of DgnSpiralTypeQueries.spiralTypeCodeMap) {\n if (Geometry.equalStringNoCase(s, entry[1] as string))\n return entry[0] as number;\n }\n return defaultToClothoid ? 10 : undefined;\n }\n /** Ask if the indicated type code is a \"direct\" spiral */\n public static isDirectSpiralType(typeCode: number): boolean {\n return typeCode >= 50;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BGFBReader.js","sourceRoot":"","sources":["../../../src/serialization/BGFBReader.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { flatbuffers } from \"flatbuffers\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { AkimaCurve3d, AkimaCurve3dOptions } from \"../bspline/AkimaCurve3d\";\nimport { BSplineCurve3d } from \"../bspline/BSplineCurve\";\nimport { BSplineCurve3dH } from \"../bspline/BSplineCurve3dH\";\nimport { BSplineSurface3d, BSplineSurface3dH, UVSelect } from \"../bspline/BSplineSurface\";\nimport { InterpolationCurve3d, InterpolationCurve3dOptions } from \"../bspline/InterpolationCurve3d\";\nimport { Arc3d } from \"../curve/Arc3d\";\nimport { BagOfCurves, CurveCollection } from \"../curve/CurveCollection\";\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\nimport { LineSegment3d } from \"../curve/LineSegment3d\";\nimport { LineString3d } from \"../curve/LineString3d\";\nimport { Loop } from \"../curve/Loop\";\nimport { ParityRegion } from \"../curve/ParityRegion\";\nimport { Path } from \"../curve/Path\";\nimport { PointString3d } from \"../curve/PointString3d\";\nimport { DirectSpiral3d } from \"../curve/spiral/DirectSpiral3d\";\nimport { IntegratedSpiral3d } from \"../curve/spiral/IntegratedSpiral3d\";\nimport { TransitionSpiral3d } from \"../curve/spiral/TransitionSpiral3d\";\nimport { UnionRegion } from \"../curve/UnionRegion\";\nimport { Geometry } from \"../Geometry\";\nimport { Angle } from \"../geometry3d/Angle\";\nimport { AngleSweep } from \"../geometry3d/AngleSweep\";\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\nimport { NumberArray, Point3dArray } from \"../geometry3d/PointHelpers\";\nimport { Ray3d } from \"../geometry3d/Ray3d\";\nimport { Segment1d } from \"../geometry3d/Segment1d\";\nimport { Transform } from \"../geometry3d/Transform\";\nimport { AuxChannel, AuxChannelData, PolyfaceAuxData } from \"../polyface/AuxData\";\nimport { IndexedPolyface } from \"../polyface/Polyface\";\nimport { TaggedNumericData } from \"../polyface/TaggedNumericData\";\nimport { Box } from \"../solid/Box\";\nimport { Cone } from \"../solid/Cone\";\nimport { LinearSweep } from \"../solid/LinearSweep\";\nimport { RotationalSweep } from \"../solid/RotationalSweep\";\nimport { RuledSweep } from \"../solid/RuledSweep\";\nimport { SolidPrimitive } from \"../solid/SolidPrimitive\";\nimport { Sphere } from \"../solid/Sphere\";\nimport { TorusPipe } from \"../solid/TorusPipe\";\nimport { BGFBAccessors } from \"./BGFBAccessors\";\nimport { SerializationHelpers } from \"./SerializationHelpers\";\n\n/** * Context to write to a flatbuffer blob.\n * * This class is internal.\n * * Public access is through BentleyGeometryFlatBuffer.geometryToBytes()\n * @internal\n */\nexport class BGFBReader {\n public constructor() {\n }\n /**\n * Extract a bspline surface\n * @param variant read position in the flat buffer.\n */\n public readBSplineSurfaceFromVariant(variantHeader: BGFBAccessors.VariantGeometry): BSplineSurface3d | BSplineSurface3dH | undefined {\n let newSurface: BSplineSurface3d | BSplineSurface3dH | undefined;\n const geometryType = variantHeader.geometryType();\n if (geometryType === BGFBAccessors.VariantGeometryUnion.tagBsplineSurface) {\n const bsurfHeader = variantHeader.geometry(new BGFBAccessors.BsplineSurface());\n if (bsurfHeader !== null) {\n const orderU = bsurfHeader.orderU();\n const orderV = bsurfHeader.orderV();\n const numPolesU = bsurfHeader.numPolesU();\n const numPolesV = bsurfHeader.numPolesV();\n const xyzArray = bsurfHeader.polesArray();\n const knotArrayU = bsurfHeader.knotsUArray();\n const knotArrayV = bsurfHeader.knotsVArray();\n const weightArray = bsurfHeader.weightsArray();\n const closedU = bsurfHeader.closedU();\n const closedV = bsurfHeader.closedV();\n\n if (xyzArray !== null && knotArrayU !== null && knotArrayV !== null) {\n const myData = SerializationHelpers.createBSplineSurfaceData(xyzArray, 3, knotArrayU, numPolesU, orderU, knotArrayV, numPolesV, orderV);\n if (weightArray !== null)\n myData.weights = weightArray;\n if (closedU)\n myData.uParams.closed = true;\n if (closedV)\n myData.vParams.closed = true;\n\n if (SerializationHelpers.Import.prepareBSplineSurfaceData(myData, { jsonPoles: false })) {\n if (undefined === myData.weights)\n newSurface = BSplineSurface3d.create(myData.poles as Float64Array, myData.uParams.numPoles, myData.uParams.order, myData.uParams.knots, myData.vParams.numPoles, myData.vParams.order, myData.vParams.knots);\n else\n newSurface = BSplineSurface3dH.create(myData.poles as Float64Array, myData.weights as Float64Array, myData.uParams.numPoles, myData.uParams.order, myData.uParams.knots, myData.vParams.numPoles, myData.vParams.order, myData.vParams.knots);\n\n if (undefined !== newSurface) {\n if (undefined !== myData.uParams.wrapMode)\n newSurface.setWrappable(UVSelect.uDirection, myData.uParams.wrapMode);\n if (undefined !== myData.vParams.wrapMode)\n newSurface.setWrappable(UVSelect.vDirection, myData.vParams.wrapMode);\n }\n }\n }\n }\n }\n return newSurface;\n }\n\n /**\n * Extract an interpolating curve\n * @param header read position in the flat buffer.\n */\n public readInterpolationCurve3d(header: BGFBAccessors.InterpolationCurve): InterpolationCurve3d | undefined {\n const xyzArray = header.fitPointsArray();\n if (xyzArray instanceof Float64Array) {\n const knots = header.knotsArray();\n const options = new InterpolationCurve3dOptions(Point3dArray.clonePoint3dArray(xyzArray), knots ? NumberArray.create(knots) : undefined);\n const startTangent = header.startTangent();\n const endTangent = header.endTangent();\n options.captureOptionalProps(\n header.order(),\n header.closed(),\n header.isChordLenKnots(),\n header.isColinearTangents(),\n header.isChordLenTangents(),\n header.isNaturalTangents(),\n startTangent !== null ? Vector3d.create(startTangent.x(), startTangent.y(), startTangent.z()) : undefined,\n endTangent !== null ? Vector3d.create(endTangent.x(), endTangent.y(), endTangent.z()) : undefined);\n return InterpolationCurve3d.createCapture(options);\n }\n return undefined;\n }\n\n /**\n * Extract an akima curve\n * @param header read position in the flat buffer.\n */\n public readAkimaCurve3d(header: BGFBAccessors.AkimaCurve): AkimaCurve3d | undefined {\n const xyzArray = header.pointsArray();\n if (xyzArray instanceof Float64Array) {\n const options = new AkimaCurve3dOptions(Point3dArray.clonePoint3dArray(xyzArray));\n return AkimaCurve3d.createCapture(options);\n }\n return undefined;\n }\n /**\n * Extract a bspline curve\n * @param variant read position in the flat buffer.\n */\n public readBSplineCurve(header: BGFBAccessors.BsplineCurve): BSplineCurve3d | BSplineCurve3dH | undefined {\n let newCurve: BSplineCurve3d | BSplineCurve3dH | undefined;\n const order = header.order();\n const xyzArray = header.polesArray();\n const knots = header.knotsArray();\n const weightsArray = header.weightsArray();\n const closed = header.closed();\n\n if (xyzArray !== null && knots !== null) {\n const numPoles = Math.floor(xyzArray.length / 3);\n const myData = SerializationHelpers.createBSplineCurveData(xyzArray, 3, knots, numPoles, order);\n if (closed)\n myData.params.closed = true;\n\n if (weightsArray === null) {\n if (SerializationHelpers.Import.prepareBSplineCurveData(myData))\n newCurve = BSplineCurve3d.create(myData.poles, myData.params.knots, myData.params.order);\n } else {\n myData.weights = weightsArray;\n if (SerializationHelpers.Import.prepareBSplineCurveData(myData, { jsonPoles: false }))\n newCurve = BSplineCurve3dH.create({ xyz: myData.poles as Float64Array, weights: myData.weights }, myData.params.knots, myData.params.order);\n }\n\n if (undefined !== newCurve) {\n if (undefined !== myData.params.wrapMode)\n newCurve.setWrappable(myData.params.wrapMode);\n }\n }\n return newCurve;\n }\n /**\n * Extract a bspline curve\n * @param variant read position in the flat buffer.\n */\n public readTransitionSpiral(header: BGFBAccessors.TransitionSpiral): TransitionSpiral3d | undefined {\n const detailHeader = header.detail();\n if (detailHeader) {\n const directDetailHeader = header.directDetail(); // unpersisted but repopulated\n // const extraDataArray = header.extraDataArray(); // unpersisted and ignored\n const spiralTypeName = DgnSpiralTypeQueries.typeCodeToString(detailHeader.spiralType());\n if (!spiralTypeName)\n return undefined;\n const curvature0 = detailHeader.curvature0();\n const curvature1 = detailHeader.curvature1();\n const bearing0Radians = detailHeader.bearing0Radians();\n const bearing1Radians = detailHeader.bearing1Radians();\n const fbTransform = detailHeader.transform();\n const localToWorld = fbTransform ? Transform.createRowValues(\n fbTransform.axx(), fbTransform.axy(), fbTransform.axz(), fbTransform.axw(),\n fbTransform.ayx(), fbTransform.ayy(), fbTransform.ayz(), fbTransform.ayw(),\n fbTransform.azx(), fbTransform.azy(), fbTransform.azz(), fbTransform.azw()) :\n Transform.createIdentity();\n\n const activeFractionInterval = Segment1d.create(detailHeader.fractionA(),\n detailHeader.fractionB());\n if (!directDetailHeader) {\n const integratedSpiral = IntegratedSpiral3d.createRadiusRadiusBearingBearing(\n Segment1d.create(IntegratedSpiral3d.curvatureToRadius(curvature0), IntegratedSpiral3d.curvatureToRadius(curvature1)),\n AngleSweep.createStartEndRadians(bearing0Radians, bearing1Radians),\n activeFractionInterval, localToWorld, spiralTypeName);\n if (integratedSpiral)\n return integratedSpiral;\n const radius0 = TransitionSpiral3d.curvatureToRadius(curvature0);\n const radius1 = TransitionSpiral3d.curvatureToRadius(curvature1);\n const arcLength = TransitionSpiral3d.radiusRadiusSweepRadiansToArcLength(radius0, radius1,\n bearing1Radians - bearing0Radians);\n const directSpiral = DirectSpiral3d.createFromLengthAndRadius(\n spiralTypeName,\n radius0, radius1,\n Angle.createRadians(bearing0Radians),\n Angle.createRadians(bearing1Radians),\n arcLength,\n activeFractionInterval,\n localToWorld);\n if (directSpiral)\n return directSpiral;\n }\n }\n return undefined;\n }\n /**\n * Extract a curve primitive\n * @param variant read position in the flat buffer.\n */\n public readCurvePrimitiveFromVariant(variant: BGFBAccessors.VariantGeometry): CurvePrimitive | undefined {\n const geometryType = variant.geometryType();\n if (geometryType === BGFBAccessors.VariantGeometryUnion.tagLineSegment) {\n const offsetToLineSegment = variant.geometry(new BGFBAccessors.LineSegment());\n assert(offsetToLineSegment !== null, \"expect defined because LineSegment is defined by VariantGeometryUnion schema\");\n const offsetToCoordinates = offsetToLineSegment.segment();\n assert(offsetToCoordinates !== null, \"expect defined because `segment` is defined by LineSegment schema\");\n return LineSegment3d.createXYZXYZ(\n offsetToCoordinates.point0X(), offsetToCoordinates.point0Y(), offsetToCoordinates.point0Z(),\n offsetToCoordinates.point1X(), offsetToCoordinates.point1Y(), offsetToCoordinates.point1Z());\n } else if (geometryType === BGFBAccessors.VariantGeometryUnion.tagEllipticArc) {\n const offsetToEllipticArc = variant.geometry(new BGFBAccessors.EllipticArc());\n assert(offsetToEllipticArc !== null, \"expect defined because EllipticArc is defined by VariantGeometryUnion schema\");\n const offsetToCoordinates = offsetToEllipticArc.arc();\n assert(offsetToCoordinates !== null, \"expect defined because `arc` is defined by EllipticArc schema\");\n return Arc3d.createXYZXYZXYZ(\n offsetToCoordinates.centerX(), offsetToCoordinates.centerY(), offsetToCoordinates.centerZ(),\n offsetToCoordinates.vector0X(), offsetToCoordinates.vector0Y(), offsetToCoordinates.vector0Z(),\n offsetToCoordinates.vector90X(), offsetToCoordinates.vector90Y(), offsetToCoordinates.vector90Z(),\n AngleSweep.createStartSweepRadians(offsetToCoordinates.startRadians(), offsetToCoordinates.sweepRadians()));\n } else if (geometryType === BGFBAccessors.VariantGeometryUnion.tagLineString) {\n const offsetToLineString = variant.geometry(new BGFBAccessors.LineString());\n assert(offsetToLineString !== null, \"expect defined because LineString is defined by VariantGeometryUnion schema\");\n const numCoordinates = offsetToLineString.pointsLength();\n const result = LineString3d.create();\n for (let i = 0; i + 2 < numCoordinates; i += 3) {\n const p0 = offsetToLineString.points(i);\n const p1 = offsetToLineString.points(i + 1);\n const p2 = offsetToLineString.points(i + 2);\n assert(p0 !== null && p1 !== null && p2 !== null, \"expect defined because `points` is defined by LineString schema and indices are valid\");\n result.packedPoints.pushXYZ(p0, p1, p2);\n }\n return result;\n } else if (geometryType === BGFBAccessors.VariantGeometryUnion.tagBsplineCurve) {\n const offsetToBCurve = variant.geometry(new BGFBAccessors.BsplineCurve());\n if (offsetToBCurve !== null)\n return this.readBSplineCurve(offsetToBCurve);\n } else if (geometryType === BGFBAccessors.VariantGeometryUnion.tagTransitionSpiral) {\n const offsetToTransitionSpiralTable = variant.geometry(new BGFBAccessors.TransitionSpiral());\n if (offsetToTransitionSpiralTable !== null)\n return this.readTransitionSpiral(offsetToTransitionSpiralTable);\n } else if (geometryType === BGFBAccessors.VariantGeometryUnion.tagInterpolationCurve) {\n const offsetToInterpolationCurveTable = variant.geometry(new BGFBAccessors.InterpolationCurve());\n if (offsetToInterpolationCurveTable !== null)\n return this.readInterpolationCurve3d(offsetToInterpolationCurveTable);\n } else if (geometryType === BGFBAccessors.VariantGeometryUnion.tagAkimaCurve) {\n const offsetToAkimaCurveTable = variant.geometry(new BGFBAccessors.AkimaCurve());\n if (offsetToAkimaCurveTable !== null)\n return this.readAkimaCurve3d(offsetToAkimaCurveTable);\n }\n return undefined;\n }\n /**\n * Extract a curve primitive\n * @param variant read position in the flat buffer.\n */\n public readPointStringFromVariant(variant: BGFBAccessors.VariantGeometry): PointString3d | undefined {\n const geometryType = variant.geometryType();\n if (geometryType === BGFBAccessors.VariantGeometryUnion.tagPointString) {\n const offsetToLineString = variant.geometry(new BGFBAccessors.PointString());\n assert(offsetToLineString !== null, \"expect defined because PointString is defined by VariantGeometryUnion schema\");\n const numCoordinates = offsetToLineString.pointsLength();\n const result = PointString3d.create();\n for (let i = 0; i + 2 < numCoordinates; i += 3) {\n const p0 = offsetToLineString.points(i);\n const p1 = offsetToLineString.points(i + 1);\n const p2 = offsetToLineString.points(i + 2);\n assert(p0 !== null && p1 !== null && p2 !== null, \"expect defined because `points` is defined by PointString schema and indices are valid\");\n result.points.push(Point3d.create(p0, p1, p2));\n }\n return result;\n }\n return undefined;\n }\n /** Extract auxData channel data for a mesh */\n public readPolyfaceAuxChannelData(channelDataHeader: BGFBAccessors.PolyfaceAuxChannelData | null): AuxChannelData | undefined {\n if (channelDataHeader !== null) {\n const input = channelDataHeader.input();\n const values = channelDataHeader.valuesArray();\n if (values !== null)\n return new AuxChannelData(input, values);\n }\n return undefined;\n }\n\n /** Extract auxData channel for a mesh */\n public readPolyfaceAuxChannel(channelHeader: BGFBAccessors.PolyfaceAuxChannel | null): AuxChannel | undefined {\n if (channelHeader) {\n const dataType = channelHeader.dataType();\n const dataLength = channelHeader.dataLength();\n const channelDataArray: AuxChannelData[] = [];\n const name = channelHeader.name();\n const inputName = channelHeader.inputName();\n for (let i = 0; i < dataLength; i++) {\n const channelData = this.readPolyfaceAuxChannelData(channelHeader.data(i));\n if (channelData)\n channelDataArray.push(channelData);\n }\n return new AuxChannel(channelDataArray, dataType, name ? name : undefined, inputName ? inputName : undefined);\n }\n return undefined;\n }\n\n /** Compute the number of logical entries in every flat data array in the AuxData */\n private static channelDataLength(fbAuxData: BGFBAccessors.PolyfaceAuxData): number {\n if (fbAuxData.channelsLength() <= 0)\n return 0;\n\n const fbChannel0 = nullToUndefined<BGFBAccessors.PolyfaceAuxChannel>(fbAuxData.channels(0));\n if (!fbChannel0)\n return 0;\n\n const numChannel0Data = fbChannel0.dataLength();\n if (numChannel0Data <= 0)\n return 0;\n\n const fbChannel0Data0 = nullToUndefined<BGFBAccessors.PolyfaceAuxChannelData>(fbChannel0.data(0));\n if (!fbChannel0Data0)\n return 0;\n\n const numChannelDataValues = fbChannel0Data0.valuesLength();\n if (numChannelDataValues <= 0)\n return 0;\n\n return numChannelDataValues / AuxChannel.entriesPerValue(fbChannel0.dataType());\n }\n\n /** Examine int array for range and zero count */\n private countIntArray(ints: Int32Array): { min: number, max: number, numZeroes: number } {\n let min = Infinity;\n let max = -Infinity;\n let numZeroes = 0;\n for (const i of ints) {\n if (min > i)\n min = i;\n if (max < i)\n max = i;\n if (0 === i)\n ++numZeroes;\n }\n return { min, max, numZeroes };\n }\n\n /**\n * Extract auxData for a mesh.\n * Typescript object format for Polyface/PolyfaceAuxData indices is 0-based, unterminated.\n * FlatBuffer format for Polyface/PolyfaceAuxData indices is 1-based, 0-terminated/padded.\n * Typescript API previously wrote FlatBuffer PolyfaceAuxData indices as 0-based, unterminated;\n * heuristics are used herein to identify this legacy format so it can still be read.\n */\n public readPolyfaceAuxData(fbPolyface: BGFBAccessors.Polyface | null, fbAuxData: BGFBAccessors.PolyfaceAuxData | null): PolyfaceAuxData | undefined {\n if (!fbPolyface || !fbAuxData)\n return undefined;\n\n const fbPointIndices = nullToUndefined<Int32Array>(fbPolyface.pointIndexArray());\n const fbAuxIndices = nullToUndefined<Int32Array>(fbAuxData.indicesArray());\n const numChannels = fbAuxData.channelsLength();\n const fbNumData = BGFBReader.channelDataLength(fbAuxData);\n if (!fbPointIndices || !fbPointIndices.length || !fbAuxIndices || !fbAuxIndices.length || numChannels <= 0 || fbNumData <= 0)\n return undefined;\n\n const numPerFace = fbPolyface.numPerFace();\n\n // HEURISTICS to detect legacy AuxData indices, previously mistakenly serialized by BGFBWriter.writePolyfaceAsFBVariantGeometry as 0-based unblocked indices\n let isLegacy = false;\n const pointIndicesPadCount = fbPointIndices.filter((index) => index === 0).length;\n if (numPerFace > 1) {\n const auxIndexCounts = this.countIntArray(fbAuxIndices);\n if (auxIndexCounts.max > fbNumData) // auxIndices invalid\n return undefined;\n if (auxIndexCounts.max === fbNumData) // auxIndices 1-based\n isLegacy = false;\n else if (auxIndexCounts.max <= 0 || auxIndexCounts.min < 0) // auxIndices 1-based (signed)\n isLegacy = false;\n else if (auxIndexCounts.min === 0) // auxIndices likely legacy 0-based index, but could be modern with padding\n isLegacy = pointIndicesPadCount !== auxIndexCounts.numZeroes;\n else if (auxIndexCounts.min > 0) // auxIndices likely modern without padding, but could be legacy if first datum not indexed\n isLegacy = pointIndicesPadCount > 0;\n } else {\n isLegacy = (fbAuxIndices.length < fbPointIndices.length) && (fbAuxIndices.length + pointIndicesPadCount === fbPointIndices.length);\n }\n if (!isLegacy && fbAuxIndices.length !== fbPointIndices.length)\n return undefined; // auxIndices invalid\n\n const indices: number[] = [];\n if (isLegacy)\n SerializationHelpers.announceZeroBasedIndicesWithExternalBlocking(fbAuxIndices, fbPointIndices, numPerFace, (i0: number) => { indices.push(i0); });\n else\n SerializationHelpers.announceZeroBasedIndicesFromSignedOneBasedIndices(fbAuxIndices, numPerFace, (i0: number) => { indices.push(i0); });\n if (indices.length + pointIndicesPadCount !== fbPointIndices.length)\n return undefined;\n const maxIndex = Math.max(...indices);\n\n const channels: AuxChannel[] = [];\n for (let i = 0; i < numChannels; i++) {\n const channelHeader = fbAuxData.channels(i);\n const channelContent = this.readPolyfaceAuxChannel(channelHeader);\n if (channelContent) {\n if (maxIndex >= channelContent.valueCount)\n return undefined; // invalid index\n channels.push(channelContent);\n }\n }\n if (!channels.length)\n return undefined;\n\n return new PolyfaceAuxData(channels, indices);\n }\n\n /** Extract tagged numeric data for a mesh */\n public readTaggedNumericData(accessor: BGFBAccessors.TaggedNumericData | undefined): TaggedNumericData | undefined {\n if (accessor) {\n const taggedNumericData = new TaggedNumericData(accessor.tagA(), accessor.tagB());\n const intDataArray = nullToUndefined<Int32Array>(accessor.intDataArray());\n const doubleDataArray = nullToUndefined<Float64Array>(accessor.doubleDataArray());\n if (intDataArray) {\n taggedNumericData.intData = [];\n for (const c of intDataArray)\n taggedNumericData.intData.push(c);\n\n }\n if (doubleDataArray) {\n taggedNumericData.doubleData = [];\n for (const c of doubleDataArray)\n taggedNumericData.doubleData.push(c);\n }\n return taggedNumericData;\n }\n return undefined;\n }\n\n /**\n * Extract a mesh\n * @param variant read position in the flat buffer.\n */\n public readPolyfaceFromVariant(variant: BGFBAccessors.VariantGeometry): IndexedPolyface | undefined {\n const geometryType = variant.geometryType();\n if (geometryType === BGFBAccessors.VariantGeometryUnion.tagPolyface) {\n const polyfaceHeader = variant.geometry(new BGFBAccessors.Polyface());\n if (polyfaceHeader) {\n const twoSided = polyfaceHeader.twoSided();\n const expectedClosure = polyfaceHeader.expectedClosure();\n const meshStyle = polyfaceHeader.meshStyle();\n const numPerFace = polyfaceHeader.numPerFace();\n\n const pointF64 = nullToUndefined<Float64Array>(polyfaceHeader.pointArray());\n const paramF64 = nullToUndefined<Float64Array>(polyfaceHeader.paramArray());\n const normalF64 = nullToUndefined<Float64Array>(polyfaceHeader.normalArray());\n const intColorU32 = nullToUndefined<Uint32Array>(polyfaceHeader.intColorArray());\n\n const pointIndexI32 = nullToUndefined<Int32Array>(polyfaceHeader.pointIndexArray());\n const paramIndexI32 = nullToUndefined<Int32Array>(polyfaceHeader.paramIndexArray());\n const normalIndexI32 = nullToUndefined<Int32Array>(polyfaceHeader.normalIndexArray());\n const colorIndexI32 = nullToUndefined<Int32Array>(polyfaceHeader.colorIndexArray());\n const edgeMateIndexI32 = nullToUndefined<Int32Array>(polyfaceHeader.edgeMateIndexArray());\n const taggedNumericDataOffset = polyfaceHeader.taggedNumericData();\n\n // FB polyfaces are always indexed face loop style, but we recognize both variable and fixed-size face loops.\n // (BGFBWriter only writes variable-sized face loops, but native FBWriter can write both.)\n assert(meshStyle === 1, \"Unrecognized flatbuffer mesh style\");\n\n if (meshStyle === 1 && pointF64 && pointIndexI32) {\n const polyface = IndexedPolyface.create();\n polyface.twoSided = twoSided;\n polyface.expectedClosure = expectedClosure;\n\n // Flatbuffer parallel index array values are:\n // * signed 1-based index into the respective data array\n // * 0 indicates variable-sized face loop terminator (numPerFace < 2)\n // * 0 indicates fixed-sized face loop padding (numPerFace >= 2)\n // Native format is the same as flatbuffer.\n // TypeScript format is 0-based indices sans terminator/padding\n if (normalF64 && normalIndexI32) {\n for (let i = 0; i + 2 < normalF64.length; i += 3)\n polyface.addNormalXYZ(normalF64[i], normalF64[i + 1], normalF64[i + 2]);\n SerializationHelpers.announceZeroBasedIndicesFromSignedOneBasedIndices(normalIndexI32, numPerFace,\n (i: number) => { polyface.addNormalIndex(i); });\n }\n if (paramF64 && paramIndexI32) {\n for (let i = 0; i + 1 < paramF64.length; i += 2)\n polyface.addParamUV(paramF64[i], paramF64[i + 1]);\n SerializationHelpers.announceZeroBasedIndicesFromSignedOneBasedIndices(paramIndexI32, numPerFace,\n (i: number) => { polyface.addParamIndex(i); });\n }\n if (intColorU32 && colorIndexI32) {\n for (const c of intColorU32)\n polyface.addColor(c);\n SerializationHelpers.announceZeroBasedIndicesFromSignedOneBasedIndices(colorIndexI32, numPerFace,\n (i: number) => { polyface.addColorIndex(i); });\n }\n\n // the second callback below builds up the facetStart array as we process the main point index array\n for (let i = 0; i + 2 < pointF64.length; i += 3)\n polyface.addPointXYZ(pointF64[i], pointF64[i + 1], pointF64[i + 2]);\n SerializationHelpers.announceZeroBasedIndicesFromSignedOneBasedIndices(pointIndexI32, numPerFace,\n (i: number, v?: boolean) => { polyface.addPointIndex(i, v); },\n () => { polyface.terminateFacet(false); });\n\n // FB/JSON/native edgeMateIndex array format:\n // 0-based edgeMate indices into the parallel Polyface index arrays (and edgeMateIndex!),\n // -1 terminator/pad, not present in TypeScript,\n // -2 for \"no edgeMate\", maps to `undefined` in TypeScript\n if (edgeMateIndexI32) {\n const edgeMateIndex: Array<number | undefined> = [];\n if (SerializationHelpers.announceCompressedZeroBasedReflexiveIndices(edgeMateIndexI32, numPerFace,\n SerializationHelpers.EdgeMateIndex.BlockSeparator, SerializationHelpers.EdgeMateIndex.NoEdgeMate,\n (i: number | undefined) => edgeMateIndex.push(i),\n )) {\n polyface.data.edgeMateIndex = edgeMateIndex;\n }\n }\n\n if (!polyface.validateAllIndices())\n return undefined;\n\n polyface.data.auxData = this.readPolyfaceAuxData(polyfaceHeader, polyfaceHeader.auxData());\n\n if (taggedNumericDataOffset) {\n const taggedNumericDataAccessor = nullToUndefined<BGFBAccessors.TaggedNumericData>(taggedNumericDataOffset);\n if (taggedNumericDataAccessor !== undefined) {\n const taggedNumericData = this.readTaggedNumericData(taggedNumericDataAccessor);\n if (taggedNumericData !== undefined)\n polyface.data.setTaggedNumericData(taggedNumericData);\n }\n }\n\n // NOTE: faceData is ignored\n return polyface;\n }\n }\n }\n return undefined;\n }\n\n public readCurveCollectionFromCurveVectorTable(cvTable: BGFBAccessors.CurveVector): CurveCollection {\n const numChildren = cvTable.curvesLength();\n const collectionType = cvTable.type();\n const collection = createTypedCurveCollection(collectionType);\n for (let i = 0; i < numChildren; i++) {\n const childOffset = cvTable.curves(i);\n if (childOffset !== null) {\n const child = this.readCurvePrimitiveFromVariant(childOffset);\n if (child)\n collection.tryAddChild(child);\n else {\n const childCollection = this.readCurveCollectionFromVariantGeometry(childOffset);\n if (childCollection)\n collection.tryAddChild(childCollection);\n }\n }\n }\n return collection;\n }\n /**\n * Extract a curve collection\n * @param variant read position in the flat buffer.\n */\n public readCurveCollectionFromVariantGeometry(variant: BGFBAccessors.VariantGeometry): CurveCollection | undefined {\n const geometryType = variant.geometryType();\n if (geometryType === BGFBAccessors.VariantGeometryUnion.tagCurveVector) {\n const cvTable = variant.geometry(new BGFBAccessors.CurveVector());\n assert(cvTable !== null, \"expect defined because CurveVector is defined by VariantGeometryUnion schema\");\n return this.readCurveCollectionFromCurveVectorTable(cvTable);\n }\n return undefined;\n }\n /**\n * Extract a curve collection\n * @param variant read position in the flat buffer.\n */\n public readSolidPrimitiveFromVariant(variant: BGFBAccessors.VariantGeometry): SolidPrimitive | undefined {\n const geometryType = variant.geometryType();\n if (geometryType === BGFBAccessors.VariantGeometryUnion.tagDgnBox) {\n const header = variant.geometry(new BGFBAccessors.DgnBox());\n assert(header !== null, \"expect defined because DgnBox is defined by VariantGeometryUnion schema\");\n const detail = header.detail();\n assert(detail !== null, \"expect defined because `detail` is defined by DgnBox schema\");\n return Box.createDgnBox(\n Point3d.create(detail.baseOriginX(), detail.baseOriginY(), detail.baseOriginZ()),\n Vector3d.create(detail.vectorXX(), detail.vectorXY(), detail.vectorXZ()),\n Vector3d.create(detail.vectorYX(), detail.vectorYY(), detail.vectorYZ()),\n Point3d.create(detail.topOriginX(), detail.topOriginY(), detail.topOriginZ()),\n detail.baseX(), detail.baseY(), detail.topX(), detail.topY(),\n detail.capped());\n } if (geometryType === BGFBAccessors.VariantGeometryUnion.tagDgnSphere) {\n const header = variant.geometry(new BGFBAccessors.DgnSphere());\n assert(header !== null, \"expect defined because DgnSphere is defined by VariantGeometryUnion schema\");\n const detail = header.detail();\n assert(detail !== null, \"expect defined because `detail` is defined by DgnSphere schema\");\n const dLocalToWorld = detail.localToWorld();\n assert(dLocalToWorld !== null, \"expect defined because `localToWorld` is defined by DgnSphereDetail schema\");\n const localToWorld = Transform.createRowValues(\n dLocalToWorld.axx(), dLocalToWorld.axy(), dLocalToWorld.axz(), dLocalToWorld.axw(),\n dLocalToWorld.ayx(), dLocalToWorld.ayy(), dLocalToWorld.ayz(), dLocalToWorld.ayw(),\n dLocalToWorld.azx(), dLocalToWorld.azy(), dLocalToWorld.azz(), dLocalToWorld.azw());\n return Sphere.createEllipsoid(localToWorld,\n AngleSweep.createStartSweepRadians(detail.startLatitudeRadians(), detail.latitudeSweepRadians()),\n detail.capped());\n } if (geometryType === BGFBAccessors.VariantGeometryUnion.tagDgnCone) {\n const header = variant.geometry(new BGFBAccessors.DgnCone());\n assert(header !== null, \"expect defined because DgnCone is defined by VariantGeometryUnion schema\");\n const detail = header.detail();\n assert(detail !== null, \"expect defined because `detail` is defined by DgnCone schema\");\n const centerA = Point3d.create(detail.centerAX(), detail.centerAY(), detail.centerAZ());\n const centerB = Point3d.create(detail.centerBX(), detail.centerBY(), detail.centerBZ());\n const vector0 = Vector3d.create(detail.vector0X(), detail.vector0Y(), detail.vector0Z());\n const vector90 = Vector3d.create(detail.vector90X(), detail.vector90Y(), detail.vector90Z());\n const radiusA = detail.radiusA();\n const radiusB = detail.radiusB();\n return Cone.createBaseAndTarget(centerA, centerB, vector0, vector90, radiusA, radiusB, detail.capped());\n } if (geometryType === BGFBAccessors.VariantGeometryUnion.tagDgnTorusPipe) {\n const header = variant.geometry(new BGFBAccessors.DgnTorusPipe());\n assert(header !== null, \"expect defined because DgnTorusPipe is defined by VariantGeometryUnion schema\");\n const detail = header.detail();\n assert(detail !== null, \"expect defined because `detail` is defined by DgnTorusPipe schema\");\n const center = Point3d.create(detail.centerX(), detail.centerY(), detail.centerZ());\n const vectorX = Vector3d.create(detail.vectorXX(), detail.vectorXY(), detail.vectorXZ());\n const vectorY = Vector3d.create(detail.vectorYX(), detail.vectorYY(), detail.vectorYZ());\n const sweepRadians = detail.sweepRadians();\n const majorRadius = detail.majorRadius();\n const minorRadius = detail.minorRadius();\n return TorusPipe.createDgnTorusPipe(center, vectorX, vectorY, majorRadius, minorRadius, Angle.createRadians(sweepRadians), detail.capped());\n } if (geometryType === BGFBAccessors.VariantGeometryUnion.tagDgnExtrusion) {\n const header = variant.geometry(new BGFBAccessors.DgnExtrusion());\n assert(header !== null, \"expect defined because DgnExtrusion is defined by VariantGeometryUnion schema\");\n const dVector = new BGFBAccessors.DVector3d();\n header.extrusionVector(dVector);\n const extrusionVector = Vector3d.create(dVector.x(), dVector.y(), dVector.z());\n const baseCurve = header.baseCurve();\n if (baseCurve !== null) {\n const contour = this.readCurveCollectionFromCurveVectorTable(baseCurve);\n return LinearSweep.create(contour, extrusionVector, header.capped());\n }\n } if (geometryType === BGFBAccessors.VariantGeometryUnion.tagDgnRotationalSweep) {\n const header = variant.geometry(new BGFBAccessors.DgnRotationalSweep());\n assert(header !== null, \"expect defined because DgnRotationalSweep is defined by VariantGeometryUnion schema\");\n const dAxis = new BGFBAccessors.DRay3d();\n header.axis(dAxis);\n const axis = Ray3d.createXYZUVW(dAxis.x(), dAxis.y(), dAxis.z(), dAxis.ux(), dAxis.uy(), dAxis.uz());\n const sweepAngle = Angle.createRadians(header.sweepRadians());\n // const numVRules = header.numVRules();\n const baseCurve = header.baseCurve();\n if (baseCurve !== null) {\n const contour = this.readCurveCollectionFromCurveVectorTable(baseCurve);\n return RotationalSweep.create(contour, axis, sweepAngle, header.capped());\n }\n } if (geometryType === BGFBAccessors.VariantGeometryUnion.tagDgnRuledSweep) {\n const header = variant.geometry(new BGFBAccessors.DgnRuledSweep());\n assert(header !== null, \"expect defined because DgnRuledSweep is defined by VariantGeometryUnion schema\");\n const numCurves = header.curvesLength();\n const contours: CurveCollection[] = [];\n for (let i = 0; i < numCurves; i++) {\n const contourTable = header.curves(i);\n if (contourTable) {\n const contour = this.readCurveCollectionFromCurveVectorTable(contourTable);\n if (contour)\n contours.push(contour);\n }\n }\n if (contours.length > 0) {\n return RuledSweep.create(contours, header.capped());\n }\n }\n return undefined;\n }\n /**\n * Extract any geometry type or array of geometry.\n * @param variant read position in the flat buffer.\n */\n public readGeometryQueryFromVariant(variant: BGFBAccessors.VariantGeometry): GeometryQuery | GeometryQuery[] | undefined {\n const rootType = variant.geometryType();\n switch (rootType) {\n case BGFBAccessors.VariantGeometryUnion.tagLineSegment:\n case BGFBAccessors.VariantGeometryUnion.tagLineString:\n case BGFBAccessors.VariantGeometryUnion.tagEllipticArc:\n case BGFBAccessors.VariantGeometryUnion.tagBsplineCurve:\n case BGFBAccessors.VariantGeometryUnion.tagTransitionSpiral:\n case BGFBAccessors.VariantGeometryUnion.tagInterpolationCurve:\n case BGFBAccessors.VariantGeometryUnion.tagAkimaCurve: {\n return this.readCurvePrimitiveFromVariant(variant);\n }\n case BGFBAccessors.VariantGeometryUnion.tagCurveVector: {\n return this.readCurveCollectionFromVariantGeometry(variant);\n }\n case BGFBAccessors.VariantGeometryUnion.tagPolyface: {\n return this.readPolyfaceFromVariant(variant);\n }\n case BGFBAccessors.VariantGeometryUnion.tagDgnBox:\n case BGFBAccessors.VariantGeometryUnion.tagDgnCone:\n case BGFBAccessors.VariantGeometryUnion.tagDgnTorusPipe:\n case BGFBAccessors.VariantGeometryUnion.tagDgnSphere:\n case BGFBAccessors.VariantGeometryUnion.tagDgnExtrusion:\n case BGFBAccessors.VariantGeometryUnion.tagDgnRotationalSweep:\n case BGFBAccessors.VariantGeometryUnion.tagDgnRuledSweep: {\n return this.readSolidPrimitiveFromVariant(variant);\n }\n case BGFBAccessors.VariantGeometryUnion.tagVectorOfVariantGeometry: {\n const geometry: GeometryQuery[] = [];\n const offsetToVectorOfVariantGeometry = variant.geometry(new BGFBAccessors.VectorOfVariantGeometry());\n assert(offsetToVectorOfVariantGeometry !== null, \"expect defined because VectorOfVariantGeometry is defined by VariantGeometryUnion schema\");\n for (let i = 0; i < offsetToVectorOfVariantGeometry.membersLength(); i++) {\n const child = offsetToVectorOfVariantGeometry.members(i);\n if (child !== null) {\n const childGeometry = this.readGeometryQueryFromVariant(child);\n if (childGeometry instanceof GeometryQuery) {\n geometry.push(childGeometry);\n } else if (Array.isArray(childGeometry)) {\n geometry.push(...childGeometry);\n }\n }\n }\n return geometry;\n }\n case BGFBAccessors.VariantGeometryUnion.tagBsplineSurface: {\n return this.readBSplineSurfaceFromVariant(variant);\n }\n case BGFBAccessors.VariantGeometryUnion.tagPointString: {\n return this.readPointStringFromVariant(variant);\n }\n }\n return undefined;\n }\n /**\n * Deserialize bytes from a flatbuffer.\n * @param justTheBytes FlatBuffer bytes as created by BGFBWriter.createFlatBuffer (g);\n */\n public static bytesToGeometry(theBytes: Uint8Array, signature?: Uint8Array): GeometryQuery | GeometryQuery[] | undefined {\n const newByteBuffer = new flatbuffers.ByteBuffer(theBytes);\n if (signature) {\n if (theBytes.length < signature.length)\n return undefined;\n for (let i = 0; i < signature.length; i++)\n if (theBytes[i] !== signature[i])\n return undefined;\n newByteBuffer.setPosition(signature.length);\n }\n const root = BGFBAccessors.VariantGeometry.getRootAsVariantGeometry(newByteBuffer);\n const reader = new BGFBReader();\n return reader.readGeometryQueryFromVariant(root);\n }\n\n}\n/**\n * if data is \"null\" (the deprecated javascript idiom!) return undefined. Otherwise return the data as its own type.\n * @param data\n */\nfunction nullToUndefined<T>(data: any): T | undefined {\n if (data === null)\n return undefined;\n return data;\n}\n\nfunction createTypedCurveCollection(collectionType: number): CurveCollection {\n if (collectionType === 1) return new Path();\n if (collectionType === 2 || collectionType === 3) return new Loop();\n if (collectionType === 4) return new ParityRegion();\n if (collectionType === 5) return new UnionRegion();\n return new BagOfCurves();\n}\n/**\n * mappings between typescript spiral type strings and native integers.\n * @internal\n */\nexport class DgnSpiralTypeQueries {\n // remark: this is the full list based on native DSpiral2dBase.h.\n // This does not guarantee all types are supported.\n private static spiralTypeCodeMap = [\n [10, \"clothoid\"],\n [11, \"bloss\"],\n [12, \"biquadratic\"],\n [13, \"cosine\"],\n [14, \"sine\"],\n [15, \"Viennese\"], // not supported\n [16, \"weightedViennese\"], // not supported\n\n [50, \"WesternAustralian\"],\n [51, \"Czech\"],\n [52, \"AustralianRailCorp\"],\n [53, \"Italian\"],\n [54, \"PolishCubic\"],\n [55, \"Arema\"],\n [56, \"MXCubicAlongArc\"],\n [57, \"MXCubicAlongTangent\"],\n [58, \"ChineseCubic\"],\n [60, \"HalfCosine\"],\n [61, \"JapaneseCubic\"],\n ];\n /** Convert native integer type (e.g. from flatbuffer) to typescript string */\n public static typeCodeToString(typeCode: number): string | undefined {\n for (const entry of DgnSpiralTypeQueries.spiralTypeCodeMap) {\n if (entry[0] === typeCode)\n return entry[1] as string;\n }\n return undefined;\n }\n\n /** Convert typescript string to native integer type */\n public static stringToTypeCode(s: string, defaultToClothoid: boolean = true): number | undefined {\n for (const entry of DgnSpiralTypeQueries.spiralTypeCodeMap) {\n if (Geometry.equalStringNoCase(s, entry[1] as string))\n return entry[0] as number;\n }\n return defaultToClothoid ? 10 : undefined;\n }\n /** Ask if the indicated type code is a \"direct\" spiral */\n public static isDirectSpiralType(typeCode: number): boolean {\n return typeCode >= 50;\n }\n}\n"]}
|
|
@@ -57,12 +57,12 @@ export declare enum HalfEdgeMask {
|
|
|
57
57
|
* Function signature for function of one node with no return type restrictions.
|
|
58
58
|
* @internal
|
|
59
59
|
*/
|
|
60
|
-
export type
|
|
60
|
+
export type HalfEdgeFunction = (node: HalfEdge) => any;
|
|
61
61
|
/**
|
|
62
62
|
* Function signature for function of one node, returning a number.
|
|
63
63
|
* @internal
|
|
64
64
|
*/
|
|
65
|
-
export type
|
|
65
|
+
export type HalfEdgeToNumberFunction = (node: HalfEdge) => number;
|
|
66
66
|
/**
|
|
67
67
|
* Function signature for function of one node, returning a boolean.
|
|
68
68
|
* @internal
|
|
@@ -77,7 +77,7 @@ export type HalfEdgeAndMaskToBooleanFunction = (node: HalfEdge, mask: HalfEdgeMa
|
|
|
77
77
|
* Function signature for function of a graph and a node, returning a boolean.
|
|
78
78
|
* @internal
|
|
79
79
|
*/
|
|
80
|
-
export type
|
|
80
|
+
export type GraphHalfEdgeFunction = (graph: HalfEdgeGraph, node: HalfEdge) => boolean;
|
|
81
81
|
/**
|
|
82
82
|
* Non-topological data members in a half edge.
|
|
83
83
|
* These are not part of adjacency and masking logic.
|
|
@@ -517,7 +517,7 @@ export declare class HalfEdge implements HalfEdgeUserData {
|
|
|
517
517
|
* Announce edges in the face loop, starting with the instance and proceeding in a `faceSuccessor` traversal.
|
|
518
518
|
* @param announceEdge function to call at each edge
|
|
519
519
|
*/
|
|
520
|
-
announceEdgesInFace(announceEdge:
|
|
520
|
+
announceEdgesInFace(announceEdge: HalfEdgeFunction): void;
|
|
521
521
|
/**
|
|
522
522
|
* Announce edges in the super face loop, starting with the instance.
|
|
523
523
|
* * A super face admits a `faceSuccessor` traversal, where the next edge at the far vertex is the first one lacking `skipMask` in a `vertexPredecessor` traversal.
|
|
@@ -526,13 +526,13 @@ export declare class HalfEdge implements HalfEdgeUserData {
|
|
|
526
526
|
* @param announceSkipped optional function that is called at each edge that is skipped.
|
|
527
527
|
* @return whether a super face was found, or `false` if the traversal fails to return to the instance vertex.
|
|
528
528
|
*/
|
|
529
|
-
announceEdgesInSuperFace(skipEdge: HalfEdgeMask | HalfEdgeToBooleanFunction, announceEdge:
|
|
529
|
+
announceEdgesInSuperFace(skipEdge: HalfEdgeMask | HalfEdgeToBooleanFunction, announceEdge: HalfEdgeFunction, announceSkipped?: HalfEdgeFunction): boolean;
|
|
530
530
|
/**
|
|
531
531
|
* Evaluate `f(node)` at each node around `this` node's face loop. Collect the function values.
|
|
532
532
|
* @param f optional node function. If `undefined`, collect the nodes themselves.
|
|
533
533
|
* @returns the array of function values.
|
|
534
534
|
*/
|
|
535
|
-
collectAroundFace(f?:
|
|
535
|
+
collectAroundFace(f?: HalfEdgeFunction): any[];
|
|
536
536
|
/**
|
|
537
537
|
* Search around `this` node's vertex loop for nodes with the specified mask value.
|
|
538
538
|
* * Returned nodes satisfy `node.isMaskSet(mask) === value`.
|
|
@@ -546,24 +546,24 @@ export declare class HalfEdge implements HalfEdgeUserData {
|
|
|
546
546
|
* @param f optional node function. If `undefined`, collect the nodes themselves.
|
|
547
547
|
* @returns the array of function values.
|
|
548
548
|
*/
|
|
549
|
-
collectAroundVertex(f?:
|
|
549
|
+
collectAroundVertex(f?: HalfEdgeFunction): any[];
|
|
550
550
|
/**
|
|
551
551
|
* Announce edges in the vertex loop, starting with the instance and proceeding in a `vertexSuccessor` traversal.
|
|
552
552
|
* @param announceEdge function to call at each edge
|
|
553
553
|
*/
|
|
554
|
-
announceEdgesAroundVertex(announceEdge:
|
|
554
|
+
announceEdgesAroundVertex(announceEdge: HalfEdgeFunction): void;
|
|
555
555
|
/**
|
|
556
556
|
* Evaluate `f(node)` at each node around `this` node's face loop. Sum the function values.
|
|
557
557
|
* @param f node to number function.
|
|
558
558
|
* @returns the sum of function values.
|
|
559
559
|
*/
|
|
560
|
-
sumAroundFace(f:
|
|
560
|
+
sumAroundFace(f: HalfEdgeToNumberFunction): number;
|
|
561
561
|
/**
|
|
562
562
|
* Evaluate `f(node)` at each node around `this` node's vertex loop. Sum the function values.
|
|
563
563
|
* @param f node to number function.
|
|
564
564
|
* @returns the sum of function values.
|
|
565
565
|
*/
|
|
566
|
-
sumAroundVertex(f:
|
|
566
|
+
sumAroundVertex(f: HalfEdgeToNumberFunction): number;
|
|
567
567
|
/** Clear the given mask bits for all nodes in `this` node's face loop. */
|
|
568
568
|
clearMaskAroundFace(mask: HalfEdgeMask): void;
|
|
569
569
|
/** Clear out the given mask bits for all nodes in `this` node's vertex loop. */
|
|
@@ -803,7 +803,7 @@ export declare class HalfEdgeGraph {
|
|
|
803
803
|
* * Terminate search if `announceVertex(graph, node)` returns `false`.
|
|
804
804
|
* @param announceVertex function to apply at one node of each vertex.
|
|
805
805
|
*/
|
|
806
|
-
announceVertexLoops(announceVertex:
|
|
806
|
+
announceVertexLoops(announceVertex: GraphHalfEdgeFunction): void;
|
|
807
807
|
/**
|
|
808
808
|
* Visit each facet of the graph once.
|
|
809
809
|
* * Call the `announceFace` function.
|
|
@@ -811,7 +811,7 @@ export declare class HalfEdgeGraph {
|
|
|
811
811
|
* * Terminate search if `announceFace(graph, node)` returns `false`.
|
|
812
812
|
* @param announceFace function to apply at one node of each face.
|
|
813
813
|
*/
|
|
814
|
-
announceFaceLoops(announceFace:
|
|
814
|
+
announceFaceLoops(announceFace: GraphHalfEdgeFunction): void;
|
|
815
815
|
/**
|
|
816
816
|
* Visit each edge of the graph once.
|
|
817
817
|
* * Call the `announceEdge` function.
|
|
@@ -820,7 +820,7 @@ export declare class HalfEdgeGraph {
|
|
|
820
820
|
* * Terminate search if `announceEdge(graph, node)` returns `false`.
|
|
821
821
|
* @param announceEdge function to apply at one node of each edge.
|
|
822
822
|
*/
|
|
823
|
-
announceEdges(announceEdge:
|
|
823
|
+
announceEdges(announceEdge: GraphHalfEdgeFunction): void;
|
|
824
824
|
/**
|
|
825
825
|
* Visit each half edge (node) of the graph once.
|
|
826
826
|
* * Call the `announceNode` function.
|
|
@@ -828,7 +828,7 @@ export declare class HalfEdgeGraph {
|
|
|
828
828
|
* * Terminate search if `announceNode(graph, node)` returns `false`.
|
|
829
829
|
* @param announceNode function to apply at each node.
|
|
830
830
|
*/
|
|
831
|
-
announceNodes(announceNode:
|
|
831
|
+
announceNodes(announceNode: GraphHalfEdgeFunction): void;
|
|
832
832
|
/** Return the number of nodes in the graph. */
|
|
833
833
|
countNodes(): number;
|
|
834
834
|
/** Apply transform to the xyz coordinates in the graph. */
|
|
@@ -838,7 +838,7 @@ export declare class HalfEdgeGraph {
|
|
|
838
838
|
* @param deleteThisNode returns true to delete the corresponding node. Should act symmetrically on the edgeMate.
|
|
839
839
|
* @returns the number of nodes deleted (twice the number of deleted edges).
|
|
840
840
|
*/
|
|
841
|
-
yankAndDeleteEdges(deleteThisNode:
|
|
841
|
+
yankAndDeleteEdges(deleteThisNode: HalfEdgeFunction): number;
|
|
842
842
|
/**
|
|
843
843
|
* Delete all isolated edges.
|
|
844
844
|
* @return the number of nodes deleted (twice the number of deleted edges).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../src/topology/Graph.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../src/topology/Graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1317,7 +1317,7 @@ class HalfEdge {
|
|
|
1317
1317
|
* @param bridgeMask mask preset on bridge edges (default is [[HalfEdgeMask.BRIDGE_EDGE]]).
|
|
1318
1318
|
*/
|
|
1319
1319
|
isSplitWasherFace(bridgeMask = HalfEdgeMask.BRIDGE_EDGE) {
|
|
1320
|
-
if (!this.countMaskAroundFace(
|
|
1320
|
+
if (!this.countMaskAroundFace(bridgeMask))
|
|
1321
1321
|
return false;
|
|
1322
1322
|
const bridges = new core_bentley_1.OrderedSet((a, b) => a.id - b.id);
|
|
1323
1323
|
let node = this;
|