@itwin/core-geometry 4.3.0-dev.9 → 4.4.0-dev.1

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 (336) hide show
  1. package/CHANGELOG.md +38 -1
  2. package/lib/cjs/Geometry.d.ts +14 -2
  3. package/lib/cjs/Geometry.d.ts.map +1 -1
  4. package/lib/cjs/Geometry.js +20 -9
  5. package/lib/cjs/Geometry.js.map +1 -1
  6. package/lib/cjs/bspline/BSpline1dNd.d.ts +12 -2
  7. package/lib/cjs/bspline/BSpline1dNd.d.ts.map +1 -1
  8. package/lib/cjs/bspline/BSpline1dNd.js +27 -17
  9. package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
  10. package/lib/cjs/bspline/BSplineCurve.d.ts +30 -16
  11. package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -1
  12. package/lib/cjs/bspline/BSplineCurve.js +68 -44
  13. package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
  14. package/lib/cjs/bspline/BSplineCurve3dH.d.ts +27 -20
  15. package/lib/cjs/bspline/BSplineCurve3dH.d.ts.map +1 -1
  16. package/lib/cjs/bspline/BSplineCurve3dH.js +136 -87
  17. package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
  18. package/lib/cjs/bspline/BSplineSurface.d.ts +138 -74
  19. package/lib/cjs/bspline/BSplineSurface.d.ts.map +1 -1
  20. package/lib/cjs/bspline/BSplineSurface.js +242 -119
  21. package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
  22. package/lib/cjs/bspline/Bezier1dNd.d.ts +18 -4
  23. package/lib/cjs/bspline/Bezier1dNd.d.ts.map +1 -1
  24. package/lib/cjs/bspline/Bezier1dNd.js +19 -5
  25. package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
  26. package/lib/cjs/bspline/BezierCurve3dH.d.ts.map +1 -1
  27. package/lib/cjs/bspline/BezierCurve3dH.js +2 -1
  28. package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
  29. package/lib/cjs/bspline/KnotVector.d.ts +30 -33
  30. package/lib/cjs/bspline/KnotVector.d.ts.map +1 -1
  31. package/lib/cjs/bspline/KnotVector.js +76 -69
  32. package/lib/cjs/bspline/KnotVector.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/core-geometry.d.ts +0 -2
  38. package/lib/cjs/core-geometry.d.ts.map +1 -1
  39. package/lib/cjs/core-geometry.js +0 -2
  40. package/lib/cjs/core-geometry.js.map +1 -1
  41. package/lib/cjs/curve/Arc3d.d.ts.map +1 -1
  42. package/lib/cjs/curve/Arc3d.js +5 -5
  43. package/lib/cjs/curve/Arc3d.js.map +1 -1
  44. package/lib/cjs/curve/CurveLocationDetail.d.ts +1 -4
  45. package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -1
  46. package/lib/cjs/curve/CurveLocationDetail.js +4 -10
  47. package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
  48. package/lib/cjs/curve/CurveOps.d.ts +4 -5
  49. package/lib/cjs/curve/CurveOps.d.ts.map +1 -1
  50. package/lib/cjs/curve/CurveOps.js +1 -1
  51. package/lib/cjs/curve/CurveOps.js.map +1 -1
  52. package/lib/cjs/curve/CurveTypes.d.ts +14 -2
  53. package/lib/cjs/curve/CurveTypes.d.ts.map +1 -1
  54. package/lib/cjs/curve/CurveTypes.js.map +1 -1
  55. package/lib/cjs/curve/LineString3d.d.ts +3 -2
  56. package/lib/cjs/curve/LineString3d.d.ts.map +1 -1
  57. package/lib/cjs/curve/LineString3d.js +1 -0
  58. package/lib/cjs/curve/LineString3d.js.map +1 -1
  59. package/lib/cjs/curve/PointString3d.d.ts +2 -1
  60. package/lib/cjs/curve/PointString3d.d.ts.map +1 -1
  61. package/lib/cjs/curve/PointString3d.js.map +1 -1
  62. package/lib/cjs/curve/RegionOps.d.ts +5 -11
  63. package/lib/cjs/curve/RegionOps.d.ts.map +1 -1
  64. package/lib/cjs/curve/RegionOps.js.map +1 -1
  65. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +15 -9
  66. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
  67. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js +68 -56
  68. package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  69. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts +14 -16
  70. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  71. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js +51 -69
  72. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  73. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.d.ts.map +1 -1
  74. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js +3 -2
  75. package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  76. package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts +2 -3
  77. package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
  78. package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
  79. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts +4 -4
  80. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  81. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js +38 -36
  82. package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  83. package/lib/cjs/geometry3d/Angle.d.ts +0 -1
  84. package/lib/cjs/geometry3d/Angle.d.ts.map +1 -1
  85. package/lib/cjs/geometry3d/Angle.js +0 -1
  86. package/lib/cjs/geometry3d/Angle.js.map +1 -1
  87. package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts +21 -5
  88. package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts.map +1 -1
  89. package/lib/cjs/geometry3d/CoincidentGeometryOps.js +71 -45
  90. package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
  91. package/lib/cjs/geometry3d/Matrix3d.d.ts +20 -13
  92. package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -1
  93. package/lib/cjs/geometry3d/Matrix3d.js +28 -21
  94. package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
  95. package/lib/cjs/geometry3d/Point3dVector3d.d.ts +11 -2
  96. package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -1
  97. package/lib/cjs/geometry3d/Point3dVector3d.js +16 -5
  98. package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
  99. package/lib/cjs/geometry3d/PointHelpers.d.ts +58 -20
  100. package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -1
  101. package/lib/cjs/geometry3d/PointHelpers.js +213 -62
  102. package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
  103. package/lib/cjs/geometry3d/Segment1d.d.ts +5 -1
  104. package/lib/cjs/geometry3d/Segment1d.d.ts.map +1 -1
  105. package/lib/cjs/geometry3d/Segment1d.js +11 -7
  106. package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
  107. package/lib/cjs/geometry3d/Transform.d.ts +4 -5
  108. package/lib/cjs/geometry3d/Transform.d.ts.map +1 -1
  109. package/lib/cjs/geometry3d/Transform.js +4 -5
  110. package/lib/cjs/geometry3d/Transform.js.map +1 -1
  111. package/lib/cjs/geometry4d/Point4d.d.ts +13 -0
  112. package/lib/cjs/geometry4d/Point4d.d.ts.map +1 -1
  113. package/lib/cjs/geometry4d/Point4d.js +21 -0
  114. package/lib/cjs/geometry4d/Point4d.js.map +1 -1
  115. package/lib/cjs/numerics/BezierPolynomials.d.ts +88 -64
  116. package/lib/cjs/numerics/BezierPolynomials.d.ts.map +1 -1
  117. package/lib/cjs/numerics/BezierPolynomials.js +92 -73
  118. package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
  119. package/lib/cjs/numerics/Newton.d.ts +143 -61
  120. package/lib/cjs/numerics/Newton.d.ts.map +1 -1
  121. package/lib/cjs/numerics/Newton.js +233 -66
  122. package/lib/cjs/numerics/Newton.js.map +1 -1
  123. package/lib/cjs/numerics/PascalCoefficients.d.ts +8 -12
  124. package/lib/cjs/numerics/PascalCoefficients.d.ts.map +1 -1
  125. package/lib/cjs/numerics/PascalCoefficients.js +10 -12
  126. package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
  127. package/lib/cjs/numerics/Polynomials.d.ts +6 -10
  128. package/lib/cjs/numerics/Polynomials.d.ts.map +1 -1
  129. package/lib/cjs/numerics/Polynomials.js +6 -10
  130. package/lib/cjs/numerics/Polynomials.js.map +1 -1
  131. package/lib/cjs/polyface/PolyfaceBuilder.d.ts +3 -0
  132. package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -1
  133. package/lib/cjs/polyface/PolyfaceBuilder.js +13 -2
  134. package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
  135. package/lib/cjs/polyface/PolyfaceData.d.ts +1 -1
  136. package/lib/cjs/polyface/PolyfaceData.js +1 -1
  137. package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
  138. package/lib/cjs/polyface/PolyfaceQuery.d.ts +38 -11
  139. package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -1
  140. package/lib/cjs/polyface/PolyfaceQuery.js +93 -16
  141. package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
  142. package/lib/cjs/serialization/BGFBReader.d.ts +10 -10
  143. package/lib/cjs/serialization/BGFBReader.d.ts.map +1 -1
  144. package/lib/cjs/serialization/BGFBReader.js +69 -42
  145. package/lib/cjs/serialization/BGFBReader.js.map +1 -1
  146. package/lib/cjs/serialization/BGFBWriter.d.ts +8 -8
  147. package/lib/cjs/serialization/BGFBWriter.d.ts.map +1 -1
  148. package/lib/cjs/serialization/BGFBWriter.js +80 -55
  149. package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
  150. package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -1
  151. package/lib/cjs/serialization/GeometrySamples.js +6 -8
  152. package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
  153. package/lib/cjs/serialization/IModelJsonSchema.d.ts +8 -14
  154. package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -1
  155. package/lib/cjs/serialization/IModelJsonSchema.js +85 -259
  156. package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
  157. package/lib/cjs/serialization/SerializationHelpers.d.ts +109 -0
  158. package/lib/cjs/serialization/SerializationHelpers.d.ts.map +1 -0
  159. package/lib/cjs/serialization/SerializationHelpers.js +591 -0
  160. package/lib/cjs/serialization/SerializationHelpers.js.map +1 -0
  161. package/lib/cjs/topology/Graph.d.ts +399 -366
  162. package/lib/cjs/topology/Graph.d.ts.map +1 -1
  163. package/lib/cjs/topology/Graph.js +531 -464
  164. package/lib/cjs/topology/Graph.js.map +1 -1
  165. package/lib/cjs/topology/MaskManager.d.ts +8 -9
  166. package/lib/cjs/topology/MaskManager.d.ts.map +1 -1
  167. package/lib/cjs/topology/MaskManager.js +11 -12
  168. package/lib/cjs/topology/MaskManager.js.map +1 -1
  169. package/lib/esm/Geometry.d.ts +14 -2
  170. package/lib/esm/Geometry.d.ts.map +1 -1
  171. package/lib/esm/Geometry.js +20 -9
  172. package/lib/esm/Geometry.js.map +1 -1
  173. package/lib/esm/bspline/BSpline1dNd.d.ts +12 -2
  174. package/lib/esm/bspline/BSpline1dNd.d.ts.map +1 -1
  175. package/lib/esm/bspline/BSpline1dNd.js +27 -17
  176. package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
  177. package/lib/esm/bspline/BSplineCurve.d.ts +30 -16
  178. package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -1
  179. package/lib/esm/bspline/BSplineCurve.js +68 -44
  180. package/lib/esm/bspline/BSplineCurve.js.map +1 -1
  181. package/lib/esm/bspline/BSplineCurve3dH.d.ts +27 -20
  182. package/lib/esm/bspline/BSplineCurve3dH.d.ts.map +1 -1
  183. package/lib/esm/bspline/BSplineCurve3dH.js +137 -88
  184. package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
  185. package/lib/esm/bspline/BSplineSurface.d.ts +138 -74
  186. package/lib/esm/bspline/BSplineSurface.d.ts.map +1 -1
  187. package/lib/esm/bspline/BSplineSurface.js +242 -119
  188. package/lib/esm/bspline/BSplineSurface.js.map +1 -1
  189. package/lib/esm/bspline/Bezier1dNd.d.ts +18 -4
  190. package/lib/esm/bspline/Bezier1dNd.d.ts.map +1 -1
  191. package/lib/esm/bspline/Bezier1dNd.js +19 -5
  192. package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
  193. package/lib/esm/bspline/BezierCurve3dH.d.ts.map +1 -1
  194. package/lib/esm/bspline/BezierCurve3dH.js +2 -1
  195. package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
  196. package/lib/esm/bspline/KnotVector.d.ts +30 -33
  197. package/lib/esm/bspline/KnotVector.d.ts.map +1 -1
  198. package/lib/esm/bspline/KnotVector.js +76 -69
  199. package/lib/esm/bspline/KnotVector.js.map +1 -1
  200. package/lib/esm/clipping/ClipUtils.d.ts +32 -5
  201. package/lib/esm/clipping/ClipUtils.d.ts.map +1 -1
  202. package/lib/esm/clipping/ClipUtils.js +92 -11
  203. package/lib/esm/clipping/ClipUtils.js.map +1 -1
  204. package/lib/esm/core-geometry.d.ts +0 -2
  205. package/lib/esm/core-geometry.d.ts.map +1 -1
  206. package/lib/esm/core-geometry.js +0 -2
  207. package/lib/esm/core-geometry.js.map +1 -1
  208. package/lib/esm/curve/Arc3d.d.ts.map +1 -1
  209. package/lib/esm/curve/Arc3d.js +5 -5
  210. package/lib/esm/curve/Arc3d.js.map +1 -1
  211. package/lib/esm/curve/CurveLocationDetail.d.ts +1 -4
  212. package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -1
  213. package/lib/esm/curve/CurveLocationDetail.js +4 -10
  214. package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
  215. package/lib/esm/curve/CurveOps.d.ts +4 -5
  216. package/lib/esm/curve/CurveOps.d.ts.map +1 -1
  217. package/lib/esm/curve/CurveOps.js +1 -1
  218. package/lib/esm/curve/CurveOps.js.map +1 -1
  219. package/lib/esm/curve/CurveTypes.d.ts +14 -2
  220. package/lib/esm/curve/CurveTypes.d.ts.map +1 -1
  221. package/lib/esm/curve/CurveTypes.js.map +1 -1
  222. package/lib/esm/curve/LineString3d.d.ts +3 -2
  223. package/lib/esm/curve/LineString3d.d.ts.map +1 -1
  224. package/lib/esm/curve/LineString3d.js +1 -0
  225. package/lib/esm/curve/LineString3d.js.map +1 -1
  226. package/lib/esm/curve/PointString3d.d.ts +2 -1
  227. package/lib/esm/curve/PointString3d.d.ts.map +1 -1
  228. package/lib/esm/curve/PointString3d.js.map +1 -1
  229. package/lib/esm/curve/RegionOps.d.ts +5 -11
  230. package/lib/esm/curve/RegionOps.d.ts.map +1 -1
  231. package/lib/esm/curve/RegionOps.js.map +1 -1
  232. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts +15 -9
  233. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.d.ts.map +1 -1
  234. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js +69 -57
  235. package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
  236. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts +14 -16
  237. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.d.ts.map +1 -1
  238. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js +51 -68
  239. package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
  240. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.d.ts.map +1 -1
  241. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js +3 -2
  242. package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
  243. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts +2 -3
  244. package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts.map +1 -1
  245. package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
  246. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts +4 -4
  247. package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -1
  248. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +38 -36
  249. package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
  250. package/lib/esm/geometry3d/Angle.d.ts +0 -1
  251. package/lib/esm/geometry3d/Angle.d.ts.map +1 -1
  252. package/lib/esm/geometry3d/Angle.js +0 -1
  253. package/lib/esm/geometry3d/Angle.js.map +1 -1
  254. package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts +21 -5
  255. package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts.map +1 -1
  256. package/lib/esm/geometry3d/CoincidentGeometryOps.js +71 -45
  257. package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
  258. package/lib/esm/geometry3d/Matrix3d.d.ts +20 -13
  259. package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -1
  260. package/lib/esm/geometry3d/Matrix3d.js +28 -21
  261. package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
  262. package/lib/esm/geometry3d/Point3dVector3d.d.ts +11 -2
  263. package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -1
  264. package/lib/esm/geometry3d/Point3dVector3d.js +16 -5
  265. package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
  266. package/lib/esm/geometry3d/PointHelpers.d.ts +58 -20
  267. package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -1
  268. package/lib/esm/geometry3d/PointHelpers.js +213 -62
  269. package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
  270. package/lib/esm/geometry3d/Segment1d.d.ts +5 -1
  271. package/lib/esm/geometry3d/Segment1d.d.ts.map +1 -1
  272. package/lib/esm/geometry3d/Segment1d.js +11 -7
  273. package/lib/esm/geometry3d/Segment1d.js.map +1 -1
  274. package/lib/esm/geometry3d/Transform.d.ts +4 -5
  275. package/lib/esm/geometry3d/Transform.d.ts.map +1 -1
  276. package/lib/esm/geometry3d/Transform.js +4 -5
  277. package/lib/esm/geometry3d/Transform.js.map +1 -1
  278. package/lib/esm/geometry4d/Point4d.d.ts +13 -0
  279. package/lib/esm/geometry4d/Point4d.d.ts.map +1 -1
  280. package/lib/esm/geometry4d/Point4d.js +21 -0
  281. package/lib/esm/geometry4d/Point4d.js.map +1 -1
  282. package/lib/esm/numerics/BezierPolynomials.d.ts +88 -64
  283. package/lib/esm/numerics/BezierPolynomials.d.ts.map +1 -1
  284. package/lib/esm/numerics/BezierPolynomials.js +92 -73
  285. package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
  286. package/lib/esm/numerics/Newton.d.ts +143 -61
  287. package/lib/esm/numerics/Newton.d.ts.map +1 -1
  288. package/lib/esm/numerics/Newton.js +229 -65
  289. package/lib/esm/numerics/Newton.js.map +1 -1
  290. package/lib/esm/numerics/PascalCoefficients.d.ts +8 -12
  291. package/lib/esm/numerics/PascalCoefficients.d.ts.map +1 -1
  292. package/lib/esm/numerics/PascalCoefficients.js +10 -12
  293. package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
  294. package/lib/esm/numerics/Polynomials.d.ts +6 -10
  295. package/lib/esm/numerics/Polynomials.d.ts.map +1 -1
  296. package/lib/esm/numerics/Polynomials.js +6 -10
  297. package/lib/esm/numerics/Polynomials.js.map +1 -1
  298. package/lib/esm/polyface/PolyfaceBuilder.d.ts +3 -0
  299. package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -1
  300. package/lib/esm/polyface/PolyfaceBuilder.js +13 -2
  301. package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
  302. package/lib/esm/polyface/PolyfaceData.d.ts +1 -1
  303. package/lib/esm/polyface/PolyfaceData.js +1 -1
  304. package/lib/esm/polyface/PolyfaceData.js.map +1 -1
  305. package/lib/esm/polyface/PolyfaceQuery.d.ts +38 -11
  306. package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -1
  307. package/lib/esm/polyface/PolyfaceQuery.js +93 -16
  308. package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
  309. package/lib/esm/serialization/BGFBReader.d.ts +10 -10
  310. package/lib/esm/serialization/BGFBReader.d.ts.map +1 -1
  311. package/lib/esm/serialization/BGFBReader.js +69 -42
  312. package/lib/esm/serialization/BGFBReader.js.map +1 -1
  313. package/lib/esm/serialization/BGFBWriter.d.ts +8 -8
  314. package/lib/esm/serialization/BGFBWriter.d.ts.map +1 -1
  315. package/lib/esm/serialization/BGFBWriter.js +80 -55
  316. package/lib/esm/serialization/BGFBWriter.js.map +1 -1
  317. package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -1
  318. package/lib/esm/serialization/GeometrySamples.js +7 -9
  319. package/lib/esm/serialization/GeometrySamples.js.map +1 -1
  320. package/lib/esm/serialization/IModelJsonSchema.d.ts +8 -14
  321. package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -1
  322. package/lib/esm/serialization/IModelJsonSchema.js +86 -260
  323. package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
  324. package/lib/esm/serialization/SerializationHelpers.d.ts +109 -0
  325. package/lib/esm/serialization/SerializationHelpers.d.ts.map +1 -0
  326. package/lib/esm/serialization/SerializationHelpers.js +588 -0
  327. package/lib/esm/serialization/SerializationHelpers.js.map +1 -0
  328. package/lib/esm/topology/Graph.d.ts +399 -366
  329. package/lib/esm/topology/Graph.d.ts.map +1 -1
  330. package/lib/esm/topology/Graph.js +531 -464
  331. package/lib/esm/topology/Graph.js.map +1 -1
  332. package/lib/esm/topology/MaskManager.d.ts +8 -9
  333. package/lib/esm/topology/MaskManager.d.ts.map +1 -1
  334. package/lib/esm/topology/MaskManager.js +11 -12
  335. package/lib/esm/topology/MaskManager.js.map +1 -1
  336. package/package.json +3 -4
@@ -9,39 +9,41 @@ exports.BGFBWriter = void 0;
9
9
  * @module Serialization
10
10
  */
11
11
  const flatbuffers_1 = require("flatbuffers");
12
- const BGFBAccessors_1 = require("./BGFBAccessors");
12
+ const AkimaCurve3d_1 = require("../bspline/AkimaCurve3d");
13
+ const BSplineCurve_1 = require("../bspline/BSplineCurve");
14
+ const BSplineCurve3dH_1 = require("../bspline/BSplineCurve3dH");
15
+ const BSplineSurface_1 = require("../bspline/BSplineSurface");
16
+ const InterpolationCurve3d_1 = require("../bspline/InterpolationCurve3d");
17
+ const KnotVector_1 = require("../bspline/KnotVector");
18
+ const Arc3d_1 = require("../curve/Arc3d");
19
+ const CurveCollection_1 = require("../curve/CurveCollection");
13
20
  const CurvePrimitive_1 = require("../curve/CurvePrimitive");
21
+ const GeometryQuery_1 = require("../curve/GeometryQuery");
14
22
  const LineSegment3d_1 = require("../curve/LineSegment3d");
15
- const Arc3d_1 = require("../curve/Arc3d");
16
23
  const LineString3d_1 = require("../curve/LineString3d");
17
- const GrowableXYZArray_1 = require("../geometry3d/GrowableXYZArray");
18
- const Polyface_1 = require("../polyface/Polyface");
19
- const CurveCollection_1 = require("../curve/CurveCollection");
20
- const ParityRegion_1 = require("../curve/ParityRegion");
21
24
  const Loop_1 = require("../curve/Loop");
22
- const UnionRegion_1 = require("../curve/UnionRegion");
25
+ const ParityRegion_1 = require("../curve/ParityRegion");
23
26
  const Path_1 = require("../curve/Path");
24
- const BSplineCurve_1 = require("../bspline/BSplineCurve");
25
- const BSplineCurve3dH_1 = require("../bspline/BSplineCurve3dH");
26
- const SolidPrimitive_1 = require("../solid/SolidPrimitive");
27
+ const PointString3d_1 = require("../curve/PointString3d");
28
+ const DirectSpiral3d_1 = require("../curve/spiral/DirectSpiral3d");
29
+ const IntegratedSpiral3d_1 = require("../curve/spiral/IntegratedSpiral3d");
30
+ const TransitionSpiral3d_1 = require("../curve/spiral/TransitionSpiral3d");
31
+ const UnionRegion_1 = require("../curve/UnionRegion");
32
+ const GrowableXYZArray_1 = require("../geometry3d/GrowableXYZArray");
33
+ const Point3dVector3d_1 = require("../geometry3d/Point3dVector3d");
34
+ const AuxData_1 = require("../polyface/AuxData");
35
+ const Polyface_1 = require("../polyface/Polyface");
27
36
  const Box_1 = require("../solid/Box");
28
- const Sphere_1 = require("../solid/Sphere");
37
+ const Cone_1 = require("../solid/Cone");
29
38
  const LinearSweep_1 = require("../solid/LinearSweep");
30
39
  const RotationalSweep_1 = require("../solid/RotationalSweep");
31
40
  const RuledSweep_1 = require("../solid/RuledSweep");
41
+ const SolidPrimitive_1 = require("../solid/SolidPrimitive");
42
+ const Sphere_1 = require("../solid/Sphere");
32
43
  const TorusPipe_1 = require("../solid/TorusPipe");
33
- const Cone_1 = require("../solid/Cone");
34
- const GeometryQuery_1 = require("../curve/GeometryQuery");
35
- const BSplineSurface_1 = require("../bspline/BSplineSurface");
36
- const PointString3d_1 = require("../curve/PointString3d");
37
- const Point3dVector3d_1 = require("../geometry3d/Point3dVector3d");
38
- const AuxData_1 = require("../polyface/AuxData");
39
- const TransitionSpiral3d_1 = require("../curve/spiral/TransitionSpiral3d");
40
- const IntegratedSpiral3d_1 = require("../curve/spiral/IntegratedSpiral3d");
44
+ const BGFBAccessors_1 = require("./BGFBAccessors");
41
45
  const BGFBReader_1 = require("./BGFBReader");
42
- const DirectSpiral3d_1 = require("../curve/spiral/DirectSpiral3d");
43
- const InterpolationCurve3d_1 = require("../bspline/InterpolationCurve3d");
44
- const AkimaCurve3d_1 = require("../bspline/AkimaCurve3d");
46
+ const SerializationHelpers_1 = require("./SerializationHelpers");
45
47
  /**
46
48
  * Context to write to a flatbuffer blob.
47
49
  * * This class is internal.
@@ -182,46 +184,69 @@ class BGFBWriter {
182
184
  return BGFBAccessors_1.BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors_1.BGFBAccessors.VariantGeometryUnion.tagAkimaCurve, headerOffset, 0);
183
185
  }
184
186
  writeBsplineCurve3dAsFBVariantGeometry(bcurve) {
185
- const order = bcurve.order;
186
- const closed = false; // typescript bcurves are not closed. There is API to impose wrapping . . .
187
- const weightsOffset = 0;
188
- const polesOffset = this.writeDoubleArray(bcurve.copyPointsFloat64Array());
189
- if (polesOffset === undefined)
187
+ const data = SerializationHelpers_1.SerializationHelpers.createBSplineCurveData(bcurve.polesRef, bcurve.poleDimension, bcurve.knotsRef, bcurve.numPoles, bcurve.order);
188
+ const wrapMode = bcurve.getWrappable();
189
+ if (KnotVector_1.BSplineWrapMode.None !== wrapMode)
190
+ data.params.wrapMode = wrapMode;
191
+ if (!SerializationHelpers_1.SerializationHelpers.Export.prepareBSplineCurveData(data, { jsonPoles: false }))
190
192
  return undefined;
191
- const knotsOffset = this.writeDoubleArray(bcurve.copyKnots(true));
192
- const headerOffset = BGFBAccessors_1.BGFBAccessors.BsplineCurve.createBsplineCurve(this.builder, order, closed, polesOffset, weightsOffset, knotsOffset);
193
+ const closed = !!data.params.closed;
194
+ const polesOffset = this.writeDoubleArray(data.poles);
195
+ const weightsOffset = 0;
196
+ const knotsOffset = this.writeDoubleArray(data.params.knots);
197
+ const headerOffset = BGFBAccessors_1.BGFBAccessors.BsplineCurve.createBsplineCurve(this.builder, data.params.order, closed, polesOffset, weightsOffset, knotsOffset);
193
198
  return BGFBAccessors_1.BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors_1.BGFBAccessors.VariantGeometryUnion.tagBsplineCurve, headerOffset, 0);
194
199
  }
195
200
  writeBSplineSurfaceAsFBVariantGeometry(bsurf) {
196
- const orderU = bsurf.orderUV(BSplineSurface_1.UVSelect.uDirection);
197
- const orderV = bsurf.orderUV(BSplineSurface_1.UVSelect.VDirection);
198
- const numPolesU = bsurf.numPolesUV(BSplineSurface_1.UVSelect.uDirection);
199
- const numPolesV = bsurf.numPolesUV(BSplineSurface_1.UVSelect.VDirection);
200
- const closedU = false;
201
- const closedV = false;
201
+ let poles = bsurf.coffs;
202
+ let weights;
203
+ let dim = bsurf.poleDimension;
204
+ if (bsurf instanceof BSplineSurface_1.BSplineSurface3dH) {
205
+ poles = bsurf.copyXYZToFloat64Array(false);
206
+ weights = bsurf.copyWeightsToFloat64Array();
207
+ dim = 3;
208
+ }
209
+ const data = SerializationHelpers_1.SerializationHelpers.createBSplineSurfaceData(poles, dim, bsurf.knots[BSplineSurface_1.UVSelect.uDirection].knots, bsurf.numPolesUV(BSplineSurface_1.UVSelect.uDirection), bsurf.orderUV(BSplineSurface_1.UVSelect.uDirection), bsurf.knots[BSplineSurface_1.UVSelect.vDirection].knots, bsurf.numPolesUV(BSplineSurface_1.UVSelect.vDirection), bsurf.orderUV(BSplineSurface_1.UVSelect.vDirection));
210
+ if (weights)
211
+ data.weights = weights;
212
+ const wrapModeU = bsurf.getWrappable(BSplineSurface_1.UVSelect.uDirection);
213
+ const wrapModeV = bsurf.getWrappable(BSplineSurface_1.UVSelect.vDirection);
214
+ if (KnotVector_1.BSplineWrapMode.None !== wrapModeU)
215
+ data.uParams.wrapMode = wrapModeU;
216
+ if (KnotVector_1.BSplineWrapMode.None !== wrapModeV)
217
+ data.vParams.wrapMode = wrapModeV;
218
+ if (!SerializationHelpers_1.SerializationHelpers.Export.prepareBSplineSurfaceData(data, { jsonPoles: false }))
219
+ return undefined;
220
+ // TypeScript B-spline surfaces do not support trim curves or isoline counts
202
221
  const holeOrigin = 0;
203
222
  const boundariesOffset = 0;
204
- let polesOffset = 0;
205
- let weightsOffset = 0;
206
- if (bsurf instanceof BSplineSurface_1.BSplineSurface3d) {
207
- polesOffset = this.writeDoubleArray(bsurf.copyPointsFloat64Array());
208
- }
209
- else if (bsurf instanceof BSplineSurface_1.BSplineSurface3dH) {
210
- polesOffset = this.writeDoubleArray(bsurf.copyXYZToFloat64Array(false));
211
- weightsOffset = this.writeDoubleArray(bsurf.copyWeightsToFloat64Array());
212
- }
213
- const uKnotsOffset = this.writeDoubleArray(bsurf.knots[0].copyKnots(true));
214
- const vKnotsOffset = this.writeDoubleArray(bsurf.knots[1].copyKnots(true));
215
- const headerOffset = BGFBAccessors_1.BGFBAccessors.BsplineSurface.createBsplineSurface(this.builder, polesOffset, weightsOffset, uKnotsOffset, vKnotsOffset, numPolesU, numPolesV, orderU, orderV, 0, 0, holeOrigin, boundariesOffset, closedU, closedV);
223
+ const numRulesU = 0;
224
+ const numRulesV = 0;
225
+ const closedU = !!data.uParams.closed;
226
+ const closedV = !!data.vParams.closed;
227
+ const polesOffset = this.writeDoubleArray(data.poles);
228
+ const weightsOffset = data.weights ? this.writeDoubleArray(data.weights) : 0;
229
+ const uKnotsOffset = this.writeDoubleArray(data.uParams.knots);
230
+ const vKnotsOffset = this.writeDoubleArray(data.vParams.knots);
231
+ const headerOffset = BGFBAccessors_1.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);
216
232
  return BGFBAccessors_1.BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors_1.BGFBAccessors.VariantGeometryUnion.tagBsplineSurface, headerOffset, 0);
217
233
  }
218
- writeBsplineCurve3dAHsFBVariantGeometry(bcurve) {
219
- const order = bcurve.order;
220
- const closed = false; // typescript bcurves are not closed. There is API to impose wrapping . . .
221
- const polesOffset = this.writeDoubleArray(bcurve.copyXYZFloat64Array(false));
222
- const weightsOffset = this.writeDoubleArray(bcurve.copyWeightsFloat64Array());
223
- const knotsOffset = this.writeDoubleArray(bcurve.copyKnots(true));
224
- const headerOffset = BGFBAccessors_1.BGFBAccessors.BsplineCurve.createBsplineCurve(this.builder, order, closed, polesOffset, weightsOffset, knotsOffset);
234
+ writeBsplineCurve3dHAsFBVariantGeometry(bcurve) {
235
+ const poles = bcurve.copyXYZFloat64Array(false);
236
+ const weights = bcurve.copyWeightsFloat64Array();
237
+ const dim = 3;
238
+ const data = SerializationHelpers_1.SerializationHelpers.createBSplineCurveData(poles, dim, bcurve.knotsRef, bcurve.numPoles, bcurve.order);
239
+ data.weights = weights;
240
+ const wrapMode = bcurve.getWrappable();
241
+ if (KnotVector_1.BSplineWrapMode.None !== wrapMode)
242
+ data.params.wrapMode = wrapMode;
243
+ if (!SerializationHelpers_1.SerializationHelpers.Export.prepareBSplineCurveData(data, { jsonPoles: false }))
244
+ return undefined;
245
+ const closed = !!data.params.closed;
246
+ const polesOffset = this.writeDoubleArray(data.poles);
247
+ const weightsOffset = this.writeDoubleArray(data.weights);
248
+ const knotsOffset = this.writeDoubleArray(data.params.knots);
249
+ const headerOffset = BGFBAccessors_1.BGFBAccessors.BsplineCurve.createBsplineCurve(this.builder, data.params.order, closed, polesOffset, weightsOffset, knotsOffset);
225
250
  return BGFBAccessors_1.BGFBAccessors.VariantGeometry.createVariantGeometry(this.builder, BGFBAccessors_1.BGFBAccessors.VariantGeometryUnion.tagBsplineCurve, headerOffset, 0);
226
251
  }
227
252
  writeCurvePrimitiveAsFBVariantGeometry(curvePrimitive) {
@@ -245,7 +270,7 @@ class BGFBWriter {
245
270
  return this.writeBsplineCurve3dAsFBVariantGeometry(curvePrimitive);
246
271
  }
247
272
  else if (curvePrimitive instanceof BSplineCurve3dH_1.BSplineCurve3dH) {
248
- return this.writeBsplineCurve3dAHsFBVariantGeometry(curvePrimitive);
273
+ return this.writeBsplineCurve3dHAsFBVariantGeometry(curvePrimitive);
249
274
  }
250
275
  else if (curvePrimitive instanceof InterpolationCurve3d_1.InterpolationCurve3d) {
251
276
  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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"}