@itwin/core-geometry 4.3.0-dev.2 → 4.3.0-dev.21

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.
Files changed (350) hide show
  1. package/CHANGELOG.md +41 -1
  2. package/lib/cjs/Geometry.d.ts.map +1 -1
  3. package/lib/cjs/Geometry.js +2 -4
  4. package/lib/cjs/Geometry.js.map +1 -1
  5. package/lib/cjs/bspline/BSpline1dNd.d.ts +12 -2
  6. package/lib/cjs/bspline/BSpline1dNd.d.ts.map +1 -1
  7. package/lib/cjs/bspline/BSpline1dNd.js +27 -17
  8. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  9. package/lib/cjs/bspline/BSplineCurve.d.ts +30 -16
  10. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  11. package/lib/cjs/bspline/BSplineCurve.js +68 -44
  12. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  13. package/lib/cjs/bspline/BSplineCurve3dH.d.ts +27 -20
  14. package/lib/cjs/bspline/BSplineCurve3dH.d.ts.map +1 -1
  15. package/lib/cjs/bspline/BSplineCurve3dH.js +136 -87
  16. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  17. package/lib/cjs/bspline/BSplineSurface.d.ts +138 -74
  18. package/lib/cjs/bspline/BSplineSurface.d.ts.map +1 -1
  19. package/lib/cjs/bspline/BSplineSurface.js +242 -119
  20. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  21. package/lib/cjs/bspline/Bezier1dNd.d.ts +18 -4
  22. package/lib/cjs/bspline/Bezier1dNd.d.ts.map +1 -1
  23. package/lib/cjs/bspline/Bezier1dNd.js +19 -5
  24. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  25. package/lib/cjs/bspline/BezierCurve3dH.d.ts.map +1 -1
  26. package/lib/cjs/bspline/BezierCurve3dH.js +2 -1
  27. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  28. package/lib/cjs/bspline/KnotVector.d.ts +30 -33
  29. package/lib/cjs/bspline/KnotVector.d.ts.map +1 -1
  30. package/lib/cjs/bspline/KnotVector.js +76 -69
  31. package/lib/cjs/bspline/KnotVector.js.map +1 -1
  32. package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
  33. package/lib/cjs/clipping/ClipUtils.d.ts +32 -5
  34. package/lib/cjs/clipping/ClipUtils.d.ts.map +1 -1
  35. package/lib/cjs/clipping/ClipUtils.js +92 -11
  36. package/lib/cjs/clipping/ClipUtils.js.map +1 -1
  37. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts +18 -1
  38. package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  39. package/lib/cjs/curve/CurveChainWithDistanceIndex.js +47 -0
  40. package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
  41. package/lib/cjs/curve/CurveCollection.d.ts +9 -9
  42. package/lib/cjs/curve/CurveCollection.d.ts.map +1 -1
  43. package/lib/cjs/curve/CurveCollection.js +7 -10
  44. package/lib/cjs/curve/CurveCollection.js.map +1 -1
  45. package/lib/cjs/curve/CurveCurve.d.ts +2 -2
  46. package/lib/cjs/curve/CurveCurve.d.ts.map +1 -1
  47. package/lib/cjs/curve/CurveCurve.js +3 -16
  48. package/lib/cjs/curve/CurveCurve.js.map +1 -1
  49. package/lib/cjs/curve/CurveLocationDetail.d.ts +17 -4
  50. package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
  51. package/lib/cjs/curve/CurveLocationDetail.js +32 -10
  52. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  53. package/lib/cjs/curve/CurveOps.d.ts +4 -5
  54. package/lib/cjs/curve/CurveOps.d.ts.map +1 -1
  55. package/lib/cjs/curve/CurveOps.js +1 -1
  56. package/lib/cjs/curve/CurveOps.js.map +1 -1
  57. package/lib/cjs/curve/CurveTypes.d.ts +14 -2
  58. package/lib/cjs/curve/CurveTypes.d.ts.map +1 -1
  59. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  60. package/lib/cjs/curve/CurveWireMomentsXYZ.d.ts.map +1 -1
  61. package/lib/cjs/curve/CurveWireMomentsXYZ.js +2 -4
  62. package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
  63. package/lib/cjs/curve/LineString3d.d.ts +3 -6
  64. package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
  65. package/lib/cjs/curve/LineString3d.js +1 -4
  66. package/lib/cjs/curve/LineString3d.js.map +1 -1
  67. package/lib/cjs/curve/PointString3d.d.ts +2 -1
  68. package/lib/cjs/curve/PointString3d.d.ts.map +1 -1
  69. package/lib/cjs/curve/PointString3d.js.map +1 -1
  70. package/lib/cjs/curve/RegionOps.d.ts +7 -12
  71. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  72. package/lib/cjs/curve/RegionOps.js +2 -1
  73. package/lib/cjs/curve/RegionOps.js.map +1 -1
  74. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +0 -9
  75. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
  76. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +16 -35
  77. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  78. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts +12 -6
  79. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  80. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +80 -18
  81. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  82. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.d.ts +11 -5
  83. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.d.ts.map +1 -1
  84. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js +73 -8
  85. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  86. package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts +2 -3
  87. package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
  88. package/lib/cjs/curve/internalContexts/MultiChainCollector.js +2 -3
  89. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  90. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts +4 -4
  91. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  92. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +38 -36
  93. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  94. package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts +21 -5
  95. package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts.map +1 -1
  96. package/lib/cjs/geometry3d/CoincidentGeometryOps.js +71 -45
  97. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  98. package/lib/cjs/geometry3d/Matrix3d.d.ts +20 -13
  99. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  100. package/lib/cjs/geometry3d/Matrix3d.js +28 -21
  101. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  102. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +11 -2
  103. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
  104. package/lib/cjs/geometry3d/Point3dVector3d.js +16 -5
  105. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  106. package/lib/cjs/geometry3d/PointHelpers.d.ts +58 -20
  107. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
  108. package/lib/cjs/geometry3d/PointHelpers.js +213 -62
  109. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  110. package/lib/cjs/geometry3d/Segment1d.d.ts +5 -1
  111. package/lib/cjs/geometry3d/Segment1d.d.ts.map +1 -1
  112. package/lib/cjs/geometry3d/Segment1d.js +11 -7
  113. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  114. package/lib/cjs/geometry3d/Transform.d.ts +2 -3
  115. package/lib/cjs/geometry3d/Transform.d.ts.map +1 -1
  116. package/lib/cjs/geometry3d/Transform.js +2 -3
  117. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  118. package/lib/cjs/geometry4d/Point4d.d.ts +14 -1
  119. package/lib/cjs/geometry4d/Point4d.d.ts.map +1 -1
  120. package/lib/cjs/geometry4d/Point4d.js +22 -1
  121. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  122. package/lib/cjs/numerics/BezierPolynomials.d.ts +91 -68
  123. package/lib/cjs/numerics/BezierPolynomials.d.ts.map +1 -1
  124. package/lib/cjs/numerics/BezierPolynomials.js +100 -79
  125. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  126. package/lib/cjs/numerics/Newton.d.ts +115 -60
  127. package/lib/cjs/numerics/Newton.d.ts.map +1 -1
  128. package/lib/cjs/numerics/Newton.js +120 -62
  129. package/lib/cjs/numerics/Newton.js.map +1 -1
  130. package/lib/cjs/numerics/PascalCoefficients.d.ts +8 -12
  131. package/lib/cjs/numerics/PascalCoefficients.d.ts.map +1 -1
  132. package/lib/cjs/numerics/PascalCoefficients.js +10 -12
  133. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  134. package/lib/cjs/numerics/Polynomials.d.ts +2 -2
  135. package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
  136. package/lib/cjs/numerics/Polynomials.js +2 -2
  137. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  138. package/lib/cjs/polyface/PolyfaceBuilder.d.ts +3 -0
  139. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
  140. package/lib/cjs/polyface/PolyfaceBuilder.js +13 -2
  141. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  142. package/lib/cjs/polyface/PolyfaceClip.d.ts +1 -1
  143. package/lib/cjs/polyface/PolyfaceClip.d.ts.map +1 -1
  144. package/lib/cjs/polyface/PolyfaceClip.js +6 -3
  145. package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
  146. package/lib/cjs/polyface/PolyfaceData.d.ts +1 -1
  147. package/lib/cjs/polyface/PolyfaceData.js +1 -1
  148. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  149. package/lib/cjs/polyface/PolyfaceQuery.d.ts +39 -12
  150. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  151. package/lib/cjs/polyface/PolyfaceQuery.js +94 -17
  152. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  153. package/lib/cjs/serialization/BGFBReader.d.ts +10 -10
  154. package/lib/cjs/serialization/BGFBReader.d.ts.map +1 -1
  155. package/lib/cjs/serialization/BGFBReader.js +69 -42
  156. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  157. package/lib/cjs/serialization/BGFBWriter.d.ts +8 -8
  158. package/lib/cjs/serialization/BGFBWriter.d.ts.map +1 -1
  159. package/lib/cjs/serialization/BGFBWriter.js +80 -55
  160. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  161. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  162. package/lib/cjs/serialization/GeometrySamples.js +6 -8
  163. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  164. package/lib/cjs/serialization/IModelJsonSchema.d.ts +8 -14
  165. package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
  166. package/lib/cjs/serialization/IModelJsonSchema.js +85 -259
  167. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  168. package/lib/cjs/serialization/SerializationHelpers.d.ts +109 -0
  169. package/lib/cjs/serialization/SerializationHelpers.d.ts.map +1 -0
  170. package/lib/cjs/serialization/SerializationHelpers.js +591 -0
  171. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -0
  172. package/lib/cjs/solid/SweepContour.d.ts +4 -2
  173. package/lib/cjs/solid/SweepContour.d.ts.map +1 -1
  174. package/lib/cjs/solid/SweepContour.js +4 -2
  175. package/lib/cjs/solid/SweepContour.js.map +1 -1
  176. package/lib/esm/Geometry.d.ts.map +1 -1
  177. package/lib/esm/Geometry.js +2 -4
  178. package/lib/esm/Geometry.js.map +1 -1
  179. package/lib/esm/bspline/BSpline1dNd.d.ts +12 -2
  180. package/lib/esm/bspline/BSpline1dNd.d.ts.map +1 -1
  181. package/lib/esm/bspline/BSpline1dNd.js +27 -17
  182. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  183. package/lib/esm/bspline/BSplineCurve.d.ts +30 -16
  184. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  185. package/lib/esm/bspline/BSplineCurve.js +68 -44
  186. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  187. package/lib/esm/bspline/BSplineCurve3dH.d.ts +27 -20
  188. package/lib/esm/bspline/BSplineCurve3dH.d.ts.map +1 -1
  189. package/lib/esm/bspline/BSplineCurve3dH.js +137 -88
  190. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  191. package/lib/esm/bspline/BSplineSurface.d.ts +138 -74
  192. package/lib/esm/bspline/BSplineSurface.d.ts.map +1 -1
  193. package/lib/esm/bspline/BSplineSurface.js +242 -119
  194. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  195. package/lib/esm/bspline/Bezier1dNd.d.ts +18 -4
  196. package/lib/esm/bspline/Bezier1dNd.d.ts.map +1 -1
  197. package/lib/esm/bspline/Bezier1dNd.js +19 -5
  198. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  199. package/lib/esm/bspline/BezierCurve3dH.d.ts.map +1 -1
  200. package/lib/esm/bspline/BezierCurve3dH.js +2 -1
  201. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  202. package/lib/esm/bspline/KnotVector.d.ts +30 -33
  203. package/lib/esm/bspline/KnotVector.d.ts.map +1 -1
  204. package/lib/esm/bspline/KnotVector.js +76 -69
  205. package/lib/esm/bspline/KnotVector.js.map +1 -1
  206. package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
  207. package/lib/esm/clipping/ClipUtils.d.ts +32 -5
  208. package/lib/esm/clipping/ClipUtils.d.ts.map +1 -1
  209. package/lib/esm/clipping/ClipUtils.js +92 -11
  210. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  211. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +18 -1
  212. package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -1
  213. package/lib/esm/curve/CurveChainWithDistanceIndex.js +48 -1
  214. package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
  215. package/lib/esm/curve/CurveCollection.d.ts +9 -9
  216. package/lib/esm/curve/CurveCollection.d.ts.map +1 -1
  217. package/lib/esm/curve/CurveCollection.js +7 -10
  218. package/lib/esm/curve/CurveCollection.js.map +1 -1
  219. package/lib/esm/curve/CurveCurve.d.ts +2 -2
  220. package/lib/esm/curve/CurveCurve.d.ts.map +1 -1
  221. package/lib/esm/curve/CurveCurve.js +3 -16
  222. package/lib/esm/curve/CurveCurve.js.map +1 -1
  223. package/lib/esm/curve/CurveLocationDetail.d.ts +17 -4
  224. package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
  225. package/lib/esm/curve/CurveLocationDetail.js +32 -10
  226. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  227. package/lib/esm/curve/CurveOps.d.ts +4 -5
  228. package/lib/esm/curve/CurveOps.d.ts.map +1 -1
  229. package/lib/esm/curve/CurveOps.js +1 -1
  230. package/lib/esm/curve/CurveOps.js.map +1 -1
  231. package/lib/esm/curve/CurveTypes.d.ts +14 -2
  232. package/lib/esm/curve/CurveTypes.d.ts.map +1 -1
  233. package/lib/esm/curve/CurveTypes.js.map +1 -1
  234. package/lib/esm/curve/CurveWireMomentsXYZ.d.ts.map +1 -1
  235. package/lib/esm/curve/CurveWireMomentsXYZ.js +2 -4
  236. package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
  237. package/lib/esm/curve/LineString3d.d.ts +3 -6
  238. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  239. package/lib/esm/curve/LineString3d.js +1 -4
  240. package/lib/esm/curve/LineString3d.js.map +1 -1
  241. package/lib/esm/curve/PointString3d.d.ts +2 -1
  242. package/lib/esm/curve/PointString3d.d.ts.map +1 -1
  243. package/lib/esm/curve/PointString3d.js.map +1 -1
  244. package/lib/esm/curve/RegionOps.d.ts +7 -12
  245. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  246. package/lib/esm/curve/RegionOps.js +2 -1
  247. package/lib/esm/curve/RegionOps.js.map +1 -1
  248. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +0 -9
  249. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
  250. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +16 -35
  251. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  252. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts +12 -6
  253. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  254. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +81 -19
  255. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  256. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.d.ts +11 -5
  257. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.d.ts.map +1 -1
  258. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js +74 -9
  259. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  260. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts +2 -3
  261. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
  262. package/lib/esm/curve/internalContexts/MultiChainCollector.js +2 -3
  263. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  264. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts +4 -4
  265. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  266. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +38 -36
  267. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  268. package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts +21 -5
  269. package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts.map +1 -1
  270. package/lib/esm/geometry3d/CoincidentGeometryOps.js +71 -45
  271. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  272. package/lib/esm/geometry3d/Matrix3d.d.ts +20 -13
  273. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  274. package/lib/esm/geometry3d/Matrix3d.js +28 -21
  275. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  276. package/lib/esm/geometry3d/Point3dVector3d.d.ts +11 -2
  277. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
  278. package/lib/esm/geometry3d/Point3dVector3d.js +16 -5
  279. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  280. package/lib/esm/geometry3d/PointHelpers.d.ts +58 -20
  281. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
  282. package/lib/esm/geometry3d/PointHelpers.js +213 -62
  283. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  284. package/lib/esm/geometry3d/Segment1d.d.ts +5 -1
  285. package/lib/esm/geometry3d/Segment1d.d.ts.map +1 -1
  286. package/lib/esm/geometry3d/Segment1d.js +11 -7
  287. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  288. package/lib/esm/geometry3d/Transform.d.ts +2 -3
  289. package/lib/esm/geometry3d/Transform.d.ts.map +1 -1
  290. package/lib/esm/geometry3d/Transform.js +2 -3
  291. package/lib/esm/geometry3d/Transform.js.map +1 -1
  292. package/lib/esm/geometry4d/Point4d.d.ts +14 -1
  293. package/lib/esm/geometry4d/Point4d.d.ts.map +1 -1
  294. package/lib/esm/geometry4d/Point4d.js +22 -1
  295. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  296. package/lib/esm/numerics/BezierPolynomials.d.ts +91 -68
  297. package/lib/esm/numerics/BezierPolynomials.d.ts.map +1 -1
  298. package/lib/esm/numerics/BezierPolynomials.js +100 -79
  299. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  300. package/lib/esm/numerics/Newton.d.ts +115 -60
  301. package/lib/esm/numerics/Newton.d.ts.map +1 -1
  302. package/lib/esm/numerics/Newton.js +120 -62
  303. package/lib/esm/numerics/Newton.js.map +1 -1
  304. package/lib/esm/numerics/PascalCoefficients.d.ts +8 -12
  305. package/lib/esm/numerics/PascalCoefficients.d.ts.map +1 -1
  306. package/lib/esm/numerics/PascalCoefficients.js +10 -12
  307. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  308. package/lib/esm/numerics/Polynomials.d.ts +2 -2
  309. package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
  310. package/lib/esm/numerics/Polynomials.js +2 -2
  311. package/lib/esm/numerics/Polynomials.js.map +1 -1
  312. package/lib/esm/polyface/PolyfaceBuilder.d.ts +3 -0
  313. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  314. package/lib/esm/polyface/PolyfaceBuilder.js +13 -2
  315. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  316. package/lib/esm/polyface/PolyfaceClip.d.ts +1 -1
  317. package/lib/esm/polyface/PolyfaceClip.d.ts.map +1 -1
  318. package/lib/esm/polyface/PolyfaceClip.js +6 -3
  319. package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
  320. package/lib/esm/polyface/PolyfaceData.d.ts +1 -1
  321. package/lib/esm/polyface/PolyfaceData.js +1 -1
  322. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  323. package/lib/esm/polyface/PolyfaceQuery.d.ts +39 -12
  324. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  325. package/lib/esm/polyface/PolyfaceQuery.js +94 -17
  326. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  327. package/lib/esm/serialization/BGFBReader.d.ts +10 -10
  328. package/lib/esm/serialization/BGFBReader.d.ts.map +1 -1
  329. package/lib/esm/serialization/BGFBReader.js +69 -42
  330. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  331. package/lib/esm/serialization/BGFBWriter.d.ts +8 -8
  332. package/lib/esm/serialization/BGFBWriter.d.ts.map +1 -1
  333. package/lib/esm/serialization/BGFBWriter.js +80 -55
  334. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  335. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  336. package/lib/esm/serialization/GeometrySamples.js +7 -9
  337. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  338. package/lib/esm/serialization/IModelJsonSchema.d.ts +8 -14
  339. package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
  340. package/lib/esm/serialization/IModelJsonSchema.js +86 -260
  341. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  342. package/lib/esm/serialization/SerializationHelpers.d.ts +109 -0
  343. package/lib/esm/serialization/SerializationHelpers.d.ts.map +1 -0
  344. package/lib/esm/serialization/SerializationHelpers.js +588 -0
  345. package/lib/esm/serialization/SerializationHelpers.js.map +1 -0
  346. package/lib/esm/solid/SweepContour.d.ts +4 -2
  347. package/lib/esm/solid/SweepContour.d.ts.map +1 -1
  348. package/lib/esm/solid/SweepContour.js +4 -2
  349. package/lib/esm/solid/SweepContour.js.map +1 -1
  350. package/package.json +3 -3
@@ -6,39 +6,41 @@
6
6
  * @module Serialization
7
7
  */
8
8
  import { flatbuffers } from "flatbuffers";
9
- import { BGFBAccessors } from "./BGFBAccessors";
9
+ import { AkimaCurve3d } from "../bspline/AkimaCurve3d";
10
+ import { BSplineCurve3d } from "../bspline/BSplineCurve";
11
+ import { BSplineCurve3dH } from "../bspline/BSplineCurve3dH";
12
+ import { BSplineSurface3d, BSplineSurface3dH, UVSelect } from "../bspline/BSplineSurface";
13
+ import { InterpolationCurve3d } from "../bspline/InterpolationCurve3d";
14
+ import { BSplineWrapMode } from "../bspline/KnotVector";
15
+ import { Arc3d } from "../curve/Arc3d";
16
+ import { CurveCollection } from "../curve/CurveCollection";
10
17
  import { CurvePrimitive } from "../curve/CurvePrimitive";
18
+ import { GeometryQuery } from "../curve/GeometryQuery";
11
19
  import { LineSegment3d } from "../curve/LineSegment3d";
12
- import { Arc3d } from "../curve/Arc3d";
13
20
  import { LineString3d } from "../curve/LineString3d";
14
- import { GrowableXYZArray } from "../geometry3d/GrowableXYZArray";
15
- import { IndexedPolyface } from "../polyface/Polyface";
16
- import { CurveCollection } from "../curve/CurveCollection";
17
- import { ParityRegion } from "../curve/ParityRegion";
18
21
  import { Loop } from "../curve/Loop";
19
- import { UnionRegion } from "../curve/UnionRegion";
22
+ import { ParityRegion } from "../curve/ParityRegion";
20
23
  import { Path } from "../curve/Path";
21
- import { BSplineCurve3d } from "../bspline/BSplineCurve";
22
- import { BSplineCurve3dH } from "../bspline/BSplineCurve3dH";
23
- import { SolidPrimitive } from "../solid/SolidPrimitive";
24
+ import { PointString3d } from "../curve/PointString3d";
25
+ import { DirectSpiral3d } from "../curve/spiral/DirectSpiral3d";
26
+ import { IntegratedSpiral3d } from "../curve/spiral/IntegratedSpiral3d";
27
+ import { TransitionSpiral3d } from "../curve/spiral/TransitionSpiral3d";
28
+ import { UnionRegion } from "../curve/UnionRegion";
29
+ import { GrowableXYZArray } from "../geometry3d/GrowableXYZArray";
30
+ import { XYZ } from "../geometry3d/Point3dVector3d";
31
+ import { AuxChannel, AuxChannelData, PolyfaceAuxData } from "../polyface/AuxData";
32
+ import { IndexedPolyface } from "../polyface/Polyface";
24
33
  import { Box } from "../solid/Box";
25
- import { Sphere } from "../solid/Sphere";
34
+ import { Cone } from "../solid/Cone";
26
35
  import { LinearSweep } from "../solid/LinearSweep";
27
36
  import { RotationalSweep } from "../solid/RotationalSweep";
28
37
  import { RuledSweep } from "../solid/RuledSweep";
38
+ import { SolidPrimitive } from "../solid/SolidPrimitive";
39
+ import { Sphere } from "../solid/Sphere";
29
40
  import { TorusPipe } from "../solid/TorusPipe";
30
- import { Cone } from "../solid/Cone";
31
- import { GeometryQuery } from "../curve/GeometryQuery";
32
- import { BSplineSurface3d, BSplineSurface3dH, UVSelect } from "../bspline/BSplineSurface";
33
- import { PointString3d } from "../curve/PointString3d";
34
- import { XYZ } from "../geometry3d/Point3dVector3d";
35
- import { AuxChannel, AuxChannelData, PolyfaceAuxData } from "../polyface/AuxData";
36
- import { TransitionSpiral3d } from "../curve/spiral/TransitionSpiral3d";
37
- import { IntegratedSpiral3d } from "../curve/spiral/IntegratedSpiral3d";
41
+ import { BGFBAccessors } from "./BGFBAccessors";
38
42
  import { DgnSpiralTypeQueries } from "./BGFBReader";
39
- import { DirectSpiral3d } from "../curve/spiral/DirectSpiral3d";
40
- import { InterpolationCurve3d } from "../bspline/InterpolationCurve3d";
41
- import { AkimaCurve3d } from "../bspline/AkimaCurve3d";
43
+ import { SerializationHelpers } from "./SerializationHelpers";
42
44
  /**
43
45
  * Context to write to a flatbuffer blob.
44
46
  * * This class is internal.
@@ -179,46 +181,69 @@ export class BGFBWriter {
179
181
  return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagAkimaCurve, headerOffset, 0);
180
182
  }
181
183
  writeBsplineCurve3dAsFBVariantGeometry(bcurve) {
182
- const order = bcurve.order;
183
- const closed = false; // typescript bcurves are not closed. There is API to impose wrapping . . .
184
- const weightsOffset = 0;
185
- const polesOffset = this.writeDoubleArray(bcurve.copyPointsFloat64Array());
186
- if (polesOffset === undefined)
184
+ const data = SerializationHelpers.createBSplineCurveData(bcurve.polesRef, bcurve.poleDimension, bcurve.knotsRef, bcurve.numPoles, bcurve.order);
185
+ const wrapMode = bcurve.getWrappable();
186
+ if (BSplineWrapMode.None !== wrapMode)
187
+ data.params.wrapMode = wrapMode;
188
+ if (!SerializationHelpers.Export.prepareBSplineCurveData(data, { jsonPoles: false }))
187
189
  return undefined;
188
- const knotsOffset = this.writeDoubleArray(bcurve.copyKnots(true));
189
- const headerOffset = BGFBAccessors.BsplineCurve.createBsplineCurve(this.builder, order, closed, polesOffset, weightsOffset, knotsOffset);
190
+ const closed = !!data.params.closed;
191
+ const polesOffset = this.writeDoubleArray(data.poles);
192
+ const weightsOffset = 0;
193
+ const knotsOffset = this.writeDoubleArray(data.params.knots);
194
+ const headerOffset = BGFBAccessors.BsplineCurve.createBsplineCurve(this.builder, data.params.order, closed, polesOffset, weightsOffset, knotsOffset);
190
195
  return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagBsplineCurve, headerOffset, 0);
191
196
  }
192
197
  writeBSplineSurfaceAsFBVariantGeometry(bsurf) {
193
- const orderU = bsurf.orderUV(UVSelect.uDirection);
194
- const orderV = bsurf.orderUV(UVSelect.VDirection);
195
- const numPolesU = bsurf.numPolesUV(UVSelect.uDirection);
196
- const numPolesV = bsurf.numPolesUV(UVSelect.VDirection);
197
- const closedU = false;
198
- const closedV = false;
198
+ let poles = bsurf.coffs;
199
+ let weights;
200
+ let dim = bsurf.poleDimension;
201
+ if (bsurf instanceof BSplineSurface3dH) {
202
+ poles = bsurf.copyXYZToFloat64Array(false);
203
+ weights = bsurf.copyWeightsToFloat64Array();
204
+ dim = 3;
205
+ }
206
+ const data = SerializationHelpers.createBSplineSurfaceData(poles, dim, bsurf.knots[UVSelect.uDirection].knots, bsurf.numPolesUV(UVSelect.uDirection), bsurf.orderUV(UVSelect.uDirection), bsurf.knots[UVSelect.vDirection].knots, bsurf.numPolesUV(UVSelect.vDirection), bsurf.orderUV(UVSelect.vDirection));
207
+ if (weights)
208
+ data.weights = weights;
209
+ const wrapModeU = bsurf.getWrappable(UVSelect.uDirection);
210
+ const wrapModeV = bsurf.getWrappable(UVSelect.vDirection);
211
+ if (BSplineWrapMode.None !== wrapModeU)
212
+ data.uParams.wrapMode = wrapModeU;
213
+ if (BSplineWrapMode.None !== wrapModeV)
214
+ data.vParams.wrapMode = wrapModeV;
215
+ if (!SerializationHelpers.Export.prepareBSplineSurfaceData(data, { jsonPoles: false }))
216
+ return undefined;
217
+ // TypeScript B-spline surfaces do not support trim curves or isoline counts
199
218
  const holeOrigin = 0;
200
219
  const boundariesOffset = 0;
201
- let polesOffset = 0;
202
- let weightsOffset = 0;
203
- if (bsurf instanceof BSplineSurface3d) {
204
- polesOffset = this.writeDoubleArray(bsurf.copyPointsFloat64Array());
205
- }
206
- else if (bsurf instanceof BSplineSurface3dH) {
207
- polesOffset = this.writeDoubleArray(bsurf.copyXYZToFloat64Array(false));
208
- weightsOffset = this.writeDoubleArray(bsurf.copyWeightsToFloat64Array());
209
- }
210
- const uKnotsOffset = this.writeDoubleArray(bsurf.knots[0].copyKnots(true));
211
- const vKnotsOffset = this.writeDoubleArray(bsurf.knots[1].copyKnots(true));
212
- const headerOffset = BGFBAccessors.BsplineSurface.createBsplineSurface(this.builder, polesOffset, weightsOffset, uKnotsOffset, vKnotsOffset, numPolesU, numPolesV, orderU, orderV, 0, 0, holeOrigin, boundariesOffset, closedU, closedV);
220
+ const numRulesU = 0;
221
+ const numRulesV = 0;
222
+ const closedU = !!data.uParams.closed;
223
+ const closedV = !!data.vParams.closed;
224
+ const polesOffset = this.writeDoubleArray(data.poles);
225
+ const weightsOffset = data.weights ? this.writeDoubleArray(data.weights) : 0;
226
+ const uKnotsOffset = this.writeDoubleArray(data.uParams.knots);
227
+ const vKnotsOffset = this.writeDoubleArray(data.vParams.knots);
228
+ const headerOffset = BGFBAccessors.BsplineSurface.createBsplineSurface(this.builder, polesOffset, weightsOffset, uKnotsOffset, vKnotsOffset, data.uParams.numPoles, data.vParams.numPoles, data.uParams.order, data.vParams.order, numRulesU, numRulesV, holeOrigin, boundariesOffset, closedU, closedV);
213
229
  return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagBsplineSurface, headerOffset, 0);
214
230
  }
215
- writeBsplineCurve3dAHsFBVariantGeometry(bcurve) {
216
- const order = bcurve.order;
217
- const closed = false; // typescript bcurves are not closed. There is API to impose wrapping . . .
218
- const polesOffset = this.writeDoubleArray(bcurve.copyXYZFloat64Array(false));
219
- const weightsOffset = this.writeDoubleArray(bcurve.copyWeightsFloat64Array());
220
- const knotsOffset = this.writeDoubleArray(bcurve.copyKnots(true));
221
- const headerOffset = BGFBAccessors.BsplineCurve.createBsplineCurve(this.builder, order, closed, polesOffset, weightsOffset, knotsOffset);
231
+ writeBsplineCurve3dHAsFBVariantGeometry(bcurve) {
232
+ const poles = bcurve.copyXYZFloat64Array(false);
233
+ const weights = bcurve.copyWeightsFloat64Array();
234
+ const dim = 3;
235
+ const data = SerializationHelpers.createBSplineCurveData(poles, dim, bcurve.knotsRef, bcurve.numPoles, bcurve.order);
236
+ data.weights = weights;
237
+ const wrapMode = bcurve.getWrappable();
238
+ if (BSplineWrapMode.None !== wrapMode)
239
+ data.params.wrapMode = wrapMode;
240
+ if (!SerializationHelpers.Export.prepareBSplineCurveData(data, { jsonPoles: false }))
241
+ return undefined;
242
+ const closed = !!data.params.closed;
243
+ const polesOffset = this.writeDoubleArray(data.poles);
244
+ const weightsOffset = this.writeDoubleArray(data.weights);
245
+ const knotsOffset = this.writeDoubleArray(data.params.knots);
246
+ const headerOffset = BGFBAccessors.BsplineCurve.createBsplineCurve(this.builder, data.params.order, closed, polesOffset, weightsOffset, knotsOffset);
222
247
  return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagBsplineCurve, headerOffset, 0);
223
248
  }
224
249
  writeCurvePrimitiveAsFBVariantGeometry(curvePrimitive) {
@@ -242,7 +267,7 @@ export class BGFBWriter {
242
267
  return this.writeBsplineCurve3dAsFBVariantGeometry(curvePrimitive);
243
268
  }
244
269
  else if (curvePrimitive instanceof BSplineCurve3dH) {
245
- return this.writeBsplineCurve3dAHsFBVariantGeometry(curvePrimitive);
270
+ return this.writeBsplineCurve3dHAsFBVariantGeometry(curvePrimitive);
246
271
  }
247
272
  else if (curvePrimitive instanceof InterpolationCurve3d) {
248
273
  return this.writeInterpolationCurve3dAsFBVariantGeometry(curvePrimitive);
@@ -1 +1 @@
1
- {"version":3,"file":"BGFBWriter.js","sourceRoot":"","sources":["../../../src/serialization/BGFBWriter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Serialization\r\n */\r\nimport { flatbuffers } from \"flatbuffers\";\r\nimport { BGFBAccessors } from \"./BGFBAccessors\";\r\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\r\nimport { LineSegment3d } from \"../curve/LineSegment3d\";\r\nimport { Arc3d } from \"../curve/Arc3d\";\r\nimport { LineString3d } from \"../curve/LineString3d\";\r\nimport { GrowableXYZArray } from \"../geometry3d/GrowableXYZArray\";\r\nimport { IndexedPolyface } from \"../polyface/Polyface\";\r\nimport { CurveCollection } from \"../curve/CurveCollection\";\r\nimport { ParityRegion } from \"../curve/ParityRegion\";\r\nimport { Loop } from \"../curve/Loop\";\r\nimport { UnionRegion } from \"../curve/UnionRegion\";\r\nimport { Path } from \"../curve/Path\";\r\nimport { BSplineCurve3d } from \"../bspline/BSplineCurve\";\r\nimport { BSplineCurve3dH } from \"../bspline/BSplineCurve3dH\";\r\nimport { SolidPrimitive } from \"../solid/SolidPrimitive\";\r\nimport { Box } from \"../solid/Box\";\r\nimport { Sphere } from \"../solid/Sphere\";\r\nimport { LinearSweep } from \"../solid/LinearSweep\";\r\nimport { RotationalSweep } from \"../solid/RotationalSweep\";\r\nimport { RuledSweep } from \"../solid/RuledSweep\";\r\nimport { TorusPipe } from \"../solid/TorusPipe\";\r\nimport { Cone } from \"../solid/Cone\";\r\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\r\nimport { BSplineSurface3d, BSplineSurface3dH, UVSelect } from \"../bspline/BSplineSurface\";\r\nimport { PointString3d } from \"../curve/PointString3d\";\r\nimport { Point3d, XYZ } from \"../geometry3d/Point3dVector3d\";\r\nimport { AuxChannel, AuxChannelData, PolyfaceAuxData } from \"../polyface/AuxData\";\r\nimport { TransitionSpiral3d } from \"../curve/spiral/TransitionSpiral3d\";\r\nimport { IntegratedSpiral3d } from \"../curve/spiral/IntegratedSpiral3d\";\r\nimport { DgnSpiralTypeQueries } from \"./BGFBReader\";\r\nimport { DirectSpiral3d } from \"../curve/spiral/DirectSpiral3d\";\r\nimport { TaggedNumericData } from \"../polyface/TaggedNumericData\";\r\nimport { InterpolationCurve3d } from \"../bspline/InterpolationCurve3d\";\r\nimport { AkimaCurve3d } from \"../bspline/AkimaCurve3d\";\r\n\r\n/**\r\n * Context to write to a flatbuffer blob.\r\n * * This class is internal.\r\n * * Public access is through BentleyGeometryFlatBuffer.geometryToBytes()\r\n * @internal\r\n */\r\nexport class BGFBWriter {\r\n public builder: flatbuffers.Builder;\r\n public constructor(defaultSize: number = 1024) {\r\n this.builder = new flatbuffers.Builder(defaultSize);\r\n }\r\n /**\r\n *\r\n * @param data data source, as Float64Array or number[].\r\n * @param count optional count, used only if less than .length numbers are to be written.\r\n */\r\n public writeDoubleArray(data: Float64Array | number[] | undefined, count?: number): number {\r\n if (data === undefined)\r\n return 0;\r\n let numFloats = data.length;\r\n if (numFloats === 0)\r\n return 0;\r\n if (count !== undefined && count < numFloats)\r\n numFloats = count;\r\n this.builder.startVector(8, numFloats, 8);\r\n for (let i = numFloats - 1; i >= 0; i--) {\r\n this.builder.addFloat64(data[i]);\r\n }\r\n return this.builder.endVector();\r\n }\r\n\r\n /**\r\n *\r\n * @param data data source, as Float64Array or number[].\r\n * @param count optional count, used only if less than .length numbers are to be written.\r\n */\r\n public writeIntArray(data: Int32Array | number[] | undefined): number {\r\n if (data === undefined)\r\n return 0;\r\n const numInt = data.length;\r\n if (numInt === 0)\r\n return 0;\r\n this.builder.startVector(4, numInt, 4);\r\n for (let i = numInt - 1; i >= 0; i--) {\r\n this.builder.addInt32(data[i]);\r\n }\r\n return this.builder.endVector();\r\n }\r\n\r\n /**\r\n *\r\n * @param data data source, as array derived from XYZ.\r\n * The data is output as a flat array of 3*data.length numbers.\r\n */\r\n public writePackedYZArray(data: XYZ[] | undefined): number {\r\n if (data === undefined)\r\n return 0;\r\n const numFloats = data.length * 3;\r\n if (numFloats === 0)\r\n return 0;\r\n this.builder.startVector(8, numFloats, 8);\r\n // write in reverse index order, and zyx within each XYZ\r\n for (let i = data.length - 1; i >= 0; i--) {\r\n this.builder.addFloat64(data[i].z);\r\n this.builder.addFloat64(data[i].y);\r\n this.builder.addFloat64(data[i].x);\r\n }\r\n return this.builder.endVector();\r\n }\r\n\r\n public writeCurveCollectionAsFBCurveVector(cv: CurveCollection): number | undefined {\r\n const childrenOffsets: flatbuffers.Offset[] = [];\r\n for (const child of cv.children!) {\r\n if (child instanceof CurvePrimitive) {\r\n const childOffset = this.writeCurvePrimitiveAsFBVariantGeometry(child);\r\n if (childOffset)\r\n childrenOffsets.push(childOffset);\r\n } else if (child instanceof CurveCollection) {\r\n const childOffset = this.writeCurveCollectionAsFBVariantGeometry(child);\r\n if (childOffset)\r\n childrenOffsets.push(childOffset);\r\n }\r\n }\r\n\r\n const childrenVectorOffset = BGFBAccessors.CurveVector.createCurvesVector(this.builder, childrenOffsets);\r\n let cvType = 0;\r\n if (cv instanceof Path) cvType = 1;\r\n else if (cv instanceof Loop) {\r\n cvType = cv.isInner ? 3 : 2;\r\n } else if (cv instanceof ParityRegion) cvType = 4;\r\n else if (cv instanceof UnionRegion) cvType = 5;\r\n const curveVectorOffset = BGFBAccessors.CurveVector.createCurveVector(this.builder, cvType, childrenVectorOffset);\r\n return curveVectorOffset;\r\n }\r\n\r\n public writeCurveCollectionAsFBVariantGeometry(cv: CurveCollection): number | undefined {\r\n const curveVectorOffset = this.writeCurveCollectionAsFBCurveVector(cv);\r\n if (curveVectorOffset === undefined)\r\n return undefined;\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagCurveVector, curveVectorOffset, 0);\r\n }\r\n\r\n public writeInterpolationCurve3dAsFBVariantGeometry(curve: InterpolationCurve3d): number | undefined {\r\n const props = curve.cloneProps();\r\n const fitPointsOffset = this.writeDoubleArray(curve.copyFitPointsFloat64Array());\r\n const knotOffset = props.knots ? this.writeDoubleArray(props.knots) : 0;\r\n\r\n // REMARK: some native or flatbuffer quirk made startTangent a point and endTangent a vector.\r\n BGFBAccessors.InterpolationCurve.startInterpolationCurve(this.builder);\r\n BGFBAccessors.InterpolationCurve.addFitPoints(this.builder, fitPointsOffset);\r\n if (props.order)\r\n BGFBAccessors.InterpolationCurve.addOrder(this.builder, props.order);\r\n if (props.closed)\r\n BGFBAccessors.InterpolationCurve.addClosed(this.builder, props.closed);\r\n if (props.isChordLenKnots)\r\n BGFBAccessors.InterpolationCurve.addIsChordLenKnots(this.builder, props.isChordLenKnots);\r\n if (props.isColinearTangents)\r\n BGFBAccessors.InterpolationCurve.addIsColinearTangents(this.builder, props.isColinearTangents);\r\n if (props.isChordLenKnots)\r\n BGFBAccessors.InterpolationCurve.addIsChordLenKnots(this.builder, props.isChordLenKnots);\r\n if (props.isNaturalTangents)\r\n BGFBAccessors.InterpolationCurve.addIsNaturalTangents(this.builder, props.isNaturalTangents);\r\n if (props.startTangent !== undefined) {\r\n const startTangentOffset = BGFBAccessors.DPoint3d.createDPoint3d(this.builder,\r\n XYZ.x(props.startTangent), XYZ.y(props.startTangent), XYZ.z(props.startTangent));\r\n BGFBAccessors.InterpolationCurve.addStartTangent(this.builder, startTangentOffset);\r\n }\r\n if (props.endTangent !== undefined) {\r\n const endTangentOffset = BGFBAccessors.DPoint3d.createDPoint3d(this.builder,\r\n XYZ.x(props.endTangent), XYZ.y(props.endTangent), XYZ.z(props.endTangent));\r\n BGFBAccessors.InterpolationCurve.addEndTangent(this.builder, endTangentOffset);\r\n }\r\n if (knotOffset !== 0)\r\n BGFBAccessors.InterpolationCurve.addKnots(this.builder, knotOffset);\r\n const headerOffset = BGFBAccessors.InterpolationCurve.endInterpolationCurve(this.builder);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagInterpolationCurve, headerOffset, 0);\r\n }\r\n\r\n public writeAkimaCurve3dAsFBVariantGeometry(curve: AkimaCurve3d): number | undefined {\r\n const fitPointsOffset = this.writeDoubleArray(curve.copyFitPointsFloat64Array());\r\n BGFBAccessors.AkimaCurve.startAkimaCurve(this.builder);\r\n BGFBAccessors.AkimaCurve.addPoints(this.builder, fitPointsOffset);\r\n const headerOffset = BGFBAccessors.AkimaCurve.endAkimaCurve(this.builder);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagAkimaCurve, headerOffset, 0);\r\n }\r\n\r\n public writeBsplineCurve3dAsFBVariantGeometry(bcurve: BSplineCurve3d): number | undefined {\r\n const order = bcurve.order;\r\n const closed = false; // typescript bcurves are not closed. There is API to impose wrapping . . .\r\n const weightsOffset = 0;\r\n const polesOffset = this.writeDoubleArray(bcurve.copyPointsFloat64Array());\r\n if (polesOffset === undefined)\r\n return undefined;\r\n const knotsOffset = this.writeDoubleArray(bcurve.copyKnots(true));\r\n const headerOffset = BGFBAccessors.BsplineCurve.createBsplineCurve(this.builder,\r\n order, closed, polesOffset, weightsOffset, knotsOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagBsplineCurve, headerOffset, 0);\r\n }\r\n\r\n public writeBSplineSurfaceAsFBVariantGeometry(bsurf: BSplineSurface3d | BSplineSurface3dH): number | undefined {\r\n const orderU = bsurf.orderUV(UVSelect.uDirection);\r\n const orderV = bsurf.orderUV(UVSelect.VDirection);\r\n const numPolesU = bsurf.numPolesUV(UVSelect.uDirection);\r\n const numPolesV = bsurf.numPolesUV(UVSelect.VDirection);\r\n const closedU = false;\r\n const closedV = false;\r\n const holeOrigin = 0;\r\n const boundariesOffset = 0;\r\n let polesOffset = 0;\r\n let weightsOffset = 0;\r\n if (bsurf instanceof BSplineSurface3d) {\r\n polesOffset = this.writeDoubleArray(bsurf.copyPointsFloat64Array());\r\n } else if (bsurf instanceof BSplineSurface3dH) {\r\n polesOffset = this.writeDoubleArray(bsurf.copyXYZToFloat64Array(false));\r\n weightsOffset = this.writeDoubleArray(bsurf.copyWeightsToFloat64Array());\r\n }\r\n const uKnotsOffset = this.writeDoubleArray(bsurf.knots[0].copyKnots(true));\r\n const vKnotsOffset = this.writeDoubleArray(bsurf.knots[1].copyKnots(true));\r\n\r\n const headerOffset = BGFBAccessors.BsplineSurface.createBsplineSurface(this.builder, polesOffset, weightsOffset, uKnotsOffset, vKnotsOffset,\r\n numPolesU, numPolesV, orderU, orderV, 0, 0, holeOrigin, boundariesOffset, closedU, closedV);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagBsplineSurface, headerOffset, 0);\r\n }\r\n\r\n public writeBsplineCurve3dAHsFBVariantGeometry(bcurve: BSplineCurve3dH): number | undefined {\r\n const order = bcurve.order;\r\n const closed = false; // typescript bcurves are not closed. There is API to impose wrapping . . .\r\n const polesOffset = this.writeDoubleArray(bcurve.copyXYZFloat64Array(false));\r\n const weightsOffset = this.writeDoubleArray(bcurve.copyWeightsFloat64Array());\r\n const knotsOffset = this.writeDoubleArray(bcurve.copyKnots(true));\r\n const headerOffset = BGFBAccessors.BsplineCurve.createBsplineCurve(this.builder,\r\n order, closed, polesOffset, weightsOffset, knotsOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagBsplineCurve, headerOffset, 0);\r\n }\r\n\r\n public writeCurvePrimitiveAsFBVariantGeometry(curvePrimitive: CurvePrimitive): number | undefined {\r\n if (curvePrimitive instanceof LineSegment3d) {\r\n const segmentDataOffset = BGFBAccessors.DSegment3d.createDSegment3d(this.builder,\r\n curvePrimitive.point0Ref.x,\r\n curvePrimitive.point0Ref.y,\r\n curvePrimitive.point0Ref.z,\r\n curvePrimitive.point1Ref.x,\r\n curvePrimitive.point1Ref.y,\r\n curvePrimitive.point1Ref.z);\r\n const lineSegmentOffset = BGFBAccessors.LineSegment.createLineSegment(this.builder, segmentDataOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagLineSegment, lineSegmentOffset, 0);\r\n } else if (curvePrimitive instanceof Arc3d) {\r\n const data = curvePrimitive.toVectors();\r\n const arcDataOffset = BGFBAccessors.DEllipse3d.createDEllipse3d(this.builder,\r\n data.center.x, data.center.y, data.center.z,\r\n data.vector0.x, data.vector0.y, data.vector0.z,\r\n data.vector90.x, data.vector90.y, data.vector90.z,\r\n data.sweep.startRadians,\r\n data.sweep.sweepRadians);\r\n const arcOffset = BGFBAccessors.EllipticArc.createEllipticArc(this.builder, arcDataOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagEllipticArc, arcOffset, 0);\r\n } else if (curvePrimitive instanceof LineString3d) {\r\n const coordinates = extractNumberArray(curvePrimitive.packedPoints);\r\n const lineStringOffset = BGFBAccessors.LineString.createLineString(this.builder,\r\n BGFBAccessors.LineString.createPointsVector(this.builder, coordinates));\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagLineString, lineStringOffset, 0);\r\n } else if (curvePrimitive instanceof BSplineCurve3d) {\r\n return this.writeBsplineCurve3dAsFBVariantGeometry(curvePrimitive);\r\n } else if (curvePrimitive instanceof BSplineCurve3dH) {\r\n return this.writeBsplineCurve3dAHsFBVariantGeometry(curvePrimitive);\r\n } else if (curvePrimitive instanceof InterpolationCurve3d) {\r\n return this.writeInterpolationCurve3dAsFBVariantGeometry(curvePrimitive);\r\n } else if (curvePrimitive instanceof AkimaCurve3d) {\r\n return this.writeAkimaCurve3dAsFBVariantGeometry(curvePrimitive);\r\n } else if (curvePrimitive instanceof IntegratedSpiral3d) {\r\n const placement = curvePrimitive.localToWorld;\r\n const typeCode = DgnSpiralTypeQueries.stringToTypeCode(curvePrimitive.spiralType, true)!;\r\n const spiralDetailOffset = BGFBAccessors.TransitionSpiralDetail.createTransitionSpiralDetail(this.builder,\r\n placement.matrix.coffs[0], placement.matrix.coffs[1], placement.matrix.coffs[2], placement.origin.x,\r\n placement.matrix.coffs[3], placement.matrix.coffs[4], placement.matrix.coffs[5], placement.origin.y,\r\n placement.matrix.coffs[6], placement.matrix.coffs[5], placement.matrix.coffs[8], placement.origin.z,\r\n curvePrimitive.activeFractionInterval.x0, curvePrimitive.activeFractionInterval.x1,\r\n curvePrimitive.bearing01.startRadians, curvePrimitive.bearing01.endRadians,\r\n TransitionSpiral3d.radiusToCurvature(curvePrimitive.radius01.x0),\r\n TransitionSpiral3d.radiusToCurvature(curvePrimitive.radius01.x1),\r\n typeCode,\r\n 0);\r\n const transitionTableOffset = BGFBAccessors.TransitionSpiral.createTransitionSpiral(this.builder,\r\n spiralDetailOffset, 0, 0);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder,\r\n BGFBAccessors.VariantGeometryUnion.tagTransitionSpiral, transitionTableOffset, 0);\r\n } else if (curvePrimitive instanceof DirectSpiral3d) {\r\n const placement = curvePrimitive.localToWorld;\r\n // direct spirals always inflect at the origin of the local frame ..\r\n // spiral\r\n const curvature0 = 0.0;\r\n const curvature1 = curvePrimitive.nominalCurvature1;\r\n const radius0 = 0.0;\r\n const radius1 = curvePrimitive.nominalR1; // which is 1/curvature1\r\n const nominalLength = curvePrimitive.nominalL1;\r\n const bearing0Radians = 0.0;\r\n const bearing1Radians = TransitionSpiral3d.radiusRadiusLengthToSweepRadians(radius0, radius1, nominalLength);\r\n const typeCode = DgnSpiralTypeQueries.stringToTypeCode(curvePrimitive.spiralType, true)!;\r\n const spiralDetailOffset = BGFBAccessors.TransitionSpiralDetail.createTransitionSpiralDetail(this.builder,\r\n placement.matrix.coffs[0], placement.matrix.coffs[1], placement.matrix.coffs[2], placement.origin.x,\r\n placement.matrix.coffs[3], placement.matrix.coffs[4], placement.matrix.coffs[5], placement.origin.y,\r\n placement.matrix.coffs[6], placement.matrix.coffs[5], placement.matrix.coffs[8], placement.origin.z,\r\n curvePrimitive.activeFractionInterval.x0, curvePrimitive.activeFractionInterval.x1,\r\n bearing0Radians, bearing1Radians,\r\n curvature0, curvature1,\r\n typeCode,\r\n 0);\r\n const transitionTableOffset = BGFBAccessors.TransitionSpiral.createTransitionSpiral(this.builder,\r\n spiralDetailOffset, 0, 0);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder,\r\n BGFBAccessors.VariantGeometryUnion.tagTransitionSpiral, transitionTableOffset, 0);\r\n }\r\n return undefined;\r\n }\r\n public writePointString3dAsFBVariantGeometry(pointString: PointString3d): number | undefined {\r\n if (pointString instanceof PointString3d) {\r\n const coordinates = extractNumberArray(pointString.points);\r\n const headerOffset = BGFBAccessors.PointString.createPointString(this.builder,\r\n BGFBAccessors.PointString.createPointsVector(this.builder, coordinates));\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagPointString, headerOffset, 0);\r\n\r\n }\r\n return undefined;\r\n }\r\n\r\n public writeSolidPrimitiveAsFBVariantGeometry(solid: SolidPrimitive): number | undefined {\r\n // NOTE: Box, Sphere, Cone, and TorusPipe have \"detail\" within a \"table\"\r\n // BUT: linear, rotational, and ruled sweeps have their contour and numerics directly within their table.\r\n if (solid instanceof Box) {\r\n const originA = solid.getBaseOrigin();\r\n const originB = solid.getTopOrigin();\r\n const vectorX = solid.getVectorX();\r\n const vectorY = solid.getVectorY();\r\n\r\n const baseX = solid.getBaseX();\r\n const baseY = solid.getBaseY();\r\n const topX = solid.getTopX();\r\n const topY = solid.getTopY();\r\n const detailOffset = BGFBAccessors.DgnBoxDetail.createDgnBoxDetail(this.builder,\r\n originA.x, originA.y, originA.z,\r\n originB.x, originB.y, originB.z,\r\n vectorX.x, vectorX.y, vectorX.z,\r\n vectorY.x, vectorY.y, vectorY.z,\r\n baseX, baseY, topX, topY, solid.capped);\r\n const carrierOffset = BGFBAccessors.DgnBox.createDgnBox(this.builder, detailOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnBox, carrierOffset, 0);\r\n } else if (solid instanceof Sphere) {\r\n const localToWorld = solid.cloneLocalToWorld();\r\n const sweep = solid.cloneLatitudeSweep();\r\n const detailOffset = BGFBAccessors.DgnSphereDetail.createDgnSphereDetail(this.builder,\r\n localToWorld.matrix.coffs[0], localToWorld.matrix.coffs[1], localToWorld.matrix.coffs[2], localToWorld.origin.x,\r\n localToWorld.matrix.coffs[3], localToWorld.matrix.coffs[4], localToWorld.matrix.coffs[5], localToWorld.origin.y,\r\n localToWorld.matrix.coffs[6], localToWorld.matrix.coffs[7], localToWorld.matrix.coffs[8], localToWorld.origin.z,\r\n sweep.startRadians, sweep.sweepRadians,\r\n solid.capped);\r\n const carrierOffset = BGFBAccessors.DgnSphere.createDgnSphere(this.builder, detailOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnSphere, carrierOffset, 0);\r\n } else if (solid instanceof Cone) {\r\n const centerA = solid.getCenterA();\r\n const centerB = solid.getCenterB();\r\n const vectorX = solid.getVectorX();\r\n const vectorY = solid.getVectorY();\r\n const radiusA = solid.getRadiusA();\r\n const radiusB = solid.getRadiusB();\r\n const detailOffset = BGFBAccessors.DgnConeDetail.createDgnConeDetail(this.builder,\r\n centerA.x, centerA.y, centerA.z,\r\n centerB.x, centerB.y, centerB.z,\r\n vectorX.x, vectorX.y, vectorX.z,\r\n vectorY.x, vectorY.y, vectorY.z, radiusA, radiusB, solid.capped);\r\n const carrierOffset = BGFBAccessors.DgnCone.createDgnCone(this.builder, detailOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnCone, carrierOffset, 0);\r\n } else if (solid instanceof TorusPipe) {\r\n const center = solid.cloneCenter();\r\n const vectorX = solid.cloneVectorX();\r\n const vectorY = solid.cloneVectorY();\r\n const minorRadius = solid.getMinorRadius();\r\n const majorRadius = solid.getMajorRadius();\r\n const sweepRadians = solid.getSweepAngle().radians;\r\n const detailOffset = BGFBAccessors.DgnTorusPipeDetail.createDgnTorusPipeDetail(this.builder,\r\n center.x, center.y, center.z,\r\n vectorX.x, vectorX.y, vectorX.z,\r\n vectorY.x, vectorY.y, vectorY.z, majorRadius, minorRadius, sweepRadians, solid.capped);\r\n const carrierOffset = BGFBAccessors.DgnTorusPipe.createDgnTorusPipe(this.builder, detailOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnTorusPipe, carrierOffset, 0);\r\n } else if (solid instanceof LinearSweep) {\r\n const baseCurveOffset = this.writeCurveCollectionAsFBCurveVector(solid.getSweepContourRef().getCurves())!;\r\n const sweepVector = solid.cloneSweepVector();\r\n // const sweepVectorOffset = BGFBAccessors.DVector3d.createDVector3d(this.builder, sweepVector.x, sweepVector.y, sweepVector.z);\r\n // const carrierOffset = BGFBAccessors.DgnExtrusion.createDgnExtrusion(this.builder, contourOffset, sweepVectorOffset, solid.capped);\r\n\r\n // WOW -- the machine generated createDgnExtrusion expects an offset for the sweepVector, but then\r\n // chokes trying to add it.\r\n BGFBAccessors.DgnExtrusion.startDgnExtrusion(this.builder);\r\n BGFBAccessors.DgnExtrusion.addBaseCurve(this.builder, baseCurveOffset);\r\n const extrusionVectorOffset = BGFBAccessors.DVector3d.createDVector3d(this.builder, sweepVector.x, sweepVector.y, sweepVector.z);\r\n BGFBAccessors.DgnExtrusion.addExtrusionVector(this.builder, extrusionVectorOffset);\r\n BGFBAccessors.DgnExtrusion.addCapped(this.builder, solid.capped);\r\n const dgnExtrusionOffset = BGFBAccessors.DgnExtrusion.endDgnExtrusion(this.builder);\r\n\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnExtrusion, dgnExtrusionOffset, 0);\r\n } else if (solid instanceof RotationalSweep) {\r\n const baseCurveOffset = this.writeCurveCollectionAsFBCurveVector(solid.getSweepContourRef().getCurves())!;\r\n const axis = solid.cloneAxisRay();\r\n const sweepAngle = solid.getSweep();\r\n // const sweepVectorOffset = BGFBAccessors.DVector3d.createDVector3d(this.builder, sweepVector.x, sweepVector.y, sweepVector.z);\r\n // const carrierOffset = BGFBAccessors.DgnExtrusion.createDgnExtrusion(this.builder, contourOffset, sweepVectorOffset, solid.capped);\r\n\r\n // WOW -- the machine generated createDgnExtrusion expects an offset for the sweepVector, but then\r\n // chokes trying to add it.\r\n BGFBAccessors.DgnRotationalSweep.startDgnRotationalSweep(this.builder);\r\n BGFBAccessors.DgnRotationalSweep.addBaseCurve(this.builder, baseCurveOffset);\r\n const axisRayOffset = BGFBAccessors.DRay3d.createDRay3d(this.builder,\r\n axis.origin.x, axis.origin.y, axis.origin.z, axis.direction.x, axis.direction.y, axis.direction.z);\r\n BGFBAccessors.DgnRotationalSweep.addAxis(this.builder, axisRayOffset);\r\n BGFBAccessors.DgnRotationalSweep.addSweepRadians(this.builder, sweepAngle.radians);\r\n BGFBAccessors.DgnRotationalSweep.addCapped(this.builder, solid.capped);\r\n const dgnRotationalSweepOffset = BGFBAccessors.DgnRotationalSweep.endDgnRotationalSweep(this.builder);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnRotationalSweep, dgnRotationalSweepOffset, 0);\r\n\r\n } else if (solid instanceof RuledSweep) {\r\n const contours = solid.sweepContoursRef();\r\n const contourOffsets: flatbuffers.Offset[] = [];\r\n for (const contour of contours) {\r\n const contourOffset = this.writeCurveCollectionAsFBCurveVector(contour.getCurves());\r\n if (contourOffset !== undefined)\r\n contourOffsets.push(contourOffset);\r\n }\r\n const contoursVectorOffset = BGFBAccessors.DgnRuledSweep.createCurvesVector(this.builder, contourOffsets);\r\n const ruledSweepTable = BGFBAccessors.DgnRuledSweep.createDgnRuledSweep(this.builder, contoursVectorOffset, solid.capped);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnRuledSweep, ruledSweepTable, 0);\r\n }\r\n return undefined;\r\n }\r\n public writePolyfaceAuxChannelDataAsFBVariantGeometry(channelData: AuxChannelData): number | undefined {\r\n if (channelData instanceof AuxChannelData) {\r\n const valuesOffset = BGFBAccessors.PolyfaceAuxChannelData.createValuesVector(this.builder, channelData.values);\r\n return BGFBAccessors.PolyfaceAuxChannelData.createPolyfaceAuxChannelData(this.builder,\r\n channelData.input,\r\n valuesOffset,\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n public writePolyfaceAuxChannelAsFBVariantGeometry(channel: AuxChannel): number | undefined {\r\n if (channel instanceof AuxChannel) {\r\n const channelDataOffsets: number[] = [];\r\n for (const channelData of channel.data) {\r\n channelDataOffsets.push(this.writePolyfaceAuxChannelDataAsFBVariantGeometry(channelData)!);\r\n }\r\n const valuesOffset = BGFBAccessors.PolyfaceAuxChannel.createDataVector(this.builder, channelDataOffsets);\r\n const nameOffset = channel.name ? this.builder.createString(channel.name) : 0;\r\n const inputNameOffset = channel.inputName ? this.builder.createString(channel.inputName) : 0;\r\n return BGFBAccessors.PolyfaceAuxChannel.createPolyfaceAuxChannel(this.builder,\r\n channel.dataType,\r\n nameOffset,\r\n inputNameOffset, valuesOffset,\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n public writePolyfaceAuxDataAsFBVariantGeometry(data: PolyfaceAuxData): number | undefined {\r\n if (data instanceof PolyfaceAuxData) {\r\n const channelOffsets: number[] = [];\r\n for (const channel of data.channels) {\r\n channelOffsets.push(this.writePolyfaceAuxChannelAsFBVariantGeometry(channel)!);\r\n }\r\n const channelOffsetsOffset = BGFBAccessors.PolyfaceAuxChannel.createDataVector(this.builder, channelOffsets);\r\n const indicesOffset = BGFBAccessors.PolyfaceAuxData.createIndicesVector(this.builder, data.indices);\r\n return BGFBAccessors.PolyfaceAuxData.createPolyfaceAuxData(this.builder,\r\n indicesOffset,\r\n channelOffsetsOffset,\r\n );\r\n }\r\n return undefined;\r\n }\r\n public writeTaggedNumericDataArray(data: TaggedNumericData | undefined): number {\r\n if (data){\r\n const intDataOffset = this.writeIntArray(data.intData);\r\n const doubleDataOffset = this.writeDoubleArray(data.doubleData);\r\n return BGFBAccessors.TaggedNumericData.createTaggedNumericData(this.builder,\r\n data.tagA, data.tagB, intDataOffset, doubleDataOffset);\r\n }\r\n return 0;\r\n }\r\n\r\n public writePolyfaceAsFBVariantGeometry(mesh: IndexedPolyface): number | undefined {\r\n if (mesh instanceof IndexedPolyface) {\r\n // WE KNOW . . . . the polyface has blocks of zero-based indices.\r\n const indexArray: number[] = []; // and this will really be integers.\r\n const numberArray: number[] = []; // and this will really be doubles.\r\n\r\n copyToPackedNumberArray(numberArray, mesh.data.point.float64Data(), mesh.data.point.float64Length);\r\n const pointOffset = BGFBAccessors.Polyface.createPointVector(this.builder, numberArray);\r\n let paramIndexOffset = 0;\r\n let normalIndexOffset = 0;\r\n let colorIndexOffset = 0;\r\n let intColorOffset = 0;\r\n let normalOffset = 0;\r\n let paramOffset = 0;\r\n let auxDataOffset = 0;\r\n let taggedNumericDataOffset = 0;\r\n const meshStyle = 1; // That is . . . MESH_ELM_STYLE_INDEXED_FACE_LOOPS (and specifically, variable size with with 0 terminators)\r\n const numPerFace = 0;\r\n this.fillOneBasedIndexArray(mesh, mesh.data.pointIndex, mesh.data.edgeVisible, 0, indexArray);\r\n\r\n const twoSided = mesh.twoSided;\r\n const pointIndexOffset = BGFBAccessors.Polyface.createPointIndexVector(this.builder, indexArray);\r\n if (mesh.data.paramIndex !== undefined && mesh.data.paramIndex.length > 0) {\r\n this.fillOneBasedIndexArray(mesh, mesh.data.paramIndex, undefined, 0, indexArray);\r\n paramIndexOffset = BGFBAccessors.Polyface.createParamIndexVector(this.builder, indexArray);\r\n }\r\n\r\n if (mesh.data.normalIndex !== undefined && mesh.data.normalIndex.length > 0) {\r\n this.fillOneBasedIndexArray(mesh, mesh.data.normalIndex, undefined, 0, indexArray);\r\n normalIndexOffset = BGFBAccessors.Polyface.createNormalIndexVector(this.builder, indexArray);\r\n }\r\n\r\n if (mesh.data.colorIndex !== undefined && mesh.data.colorIndex.length > 0) {\r\n this.fillOneBasedIndexArray(mesh, mesh.data.colorIndex, undefined, 0, indexArray);\r\n colorIndexOffset = BGFBAccessors.Polyface.createColorIndexVector(this.builder, indexArray);\r\n }\r\n\r\n if (mesh.data.color !== undefined && mesh.data.color.length > 0) {\r\n intColorOffset = BGFBAccessors.Polyface.createIntColorVector(this.builder, mesh.data.color);\r\n }\r\n\r\n /*\r\n if (mesh.data.face !== undefined && mesh.data.face.length > 0) {\r\n this.writeOneBasedIndexArray(mesh, mesh.data.face, undefined, 0, indexArray);\r\n BGFBAccessors.Polyface.createFaceDataVector(this.builder, indexArray);\r\n }\r\n */\r\n if (mesh.data.normal) {\r\n copyToPackedNumberArray(numberArray, mesh.data.normal.float64Data(), mesh.data.normal.float64Length);\r\n normalOffset = BGFBAccessors.Polyface.createNormalVector(this.builder, numberArray);\r\n }\r\n\r\n if (mesh.data.param) {\r\n copyToPackedNumberArray(numberArray, mesh.data.param.float64Data(), mesh.data.param.float64Length);\r\n paramOffset = BGFBAccessors.Polyface.createPointVector(this.builder, numberArray);\r\n }\r\n\r\n if (mesh.data.auxData) {\r\n auxDataOffset = this.writePolyfaceAuxDataAsFBVariantGeometry(mesh.data.auxData)!;\r\n }\r\n\r\n if (mesh.data.taggedNumericData)\r\n taggedNumericDataOffset = this.writeTaggedNumericDataArray(mesh.data.taggedNumericData);\r\n const expectedClosure = mesh.expectedClosure;\r\n const polyfaceOffset = BGFBAccessors.Polyface.createPolyface(this.builder, pointOffset, paramOffset, normalOffset, 0, intColorOffset,\r\n pointIndexOffset, paramIndexOffset, normalIndexOffset, colorIndexOffset, 0,\r\n 0, 0, meshStyle, twoSided,\r\n numPerFace, 0, auxDataOffset, expectedClosure, taggedNumericDataOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagPolyface, polyfaceOffset, 0);\r\n\r\n }\r\n return undefined;\r\n }\r\n\r\n public fillOneBasedIndexArray(mesh: IndexedPolyface, sourceIndex: number[], visible: boolean[] | undefined, facetTerminator: number | undefined, destIndex: number[]) {\r\n destIndex.length = 0;\r\n const numFacet = mesh.facetCount;\r\n for (let facetIndex = 0; facetIndex < numFacet; facetIndex++) {\r\n const k0 = mesh.facetIndex0(facetIndex);\r\n const k1 = mesh.facetIndex1(facetIndex);\r\n for (let k = k0; k < k1; k++) {\r\n let q = sourceIndex[k] + 1;\r\n if (visible !== undefined && !visible[k])\r\n q = -q;\r\n destIndex.push(q);\r\n }\r\n if (facetTerminator !== undefined)\r\n destIndex.push(facetTerminator);\r\n }\r\n }\r\n public writeGeometryQueryAsFBVariantGeometry(g: GeometryQuery): number | undefined {\r\n let offset: number | undefined;\r\n if (g instanceof CurvePrimitive && (offset = this.writeCurvePrimitiveAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof CurveCollection && (offset = this.writeCurveCollectionAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof IndexedPolyface && (offset = this.writePolyfaceAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof SolidPrimitive && (offset = this.writeSolidPrimitiveAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof BSplineSurface3d && (offset = this.writeBSplineSurfaceAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof BSplineSurface3dH && (offset = this.writeBSplineSurfaceAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof PointString3d && (offset = this.writePointString3dAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n // if (g instanceof CoordinateXYZ) // TODO\r\n return undefined;\r\n }\r\n\r\n public writeGeometryQueryArrayAsFBVariantGeometry(allGeometry: GeometryQuery | GeometryQuery[] | undefined): number | undefined{\r\n if (Array.isArray(allGeometry)) {\r\n const allOffsets: number[] = [];\r\n for (const g of allGeometry) {\r\n const offset = this.writeGeometryQueryAsFBVariantGeometry(g);\r\n if (offset !== undefined)\r\n allOffsets.push(offset);\r\n }\r\n if (allOffsets.length > 0) {\r\n const membersOffset = BGFBAccessors.VectorOfVariantGeometry.createMembersVector(this.builder, allOffsets);\r\n const vectorOffset = BGFBAccessors.VectorOfVariantGeometry.createVectorOfVariantGeometry(this.builder, membersOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagVectorOfVariantGeometry, vectorOffset, 0);\r\n }\r\n } else if (allGeometry instanceof GeometryQuery)\r\n return this.writeGeometryQueryAsFBVariantGeometry(allGeometry);\r\n return undefined;\r\n }\r\n /**\r\n * Serialize bytes to a flatbuffer.\r\n */\r\n public static geometryToBytes(data: GeometryQuery | GeometryQuery[], signatureBytes?: Uint8Array): Uint8Array | undefined {\r\n const writer = new BGFBWriter();\r\n const rootOffset = writer.writeGeometryQueryArrayAsFBVariantGeometry(data);\r\n\r\n if (rootOffset !== undefined) {\r\n const builder = writer.builder;\r\n builder.finish(rootOffset);\r\n const buffer = builder.dataBuffer();\r\n if (!signatureBytes) {\r\n return buffer.bytes().slice(buffer.position());\r\n } else if (buffer.position() >= signatureBytes.length) {\r\n // The buffer has space for the signature ahead of its position . . .\r\n const i0 = buffer.position() - signatureBytes.length;\r\n let i = i0;\r\n for (const k of signatureBytes)\r\n buffer.bytes()[i++] = k;\r\n return buffer.bytes().slice(i0);\r\n } else {\r\n // There is no space ahead of the position () . . .\r\n // coverage remark: I have never seen this happen for real.\r\n // It has been exercised by adding 1024 to the signatureBytes.length test to force this branch.\r\n const num1 = buffer.bytes().length - buffer.position();\r\n const num0 = signatureBytes.length;\r\n const newBytes = new Uint8Array(num0 + num1);\r\n newBytes.set(signatureBytes, 0);\r\n newBytes.set(buffer.bytes().slice(buffer.position()), num0);\r\n return newBytes;\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\nfunction extractNumberArray(data: GrowableXYZArray | Point3d[]): number[] {\r\n const result = [];\r\n if (data instanceof GrowableXYZArray) {\r\n // ugh -- accessors only deal with number[] ..\r\n const numCoordinate = 3 * data.length;\r\n const source = data.float64Data();\r\n for (let i = 0; i < numCoordinate; i++)\r\n result.push(source[i]);\r\n return result;\r\n } else if (Array.isArray(data)) {\r\n for (const xyz of data)\r\n result.push(xyz.x, xyz.y, xyz.z);\r\n }\r\n return result;\r\n}\r\n/** Copy the active data to a simple number array. */\r\nfunction copyToPackedNumberArray(dest: number[], source: Float64Array, count: number) {\r\n dest.length = 0;\r\n for (let i = 0; i < count; i++)\r\n dest.push(source[i]);\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"BGFBWriter.js","sourceRoot":"","sources":["../../../src/serialization/BGFBWriter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Serialization\r\n */\r\nimport { flatbuffers } from \"flatbuffers\";\r\nimport { AkimaCurve3d } from \"../bspline/AkimaCurve3d\";\r\nimport { BSplineCurve3d } from \"../bspline/BSplineCurve\";\r\nimport { BSplineCurve3dH } from \"../bspline/BSplineCurve3dH\";\r\nimport { BSplineSurface3d, BSplineSurface3dH, UVSelect } from \"../bspline/BSplineSurface\";\r\nimport { InterpolationCurve3d } from \"../bspline/InterpolationCurve3d\";\r\nimport { BSplineWrapMode } from \"../bspline/KnotVector\";\r\nimport { Arc3d } from \"../curve/Arc3d\";\r\nimport { CurveCollection } from \"../curve/CurveCollection\";\r\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\r\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\r\nimport { LineSegment3d } from \"../curve/LineSegment3d\";\r\nimport { LineString3d } from \"../curve/LineString3d\";\r\nimport { Loop } from \"../curve/Loop\";\r\nimport { ParityRegion } from \"../curve/ParityRegion\";\r\nimport { Path } from \"../curve/Path\";\r\nimport { PointString3d } from \"../curve/PointString3d\";\r\nimport { DirectSpiral3d } from \"../curve/spiral/DirectSpiral3d\";\r\nimport { IntegratedSpiral3d } from \"../curve/spiral/IntegratedSpiral3d\";\r\nimport { TransitionSpiral3d } from \"../curve/spiral/TransitionSpiral3d\";\r\nimport { UnionRegion } from \"../curve/UnionRegion\";\r\nimport { GrowableXYZArray } from \"../geometry3d/GrowableXYZArray\";\r\nimport { Point3d, XYZ } from \"../geometry3d/Point3dVector3d\";\r\nimport { AuxChannel, AuxChannelData, PolyfaceAuxData } from \"../polyface/AuxData\";\r\nimport { IndexedPolyface } from \"../polyface/Polyface\";\r\nimport { TaggedNumericData } from \"../polyface/TaggedNumericData\";\r\nimport { Box } from \"../solid/Box\";\r\nimport { Cone } from \"../solid/Cone\";\r\nimport { LinearSweep } from \"../solid/LinearSweep\";\r\nimport { RotationalSweep } from \"../solid/RotationalSweep\";\r\nimport { RuledSweep } from \"../solid/RuledSweep\";\r\nimport { SolidPrimitive } from \"../solid/SolidPrimitive\";\r\nimport { Sphere } from \"../solid/Sphere\";\r\nimport { TorusPipe } from \"../solid/TorusPipe\";\r\nimport { BGFBAccessors } from \"./BGFBAccessors\";\r\nimport { DgnSpiralTypeQueries } from \"./BGFBReader\";\r\nimport { SerializationHelpers } from \"./SerializationHelpers\";\r\n\r\n/**\r\n * Context to write to a flatbuffer blob.\r\n * * This class is internal.\r\n * * Public access is through BentleyGeometryFlatBuffer.geometryToBytes()\r\n * @internal\r\n */\r\nexport class BGFBWriter {\r\n public builder: flatbuffers.Builder;\r\n public constructor(defaultSize: number = 1024) {\r\n this.builder = new flatbuffers.Builder(defaultSize);\r\n }\r\n /**\r\n *\r\n * @param data data source, as Float64Array or number[].\r\n * @param count optional count, used only if less than .length numbers are to be written.\r\n */\r\n public writeDoubleArray(data: Float64Array | number[] | undefined, count?: number): number {\r\n if (data === undefined)\r\n return 0;\r\n let numFloats = data.length;\r\n if (numFloats === 0)\r\n return 0;\r\n if (count !== undefined && count < numFloats)\r\n numFloats = count;\r\n this.builder.startVector(8, numFloats, 8);\r\n for (let i = numFloats - 1; i >= 0; i--) {\r\n this.builder.addFloat64(data[i]);\r\n }\r\n return this.builder.endVector();\r\n }\r\n\r\n /**\r\n *\r\n * @param data data source, as Float64Array or number[].\r\n * @param count optional count, used only if less than .length numbers are to be written.\r\n */\r\n public writeIntArray(data: Int32Array | number[] | undefined): number {\r\n if (data === undefined)\r\n return 0;\r\n const numInt = data.length;\r\n if (numInt === 0)\r\n return 0;\r\n this.builder.startVector(4, numInt, 4);\r\n for (let i = numInt - 1; i >= 0; i--) {\r\n this.builder.addInt32(data[i]);\r\n }\r\n return this.builder.endVector();\r\n }\r\n\r\n /**\r\n *\r\n * @param data data source, as array derived from XYZ.\r\n * The data is output as a flat array of 3*data.length numbers.\r\n */\r\n public writePackedYZArray(data: XYZ[] | undefined): number {\r\n if (data === undefined)\r\n return 0;\r\n const numFloats = data.length * 3;\r\n if (numFloats === 0)\r\n return 0;\r\n this.builder.startVector(8, numFloats, 8);\r\n // write in reverse index order, and zyx within each XYZ\r\n for (let i = data.length - 1; i >= 0; i--) {\r\n this.builder.addFloat64(data[i].z);\r\n this.builder.addFloat64(data[i].y);\r\n this.builder.addFloat64(data[i].x);\r\n }\r\n return this.builder.endVector();\r\n }\r\n\r\n public writeCurveCollectionAsFBCurveVector(cv: CurveCollection): number | undefined {\r\n const childrenOffsets: flatbuffers.Offset[] = [];\r\n for (const child of cv.children) {\r\n if (child instanceof CurvePrimitive) {\r\n const childOffset = this.writeCurvePrimitiveAsFBVariantGeometry(child);\r\n if (childOffset)\r\n childrenOffsets.push(childOffset);\r\n } else if (child instanceof CurveCollection) {\r\n const childOffset = this.writeCurveCollectionAsFBVariantGeometry(child);\r\n if (childOffset)\r\n childrenOffsets.push(childOffset);\r\n }\r\n }\r\n\r\n const childrenVectorOffset = BGFBAccessors.CurveVector.createCurvesVector(this.builder, childrenOffsets);\r\n let cvType = 0;\r\n if (cv instanceof Path) cvType = 1;\r\n else if (cv instanceof Loop) {\r\n cvType = cv.isInner ? 3 : 2;\r\n } else if (cv instanceof ParityRegion) cvType = 4;\r\n else if (cv instanceof UnionRegion) cvType = 5;\r\n const curveVectorOffset = BGFBAccessors.CurveVector.createCurveVector(this.builder, cvType, childrenVectorOffset);\r\n return curveVectorOffset;\r\n }\r\n\r\n public writeCurveCollectionAsFBVariantGeometry(cv: CurveCollection): number | undefined {\r\n const curveVectorOffset = this.writeCurveCollectionAsFBCurveVector(cv);\r\n if (curveVectorOffset === undefined)\r\n return undefined;\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagCurveVector, curveVectorOffset, 0);\r\n }\r\n\r\n public writeInterpolationCurve3dAsFBVariantGeometry(curve: InterpolationCurve3d): number | undefined {\r\n const props = curve.cloneProps();\r\n const fitPointsOffset = this.writeDoubleArray(curve.copyFitPointsFloat64Array());\r\n const knotOffset = props.knots ? this.writeDoubleArray(props.knots) : 0;\r\n\r\n // REMARK: some native or flatbuffer quirk made startTangent a point and endTangent a vector.\r\n BGFBAccessors.InterpolationCurve.startInterpolationCurve(this.builder);\r\n BGFBAccessors.InterpolationCurve.addFitPoints(this.builder, fitPointsOffset);\r\n if (props.order)\r\n BGFBAccessors.InterpolationCurve.addOrder(this.builder, props.order);\r\n if (props.closed)\r\n BGFBAccessors.InterpolationCurve.addClosed(this.builder, props.closed);\r\n if (props.isChordLenKnots)\r\n BGFBAccessors.InterpolationCurve.addIsChordLenKnots(this.builder, props.isChordLenKnots);\r\n if (props.isColinearTangents)\r\n BGFBAccessors.InterpolationCurve.addIsColinearTangents(this.builder, props.isColinearTangents);\r\n if (props.isChordLenKnots)\r\n BGFBAccessors.InterpolationCurve.addIsChordLenKnots(this.builder, props.isChordLenKnots);\r\n if (props.isNaturalTangents)\r\n BGFBAccessors.InterpolationCurve.addIsNaturalTangents(this.builder, props.isNaturalTangents);\r\n if (props.startTangent !== undefined) {\r\n const startTangentOffset = BGFBAccessors.DPoint3d.createDPoint3d(this.builder,\r\n XYZ.x(props.startTangent), XYZ.y(props.startTangent), XYZ.z(props.startTangent));\r\n BGFBAccessors.InterpolationCurve.addStartTangent(this.builder, startTangentOffset);\r\n }\r\n if (props.endTangent !== undefined) {\r\n const endTangentOffset = BGFBAccessors.DPoint3d.createDPoint3d(this.builder,\r\n XYZ.x(props.endTangent), XYZ.y(props.endTangent), XYZ.z(props.endTangent));\r\n BGFBAccessors.InterpolationCurve.addEndTangent(this.builder, endTangentOffset);\r\n }\r\n if (knotOffset !== 0)\r\n BGFBAccessors.InterpolationCurve.addKnots(this.builder, knotOffset);\r\n const headerOffset = BGFBAccessors.InterpolationCurve.endInterpolationCurve(this.builder);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagInterpolationCurve, headerOffset, 0);\r\n }\r\n\r\n public writeAkimaCurve3dAsFBVariantGeometry(curve: AkimaCurve3d): number | undefined {\r\n const fitPointsOffset = this.writeDoubleArray(curve.copyFitPointsFloat64Array());\r\n BGFBAccessors.AkimaCurve.startAkimaCurve(this.builder);\r\n BGFBAccessors.AkimaCurve.addPoints(this.builder, fitPointsOffset);\r\n const headerOffset = BGFBAccessors.AkimaCurve.endAkimaCurve(this.builder);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagAkimaCurve, headerOffset, 0);\r\n }\r\n\r\n public writeBsplineCurve3dAsFBVariantGeometry(bcurve: BSplineCurve3d): number | undefined {\r\n const data = SerializationHelpers.createBSplineCurveData(bcurve.polesRef, bcurve.poleDimension, bcurve.knotsRef, bcurve.numPoles, bcurve.order);\r\n const wrapMode = bcurve.getWrappable();\r\n if (BSplineWrapMode.None !== wrapMode)\r\n data.params.wrapMode = wrapMode;\r\n\r\n if (!SerializationHelpers.Export.prepareBSplineCurveData(data, {jsonPoles: false}))\r\n return undefined;\r\n\r\n const closed = !!data.params.closed;\r\n const polesOffset = this.writeDoubleArray(data.poles as Float64Array);\r\n const weightsOffset = 0;\r\n const knotsOffset = this.writeDoubleArray(data.params.knots);\r\n const headerOffset = BGFBAccessors.BsplineCurve.createBsplineCurve(this.builder, data.params.order, closed, polesOffset, weightsOffset, knotsOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagBsplineCurve, headerOffset, 0);\r\n }\r\n\r\n public writeBSplineSurfaceAsFBVariantGeometry(bsurf: BSplineSurface3d | BSplineSurface3dH): number | undefined {\r\n let poles: Float64Array = bsurf.coffs;\r\n let weights: Float64Array | undefined;\r\n let dim = bsurf.poleDimension;\r\n if (bsurf instanceof BSplineSurface3dH) {\r\n poles = bsurf.copyXYZToFloat64Array(false);\r\n weights = bsurf.copyWeightsToFloat64Array();\r\n dim = 3;\r\n }\r\n\r\n const data = SerializationHelpers.createBSplineSurfaceData(poles, dim,\r\n bsurf.knots[UVSelect.uDirection].knots, bsurf.numPolesUV(UVSelect.uDirection), bsurf.orderUV(UVSelect.uDirection),\r\n bsurf.knots[UVSelect.vDirection].knots, bsurf.numPolesUV(UVSelect.vDirection), bsurf.orderUV(UVSelect.vDirection));\r\n\r\n if (weights)\r\n data.weights = weights;\r\n const wrapModeU = bsurf.getWrappable(UVSelect.uDirection);\r\n const wrapModeV = bsurf.getWrappable(UVSelect.vDirection);\r\n if (BSplineWrapMode.None !== wrapModeU)\r\n data.uParams.wrapMode = wrapModeU;\r\n if (BSplineWrapMode.None !== wrapModeV)\r\n data.vParams.wrapMode = wrapModeV;\r\n\r\n if (!SerializationHelpers.Export.prepareBSplineSurfaceData(data, {jsonPoles: false}))\r\n return undefined;\r\n\r\n // TypeScript B-spline surfaces do not support trim curves or isoline counts\r\n const holeOrigin = 0;\r\n const boundariesOffset = 0;\r\n const numRulesU = 0;\r\n const numRulesV = 0;\r\n\r\n const closedU = !!data.uParams.closed;\r\n const closedV = !!data.vParams.closed;\r\n const polesOffset = this.writeDoubleArray(data.poles as Float64Array);\r\n const weightsOffset = data.weights ? this.writeDoubleArray(data.weights as Float64Array) : 0;\r\n const uKnotsOffset = this.writeDoubleArray(data.uParams.knots);\r\n const vKnotsOffset = this.writeDoubleArray(data.vParams.knots);\r\n const headerOffset = BGFBAccessors.BsplineSurface.createBsplineSurface(this.builder, polesOffset, weightsOffset,\r\n uKnotsOffset, vKnotsOffset, data.uParams.numPoles, data.vParams.numPoles, data.uParams.order, data.vParams.order,\r\n numRulesU, numRulesV, holeOrigin, boundariesOffset, closedU, closedV);\r\n\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagBsplineSurface, headerOffset, 0);\r\n }\r\n\r\n public writeBsplineCurve3dHAsFBVariantGeometry(bcurve: BSplineCurve3dH): number | undefined {\r\n const poles = bcurve.copyXYZFloat64Array(false);\r\n const weights = bcurve.copyWeightsFloat64Array();\r\n const dim = 3;\r\n\r\n const data = SerializationHelpers.createBSplineCurveData(poles, dim, bcurve.knotsRef, bcurve.numPoles, bcurve.order);\r\n data.weights = weights;\r\n const wrapMode = bcurve.getWrappable();\r\n if (BSplineWrapMode.None !== wrapMode)\r\n data.params.wrapMode = wrapMode;\r\n\r\n if (!SerializationHelpers.Export.prepareBSplineCurveData(data, {jsonPoles: false}))\r\n return undefined;\r\n\r\n const closed = !!data.params.closed;\r\n const polesOffset = this.writeDoubleArray(data.poles as Float64Array);\r\n const weightsOffset = this.writeDoubleArray(data.weights);\r\n const knotsOffset = this.writeDoubleArray(data.params.knots);\r\n const headerOffset = BGFBAccessors.BsplineCurve.createBsplineCurve(this.builder, data.params.order, closed, polesOffset, weightsOffset, knotsOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagBsplineCurve, headerOffset, 0);\r\n }\r\n\r\n public writeCurvePrimitiveAsFBVariantGeometry(curvePrimitive: CurvePrimitive): number | undefined {\r\n if (curvePrimitive instanceof LineSegment3d) {\r\n const segmentDataOffset = BGFBAccessors.DSegment3d.createDSegment3d(this.builder,\r\n curvePrimitive.point0Ref.x,\r\n curvePrimitive.point0Ref.y,\r\n curvePrimitive.point0Ref.z,\r\n curvePrimitive.point1Ref.x,\r\n curvePrimitive.point1Ref.y,\r\n curvePrimitive.point1Ref.z);\r\n const lineSegmentOffset = BGFBAccessors.LineSegment.createLineSegment(this.builder, segmentDataOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagLineSegment, lineSegmentOffset, 0);\r\n } else if (curvePrimitive instanceof Arc3d) {\r\n const data = curvePrimitive.toVectors();\r\n const arcDataOffset = BGFBAccessors.DEllipse3d.createDEllipse3d(this.builder,\r\n data.center.x, data.center.y, data.center.z,\r\n data.vector0.x, data.vector0.y, data.vector0.z,\r\n data.vector90.x, data.vector90.y, data.vector90.z,\r\n data.sweep.startRadians,\r\n data.sweep.sweepRadians);\r\n const arcOffset = BGFBAccessors.EllipticArc.createEllipticArc(this.builder, arcDataOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagEllipticArc, arcOffset, 0);\r\n } else if (curvePrimitive instanceof LineString3d) {\r\n const coordinates = extractNumberArray(curvePrimitive.packedPoints);\r\n const lineStringOffset = BGFBAccessors.LineString.createLineString(this.builder,\r\n BGFBAccessors.LineString.createPointsVector(this.builder, coordinates));\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagLineString, lineStringOffset, 0);\r\n } else if (curvePrimitive instanceof BSplineCurve3d) {\r\n return this.writeBsplineCurve3dAsFBVariantGeometry(curvePrimitive);\r\n } else if (curvePrimitive instanceof BSplineCurve3dH) {\r\n return this.writeBsplineCurve3dHAsFBVariantGeometry(curvePrimitive);\r\n } else if (curvePrimitive instanceof InterpolationCurve3d) {\r\n return this.writeInterpolationCurve3dAsFBVariantGeometry(curvePrimitive);\r\n } else if (curvePrimitive instanceof AkimaCurve3d) {\r\n return this.writeAkimaCurve3dAsFBVariantGeometry(curvePrimitive);\r\n } else if (curvePrimitive instanceof IntegratedSpiral3d) {\r\n const placement = curvePrimitive.localToWorld;\r\n const typeCode = DgnSpiralTypeQueries.stringToTypeCode(curvePrimitive.spiralType, true)!;\r\n const spiralDetailOffset = BGFBAccessors.TransitionSpiralDetail.createTransitionSpiralDetail(this.builder,\r\n placement.matrix.coffs[0], placement.matrix.coffs[1], placement.matrix.coffs[2], placement.origin.x,\r\n placement.matrix.coffs[3], placement.matrix.coffs[4], placement.matrix.coffs[5], placement.origin.y,\r\n placement.matrix.coffs[6], placement.matrix.coffs[5], placement.matrix.coffs[8], placement.origin.z,\r\n curvePrimitive.activeFractionInterval.x0, curvePrimitive.activeFractionInterval.x1,\r\n curvePrimitive.bearing01.startRadians, curvePrimitive.bearing01.endRadians,\r\n TransitionSpiral3d.radiusToCurvature(curvePrimitive.radius01.x0),\r\n TransitionSpiral3d.radiusToCurvature(curvePrimitive.radius01.x1),\r\n typeCode,\r\n 0);\r\n const transitionTableOffset = BGFBAccessors.TransitionSpiral.createTransitionSpiral(this.builder,\r\n spiralDetailOffset, 0, 0);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder,\r\n BGFBAccessors.VariantGeometryUnion.tagTransitionSpiral, transitionTableOffset, 0);\r\n } else if (curvePrimitive instanceof DirectSpiral3d) {\r\n const placement = curvePrimitive.localToWorld;\r\n // direct spirals always inflect at the origin of the local frame ..\r\n // spiral\r\n const curvature0 = 0.0;\r\n const curvature1 = curvePrimitive.nominalCurvature1;\r\n const radius0 = 0.0;\r\n const radius1 = curvePrimitive.nominalR1; // which is 1/curvature1\r\n const nominalLength = curvePrimitive.nominalL1;\r\n const bearing0Radians = 0.0;\r\n const bearing1Radians = TransitionSpiral3d.radiusRadiusLengthToSweepRadians(radius0, radius1, nominalLength);\r\n const typeCode = DgnSpiralTypeQueries.stringToTypeCode(curvePrimitive.spiralType, true)!;\r\n const spiralDetailOffset = BGFBAccessors.TransitionSpiralDetail.createTransitionSpiralDetail(this.builder,\r\n placement.matrix.coffs[0], placement.matrix.coffs[1], placement.matrix.coffs[2], placement.origin.x,\r\n placement.matrix.coffs[3], placement.matrix.coffs[4], placement.matrix.coffs[5], placement.origin.y,\r\n placement.matrix.coffs[6], placement.matrix.coffs[5], placement.matrix.coffs[8], placement.origin.z,\r\n curvePrimitive.activeFractionInterval.x0, curvePrimitive.activeFractionInterval.x1,\r\n bearing0Radians, bearing1Radians,\r\n curvature0, curvature1,\r\n typeCode,\r\n 0);\r\n const transitionTableOffset = BGFBAccessors.TransitionSpiral.createTransitionSpiral(this.builder,\r\n spiralDetailOffset, 0, 0);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder,\r\n BGFBAccessors.VariantGeometryUnion.tagTransitionSpiral, transitionTableOffset, 0);\r\n }\r\n return undefined;\r\n }\r\n public writePointString3dAsFBVariantGeometry(pointString: PointString3d): number | undefined {\r\n if (pointString instanceof PointString3d) {\r\n const coordinates = extractNumberArray(pointString.points);\r\n const headerOffset = BGFBAccessors.PointString.createPointString(this.builder,\r\n BGFBAccessors.PointString.createPointsVector(this.builder, coordinates));\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagPointString, headerOffset, 0);\r\n\r\n }\r\n return undefined;\r\n }\r\n\r\n public writeSolidPrimitiveAsFBVariantGeometry(solid: SolidPrimitive): number | undefined {\r\n // NOTE: Box, Sphere, Cone, and TorusPipe have \"detail\" within a \"table\"\r\n // BUT: linear, rotational, and ruled sweeps have their contour and numerics directly within their table.\r\n if (solid instanceof Box) {\r\n const originA = solid.getBaseOrigin();\r\n const originB = solid.getTopOrigin();\r\n const vectorX = solid.getVectorX();\r\n const vectorY = solid.getVectorY();\r\n\r\n const baseX = solid.getBaseX();\r\n const baseY = solid.getBaseY();\r\n const topX = solid.getTopX();\r\n const topY = solid.getTopY();\r\n const detailOffset = BGFBAccessors.DgnBoxDetail.createDgnBoxDetail(this.builder,\r\n originA.x, originA.y, originA.z,\r\n originB.x, originB.y, originB.z,\r\n vectorX.x, vectorX.y, vectorX.z,\r\n vectorY.x, vectorY.y, vectorY.z,\r\n baseX, baseY, topX, topY, solid.capped);\r\n const carrierOffset = BGFBAccessors.DgnBox.createDgnBox(this.builder, detailOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnBox, carrierOffset, 0);\r\n } else if (solid instanceof Sphere) {\r\n const localToWorld = solid.cloneLocalToWorld();\r\n const sweep = solid.cloneLatitudeSweep();\r\n const detailOffset = BGFBAccessors.DgnSphereDetail.createDgnSphereDetail(this.builder,\r\n localToWorld.matrix.coffs[0], localToWorld.matrix.coffs[1], localToWorld.matrix.coffs[2], localToWorld.origin.x,\r\n localToWorld.matrix.coffs[3], localToWorld.matrix.coffs[4], localToWorld.matrix.coffs[5], localToWorld.origin.y,\r\n localToWorld.matrix.coffs[6], localToWorld.matrix.coffs[7], localToWorld.matrix.coffs[8], localToWorld.origin.z,\r\n sweep.startRadians, sweep.sweepRadians,\r\n solid.capped);\r\n const carrierOffset = BGFBAccessors.DgnSphere.createDgnSphere(this.builder, detailOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnSphere, carrierOffset, 0);\r\n } else if (solid instanceof Cone) {\r\n const centerA = solid.getCenterA();\r\n const centerB = solid.getCenterB();\r\n const vectorX = solid.getVectorX();\r\n const vectorY = solid.getVectorY();\r\n const radiusA = solid.getRadiusA();\r\n const radiusB = solid.getRadiusB();\r\n const detailOffset = BGFBAccessors.DgnConeDetail.createDgnConeDetail(this.builder,\r\n centerA.x, centerA.y, centerA.z,\r\n centerB.x, centerB.y, centerB.z,\r\n vectorX.x, vectorX.y, vectorX.z,\r\n vectorY.x, vectorY.y, vectorY.z, radiusA, radiusB, solid.capped);\r\n const carrierOffset = BGFBAccessors.DgnCone.createDgnCone(this.builder, detailOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnCone, carrierOffset, 0);\r\n } else if (solid instanceof TorusPipe) {\r\n const center = solid.cloneCenter();\r\n const vectorX = solid.cloneVectorX();\r\n const vectorY = solid.cloneVectorY();\r\n const minorRadius = solid.getMinorRadius();\r\n const majorRadius = solid.getMajorRadius();\r\n const sweepRadians = solid.getSweepAngle().radians;\r\n const detailOffset = BGFBAccessors.DgnTorusPipeDetail.createDgnTorusPipeDetail(this.builder,\r\n center.x, center.y, center.z,\r\n vectorX.x, vectorX.y, vectorX.z,\r\n vectorY.x, vectorY.y, vectorY.z, majorRadius, minorRadius, sweepRadians, solid.capped);\r\n const carrierOffset = BGFBAccessors.DgnTorusPipe.createDgnTorusPipe(this.builder, detailOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnTorusPipe, carrierOffset, 0);\r\n } else if (solid instanceof LinearSweep) {\r\n const baseCurveOffset = this.writeCurveCollectionAsFBCurveVector(solid.getSweepContourRef().getCurves())!;\r\n const sweepVector = solid.cloneSweepVector();\r\n // const sweepVectorOffset = BGFBAccessors.DVector3d.createDVector3d(this.builder, sweepVector.x, sweepVector.y, sweepVector.z);\r\n // const carrierOffset = BGFBAccessors.DgnExtrusion.createDgnExtrusion(this.builder, contourOffset, sweepVectorOffset, solid.capped);\r\n\r\n // WOW -- the machine generated createDgnExtrusion expects an offset for the sweepVector, but then\r\n // chokes trying to add it.\r\n BGFBAccessors.DgnExtrusion.startDgnExtrusion(this.builder);\r\n BGFBAccessors.DgnExtrusion.addBaseCurve(this.builder, baseCurveOffset);\r\n const extrusionVectorOffset = BGFBAccessors.DVector3d.createDVector3d(this.builder, sweepVector.x, sweepVector.y, sweepVector.z);\r\n BGFBAccessors.DgnExtrusion.addExtrusionVector(this.builder, extrusionVectorOffset);\r\n BGFBAccessors.DgnExtrusion.addCapped(this.builder, solid.capped);\r\n const dgnExtrusionOffset = BGFBAccessors.DgnExtrusion.endDgnExtrusion(this.builder);\r\n\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnExtrusion, dgnExtrusionOffset, 0);\r\n } else if (solid instanceof RotationalSweep) {\r\n const baseCurveOffset = this.writeCurveCollectionAsFBCurveVector(solid.getSweepContourRef().getCurves())!;\r\n const axis = solid.cloneAxisRay();\r\n const sweepAngle = solid.getSweep();\r\n // const sweepVectorOffset = BGFBAccessors.DVector3d.createDVector3d(this.builder, sweepVector.x, sweepVector.y, sweepVector.z);\r\n // const carrierOffset = BGFBAccessors.DgnExtrusion.createDgnExtrusion(this.builder, contourOffset, sweepVectorOffset, solid.capped);\r\n\r\n // WOW -- the machine generated createDgnExtrusion expects an offset for the sweepVector, but then\r\n // chokes trying to add it.\r\n BGFBAccessors.DgnRotationalSweep.startDgnRotationalSweep(this.builder);\r\n BGFBAccessors.DgnRotationalSweep.addBaseCurve(this.builder, baseCurveOffset);\r\n const axisRayOffset = BGFBAccessors.DRay3d.createDRay3d(this.builder,\r\n axis.origin.x, axis.origin.y, axis.origin.z, axis.direction.x, axis.direction.y, axis.direction.z);\r\n BGFBAccessors.DgnRotationalSweep.addAxis(this.builder, axisRayOffset);\r\n BGFBAccessors.DgnRotationalSweep.addSweepRadians(this.builder, sweepAngle.radians);\r\n BGFBAccessors.DgnRotationalSweep.addCapped(this.builder, solid.capped);\r\n const dgnRotationalSweepOffset = BGFBAccessors.DgnRotationalSweep.endDgnRotationalSweep(this.builder);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnRotationalSweep, dgnRotationalSweepOffset, 0);\r\n\r\n } else if (solid instanceof RuledSweep) {\r\n const contours = solid.sweepContoursRef();\r\n const contourOffsets: flatbuffers.Offset[] = [];\r\n for (const contour of contours) {\r\n const contourOffset = this.writeCurveCollectionAsFBCurveVector(contour.getCurves());\r\n if (contourOffset !== undefined)\r\n contourOffsets.push(contourOffset);\r\n }\r\n const contoursVectorOffset = BGFBAccessors.DgnRuledSweep.createCurvesVector(this.builder, contourOffsets);\r\n const ruledSweepTable = BGFBAccessors.DgnRuledSweep.createDgnRuledSweep(this.builder, contoursVectorOffset, solid.capped);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagDgnRuledSweep, ruledSweepTable, 0);\r\n }\r\n return undefined;\r\n }\r\n public writePolyfaceAuxChannelDataAsFBVariantGeometry(channelData: AuxChannelData): number | undefined {\r\n if (channelData instanceof AuxChannelData) {\r\n const valuesOffset = BGFBAccessors.PolyfaceAuxChannelData.createValuesVector(this.builder, channelData.values);\r\n return BGFBAccessors.PolyfaceAuxChannelData.createPolyfaceAuxChannelData(this.builder,\r\n channelData.input,\r\n valuesOffset,\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n public writePolyfaceAuxChannelAsFBVariantGeometry(channel: AuxChannel): number | undefined {\r\n if (channel instanceof AuxChannel) {\r\n const channelDataOffsets: number[] = [];\r\n for (const channelData of channel.data) {\r\n channelDataOffsets.push(this.writePolyfaceAuxChannelDataAsFBVariantGeometry(channelData)!);\r\n }\r\n const valuesOffset = BGFBAccessors.PolyfaceAuxChannel.createDataVector(this.builder, channelDataOffsets);\r\n const nameOffset = channel.name ? this.builder.createString(channel.name) : 0;\r\n const inputNameOffset = channel.inputName ? this.builder.createString(channel.inputName) : 0;\r\n return BGFBAccessors.PolyfaceAuxChannel.createPolyfaceAuxChannel(this.builder,\r\n channel.dataType,\r\n nameOffset,\r\n inputNameOffset, valuesOffset,\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n public writePolyfaceAuxDataAsFBVariantGeometry(data: PolyfaceAuxData): number | undefined {\r\n if (data instanceof PolyfaceAuxData) {\r\n const channelOffsets: number[] = [];\r\n for (const channel of data.channels) {\r\n channelOffsets.push(this.writePolyfaceAuxChannelAsFBVariantGeometry(channel)!);\r\n }\r\n const channelOffsetsOffset = BGFBAccessors.PolyfaceAuxChannel.createDataVector(this.builder, channelOffsets);\r\n const indicesOffset = BGFBAccessors.PolyfaceAuxData.createIndicesVector(this.builder, data.indices);\r\n return BGFBAccessors.PolyfaceAuxData.createPolyfaceAuxData(this.builder,\r\n indicesOffset,\r\n channelOffsetsOffset,\r\n );\r\n }\r\n return undefined;\r\n }\r\n public writeTaggedNumericDataArray(data: TaggedNumericData | undefined): number {\r\n if (data){\r\n const intDataOffset = this.writeIntArray(data.intData);\r\n const doubleDataOffset = this.writeDoubleArray(data.doubleData);\r\n return BGFBAccessors.TaggedNumericData.createTaggedNumericData(this.builder,\r\n data.tagA, data.tagB, intDataOffset, doubleDataOffset);\r\n }\r\n return 0;\r\n }\r\n\r\n public writePolyfaceAsFBVariantGeometry(mesh: IndexedPolyface): number | undefined {\r\n if (mesh instanceof IndexedPolyface) {\r\n // WE KNOW . . . . the polyface has blocks of zero-based indices.\r\n const indexArray: number[] = []; // and this will really be integers.\r\n const numberArray: number[] = []; // and this will really be doubles.\r\n\r\n copyToPackedNumberArray(numberArray, mesh.data.point.float64Data(), mesh.data.point.float64Length);\r\n const pointOffset = BGFBAccessors.Polyface.createPointVector(this.builder, numberArray);\r\n let paramIndexOffset = 0;\r\n let normalIndexOffset = 0;\r\n let colorIndexOffset = 0;\r\n let intColorOffset = 0;\r\n let normalOffset = 0;\r\n let paramOffset = 0;\r\n let auxDataOffset = 0;\r\n let taggedNumericDataOffset = 0;\r\n const meshStyle = 1; // That is . . . MESH_ELM_STYLE_INDEXED_FACE_LOOPS (and specifically, variable size with with 0 terminators)\r\n const numPerFace = 0;\r\n this.fillOneBasedIndexArray(mesh, mesh.data.pointIndex, mesh.data.edgeVisible, 0, indexArray);\r\n\r\n const twoSided = mesh.twoSided;\r\n const pointIndexOffset = BGFBAccessors.Polyface.createPointIndexVector(this.builder, indexArray);\r\n if (mesh.data.paramIndex !== undefined && mesh.data.paramIndex.length > 0) {\r\n this.fillOneBasedIndexArray(mesh, mesh.data.paramIndex, undefined, 0, indexArray);\r\n paramIndexOffset = BGFBAccessors.Polyface.createParamIndexVector(this.builder, indexArray);\r\n }\r\n\r\n if (mesh.data.normalIndex !== undefined && mesh.data.normalIndex.length > 0) {\r\n this.fillOneBasedIndexArray(mesh, mesh.data.normalIndex, undefined, 0, indexArray);\r\n normalIndexOffset = BGFBAccessors.Polyface.createNormalIndexVector(this.builder, indexArray);\r\n }\r\n\r\n if (mesh.data.colorIndex !== undefined && mesh.data.colorIndex.length > 0) {\r\n this.fillOneBasedIndexArray(mesh, mesh.data.colorIndex, undefined, 0, indexArray);\r\n colorIndexOffset = BGFBAccessors.Polyface.createColorIndexVector(this.builder, indexArray);\r\n }\r\n\r\n if (mesh.data.color !== undefined && mesh.data.color.length > 0) {\r\n intColorOffset = BGFBAccessors.Polyface.createIntColorVector(this.builder, mesh.data.color);\r\n }\r\n\r\n /*\r\n if (mesh.data.face !== undefined && mesh.data.face.length > 0) {\r\n this.writeOneBasedIndexArray(mesh, mesh.data.face, undefined, 0, indexArray);\r\n BGFBAccessors.Polyface.createFaceDataVector(this.builder, indexArray);\r\n }\r\n */\r\n if (mesh.data.normal) {\r\n copyToPackedNumberArray(numberArray, mesh.data.normal.float64Data(), mesh.data.normal.float64Length);\r\n normalOffset = BGFBAccessors.Polyface.createNormalVector(this.builder, numberArray);\r\n }\r\n\r\n if (mesh.data.param) {\r\n copyToPackedNumberArray(numberArray, mesh.data.param.float64Data(), mesh.data.param.float64Length);\r\n paramOffset = BGFBAccessors.Polyface.createPointVector(this.builder, numberArray);\r\n }\r\n\r\n if (mesh.data.auxData) {\r\n auxDataOffset = this.writePolyfaceAuxDataAsFBVariantGeometry(mesh.data.auxData)!;\r\n }\r\n\r\n if (mesh.data.taggedNumericData)\r\n taggedNumericDataOffset = this.writeTaggedNumericDataArray(mesh.data.taggedNumericData);\r\n const expectedClosure = mesh.expectedClosure;\r\n const polyfaceOffset = BGFBAccessors.Polyface.createPolyface(this.builder, pointOffset, paramOffset, normalOffset, 0, intColorOffset,\r\n pointIndexOffset, paramIndexOffset, normalIndexOffset, colorIndexOffset, 0,\r\n 0, 0, meshStyle, twoSided,\r\n numPerFace, 0, auxDataOffset, expectedClosure, taggedNumericDataOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagPolyface, polyfaceOffset, 0);\r\n\r\n }\r\n return undefined;\r\n }\r\n\r\n public fillOneBasedIndexArray(mesh: IndexedPolyface, sourceIndex: number[], visible: boolean[] | undefined, facetTerminator: number | undefined, destIndex: number[]) {\r\n destIndex.length = 0;\r\n const numFacet = mesh.facetCount;\r\n for (let facetIndex = 0; facetIndex < numFacet; facetIndex++) {\r\n const k0 = mesh.facetIndex0(facetIndex);\r\n const k1 = mesh.facetIndex1(facetIndex);\r\n for (let k = k0; k < k1; k++) {\r\n let q = sourceIndex[k] + 1;\r\n if (visible !== undefined && !visible[k])\r\n q = -q;\r\n destIndex.push(q);\r\n }\r\n if (facetTerminator !== undefined)\r\n destIndex.push(facetTerminator);\r\n }\r\n }\r\n public writeGeometryQueryAsFBVariantGeometry(g: GeometryQuery): number | undefined {\r\n let offset: number | undefined;\r\n if (g instanceof CurvePrimitive && (offset = this.writeCurvePrimitiveAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof CurveCollection && (offset = this.writeCurveCollectionAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof IndexedPolyface && (offset = this.writePolyfaceAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof SolidPrimitive && (offset = this.writeSolidPrimitiveAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof BSplineSurface3d && (offset = this.writeBSplineSurfaceAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof BSplineSurface3dH && (offset = this.writeBSplineSurfaceAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n if (g instanceof PointString3d && (offset = this.writePointString3dAsFBVariantGeometry(g)) !== undefined)\r\n return offset;\r\n // if (g instanceof CoordinateXYZ) // TODO\r\n return undefined;\r\n }\r\n\r\n public writeGeometryQueryArrayAsFBVariantGeometry(allGeometry: GeometryQuery | GeometryQuery[] | undefined): number | undefined{\r\n if (Array.isArray(allGeometry)) {\r\n const allOffsets: number[] = [];\r\n for (const g of allGeometry) {\r\n const offset = this.writeGeometryQueryAsFBVariantGeometry(g);\r\n if (offset !== undefined)\r\n allOffsets.push(offset);\r\n }\r\n if (allOffsets.length > 0) {\r\n const membersOffset = BGFBAccessors.VectorOfVariantGeometry.createMembersVector(this.builder, allOffsets);\r\n const vectorOffset = BGFBAccessors.VectorOfVariantGeometry.createVectorOfVariantGeometry(this.builder, membersOffset);\r\n return BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors.VariantGeometryUnion.tagVectorOfVariantGeometry, vectorOffset, 0);\r\n }\r\n } else if (allGeometry instanceof GeometryQuery)\r\n return this.writeGeometryQueryAsFBVariantGeometry(allGeometry);\r\n return undefined;\r\n }\r\n /**\r\n * Serialize bytes to a flatbuffer.\r\n */\r\n public static geometryToBytes(data: GeometryQuery | GeometryQuery[], signatureBytes?: Uint8Array): Uint8Array | undefined {\r\n const writer = new BGFBWriter();\r\n const rootOffset = writer.writeGeometryQueryArrayAsFBVariantGeometry(data);\r\n\r\n if (rootOffset !== undefined) {\r\n const builder = writer.builder;\r\n builder.finish(rootOffset);\r\n const buffer = builder.dataBuffer();\r\n if (!signatureBytes) {\r\n return buffer.bytes().slice(buffer.position());\r\n } else if (buffer.position() >= signatureBytes.length) {\r\n // The buffer has space for the signature ahead of its position . . .\r\n const i0 = buffer.position() - signatureBytes.length;\r\n let i = i0;\r\n for (const k of signatureBytes)\r\n buffer.bytes()[i++] = k;\r\n return buffer.bytes().slice(i0);\r\n } else {\r\n // There is no space ahead of the position () . . .\r\n // coverage remark: I have never seen this happen for real.\r\n // It has been exercised by adding 1024 to the signatureBytes.length test to force this branch.\r\n const num1 = buffer.bytes().length - buffer.position();\r\n const num0 = signatureBytes.length;\r\n const newBytes = new Uint8Array(num0 + num1);\r\n newBytes.set(signatureBytes, 0);\r\n newBytes.set(buffer.bytes().slice(buffer.position()), num0);\r\n return newBytes;\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\nfunction extractNumberArray(data: GrowableXYZArray | Point3d[]): number[] {\r\n const result = [];\r\n if (data instanceof GrowableXYZArray) {\r\n // ugh -- accessors only deal with number[] ..\r\n const numCoordinate = 3 * data.length;\r\n const source = data.float64Data();\r\n for (let i = 0; i < numCoordinate; i++)\r\n result.push(source[i]);\r\n return result;\r\n } else if (Array.isArray(data)) {\r\n for (const xyz of data)\r\n result.push(xyz.x, xyz.y, xyz.z);\r\n }\r\n return result;\r\n}\r\n/** Copy the active data to a simple number array. */\r\nfunction copyToPackedNumberArray(dest: number[], source: Float64Array, count: number) {\r\n dest.length = 0;\r\n for (let i = 0; i < count; i++)\r\n dest.push(source[i]);\r\n}\r\n\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"GeometrySamples.d.ts","sourceRoot":"","sources":["../../../src/serialization/GeometrySamples.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GeometrySamples.d.ts","sourceRoot":"","sources":["../../../src/serialization/GeometrySamples.ts"],"names":[],"mappings":"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"}