@itwin/core-common 3.5.0-dev.63 → 3.5.0-dev.66

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 (954) hide show
  1. package/CHANGELOG.md +16 -1
  2. package/lib/cjs/AmbientOcclusion.d.ts +49 -49
  3. package/lib/cjs/AmbientOcclusion.js +55 -55
  4. package/lib/cjs/AmbientOcclusion.js.map +1 -1
  5. package/lib/cjs/AnalysisStyle.d.ts +134 -134
  6. package/lib/cjs/AnalysisStyle.js +165 -165
  7. package/lib/cjs/AnalysisStyle.js.map +1 -1
  8. package/lib/cjs/AuthorizationClient.d.ts +11 -11
  9. package/lib/cjs/AuthorizationClient.js +9 -9
  10. package/lib/cjs/AuthorizationClient.js.map +1 -1
  11. package/lib/cjs/BackendTypes.d.ts +12 -12
  12. package/lib/cjs/BackendTypes.js +9 -9
  13. package/lib/cjs/BackendTypes.js.map +1 -1
  14. package/lib/cjs/BackgroundMapProvider.d.ts +51 -51
  15. package/lib/cjs/BackgroundMapProvider.js +68 -68
  16. package/lib/cjs/BackgroundMapProvider.js.map +1 -1
  17. package/lib/cjs/BackgroundMapSettings.d.ts +136 -136
  18. package/lib/cjs/BackgroundMapSettings.js +156 -156
  19. package/lib/cjs/BackgroundMapSettings.js.map +1 -1
  20. package/lib/cjs/Base64EncodedString.d.ts +32 -32
  21. package/lib/cjs/Base64EncodedString.js +66 -66
  22. package/lib/cjs/Base64EncodedString.js.map +1 -1
  23. package/lib/cjs/BlobReader.d.ts +31 -31
  24. package/lib/cjs/BlobReader.js +84 -84
  25. package/lib/cjs/BlobReader.js.map +1 -1
  26. package/lib/cjs/BriefcaseTypes.d.ts +189 -189
  27. package/lib/cjs/BriefcaseTypes.js +95 -95
  28. package/lib/cjs/BriefcaseTypes.js.map +1 -1
  29. package/lib/cjs/Camera.d.ts +42 -42
  30. package/lib/cjs/Camera.js +62 -62
  31. package/lib/cjs/Camera.js.map +1 -1
  32. package/lib/cjs/ChangedElements.d.ts +85 -83
  33. package/lib/cjs/ChangedElements.d.ts.map +1 -1
  34. package/lib/cjs/ChangedElements.js +23 -21
  35. package/lib/cjs/ChangedElements.js.map +1 -1
  36. package/lib/cjs/ChangedEntities.d.ts +45 -45
  37. package/lib/cjs/ChangedEntities.js +9 -9
  38. package/lib/cjs/ChangedEntities.js.map +1 -1
  39. package/lib/cjs/ChangesetProps.d.ts +98 -98
  40. package/lib/cjs/ChangesetProps.js +22 -22
  41. package/lib/cjs/ChangesetProps.js.map +1 -1
  42. package/lib/cjs/ClipStyle.d.ts +89 -89
  43. package/lib/cjs/ClipStyle.js +123 -123
  44. package/lib/cjs/ClipStyle.js.map +1 -1
  45. package/lib/cjs/CloudStorage.d.ts +62 -62
  46. package/lib/cjs/CloudStorage.js +113 -113
  47. package/lib/cjs/CloudStorage.js.map +1 -1
  48. package/lib/cjs/CloudStorageTileCache.d.ts +27 -27
  49. package/lib/cjs/CloudStorageTileCache.js +66 -66
  50. package/lib/cjs/CloudStorageTileCache.js.map +1 -1
  51. package/lib/cjs/Code.d.ts +256 -256
  52. package/lib/cjs/Code.js +281 -281
  53. package/lib/cjs/Code.js.map +1 -1
  54. package/lib/cjs/ColorByName.d.ts +161 -161
  55. package/lib/cjs/ColorByName.js +169 -169
  56. package/lib/cjs/ColorByName.js.map +1 -1
  57. package/lib/cjs/ColorDef.d.ts +208 -208
  58. package/lib/cjs/ColorDef.js +571 -571
  59. package/lib/cjs/ColorDef.js.map +1 -1
  60. package/lib/cjs/CommonLoggerCategory.d.ts +18 -18
  61. package/lib/cjs/CommonLoggerCategory.js +26 -26
  62. package/lib/cjs/CommonLoggerCategory.js.map +1 -1
  63. package/lib/cjs/ConcurrentQuery.d.ts +421 -421
  64. package/lib/cjs/ConcurrentQuery.js +552 -552
  65. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  66. package/lib/cjs/ContextRealityModel.d.ts +276 -276
  67. package/lib/cjs/ContextRealityModel.js +358 -358
  68. package/lib/cjs/ContextRealityModel.js.map +1 -1
  69. package/lib/cjs/DisplayStyleSettings.d.ts +584 -584
  70. package/lib/cjs/DisplayStyleSettings.js +981 -981
  71. package/lib/cjs/DisplayStyleSettings.js.map +1 -1
  72. package/lib/cjs/ECSchemaProps.d.ts +39 -39
  73. package/lib/cjs/ECSchemaProps.js +9 -9
  74. package/lib/cjs/ECSchemaProps.js.map +1 -1
  75. package/lib/cjs/ECSqlReader.d.ts +70 -70
  76. package/lib/cjs/ECSqlReader.js +280 -280
  77. package/lib/cjs/ECSqlReader.js.map +1 -1
  78. package/lib/cjs/ECSqlTypes.d.ts +128 -128
  79. package/lib/cjs/ECSqlTypes.js +189 -189
  80. package/lib/cjs/ECSqlTypes.js.map +1 -1
  81. package/lib/cjs/ElementMesh.d.ts +39 -39
  82. package/lib/cjs/ElementMesh.js +56 -56
  83. package/lib/cjs/ElementMesh.js.map +1 -1
  84. package/lib/cjs/ElementProps.d.ts +479 -479
  85. package/lib/cjs/ElementProps.js +99 -99
  86. package/lib/cjs/ElementProps.js.map +1 -1
  87. package/lib/cjs/EmphasizeElementsProps.d.ts +55 -55
  88. package/lib/cjs/EmphasizeElementsProps.js +25 -25
  89. package/lib/cjs/EmphasizeElementsProps.js.map +1 -1
  90. package/lib/cjs/EntityProps.d.ts +176 -176
  91. package/lib/cjs/EntityProps.js +112 -112
  92. package/lib/cjs/EntityProps.js.map +1 -1
  93. package/lib/cjs/EntityReference.d.ts +51 -51
  94. package/lib/cjs/EntityReference.js +56 -56
  95. package/lib/cjs/EntityReference.js.map +1 -1
  96. package/lib/cjs/Environment.d.ts +61 -61
  97. package/lib/cjs/Environment.js +73 -73
  98. package/lib/cjs/Environment.js.map +1 -1
  99. package/lib/cjs/FeatureGates.d.ts +31 -31
  100. package/lib/cjs/FeatureGates.js +55 -55
  101. package/lib/cjs/FeatureGates.js.map +1 -1
  102. package/lib/cjs/FeatureIndex.d.ts +39 -39
  103. package/lib/cjs/FeatureIndex.js +63 -63
  104. package/lib/cjs/FeatureIndex.js.map +1 -1
  105. package/lib/cjs/FeatureSymbology.d.ts +444 -444
  106. package/lib/cjs/FeatureSymbology.js +614 -614
  107. package/lib/cjs/FeatureSymbology.js.map +1 -1
  108. package/lib/cjs/FeatureTable.d.ts +141 -141
  109. package/lib/cjs/FeatureTable.js +278 -278
  110. package/lib/cjs/FeatureTable.js.map +1 -1
  111. package/lib/cjs/Fonts.d.ts +51 -51
  112. package/lib/cjs/Fonts.js +53 -53
  113. package/lib/cjs/Fonts.js.map +1 -1
  114. package/lib/cjs/Frustum.d.ts +114 -114
  115. package/lib/cjs/Frustum.js +292 -292
  116. package/lib/cjs/Frustum.js.map +1 -1
  117. package/lib/cjs/GeoCoordinateServices.d.ts +119 -119
  118. package/lib/cjs/GeoCoordinateServices.js +80 -80
  119. package/lib/cjs/GeoCoordinateServices.js.map +1 -1
  120. package/lib/cjs/GeometryContainment.d.ts +28 -28
  121. package/lib/cjs/GeometryContainment.js +9 -9
  122. package/lib/cjs/GeometryContainment.js.map +1 -1
  123. package/lib/cjs/GeometryParams.d.ts +130 -130
  124. package/lib/cjs/GeometryParams.js +174 -174
  125. package/lib/cjs/GeometryParams.js.map +1 -1
  126. package/lib/cjs/GeometrySummary.d.ts +45 -45
  127. package/lib/cjs/GeometrySummary.js +23 -23
  128. package/lib/cjs/GeometrySummary.js.map +1 -1
  129. package/lib/cjs/Gradient.d.ts +139 -139
  130. package/lib/cjs/Gradient.js +455 -455
  131. package/lib/cjs/Gradient.js.map +1 -1
  132. package/lib/cjs/GraphicParams.d.ts +58 -58
  133. package/lib/cjs/GraphicParams.js +85 -85
  134. package/lib/cjs/GraphicParams.js.map +1 -1
  135. package/lib/cjs/GroundPlane.d.ts +52 -52
  136. package/lib/cjs/GroundPlane.js +64 -64
  137. package/lib/cjs/GroundPlane.js.map +1 -1
  138. package/lib/cjs/HSLColor.d.ts +20 -20
  139. package/lib/cjs/HSLColor.js +32 -32
  140. package/lib/cjs/HSLColor.js.map +1 -1
  141. package/lib/cjs/HSVColor.d.ts +30 -30
  142. package/lib/cjs/HSVColor.js +59 -59
  143. package/lib/cjs/HSVColor.js.map +1 -1
  144. package/lib/cjs/HiddenLine.d.ts +97 -97
  145. package/lib/cjs/HiddenLine.js +162 -162
  146. package/lib/cjs/HiddenLine.js.map +1 -1
  147. package/lib/cjs/Hilite.d.ts +50 -50
  148. package/lib/cjs/Hilite.js +64 -64
  149. package/lib/cjs/Hilite.js.map +1 -1
  150. package/lib/cjs/IModel.d.ts +359 -359
  151. package/lib/cjs/IModel.js +347 -347
  152. package/lib/cjs/IModel.js.map +1 -1
  153. package/lib/cjs/IModelError.d.ts +36 -36
  154. package/lib/cjs/IModelError.js +72 -72
  155. package/lib/cjs/IModelError.js.map +1 -1
  156. package/lib/cjs/IModelVersion.d.ts +68 -68
  157. package/lib/cjs/IModelVersion.js +79 -79
  158. package/lib/cjs/IModelVersion.js.map +1 -1
  159. package/lib/cjs/Image.d.ts +86 -86
  160. package/lib/cjs/Image.js +128 -128
  161. package/lib/cjs/Image.js.map +1 -1
  162. package/lib/cjs/IpcAppProps.d.ts +141 -141
  163. package/lib/cjs/IpcAppProps.js +23 -23
  164. package/lib/cjs/IpcAppProps.js.map +1 -1
  165. package/lib/cjs/LightSettings.d.ts +224 -224
  166. package/lib/cjs/LightSettings.js +309 -309
  167. package/lib/cjs/LightSettings.js.map +1 -1
  168. package/lib/cjs/LinePixels.d.ts +34 -34
  169. package/lib/cjs/LinePixels.js +42 -42
  170. package/lib/cjs/LinePixels.js.map +1 -1
  171. package/lib/cjs/Localization.d.ts +113 -113
  172. package/lib/cjs/Localization.js +26 -26
  173. package/lib/cjs/Localization.js.map +1 -1
  174. package/lib/cjs/MapImagerySettings.d.ts +62 -62
  175. package/lib/cjs/MapImagerySettings.js +80 -80
  176. package/lib/cjs/MapImagerySettings.js.map +1 -1
  177. package/lib/cjs/MapLayerSettings.d.ts +272 -272
  178. package/lib/cjs/MapLayerSettings.js +411 -411
  179. package/lib/cjs/MapLayerSettings.js.map +1 -1
  180. package/lib/cjs/MassProperties.d.ts +64 -64
  181. package/lib/cjs/MassProperties.js +23 -23
  182. package/lib/cjs/MassProperties.js.map +1 -1
  183. package/lib/cjs/MaterialProps.d.ts +118 -118
  184. package/lib/cjs/MaterialProps.js +23 -23
  185. package/lib/cjs/MaterialProps.js.map +1 -1
  186. package/lib/cjs/ModelClipGroup.d.ts +67 -67
  187. package/lib/cjs/ModelClipGroup.js +98 -98
  188. package/lib/cjs/ModelClipGroup.js.map +1 -1
  189. package/lib/cjs/ModelGeometryChanges.d.ts +107 -107
  190. package/lib/cjs/ModelGeometryChanges.js +83 -83
  191. package/lib/cjs/ModelGeometryChanges.js.map +1 -1
  192. package/lib/cjs/ModelProps.d.ts +67 -67
  193. package/lib/cjs/ModelProps.js +9 -9
  194. package/lib/cjs/ModelProps.js.map +1 -1
  195. package/lib/cjs/NativeAppProps.d.ts +122 -122
  196. package/lib/cjs/NativeAppProps.js +30 -30
  197. package/lib/cjs/NativeAppProps.js.map +1 -1
  198. package/lib/cjs/OctEncodedNormal.d.ts +33 -33
  199. package/lib/cjs/OctEncodedNormal.js +98 -98
  200. package/lib/cjs/OctEncodedNormal.js.map +1 -1
  201. package/lib/cjs/PlanProjectionSettings.d.ts +47 -47
  202. package/lib/cjs/PlanProjectionSettings.js +63 -63
  203. package/lib/cjs/PlanProjectionSettings.js.map +1 -1
  204. package/lib/cjs/PlanarClipMask.d.ts +177 -177
  205. package/lib/cjs/PlanarClipMask.js +136 -136
  206. package/lib/cjs/PlanarClipMask.js.map +1 -1
  207. package/lib/cjs/QPoint.d.ts +479 -479
  208. package/lib/cjs/QPoint.js +826 -826
  209. package/lib/cjs/QPoint.js.map +1 -1
  210. package/lib/cjs/RealityDataAccessProps.d.ts +41 -41
  211. package/lib/cjs/RealityDataAccessProps.js +19 -19
  212. package/lib/cjs/RealityDataAccessProps.js.map +1 -1
  213. package/lib/cjs/RealityModelDisplaySettings.d.ts +118 -118
  214. package/lib/cjs/RealityModelDisplaySettings.js +114 -114
  215. package/lib/cjs/RealityModelDisplaySettings.js.map +1 -1
  216. package/lib/cjs/Render.d.ts +89 -89
  217. package/lib/cjs/Render.js +177 -177
  218. package/lib/cjs/Render.js.map +1 -1
  219. package/lib/cjs/RenderMaterial.d.ts +58 -58
  220. package/lib/cjs/RenderMaterial.js +76 -76
  221. package/lib/cjs/RenderMaterial.js.map +1 -1
  222. package/lib/cjs/RenderSchedule.d.ts +543 -543
  223. package/lib/cjs/RenderSchedule.js +1002 -1002
  224. package/lib/cjs/RenderTexture.d.ts +70 -70
  225. package/lib/cjs/RenderTexture.js +59 -59
  226. package/lib/cjs/RenderTexture.js.map +1 -1
  227. package/lib/cjs/RgbColor.d.ts +47 -47
  228. package/lib/cjs/RgbColor.js +77 -77
  229. package/lib/cjs/RgbColor.js.map +1 -1
  230. package/lib/cjs/RpcInterface.d.ts +33 -33
  231. package/lib/cjs/RpcInterface.js +137 -137
  232. package/lib/cjs/RpcInterface.js.map +1 -1
  233. package/lib/cjs/RpcManager.d.ts +40 -40
  234. package/lib/cjs/RpcManager.js +55 -55
  235. package/lib/cjs/RpcManager.js.map +1 -1
  236. package/lib/cjs/SessionProps.d.ts +16 -16
  237. package/lib/cjs/SessionProps.js +9 -9
  238. package/lib/cjs/SessionProps.js.map +1 -1
  239. package/lib/cjs/SkyBox.d.ts +215 -215
  240. package/lib/cjs/SkyBox.js +210 -210
  241. package/lib/cjs/SkyBox.js.map +1 -1
  242. package/lib/cjs/Snapping.d.ts +49 -49
  243. package/lib/cjs/Snapping.js +9 -9
  244. package/lib/cjs/Snapping.js.map +1 -1
  245. package/lib/cjs/SolarCalculate.d.ts +27 -27
  246. package/lib/cjs/SolarCalculate.js +211 -211
  247. package/lib/cjs/SolarCalculate.js.map +1 -1
  248. package/lib/cjs/SolarShadows.d.ts +35 -35
  249. package/lib/cjs/SolarShadows.js +62 -62
  250. package/lib/cjs/SolarShadows.js.map +1 -1
  251. package/lib/cjs/SpatialClassification.d.ts +208 -208
  252. package/lib/cjs/SpatialClassification.js +340 -340
  253. package/lib/cjs/SpatialClassification.js.map +1 -1
  254. package/lib/cjs/SubCategoryAppearance.d.ts +91 -91
  255. package/lib/cjs/SubCategoryAppearance.js +96 -96
  256. package/lib/cjs/SubCategoryAppearance.js.map +1 -1
  257. package/lib/cjs/SubCategoryOverride.d.ts +46 -46
  258. package/lib/cjs/SubCategoryOverride.js +104 -104
  259. package/lib/cjs/SubCategoryOverride.js.map +1 -1
  260. package/lib/cjs/TerrainSettings.d.ts +82 -82
  261. package/lib/cjs/TerrainSettings.js +102 -102
  262. package/lib/cjs/TerrainSettings.js.map +1 -1
  263. package/lib/cjs/TextureMapping.d.ts +116 -101
  264. package/lib/cjs/TextureMapping.d.ts.map +1 -1
  265. package/lib/cjs/TextureMapping.js +174 -174
  266. package/lib/cjs/TextureMapping.js.map +1 -1
  267. package/lib/cjs/TextureProps.d.ts +65 -65
  268. package/lib/cjs/TextureProps.js +28 -28
  269. package/lib/cjs/TextureProps.js.map +1 -1
  270. package/lib/cjs/ThematicDisplay.d.ts +230 -230
  271. package/lib/cjs/ThematicDisplay.js +344 -344
  272. package/lib/cjs/ThematicDisplay.js.map +1 -1
  273. package/lib/cjs/Thumbnail.d.ts +26 -26
  274. package/lib/cjs/Thumbnail.js +9 -9
  275. package/lib/cjs/Thumbnail.js.map +1 -1
  276. package/lib/cjs/TileProps.d.ts +82 -82
  277. package/lib/cjs/TileProps.js +29 -29
  278. package/lib/cjs/TileProps.js.map +1 -1
  279. package/lib/cjs/Tween.d.ts +191 -191
  280. package/lib/cjs/Tween.js +570 -570
  281. package/lib/cjs/Tween.js.map +1 -1
  282. package/lib/cjs/TxnAction.d.ts +21 -21
  283. package/lib/cjs/TxnAction.js +29 -29
  284. package/lib/cjs/TxnAction.js.map +1 -1
  285. package/lib/cjs/ViewDetails.d.ts +125 -125
  286. package/lib/cjs/ViewDetails.d.ts.map +1 -1
  287. package/lib/cjs/ViewDetails.js +166 -158
  288. package/lib/cjs/ViewDetails.js.map +1 -1
  289. package/lib/cjs/ViewFlags.d.ts +291 -291
  290. package/lib/cjs/ViewFlags.js +368 -368
  291. package/lib/cjs/ViewFlags.js.map +1 -1
  292. package/lib/cjs/ViewProps.d.ts +205 -205
  293. package/lib/cjs/ViewProps.js +9 -9
  294. package/lib/cjs/ViewProps.js.map +1 -1
  295. package/lib/cjs/WhiteOnWhiteReversalSettings.d.ts +36 -36
  296. package/lib/cjs/WhiteOnWhiteReversalSettings.js +37 -37
  297. package/lib/cjs/WhiteOnWhiteReversalSettings.js.map +1 -1
  298. package/lib/cjs/core-common.d.ts +245 -245
  299. package/lib/cjs/core-common.js +261 -261
  300. package/lib/cjs/core-common.js.map +1 -1
  301. package/lib/cjs/domains/FunctionalElementProps.d.ts +11 -11
  302. package/lib/cjs/domains/FunctionalElementProps.js +9 -9
  303. package/lib/cjs/domains/FunctionalElementProps.js.map +1 -1
  304. package/lib/cjs/domains/GenericElementProps.d.ts +18 -18
  305. package/lib/cjs/domains/GenericElementProps.js +9 -9
  306. package/lib/cjs/domains/GenericElementProps.js.map +1 -1
  307. package/lib/cjs/geometry/AdditionalTransform.d.ts +84 -84
  308. package/lib/cjs/geometry/AdditionalTransform.js +85 -85
  309. package/lib/cjs/geometry/AdditionalTransform.js.map +1 -1
  310. package/lib/cjs/geometry/AreaPattern.d.ts +82 -82
  311. package/lib/cjs/geometry/AreaPattern.js +204 -204
  312. package/lib/cjs/geometry/AreaPattern.js.map +1 -1
  313. package/lib/cjs/geometry/BoundingSphere.d.ts +14 -14
  314. package/lib/cjs/geometry/BoundingSphere.js +30 -30
  315. package/lib/cjs/geometry/BoundingSphere.js.map +1 -1
  316. package/lib/cjs/geometry/Cartographic.d.ts +137 -137
  317. package/lib/cjs/geometry/Cartographic.js +345 -345
  318. package/lib/cjs/geometry/Cartographic.js.map +1 -1
  319. package/lib/cjs/geometry/CoordinateReferenceSystem.d.ts +269 -269
  320. package/lib/cjs/geometry/CoordinateReferenceSystem.js +261 -261
  321. package/lib/cjs/geometry/CoordinateReferenceSystem.js.map +1 -1
  322. package/lib/cjs/geometry/ElementGeometry.d.ts +402 -402
  323. package/lib/cjs/geometry/ElementGeometry.js +1719 -1719
  324. package/lib/cjs/geometry/ElementGeometry.js.map +1 -1
  325. package/lib/cjs/geometry/ElementGeometryFB.d.ts +2372 -2372
  326. package/lib/cjs/geometry/ElementGeometryFB.js +3814 -3814
  327. package/lib/cjs/geometry/ElementGeometryFB.js.map +1 -1
  328. package/lib/cjs/geometry/FrustumPlanes.d.ts +32 -32
  329. package/lib/cjs/geometry/FrustumPlanes.js +132 -132
  330. package/lib/cjs/geometry/FrustumPlanes.js.map +1 -1
  331. package/lib/cjs/geometry/GeodeticDatum.d.ts +409 -409
  332. package/lib/cjs/geometry/GeodeticDatum.js +401 -401
  333. package/lib/cjs/geometry/GeodeticDatum.js.map +1 -1
  334. package/lib/cjs/geometry/GeodeticEllipsoid.d.ts +72 -72
  335. package/lib/cjs/geometry/GeodeticEllipsoid.js +72 -72
  336. package/lib/cjs/geometry/GeodeticEllipsoid.js.map +1 -1
  337. package/lib/cjs/geometry/GeometryStream.d.ts +347 -347
  338. package/lib/cjs/geometry/GeometryStream.js +469 -469
  339. package/lib/cjs/geometry/GeometryStream.js.map +1 -1
  340. package/lib/cjs/geometry/ImageGraphic.d.ts +74 -74
  341. package/lib/cjs/geometry/ImageGraphic.js +98 -98
  342. package/lib/cjs/geometry/ImageGraphic.js.map +1 -1
  343. package/lib/cjs/geometry/LineStyle.d.ts +71 -71
  344. package/lib/cjs/geometry/LineStyle.js +129 -129
  345. package/lib/cjs/geometry/LineStyle.js.map +1 -1
  346. package/lib/cjs/geometry/Placement.d.ts +95 -95
  347. package/lib/cjs/geometry/Placement.js +131 -131
  348. package/lib/cjs/geometry/Placement.js.map +1 -1
  349. package/lib/cjs/geometry/Projection.d.ts +251 -251
  350. package/lib/cjs/geometry/Projection.js +198 -198
  351. package/lib/cjs/geometry/Projection.js.map +1 -1
  352. package/lib/cjs/geometry/TextString.d.ts +55 -55
  353. package/lib/cjs/geometry/TextString.js +65 -65
  354. package/lib/cjs/geometry/TextString.js.map +1 -1
  355. package/lib/cjs/ipc/IpcSession.d.ts +23 -23
  356. package/lib/cjs/ipc/IpcSession.js +27 -27
  357. package/lib/cjs/ipc/IpcSession.js.map +1 -1
  358. package/lib/cjs/ipc/IpcSocket.d.ts +96 -96
  359. package/lib/cjs/ipc/IpcSocket.js +16 -16
  360. package/lib/cjs/ipc/IpcSocket.js.map +1 -1
  361. package/lib/cjs/ipc/IpcWebSocket.d.ts +61 -61
  362. package/lib/cjs/ipc/IpcWebSocket.js +151 -151
  363. package/lib/cjs/ipc/IpcWebSocket.js.map +1 -1
  364. package/lib/cjs/ipc/IpcWebSocketTransport.d.ts +15 -15
  365. package/lib/cjs/ipc/IpcWebSocketTransport.js +160 -160
  366. package/lib/cjs/ipc/IpcWebSocketTransport.js.map +1 -1
  367. package/lib/cjs/rpc/DevToolsRpcInterface.d.ts +32 -32
  368. package/lib/cjs/rpc/DevToolsRpcInterface.js +48 -48
  369. package/lib/cjs/rpc/DevToolsRpcInterface.js.map +1 -1
  370. package/lib/cjs/rpc/IModelReadRpcInterface.d.ts +99 -99
  371. package/lib/cjs/rpc/IModelReadRpcInterface.js +122 -122
  372. package/lib/cjs/rpc/IModelReadRpcInterface.js.map +1 -1
  373. package/lib/cjs/rpc/IModelTileRpcInterface.d.ts +61 -61
  374. package/lib/cjs/rpc/IModelTileRpcInterface.js +96 -96
  375. package/lib/cjs/rpc/IModelTileRpcInterface.js.map +1 -1
  376. package/lib/cjs/rpc/SnapshotIModelRpcInterface.d.ts +23 -23
  377. package/lib/cjs/rpc/SnapshotIModelRpcInterface.js +48 -48
  378. package/lib/cjs/rpc/SnapshotIModelRpcInterface.js.map +1 -1
  379. package/lib/cjs/rpc/TestRpcManager.d.ts +20 -20
  380. package/lib/cjs/rpc/TestRpcManager.js +39 -39
  381. package/lib/cjs/rpc/TestRpcManager.js.map +1 -1
  382. package/lib/cjs/rpc/WipRpcInterface.d.ts +29 -29
  383. package/lib/cjs/rpc/WipRpcInterface.js +40 -40
  384. package/lib/cjs/rpc/WipRpcInterface.js.map +1 -1
  385. package/lib/cjs/rpc/core/RpcConfiguration.d.ts +111 -111
  386. package/lib/cjs/rpc/core/RpcConfiguration.js +191 -191
  387. package/lib/cjs/rpc/core/RpcConfiguration.js.map +1 -1
  388. package/lib/cjs/rpc/core/RpcConstants.d.ts +85 -85
  389. package/lib/cjs/rpc/core/RpcConstants.js +103 -103
  390. package/lib/cjs/rpc/core/RpcConstants.js.map +1 -1
  391. package/lib/cjs/rpc/core/RpcControl.d.ts +54 -54
  392. package/lib/cjs/rpc/core/RpcControl.js +144 -144
  393. package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
  394. package/lib/cjs/rpc/core/RpcInvocation.d.ts +89 -89
  395. package/lib/cjs/rpc/core/RpcInvocation.js +258 -258
  396. package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
  397. package/lib/cjs/rpc/core/RpcMarshaling.d.ts +35 -35
  398. package/lib/cjs/rpc/core/RpcMarshaling.js +156 -156
  399. package/lib/cjs/rpc/core/RpcMarshaling.js.map +1 -1
  400. package/lib/cjs/rpc/core/RpcOperation.d.ts +67 -67
  401. package/lib/cjs/rpc/core/RpcOperation.js +133 -133
  402. package/lib/cjs/rpc/core/RpcOperation.js.map +1 -1
  403. package/lib/cjs/rpc/core/RpcPendingQueue.d.ts +21 -21
  404. package/lib/cjs/rpc/core/RpcPendingQueue.js +94 -94
  405. package/lib/cjs/rpc/core/RpcPendingQueue.js.map +1 -1
  406. package/lib/cjs/rpc/core/RpcProtocol.d.ts +132 -132
  407. package/lib/cjs/rpc/core/RpcProtocol.js +127 -127
  408. package/lib/cjs/rpc/core/RpcProtocol.js.map +1 -1
  409. package/lib/cjs/rpc/core/RpcPush.d.ts +68 -68
  410. package/lib/cjs/rpc/core/RpcPush.js +127 -127
  411. package/lib/cjs/rpc/core/RpcPush.js.map +1 -1
  412. package/lib/cjs/rpc/core/RpcRegistry.d.ts +48 -48
  413. package/lib/cjs/rpc/core/RpcRegistry.js +198 -198
  414. package/lib/cjs/rpc/core/RpcRegistry.js.map +1 -1
  415. package/lib/cjs/rpc/core/RpcRequest.d.ts +186 -186
  416. package/lib/cjs/rpc/core/RpcRequest.js +477 -477
  417. package/lib/cjs/rpc/core/RpcRequest.js.map +1 -1
  418. package/lib/cjs/rpc/core/RpcRequestContext.d.ts +14 -14
  419. package/lib/cjs/rpc/core/RpcRequestContext.js +2 -2
  420. package/lib/cjs/rpc/core/RpcRequestContext.js.map +1 -1
  421. package/lib/cjs/rpc/core/RpcRoutingToken.d.ts +12 -12
  422. package/lib/cjs/rpc/core/RpcRoutingToken.js +23 -23
  423. package/lib/cjs/rpc/core/RpcRoutingToken.js.map +1 -1
  424. package/lib/cjs/rpc/core/RpcSessionInvocation.d.ts +10 -10
  425. package/lib/cjs/rpc/core/RpcSessionInvocation.js +59 -59
  426. package/lib/cjs/rpc/core/RpcSessionInvocation.js.map +1 -1
  427. package/lib/cjs/rpc/web/BentleyCloudRpcManager.d.ts +46 -46
  428. package/lib/cjs/rpc/web/BentleyCloudRpcManager.js +73 -73
  429. package/lib/cjs/rpc/web/BentleyCloudRpcManager.js.map +1 -1
  430. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.d.ts +33 -33
  431. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js +142 -142
  432. package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
  433. package/lib/cjs/rpc/web/OpenAPI.d.ts +139 -139
  434. package/lib/cjs/rpc/web/OpenAPI.js +60 -60
  435. package/lib/cjs/rpc/web/OpenAPI.js.map +1 -1
  436. package/lib/cjs/rpc/web/RpcMultipart.d.ts +35 -35
  437. package/lib/cjs/rpc/web/RpcMultipart.js +50 -50
  438. package/lib/cjs/rpc/web/RpcMultipart.js.map +1 -1
  439. package/lib/cjs/rpc/web/WebAppRpcLogging.d.ts +28 -28
  440. package/lib/cjs/rpc/web/WebAppRpcLogging.js +139 -139
  441. package/lib/cjs/rpc/web/WebAppRpcLogging.js.map +1 -1
  442. package/lib/cjs/rpc/web/WebAppRpcProtocol.d.ts +87 -87
  443. package/lib/cjs/rpc/web/WebAppRpcProtocol.js +116 -116
  444. package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
  445. package/lib/cjs/rpc/web/WebAppRpcRequest.d.ts +67 -67
  446. package/lib/cjs/rpc/web/WebAppRpcRequest.js +239 -239
  447. package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
  448. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.d.ts +32 -32
  449. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js +372 -372
  450. package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
  451. package/lib/cjs/tile/B3dmTileIO.d.ts +19 -19
  452. package/lib/cjs/tile/B3dmTileIO.js +66 -66
  453. package/lib/cjs/tile/B3dmTileIO.js.map +1 -1
  454. package/lib/cjs/tile/CompositeTileIO.d.ts +15 -15
  455. package/lib/cjs/tile/CompositeTileIO.js +26 -26
  456. package/lib/cjs/tile/CompositeTileIO.js.map +1 -1
  457. package/lib/cjs/tile/ElementGraphics.d.ts +145 -145
  458. package/lib/cjs/tile/ElementGraphics.js +9 -9
  459. package/lib/cjs/tile/ElementGraphics.js.map +1 -1
  460. package/lib/cjs/tile/GltfTileIO.d.ts +45 -45
  461. package/lib/cjs/tile/GltfTileIO.js +109 -109
  462. package/lib/cjs/tile/GltfTileIO.js.map +1 -1
  463. package/lib/cjs/tile/I3dmTileIO.d.ts +20 -20
  464. package/lib/cjs/tile/I3dmTileIO.js +40 -40
  465. package/lib/cjs/tile/I3dmTileIO.js.map +1 -1
  466. package/lib/cjs/tile/IModelTileIO.d.ts +75 -75
  467. package/lib/cjs/tile/IModelTileIO.js +95 -95
  468. package/lib/cjs/tile/IModelTileIO.js.map +1 -1
  469. package/lib/cjs/tile/PntsTileIO.d.ts +17 -17
  470. package/lib/cjs/tile/PntsTileIO.js +26 -26
  471. package/lib/cjs/tile/PntsTileIO.js.map +1 -1
  472. package/lib/cjs/tile/TileIO.d.ts +66 -66
  473. package/lib/cjs/tile/TileIO.js +118 -118
  474. package/lib/cjs/tile/TileIO.js.map +1 -1
  475. package/lib/cjs/tile/TileMetadata.d.ts +228 -228
  476. package/lib/cjs/tile/TileMetadata.js +676 -676
  477. package/lib/cjs/tile/TileMetadata.js.map +1 -1
  478. package/lib/esm/AmbientOcclusion.d.ts +49 -49
  479. package/lib/esm/AmbientOcclusion.js +52 -52
  480. package/lib/esm/AmbientOcclusion.js.map +1 -1
  481. package/lib/esm/AnalysisStyle.d.ts +134 -134
  482. package/lib/esm/AnalysisStyle.js +159 -159
  483. package/lib/esm/AnalysisStyle.js.map +1 -1
  484. package/lib/esm/AuthorizationClient.d.ts +11 -11
  485. package/lib/esm/AuthorizationClient.js +8 -8
  486. package/lib/esm/AuthorizationClient.js.map +1 -1
  487. package/lib/esm/BackendTypes.d.ts +12 -12
  488. package/lib/esm/BackendTypes.js +8 -8
  489. package/lib/esm/BackendTypes.js.map +1 -1
  490. package/lib/esm/BackgroundMapProvider.d.ts +51 -51
  491. package/lib/esm/BackgroundMapProvider.js +64 -64
  492. package/lib/esm/BackgroundMapProvider.js.map +1 -1
  493. package/lib/esm/BackgroundMapSettings.d.ts +136 -136
  494. package/lib/esm/BackgroundMapSettings.js +152 -152
  495. package/lib/esm/BackgroundMapSettings.js.map +1 -1
  496. package/lib/esm/Base64EncodedString.d.ts +32 -32
  497. package/lib/esm/Base64EncodedString.js +63 -63
  498. package/lib/esm/Base64EncodedString.js.map +1 -1
  499. package/lib/esm/BlobReader.d.ts +31 -31
  500. package/lib/esm/BlobReader.js +79 -79
  501. package/lib/esm/BlobReader.js.map +1 -1
  502. package/lib/esm/BriefcaseTypes.d.ts +189 -189
  503. package/lib/esm/BriefcaseTypes.js +92 -92
  504. package/lib/esm/BriefcaseTypes.js.map +1 -1
  505. package/lib/esm/Camera.d.ts +42 -42
  506. package/lib/esm/Camera.js +58 -58
  507. package/lib/esm/Camera.js.map +1 -1
  508. package/lib/esm/ChangedElements.d.ts +85 -83
  509. package/lib/esm/ChangedElements.d.ts.map +1 -1
  510. package/lib/esm/ChangedElements.js +20 -18
  511. package/lib/esm/ChangedElements.js.map +1 -1
  512. package/lib/esm/ChangedEntities.d.ts +45 -45
  513. package/lib/esm/ChangedEntities.js +8 -8
  514. package/lib/esm/ChangedEntities.js.map +1 -1
  515. package/lib/esm/ChangesetProps.d.ts +98 -98
  516. package/lib/esm/ChangesetProps.js +19 -19
  517. package/lib/esm/ChangesetProps.js.map +1 -1
  518. package/lib/esm/ClipStyle.d.ts +89 -89
  519. package/lib/esm/ClipStyle.js +118 -118
  520. package/lib/esm/ClipStyle.js.map +1 -1
  521. package/lib/esm/CloudStorage.d.ts +62 -62
  522. package/lib/esm/CloudStorage.js +109 -109
  523. package/lib/esm/CloudStorage.js.map +1 -1
  524. package/lib/esm/CloudStorageTileCache.d.ts +27 -27
  525. package/lib/esm/CloudStorageTileCache.js +62 -62
  526. package/lib/esm/CloudStorageTileCache.js.map +1 -1
  527. package/lib/esm/Code.d.ts +256 -256
  528. package/lib/esm/Code.js +276 -276
  529. package/lib/esm/Code.js.map +1 -1
  530. package/lib/esm/ColorByName.d.ts +161 -161
  531. package/lib/esm/ColorByName.js +166 -166
  532. package/lib/esm/ColorByName.js.map +1 -1
  533. package/lib/esm/ColorDef.d.ts +208 -208
  534. package/lib/esm/ColorDef.js +567 -567
  535. package/lib/esm/ColorDef.js.map +1 -1
  536. package/lib/esm/CommonLoggerCategory.d.ts +18 -18
  537. package/lib/esm/CommonLoggerCategory.js +23 -23
  538. package/lib/esm/CommonLoggerCategory.js.map +1 -1
  539. package/lib/esm/ConcurrentQuery.d.ts +421 -421
  540. package/lib/esm/ConcurrentQuery.js +545 -545
  541. package/lib/esm/ConcurrentQuery.js.map +1 -1
  542. package/lib/esm/ContextRealityModel.d.ts +276 -276
  543. package/lib/esm/ContextRealityModel.js +353 -353
  544. package/lib/esm/ContextRealityModel.js.map +1 -1
  545. package/lib/esm/DisplayStyleSettings.d.ts +584 -584
  546. package/lib/esm/DisplayStyleSettings.js +976 -976
  547. package/lib/esm/DisplayStyleSettings.js.map +1 -1
  548. package/lib/esm/ECSchemaProps.d.ts +39 -39
  549. package/lib/esm/ECSchemaProps.js +8 -8
  550. package/lib/esm/ECSchemaProps.js.map +1 -1
  551. package/lib/esm/ECSqlReader.d.ts +70 -70
  552. package/lib/esm/ECSqlReader.js +275 -275
  553. package/lib/esm/ECSqlReader.js.map +1 -1
  554. package/lib/esm/ECSqlTypes.d.ts +128 -128
  555. package/lib/esm/ECSqlTypes.js +185 -185
  556. package/lib/esm/ECSqlTypes.js.map +1 -1
  557. package/lib/esm/ElementMesh.d.ts +39 -39
  558. package/lib/esm/ElementMesh.js +52 -52
  559. package/lib/esm/ElementMesh.js.map +1 -1
  560. package/lib/esm/ElementProps.d.ts +479 -479
  561. package/lib/esm/ElementProps.js +92 -92
  562. package/lib/esm/ElementProps.js.map +1 -1
  563. package/lib/esm/EmphasizeElementsProps.d.ts +55 -55
  564. package/lib/esm/EmphasizeElementsProps.js +22 -22
  565. package/lib/esm/EmphasizeElementsProps.js.map +1 -1
  566. package/lib/esm/EntityProps.d.ts +176 -176
  567. package/lib/esm/EntityProps.js +107 -107
  568. package/lib/esm/EntityProps.js.map +1 -1
  569. package/lib/esm/EntityReference.d.ts +51 -51
  570. package/lib/esm/EntityReference.js +52 -52
  571. package/lib/esm/EntityReference.js.map +1 -1
  572. package/lib/esm/Environment.d.ts +61 -61
  573. package/lib/esm/Environment.js +69 -69
  574. package/lib/esm/Environment.js.map +1 -1
  575. package/lib/esm/FeatureGates.d.ts +31 -31
  576. package/lib/esm/FeatureGates.js +51 -51
  577. package/lib/esm/FeatureGates.js.map +1 -1
  578. package/lib/esm/FeatureIndex.d.ts +39 -39
  579. package/lib/esm/FeatureIndex.js +57 -57
  580. package/lib/esm/FeatureIndex.js.map +1 -1
  581. package/lib/esm/FeatureSymbology.d.ts +444 -444
  582. package/lib/esm/FeatureSymbology.js +609 -609
  583. package/lib/esm/FeatureSymbology.js.map +1 -1
  584. package/lib/esm/FeatureTable.d.ts +141 -141
  585. package/lib/esm/FeatureTable.js +272 -272
  586. package/lib/esm/FeatureTable.js.map +1 -1
  587. package/lib/esm/Fonts.d.ts +51 -51
  588. package/lib/esm/Fonts.js +49 -49
  589. package/lib/esm/Fonts.js.map +1 -1
  590. package/lib/esm/Frustum.d.ts +114 -114
  591. package/lib/esm/Frustum.js +288 -288
  592. package/lib/esm/Frustum.js.map +1 -1
  593. package/lib/esm/GeoCoordinateServices.d.ts +119 -119
  594. package/lib/esm/GeoCoordinateServices.js +76 -76
  595. package/lib/esm/GeoCoordinateServices.js.map +1 -1
  596. package/lib/esm/GeometryContainment.d.ts +28 -28
  597. package/lib/esm/GeometryContainment.js +8 -8
  598. package/lib/esm/GeometryContainment.js.map +1 -1
  599. package/lib/esm/GeometryParams.d.ts +130 -130
  600. package/lib/esm/GeometryParams.js +170 -170
  601. package/lib/esm/GeometryParams.js.map +1 -1
  602. package/lib/esm/GeometrySummary.d.ts +45 -45
  603. package/lib/esm/GeometrySummary.js +20 -20
  604. package/lib/esm/GeometrySummary.js.map +1 -1
  605. package/lib/esm/Gradient.d.ts +139 -139
  606. package/lib/esm/Gradient.js +452 -452
  607. package/lib/esm/Gradient.js.map +1 -1
  608. package/lib/esm/GraphicParams.d.ts +58 -58
  609. package/lib/esm/GraphicParams.js +81 -81
  610. package/lib/esm/GraphicParams.js.map +1 -1
  611. package/lib/esm/GroundPlane.d.ts +52 -52
  612. package/lib/esm/GroundPlane.js +60 -60
  613. package/lib/esm/GroundPlane.js.map +1 -1
  614. package/lib/esm/HSLColor.d.ts +20 -20
  615. package/lib/esm/HSLColor.js +28 -28
  616. package/lib/esm/HSLColor.js.map +1 -1
  617. package/lib/esm/HSVColor.d.ts +30 -30
  618. package/lib/esm/HSVColor.js +55 -55
  619. package/lib/esm/HSVColor.js.map +1 -1
  620. package/lib/esm/HiddenLine.d.ts +97 -97
  621. package/lib/esm/HiddenLine.js +159 -159
  622. package/lib/esm/HiddenLine.js.map +1 -1
  623. package/lib/esm/Hilite.d.ts +50 -50
  624. package/lib/esm/Hilite.js +61 -61
  625. package/lib/esm/Hilite.js.map +1 -1
  626. package/lib/esm/IModel.d.ts +359 -359
  627. package/lib/esm/IModel.js +342 -342
  628. package/lib/esm/IModel.js.map +1 -1
  629. package/lib/esm/IModelError.d.ts +36 -36
  630. package/lib/esm/IModelError.js +55 -55
  631. package/lib/esm/IModelError.js.map +1 -1
  632. package/lib/esm/IModelVersion.d.ts +68 -68
  633. package/lib/esm/IModelVersion.js +75 -75
  634. package/lib/esm/IModelVersion.js.map +1 -1
  635. package/lib/esm/Image.d.ts +86 -86
  636. package/lib/esm/Image.js +120 -120
  637. package/lib/esm/Image.js.map +1 -1
  638. package/lib/esm/IpcAppProps.d.ts +141 -141
  639. package/lib/esm/IpcAppProps.js +19 -19
  640. package/lib/esm/IpcAppProps.js.map +1 -1
  641. package/lib/esm/LightSettings.d.ts +224 -224
  642. package/lib/esm/LightSettings.js +301 -301
  643. package/lib/esm/LightSettings.js.map +1 -1
  644. package/lib/esm/LinePixels.d.ts +34 -34
  645. package/lib/esm/LinePixels.js +39 -39
  646. package/lib/esm/LinePixels.js.map +1 -1
  647. package/lib/esm/Localization.d.ts +113 -113
  648. package/lib/esm/Localization.js +22 -22
  649. package/lib/esm/Localization.js.map +1 -1
  650. package/lib/esm/MapImagerySettings.d.ts +62 -62
  651. package/lib/esm/MapImagerySettings.js +76 -76
  652. package/lib/esm/MapImagerySettings.js.map +1 -1
  653. package/lib/esm/MapLayerSettings.d.ts +272 -272
  654. package/lib/esm/MapLayerSettings.js +403 -403
  655. package/lib/esm/MapLayerSettings.js.map +1 -1
  656. package/lib/esm/MassProperties.d.ts +64 -64
  657. package/lib/esm/MassProperties.js +20 -20
  658. package/lib/esm/MassProperties.js.map +1 -1
  659. package/lib/esm/MaterialProps.d.ts +118 -118
  660. package/lib/esm/MaterialProps.js +20 -20
  661. package/lib/esm/MaterialProps.js.map +1 -1
  662. package/lib/esm/ModelClipGroup.d.ts +67 -67
  663. package/lib/esm/ModelClipGroup.js +93 -93
  664. package/lib/esm/ModelClipGroup.js.map +1 -1
  665. package/lib/esm/ModelGeometryChanges.d.ts +107 -107
  666. package/lib/esm/ModelGeometryChanges.js +80 -80
  667. package/lib/esm/ModelGeometryChanges.js.map +1 -1
  668. package/lib/esm/ModelProps.d.ts +67 -67
  669. package/lib/esm/ModelProps.js +8 -8
  670. package/lib/esm/ModelProps.js.map +1 -1
  671. package/lib/esm/NativeAppProps.d.ts +122 -122
  672. package/lib/esm/NativeAppProps.js +27 -27
  673. package/lib/esm/NativeAppProps.js.map +1 -1
  674. package/lib/esm/OctEncodedNormal.d.ts +33 -33
  675. package/lib/esm/OctEncodedNormal.js +93 -93
  676. package/lib/esm/OctEncodedNormal.js.map +1 -1
  677. package/lib/esm/PlanProjectionSettings.d.ts +47 -47
  678. package/lib/esm/PlanProjectionSettings.js +59 -59
  679. package/lib/esm/PlanProjectionSettings.js.map +1 -1
  680. package/lib/esm/PlanarClipMask.d.ts +177 -177
  681. package/lib/esm/PlanarClipMask.js +132 -132
  682. package/lib/esm/PlanarClipMask.js.map +1 -1
  683. package/lib/esm/QPoint.d.ts +479 -479
  684. package/lib/esm/QPoint.js +815 -815
  685. package/lib/esm/QPoint.js.map +1 -1
  686. package/lib/esm/RealityDataAccessProps.d.ts +41 -41
  687. package/lib/esm/RealityDataAccessProps.js +16 -16
  688. package/lib/esm/RealityDataAccessProps.js.map +1 -1
  689. package/lib/esm/RealityModelDisplaySettings.d.ts +118 -118
  690. package/lib/esm/RealityModelDisplaySettings.js +109 -109
  691. package/lib/esm/RealityModelDisplaySettings.js.map +1 -1
  692. package/lib/esm/Render.d.ts +89 -89
  693. package/lib/esm/Render.js +165 -165
  694. package/lib/esm/Render.js.map +1 -1
  695. package/lib/esm/RenderMaterial.d.ts +58 -58
  696. package/lib/esm/RenderMaterial.js +72 -72
  697. package/lib/esm/RenderMaterial.js.map +1 -1
  698. package/lib/esm/RenderSchedule.d.ts +543 -543
  699. package/lib/esm/RenderSchedule.js +999 -999
  700. package/lib/esm/RenderTexture.d.ts +70 -70
  701. package/lib/esm/RenderTexture.js +55 -55
  702. package/lib/esm/RenderTexture.js.map +1 -1
  703. package/lib/esm/RgbColor.d.ts +47 -47
  704. package/lib/esm/RgbColor.js +73 -73
  705. package/lib/esm/RgbColor.js.map +1 -1
  706. package/lib/esm/RpcInterface.d.ts +33 -33
  707. package/lib/esm/RpcInterface.js +133 -133
  708. package/lib/esm/RpcInterface.js.map +1 -1
  709. package/lib/esm/RpcManager.d.ts +40 -40
  710. package/lib/esm/RpcManager.js +51 -51
  711. package/lib/esm/RpcManager.js.map +1 -1
  712. package/lib/esm/SessionProps.d.ts +16 -16
  713. package/lib/esm/SessionProps.js +8 -8
  714. package/lib/esm/SessionProps.js.map +1 -1
  715. package/lib/esm/SkyBox.d.ts +215 -215
  716. package/lib/esm/SkyBox.js +203 -203
  717. package/lib/esm/SkyBox.js.map +1 -1
  718. package/lib/esm/Snapping.d.ts +49 -49
  719. package/lib/esm/Snapping.js +8 -8
  720. package/lib/esm/Snapping.js.map +1 -1
  721. package/lib/esm/SolarCalculate.d.ts +27 -27
  722. package/lib/esm/SolarCalculate.js +204 -204
  723. package/lib/esm/SolarCalculate.js.map +1 -1
  724. package/lib/esm/SolarShadows.d.ts +35 -35
  725. package/lib/esm/SolarShadows.js +58 -58
  726. package/lib/esm/SolarShadows.js.map +1 -1
  727. package/lib/esm/SpatialClassification.d.ts +208 -208
  728. package/lib/esm/SpatialClassification.js +334 -334
  729. package/lib/esm/SpatialClassification.js.map +1 -1
  730. package/lib/esm/SubCategoryAppearance.d.ts +91 -91
  731. package/lib/esm/SubCategoryAppearance.js +92 -92
  732. package/lib/esm/SubCategoryAppearance.js.map +1 -1
  733. package/lib/esm/SubCategoryOverride.d.ts +46 -46
  734. package/lib/esm/SubCategoryOverride.js +100 -100
  735. package/lib/esm/SubCategoryOverride.js.map +1 -1
  736. package/lib/esm/TerrainSettings.d.ts +82 -82
  737. package/lib/esm/TerrainSettings.js +98 -98
  738. package/lib/esm/TerrainSettings.js.map +1 -1
  739. package/lib/esm/TextureMapping.d.ts +116 -101
  740. package/lib/esm/TextureMapping.d.ts.map +1 -1
  741. package/lib/esm/TextureMapping.js +170 -170
  742. package/lib/esm/TextureMapping.js.map +1 -1
  743. package/lib/esm/TextureProps.d.ts +65 -65
  744. package/lib/esm/TextureProps.js +25 -25
  745. package/lib/esm/TextureProps.js.map +1 -1
  746. package/lib/esm/ThematicDisplay.d.ts +230 -230
  747. package/lib/esm/ThematicDisplay.js +337 -337
  748. package/lib/esm/ThematicDisplay.js.map +1 -1
  749. package/lib/esm/Thumbnail.d.ts +26 -26
  750. package/lib/esm/Thumbnail.js +8 -8
  751. package/lib/esm/Thumbnail.js.map +1 -1
  752. package/lib/esm/TileProps.d.ts +82 -82
  753. package/lib/esm/TileProps.js +25 -25
  754. package/lib/esm/TileProps.js.map +1 -1
  755. package/lib/esm/Tween.d.ts +191 -191
  756. package/lib/esm/Tween.js +565 -565
  757. package/lib/esm/Tween.js.map +1 -1
  758. package/lib/esm/TxnAction.d.ts +21 -21
  759. package/lib/esm/TxnAction.js +26 -26
  760. package/lib/esm/TxnAction.js.map +1 -1
  761. package/lib/esm/ViewDetails.d.ts +125 -125
  762. package/lib/esm/ViewDetails.d.ts.map +1 -1
  763. package/lib/esm/ViewDetails.js +161 -153
  764. package/lib/esm/ViewDetails.js.map +1 -1
  765. package/lib/esm/ViewFlags.d.ts +291 -291
  766. package/lib/esm/ViewFlags.js +364 -364
  767. package/lib/esm/ViewFlags.js.map +1 -1
  768. package/lib/esm/ViewProps.d.ts +205 -205
  769. package/lib/esm/ViewProps.js +8 -8
  770. package/lib/esm/ViewProps.js.map +1 -1
  771. package/lib/esm/WhiteOnWhiteReversalSettings.d.ts +36 -36
  772. package/lib/esm/WhiteOnWhiteReversalSettings.js +33 -33
  773. package/lib/esm/WhiteOnWhiteReversalSettings.js.map +1 -1
  774. package/lib/esm/core-common.d.ts +245 -245
  775. package/lib/esm/core-common.js +249 -249
  776. package/lib/esm/core-common.js.map +1 -1
  777. package/lib/esm/domains/FunctionalElementProps.d.ts +11 -11
  778. package/lib/esm/domains/FunctionalElementProps.js +8 -8
  779. package/lib/esm/domains/FunctionalElementProps.js.map +1 -1
  780. package/lib/esm/domains/GenericElementProps.d.ts +18 -18
  781. package/lib/esm/domains/GenericElementProps.js +8 -8
  782. package/lib/esm/domains/GenericElementProps.js.map +1 -1
  783. package/lib/esm/geometry/AdditionalTransform.d.ts +84 -84
  784. package/lib/esm/geometry/AdditionalTransform.js +80 -80
  785. package/lib/esm/geometry/AdditionalTransform.js.map +1 -1
  786. package/lib/esm/geometry/AreaPattern.d.ts +82 -82
  787. package/lib/esm/geometry/AreaPattern.js +201 -201
  788. package/lib/esm/geometry/AreaPattern.js.map +1 -1
  789. package/lib/esm/geometry/BoundingSphere.d.ts +14 -14
  790. package/lib/esm/geometry/BoundingSphere.js +26 -26
  791. package/lib/esm/geometry/BoundingSphere.js.map +1 -1
  792. package/lib/esm/geometry/Cartographic.d.ts +137 -137
  793. package/lib/esm/geometry/Cartographic.js +340 -340
  794. package/lib/esm/geometry/Cartographic.js.map +1 -1
  795. package/lib/esm/geometry/CoordinateReferenceSystem.d.ts +269 -269
  796. package/lib/esm/geometry/CoordinateReferenceSystem.js +254 -254
  797. package/lib/esm/geometry/CoordinateReferenceSystem.js.map +1 -1
  798. package/lib/esm/geometry/ElementGeometry.d.ts +402 -402
  799. package/lib/esm/geometry/ElementGeometry.js +1716 -1716
  800. package/lib/esm/geometry/ElementGeometry.js.map +1 -1
  801. package/lib/esm/geometry/ElementGeometryFB.d.ts +2372 -2372
  802. package/lib/esm/geometry/ElementGeometryFB.js +3811 -3811
  803. package/lib/esm/geometry/ElementGeometryFB.js.map +1 -1
  804. package/lib/esm/geometry/FrustumPlanes.d.ts +32 -32
  805. package/lib/esm/geometry/FrustumPlanes.js +128 -128
  806. package/lib/esm/geometry/FrustumPlanes.js.map +1 -1
  807. package/lib/esm/geometry/GeodeticDatum.d.ts +409 -409
  808. package/lib/esm/geometry/GeodeticDatum.js +390 -390
  809. package/lib/esm/geometry/GeodeticDatum.js.map +1 -1
  810. package/lib/esm/geometry/GeodeticEllipsoid.d.ts +72 -72
  811. package/lib/esm/geometry/GeodeticEllipsoid.js +68 -68
  812. package/lib/esm/geometry/GeodeticEllipsoid.js.map +1 -1
  813. package/lib/esm/geometry/GeometryStream.d.ts +347 -347
  814. package/lib/esm/geometry/GeometryStream.js +464 -464
  815. package/lib/esm/geometry/GeometryStream.js.map +1 -1
  816. package/lib/esm/geometry/ImageGraphic.d.ts +74 -74
  817. package/lib/esm/geometry/ImageGraphic.js +93 -93
  818. package/lib/esm/geometry/ImageGraphic.js.map +1 -1
  819. package/lib/esm/geometry/LineStyle.d.ts +71 -71
  820. package/lib/esm/geometry/LineStyle.js +126 -126
  821. package/lib/esm/geometry/LineStyle.js.map +1 -1
  822. package/lib/esm/geometry/Placement.d.ts +95 -95
  823. package/lib/esm/geometry/Placement.js +126 -126
  824. package/lib/esm/geometry/Placement.js.map +1 -1
  825. package/lib/esm/geometry/Projection.d.ts +251 -251
  826. package/lib/esm/geometry/Projection.js +192 -192
  827. package/lib/esm/geometry/Projection.js.map +1 -1
  828. package/lib/esm/geometry/TextString.d.ts +55 -55
  829. package/lib/esm/geometry/TextString.js +61 -61
  830. package/lib/esm/geometry/TextString.js.map +1 -1
  831. package/lib/esm/ipc/IpcSession.d.ts +23 -23
  832. package/lib/esm/ipc/IpcSession.js +23 -23
  833. package/lib/esm/ipc/IpcSession.js.map +1 -1
  834. package/lib/esm/ipc/IpcSocket.d.ts +96 -96
  835. package/lib/esm/ipc/IpcSocket.js +12 -12
  836. package/lib/esm/ipc/IpcSocket.js.map +1 -1
  837. package/lib/esm/ipc/IpcWebSocket.d.ts +61 -61
  838. package/lib/esm/ipc/IpcWebSocket.js +145 -145
  839. package/lib/esm/ipc/IpcWebSocket.js.map +1 -1
  840. package/lib/esm/ipc/IpcWebSocketTransport.d.ts +15 -15
  841. package/lib/esm/ipc/IpcWebSocketTransport.js +156 -156
  842. package/lib/esm/ipc/IpcWebSocketTransport.js.map +1 -1
  843. package/lib/esm/rpc/DevToolsRpcInterface.d.ts +32 -32
  844. package/lib/esm/rpc/DevToolsRpcInterface.js +44 -44
  845. package/lib/esm/rpc/DevToolsRpcInterface.js.map +1 -1
  846. package/lib/esm/rpc/IModelReadRpcInterface.d.ts +99 -99
  847. package/lib/esm/rpc/IModelReadRpcInterface.js +117 -117
  848. package/lib/esm/rpc/IModelReadRpcInterface.js.map +1 -1
  849. package/lib/esm/rpc/IModelTileRpcInterface.d.ts +61 -61
  850. package/lib/esm/rpc/IModelTileRpcInterface.js +92 -92
  851. package/lib/esm/rpc/IModelTileRpcInterface.js.map +1 -1
  852. package/lib/esm/rpc/SnapshotIModelRpcInterface.d.ts +23 -23
  853. package/lib/esm/rpc/SnapshotIModelRpcInterface.js +44 -44
  854. package/lib/esm/rpc/SnapshotIModelRpcInterface.js.map +1 -1
  855. package/lib/esm/rpc/TestRpcManager.d.ts +20 -20
  856. package/lib/esm/rpc/TestRpcManager.js +35 -35
  857. package/lib/esm/rpc/TestRpcManager.js.map +1 -1
  858. package/lib/esm/rpc/WipRpcInterface.d.ts +29 -29
  859. package/lib/esm/rpc/WipRpcInterface.js +36 -36
  860. package/lib/esm/rpc/WipRpcInterface.js.map +1 -1
  861. package/lib/esm/rpc/core/RpcConfiguration.d.ts +111 -111
  862. package/lib/esm/rpc/core/RpcConfiguration.js +184 -184
  863. package/lib/esm/rpc/core/RpcConfiguration.js.map +1 -1
  864. package/lib/esm/rpc/core/RpcConstants.d.ts +85 -85
  865. package/lib/esm/rpc/core/RpcConstants.js +100 -100
  866. package/lib/esm/rpc/core/RpcConstants.js.map +1 -1
  867. package/lib/esm/rpc/core/RpcControl.d.ts +54 -54
  868. package/lib/esm/rpc/core/RpcControl.js +137 -137
  869. package/lib/esm/rpc/core/RpcControl.js.map +1 -1
  870. package/lib/esm/rpc/core/RpcInvocation.d.ts +89 -89
  871. package/lib/esm/rpc/core/RpcInvocation.js +254 -254
  872. package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
  873. package/lib/esm/rpc/core/RpcMarshaling.d.ts +35 -35
  874. package/lib/esm/rpc/core/RpcMarshaling.js +152 -152
  875. package/lib/esm/rpc/core/RpcMarshaling.js.map +1 -1
  876. package/lib/esm/rpc/core/RpcOperation.d.ts +67 -67
  877. package/lib/esm/rpc/core/RpcOperation.js +128 -128
  878. package/lib/esm/rpc/core/RpcOperation.js.map +1 -1
  879. package/lib/esm/rpc/core/RpcPendingQueue.d.ts +21 -21
  880. package/lib/esm/rpc/core/RpcPendingQueue.js +90 -90
  881. package/lib/esm/rpc/core/RpcPendingQueue.js.map +1 -1
  882. package/lib/esm/rpc/core/RpcProtocol.d.ts +132 -132
  883. package/lib/esm/rpc/core/RpcProtocol.js +123 -123
  884. package/lib/esm/rpc/core/RpcProtocol.js.map +1 -1
  885. package/lib/esm/rpc/core/RpcPush.d.ts +68 -68
  886. package/lib/esm/rpc/core/RpcPush.js +119 -119
  887. package/lib/esm/rpc/core/RpcPush.js.map +1 -1
  888. package/lib/esm/rpc/core/RpcRegistry.d.ts +48 -48
  889. package/lib/esm/rpc/core/RpcRegistry.js +194 -194
  890. package/lib/esm/rpc/core/RpcRegistry.js.map +1 -1
  891. package/lib/esm/rpc/core/RpcRequest.d.ts +186 -186
  892. package/lib/esm/rpc/core/RpcRequest.js +472 -472
  893. package/lib/esm/rpc/core/RpcRequest.js.map +1 -1
  894. package/lib/esm/rpc/core/RpcRequestContext.d.ts +14 -14
  895. package/lib/esm/rpc/core/RpcRequestContext.js +1 -1
  896. package/lib/esm/rpc/core/RpcRequestContext.js.map +1 -1
  897. package/lib/esm/rpc/core/RpcRoutingToken.d.ts +12 -12
  898. package/lib/esm/rpc/core/RpcRoutingToken.js +19 -19
  899. package/lib/esm/rpc/core/RpcRoutingToken.js.map +1 -1
  900. package/lib/esm/rpc/core/RpcSessionInvocation.d.ts +10 -10
  901. package/lib/esm/rpc/core/RpcSessionInvocation.js +55 -55
  902. package/lib/esm/rpc/core/RpcSessionInvocation.js.map +1 -1
  903. package/lib/esm/rpc/web/BentleyCloudRpcManager.d.ts +46 -46
  904. package/lib/esm/rpc/web/BentleyCloudRpcManager.js +68 -68
  905. package/lib/esm/rpc/web/BentleyCloudRpcManager.js.map +1 -1
  906. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.d.ts +33 -33
  907. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js +138 -138
  908. package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
  909. package/lib/esm/rpc/web/OpenAPI.d.ts +139 -139
  910. package/lib/esm/rpc/web/OpenAPI.js +56 -56
  911. package/lib/esm/rpc/web/OpenAPI.js.map +1 -1
  912. package/lib/esm/rpc/web/RpcMultipart.d.ts +35 -35
  913. package/lib/esm/rpc/web/RpcMultipart.js +46 -46
  914. package/lib/esm/rpc/web/RpcMultipart.js.map +1 -1
  915. package/lib/esm/rpc/web/WebAppRpcLogging.d.ts +28 -28
  916. package/lib/esm/rpc/web/WebAppRpcLogging.js +135 -135
  917. package/lib/esm/rpc/web/WebAppRpcLogging.js.map +1 -1
  918. package/lib/esm/rpc/web/WebAppRpcProtocol.d.ts +87 -87
  919. package/lib/esm/rpc/web/WebAppRpcProtocol.js +112 -112
  920. package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
  921. package/lib/esm/rpc/web/WebAppRpcRequest.d.ts +67 -67
  922. package/lib/esm/rpc/web/WebAppRpcRequest.js +235 -235
  923. package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
  924. package/lib/esm/rpc/web/multipart/RpcMultipartParser.d.ts +32 -32
  925. package/lib/esm/rpc/web/multipart/RpcMultipartParser.js +368 -368
  926. package/lib/esm/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
  927. package/lib/esm/tile/B3dmTileIO.d.ts +19 -19
  928. package/lib/esm/tile/B3dmTileIO.js +62 -62
  929. package/lib/esm/tile/B3dmTileIO.js.map +1 -1
  930. package/lib/esm/tile/CompositeTileIO.d.ts +15 -15
  931. package/lib/esm/tile/CompositeTileIO.js +22 -22
  932. package/lib/esm/tile/CompositeTileIO.js.map +1 -1
  933. package/lib/esm/tile/ElementGraphics.d.ts +145 -145
  934. package/lib/esm/tile/ElementGraphics.js +8 -8
  935. package/lib/esm/tile/ElementGraphics.js.map +1 -1
  936. package/lib/esm/tile/GltfTileIO.d.ts +45 -45
  937. package/lib/esm/tile/GltfTileIO.js +105 -105
  938. package/lib/esm/tile/GltfTileIO.js.map +1 -1
  939. package/lib/esm/tile/I3dmTileIO.d.ts +20 -20
  940. package/lib/esm/tile/I3dmTileIO.js +36 -36
  941. package/lib/esm/tile/I3dmTileIO.js.map +1 -1
  942. package/lib/esm/tile/IModelTileIO.d.ts +75 -75
  943. package/lib/esm/tile/IModelTileIO.js +90 -90
  944. package/lib/esm/tile/IModelTileIO.js.map +1 -1
  945. package/lib/esm/tile/PntsTileIO.d.ts +17 -17
  946. package/lib/esm/tile/PntsTileIO.js +22 -22
  947. package/lib/esm/tile/PntsTileIO.js.map +1 -1
  948. package/lib/esm/tile/TileIO.d.ts +66 -66
  949. package/lib/esm/tile/TileIO.js +110 -110
  950. package/lib/esm/tile/TileIO.js.map +1 -1
  951. package/lib/esm/tile/TileMetadata.d.ts +228 -228
  952. package/lib/esm/tile/TileMetadata.js +661 -661
  953. package/lib/esm/tile/TileMetadata.js.map +1 -1
  954. package/package.json +7 -7
@@ -1,1717 +1,1717 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- /** @packageDocumentation
6
- * @module Geometry
7
- */
8
- import { flatbuffers } from "flatbuffers";
9
- import { Id64 } from "@itwin/core-bentley";
10
- import { Angle, AngleSweep, Arc3d, BentleyGeometryFlatBuffer, FrameBuilder, LineString3d, Loop, Matrix3d, Plane3dByOriginAndUnitNormal, Point2d, Point3d, Point3dArray, PointString3d, PolyfaceQuery, Range3d, Transform, Vector3d, YawPitchRollAngles } from "@itwin/core-geometry";
11
- import { EGFBAccessors } from "./ElementGeometryFB";
12
- import { Base64EncodedString } from "../Base64EncodedString";
13
- import { TextString } from "./TextString";
14
- import { ColorDef } from "../ColorDef";
15
- import { BackgroundFill, FillDisplay, GeometryClass, GeometryParams } from "../GeometryParams";
16
- import { Gradient } from "../Gradient";
17
- import { ThematicGradientSettings } from "../ThematicDisplay";
18
- import { AreaPattern } from "./AreaPattern";
19
- import { BRepEntity } from "./GeometryStream";
20
- import { ImageGraphic, ImageGraphicCorners } from "./ImageGraphic";
21
- import { LineStyle } from "./LineStyle";
22
- import { Placement2d, Placement3d } from "./Placement";
23
- import { isPlacement2dProps } from "../ElementProps";
24
- /** Specifies the type of an entry in a geometry stream.
25
- * @see [[ElementGeometryDataEntry.opcode]].
26
- * @public
27
- * @extensions
28
- */
29
- export var ElementGeometryOpcode;
30
- (function (ElementGeometryOpcode) {
31
- /** Local range of the next geometric primitive in the geometry stream. */
32
- ElementGeometryOpcode[ElementGeometryOpcode["SubGraphicRange"] = 2] = "SubGraphicRange";
33
- /** A reference to a [GeometryPart]($backend). */
34
- ElementGeometryOpcode[ElementGeometryOpcode["PartReference"] = 3] = "PartReference";
35
- /** Sets symbology for subsequent geometry to override [SubCategory]($backend) appearance */
36
- ElementGeometryOpcode[ElementGeometryOpcode["BasicSymbology"] = 4] = "BasicSymbology";
37
- /** A line, line string, shape, or point string (automatic simplification of a [CurvePrimitive]($core-geometry) or [CurveCollection]($core-geometry)) */
38
- ElementGeometryOpcode[ElementGeometryOpcode["PointPrimitive"] = 5] = "PointPrimitive";
39
- /** A 2d line, line string, shape, or point string (automatic simplification of a [CurvePrimitive]($core-geometry) or [CurveCollection]($core-geometry)) */
40
- ElementGeometryOpcode[ElementGeometryOpcode["PointPrimitive2d"] = 6] = "PointPrimitive2d";
41
- /** Arc or ellipse (automatic simplification of a [CurvePrimitive]($core-geometry) or [CurveCollection]($core-geometry)) */
42
- ElementGeometryOpcode[ElementGeometryOpcode["ArcPrimitive"] = 7] = "ArcPrimitive";
43
- /** [CurveCollection]($core-geometry) */
44
- // eslint-disable-next-line @typescript-eslint/no-shadow
45
- ElementGeometryOpcode[ElementGeometryOpcode["CurveCollection"] = 8] = "CurveCollection";
46
- /** [Polyface]($core-geometry) */
47
- // eslint-disable-next-line @typescript-eslint/no-shadow
48
- ElementGeometryOpcode[ElementGeometryOpcode["Polyface"] = 9] = "Polyface";
49
- /** [CurvePrimitive]($core-geometry) */
50
- ElementGeometryOpcode[ElementGeometryOpcode["CurvePrimitive"] = 10] = "CurvePrimitive";
51
- /** [SolidPrimitive]($core-geometry) */
52
- // eslint-disable-next-line @typescript-eslint/no-shadow
53
- ElementGeometryOpcode[ElementGeometryOpcode["SolidPrimitive"] = 11] = "SolidPrimitive";
54
- /** [BSplineSurface3d]($core-geometry) */
55
- ElementGeometryOpcode[ElementGeometryOpcode["BsplineSurface"] = 12] = "BsplineSurface";
56
- /** Opaque and [[Gradient]] fills. */
57
- ElementGeometryOpcode[ElementGeometryOpcode["Fill"] = 19] = "Fill";
58
- /** Hatch, cross-hatch, or [[AreaPattern]]. */
59
- ElementGeometryOpcode[ElementGeometryOpcode["Pattern"] = 20] = "Pattern";
60
- /** [[RenderMaterial]] */
61
- ElementGeometryOpcode[ElementGeometryOpcode["Material"] = 21] = "Material";
62
- /** [[TextString]] */
63
- // eslint-disable-next-line @typescript-eslint/no-shadow
64
- ElementGeometryOpcode[ElementGeometryOpcode["TextString"] = 22] = "TextString";
65
- /** Specifies line style overrides as a [[LineStyle.Modifier]] */
66
- ElementGeometryOpcode[ElementGeometryOpcode["LineStyleModifiers"] = 23] = "LineStyleModifiers";
67
- /** Boundary represention solid, sheet, or wire body as a [[BRepEntity.DataProps]] */
68
- ElementGeometryOpcode[ElementGeometryOpcode["BRep"] = 25] = "BRep";
69
- /** Small single-tile raster image as an [[ImageGraphic]] */
70
- ElementGeometryOpcode[ElementGeometryOpcode["Image"] = 28] = "Image";
71
- })(ElementGeometryOpcode || (ElementGeometryOpcode = {}));
72
- /** Values for [[BRepGeometryCreate.operation]]
73
- * @alpha
74
- */
75
- export var BRepGeometryOperation;
76
- (function (BRepGeometryOperation) {
77
- /** Unite target (first entry) with one or more tool entities. */
78
- BRepGeometryOperation[BRepGeometryOperation["Unite"] = 0] = "Unite";
79
- /** Subtract one or more tool entities from target entity (first entry) */
80
- BRepGeometryOperation[BRepGeometryOperation["Subtract"] = 1] = "Subtract";
81
- /** Intersect target (first entry) with one or more tool entities */
82
- BRepGeometryOperation[BRepGeometryOperation["Intersect"] = 2] = "Intersect";
83
- /** Sew the given set of surfaces together by joining those that share edges in common */
84
- BRepGeometryOperation[BRepGeometryOperation["Sew"] = 3] = "Sew";
85
- /** Create a cut in the target (first entry) using a planar region (second entry) and optional depth */
86
- BRepGeometryOperation[BRepGeometryOperation["Cut"] = 4] = "Cut";
87
- /** Create a pad or pocket in the target (first entry) using a planar region (second entry) */
88
- BRepGeometryOperation[BRepGeometryOperation["Emboss"] = 5] = "Emboss";
89
- /** Create a solid from a surface by offsetting using the specified forward and backward distances */
90
- BRepGeometryOperation[BRepGeometryOperation["Thicken"] = 6] = "Thicken";
91
- /** Create a shelled solid by offsetting all faces by the supplied distance */
92
- BRepGeometryOperation[BRepGeometryOperation["Hollow"] = 7] = "Hollow";
93
- /** Create a solid or surface by sweeping a planar profile (first entry) along a path (second entry) */
94
- BRepGeometryOperation[BRepGeometryOperation["Sweep"] = 8] = "Sweep";
95
- /** Create a solid or surface by lofting through a set of paths or regions */
96
- BRepGeometryOperation[BRepGeometryOperation["Loft"] = 9] = "Loft";
97
- /** Create a solid or sheet with all non-smooth/non-laminar edges rounded */
98
- BRepGeometryOperation[BRepGeometryOperation["Round"] = 10] = "Round";
99
- /** Offset all faces of a solid or sheet target by the supplied distance. */
100
- BRepGeometryOperation[BRepGeometryOperation["Offset"] = 11] = "Offset";
101
- })(BRepGeometryOperation || (BRepGeometryOperation = {}));
102
- /** Provides utility functions for working with [[ElementGeometryDataEntry]].
103
- * @alpha
104
- */
105
- export var ElementGeometry;
106
- (function (ElementGeometry) {
107
- /** [[ElementGeometry.Builder]] is a helper class for populating a [[ElementGeometryDataEntry]] array needed to create a [[GeometricElement]] or [[GeometryPart]]. */
108
- class Builder {
109
- constructor() {
110
- /** GeometryStream entries */
111
- this.entries = [];
112
- }
113
- /** Current placement transform, converts local coordinate (placement relative) input to world */
114
- get localToWorld() { return this._localToWorld; }
115
- /** Current inverse placement transform, converts world coordinate input to local (placement relative) */
116
- get worldToLocal() { return this._worldToLocal; }
117
- /** Supply optional local to world transform. Used to transform world coordinate input relative to element placement.
118
- * For a [[GeometricElement]]'s placement to be meaningful, world coordinate geometry should never be appended to an element with an identity placement.
119
- * Can be called with undefined or identity transform to start appending geometry supplied in local coordinates again.
120
- */
121
- setLocalToWorld(localToWorld) {
122
- this._localToWorld = (undefined === localToWorld || localToWorld.isIdentity ? undefined : localToWorld.clone());
123
- this._worldToLocal = (undefined === this._localToWorld ? undefined : this._localToWorld.inverse());
124
- }
125
- /** Supply local to world transform from a Point3d and optional YawPitchRollAngles.
126
- * @see [[Placement3d]]
127
- */
128
- setLocalToWorld3d(origin, angles = YawPitchRollAngles.createDegrees(0.0, 0.0, 0.0)) {
129
- this.setLocalToWorld(Transform.createOriginAndMatrix(origin, angles.toMatrix3d()));
130
- }
131
- /** Supply local to world transform from a Point2d and optional Angle.
132
- * @see [[Placement2d]]
133
- */
134
- setLocalToWorld2d(origin, angle = Angle.createDegrees(0.0)) {
135
- this.setLocalToWorld(Transform.createOriginAndMatrix(Point3d.createFrom(origin), Matrix3d.createRotationAroundVector(Vector3d.unitZ(), angle)));
136
- }
137
- /** Supply local to world transform from a PlacementProps2d or PlacementProps3d.
138
- * @see [[PlacementProps]]
139
- */
140
- setLocalToWorldFromPlacement(props) {
141
- const placement = isPlacement2dProps(props) ? Placement2d.fromJSON(props) : Placement3d.fromJSON(props);
142
- this.setLocalToWorld(placement.transform);
143
- }
144
- /** Compute angles suitable for passing to [[setLocalToWorld3d]] from an array of 3d points. */
145
- static placementAnglesFromPoints(pts, defaultUp, result) {
146
- const angles = result ? result : new YawPitchRollAngles();
147
- const zVec = defaultUp ? defaultUp.clone() : Vector3d.unitZ();
148
- const matrix = Matrix3d.createRigidHeadsUp(zVec);
149
- YawPitchRollAngles.createFromMatrix3d(matrix, angles);
150
- if (pts.length < 2 || pts[0].isAlmostEqual(pts[1]))
151
- return angles;
152
- // Check if points have a well defined normal to use instead of defaultUp...
153
- const frameTransform = FrameBuilder.createFrameToDistantPoints(pts);
154
- if (undefined !== frameTransform) {
155
- const plane = Plane3dByOriginAndUnitNormal.create(pts[0], frameTransform.matrix.getColumn(2));
156
- if (undefined !== plane && Point3dArray.isCloseToPlane(pts, plane))
157
- zVec.setFrom(plane.getNormalRef());
158
- }
159
- const xVec = Vector3d.createStartEnd(pts[0], pts[1]);
160
- if (xVec.isParallelTo(zVec, true))
161
- return angles;
162
- const yVec = xVec.unitCrossProduct(zVec);
163
- if (undefined === yVec)
164
- return angles;
165
- Matrix3d.createColumns(xVec, yVec, zVec, matrix);
166
- if (undefined === Matrix3d.createRigidFromMatrix3d(matrix, undefined, matrix))
167
- return angles;
168
- YawPitchRollAngles.createFromMatrix3d(matrix, angles);
169
- return angles;
170
- }
171
- /** Compute angle suitable for passing to [[setLocalToWorld2d]] from an array of xy plane points. */
172
- static placementAngleFromPoints(pts, result) {
173
- const angles = ElementGeometry.Builder.placementAnglesFromPoints(pts);
174
- if (undefined === result)
175
- return angles.yaw;
176
- result.setFrom(angles.yaw);
177
- return result;
178
- }
179
- /** Store local ranges for all subsequent geometry appended. Can improve performance of range testing for elements with a GeometryStream
180
- * containing more than one [[GeometryQuery]] differentiable by range. Not useful for a single [[GeometryQuery]] as its range and that of the [[GeometricElement]] are the same.
181
- * Ignored when defining a [[GeometryPart]] and not needed when only appending [[GeometryPart]] instances to a [[GeometricElement]] as these store their own range.
182
- */
183
- appendGeometryRanges() {
184
- const entry = fromSubGraphicRange(Range3d.create()); // Computed on backend, just need opcode...
185
- if (undefined === entry)
186
- return false;
187
- this.entries.push(entry);
188
- return true;
189
- }
190
- /** Change [[GeometryParams]] for subsequent geometry.
191
- * It is not valid to change the sub-category when defining a [[GeometryPart]]. A [[GeometryPart]] inherits the symbology of their instance for anything not explicitly overridden.
192
- */
193
- appendGeometryParamsChange(geomParams) {
194
- return appendGeometryParams(geomParams, this.entries, this._worldToLocal);
195
- }
196
- /** Append a [[GeometryQuery]] supplied in either local or world coordinates to the [[ElementGeometryDataEntry]] array */
197
- appendGeometryQuery(geometry) {
198
- const entry = ElementGeometry.fromGeometryQuery(geometry, this._worldToLocal);
199
- if (undefined === entry)
200
- return false;
201
- this.entries.push(entry);
202
- return true;
203
- }
204
- /** Append a [[TextString]] supplied in either local or world coordinates to the [[ElementGeometryDataEntry]] array */
205
- appendTextString(text) {
206
- const entry = ElementGeometry.fromTextString(text.toJSON(), this._worldToLocal);
207
- if (undefined === entry)
208
- return false;
209
- this.entries.push(entry);
210
- return true;
211
- }
212
- /** Append a [[ImageGraphic]] supplied in either local or world coordinates to the [[ElementGeometryDataEntry]] array */
213
- appendImageGraphic(image) {
214
- const entry = ElementGeometry.fromImageGraphic(image.toJSON(), this._worldToLocal);
215
- if (undefined === entry)
216
- return false;
217
- this.entries.push(entry);
218
- return true;
219
- }
220
- /** Append a [[BRepEntity.DataProps]] supplied in either local or world coordinates to the [[ElementGeometryDataEntry]] array.
221
- * Provided for compatibility with GeometryStreamBuilder only.
222
- * Backend code should use IModelDb.createBRepGeometry to create a brep [[ElementGeometryDataEntry]] directly.
223
- */
224
- appendBRepData(brep) {
225
- const entry = ElementGeometry.fromBRep(brep, this._worldToLocal);
226
- if (undefined === entry)
227
- return false;
228
- this.entries.push(entry);
229
- return true;
230
- }
231
- /** Append a [[GeometryPart]] instance with relative transform to the [[ElementGeometryDataEntry]] array for creating a [[GeometricElement]].
232
- * Not valid when defining a [[GeometryPart]] as nesting of parts is not supported.
233
- */
234
- appendGeometryPart(partId, partTransform) {
235
- const entry = ElementGeometry.fromGeometryPart(partId, partTransform, this._worldToLocal);
236
- if (undefined === entry)
237
- return false;
238
- this.entries.push(entry);
239
- return true;
240
- }
241
- /** Append a [[GeometryPart]] instance with relative position, orientation, and scale to the [[ElementGeometryDataEntry]] array for creating a [[GeometricElement3d]].
242
- * Not valid when defining a [[GeometryPart]] as nesting of parts is not supported.
243
- */
244
- appendGeometryPart3d(partId, instanceOrigin, instanceRotation, instanceScale) {
245
- const partTransform = Transform.createOriginAndMatrix(instanceOrigin, instanceRotation ? instanceRotation.toMatrix3d() : Matrix3d.createIdentity());
246
- if (undefined !== instanceScale)
247
- partTransform.matrix.scaleColumnsInPlace(instanceScale, instanceScale, instanceScale);
248
- return this.appendGeometryPart(partId, partTransform);
249
- }
250
- /** Append a [[GeometryPart]] instance with relative position, orientation, and scale to the [[ElementGeometryDataEntry]] array for creating a [[GeometricElement2d]].
251
- * Not valid when defining a [[GeometryPart]] as nesting of parts is not supported.
252
- */
253
- appendGeometryPart2d(partId, instanceOrigin, instanceRotation, instanceScale) {
254
- return this.appendGeometryPart3d(partId, instanceOrigin ? Point3d.createFrom(instanceOrigin) : undefined, instanceRotation ? new YawPitchRollAngles(instanceRotation) : undefined, instanceScale);
255
- }
256
- }
257
- ElementGeometry.Builder = Builder;
258
- class IteratorEntry {
259
- constructor(geomParams, localToWorld, applyLocalToWorld) {
260
- this.geomParams = geomParams;
261
- this.localToWorld = localToWorld;
262
- this._applyLocalToWorld = applyLocalToWorld ? !localToWorld.isIdentity : false;
263
- }
264
- get value() { return this._value; }
265
- set value(value) { this._value = value; }
266
- get outputTransform() {
267
- return this._applyLocalToWorld ? this.localToWorld : undefined;
268
- }
269
- /** Return the [[GeometryQuery]] representation for the current entry */
270
- toGeometryQuery() {
271
- return toGeometryQuery(this.value, this.outputTransform);
272
- }
273
- /** Return the [[BRepEntity.DataProps]] representation for the current entry for checking brep type and face attachments. */
274
- toBRepData(wantBRepData = false) {
275
- return toBRep(this.value, wantBRepData, this.outputTransform);
276
- }
277
- /** Return the [[TextString]] representation for the current entry */
278
- toTextString() {
279
- const props = toTextString(this.value, this.outputTransform);
280
- return (undefined !== props ? new TextString(props) : undefined);
281
- }
282
- /** Return the [[ImageGraphic]] representation for the current entry */
283
- toImageGraphic() {
284
- const props = toImageGraphic(this.value, this.outputTransform);
285
- return (undefined !== props ? ImageGraphic.fromJSON(props) : undefined);
286
- }
287
- /** Return the GeometryPart information for the current entry */
288
- toGeometryPart(partToLocal, partToWorld) {
289
- if (undefined === partToLocal && undefined !== partToWorld)
290
- partToLocal = Transform.createIdentity();
291
- const partId = toGeometryPart(this.value, partToLocal);
292
- if (undefined === partId || undefined === partToLocal || undefined === partToWorld)
293
- return partId;
294
- if (undefined !== this.localToWorld)
295
- this.localToWorld.multiplyTransformTransform(partToLocal, partToWorld);
296
- return partId;
297
- }
298
- }
299
- ElementGeometry.IteratorEntry = IteratorEntry;
300
- /** [[ElementGeometry.Iterator]] is a helper class for iterating a [[ElementGeometryDataEntry]] array.
301
- * Each [[ElementGeometryDataEntry]] returned by the iterator represents exactly one displayable entry.
302
- */
303
- class Iterator {
304
- /** Construct a new Iterator given a [[ElementGeometryInfo]] from either a [[GeometricElement3d]], [[GeometricElement2d]], or [[GeometryPart]].
305
- * Supply the optional [[GeometryParams]] and localToWorld transform to iterate a [[GeometryPart]] in the context of a [[GeometricElement]] reference.
306
- */
307
- constructor(info, categoryOrGeometryParams, localToWorld) {
308
- /** Current entry position */
309
- this._index = 0;
310
- /** Whether deserialized entry data is returned in world or local coordinates */
311
- this._applyLocalToWorld = false;
312
- this.entryArray = info.entryArray;
313
- this.viewIndependent = info.viewIndependent;
314
- this.brepsPresent = info.brepsPresent;
315
- if (undefined !== info.categoryId)
316
- categoryOrGeometryParams = info.categoryId;
317
- if (undefined !== categoryOrGeometryParams)
318
- this._appearance = typeof categoryOrGeometryParams === "string" ? new GeometryParams(categoryOrGeometryParams) : categoryOrGeometryParams;
319
- else
320
- this._appearance = new GeometryParams(Id64.invalid);
321
- if (undefined !== info.sourceToWorld)
322
- localToWorld = ElementGeometry.toTransform(info.sourceToWorld);
323
- if (undefined !== localToWorld)
324
- this._localToWorld = localToWorld;
325
- else
326
- this._localToWorld = Transform.createIdentity();
327
- const orgAng = YawPitchRollAngles.tryFromTransform(this._localToWorld);
328
- if (undefined === orgAng.angles)
329
- orgAng.angles = YawPitchRollAngles.createDegrees(0, 0, 0);
330
- let bbox = (undefined !== info.bbox ? ElementGeometry.toElementAlignedBox3d(info.bbox) : undefined);
331
- if (undefined === bbox)
332
- bbox = Range3d.createNull();
333
- this.placement = new Placement3d(orgAng.origin, orgAng.angles, bbox);
334
- }
335
- /** Call to return deserialized entry data in world coordinates */
336
- requestWorldCoordinates() {
337
- this._applyLocalToWorld = !this._localToWorld.isIdentity;
338
- }
339
- // eslint-disable-next-line @typescript-eslint/naming-convention
340
- get entry() {
341
- if (undefined === this._entry)
342
- this._entry = new IteratorEntry(this._appearance, this._localToWorld, this._applyLocalToWorld);
343
- return this._entry;
344
- }
345
- /** Advance to next displayable opcode (geometric entry or geometry part) while updating the current [[GeometryParams]] from appearance related opcodes. */
346
- next() {
347
- while (this._index < this.entryArray.length) {
348
- const value = this.entryArray[this._index++];
349
- if (ElementGeometry.isAppearanceEntry(value)) {
350
- const localToWorld = (this._applyLocalToWorld ? this._localToWorld : undefined);
351
- ElementGeometry.updateGeometryParams(value, this.entry.geomParams, localToWorld);
352
- }
353
- else if (ElementGeometryOpcode.SubGraphicRange === value.opcode) {
354
- // NOTE: localRange remains valid until the next sub-range entry is encountered...
355
- this.entry.localRange = ElementGeometry.toSubGraphicRange(value);
356
- }
357
- else if (ElementGeometryOpcode.PartReference === value.opcode) {
358
- this.entry.value = value;
359
- return { value: this.entry, done: false };
360
- }
361
- else if (ElementGeometry.isGeometricEntry(value)) {
362
- this.entry.value = value;
363
- return { value: this.entry, done: false };
364
- }
365
- }
366
- return { value: this.entry, done: true };
367
- }
368
- [Symbol.iterator]() {
369
- return this;
370
- }
371
- }
372
- ElementGeometry.Iterator = Iterator;
373
- /** Return whether the supplied entry can be represented as a [[GeometryQuery]] */
374
- function isGeometryQueryEntry(entry) {
375
- switch (entry.opcode) {
376
- case ElementGeometryOpcode.PointPrimitive:
377
- case ElementGeometryOpcode.PointPrimitive2d:
378
- case ElementGeometryOpcode.ArcPrimitive:
379
- case ElementGeometryOpcode.CurveCollection:
380
- case ElementGeometryOpcode.Polyface:
381
- case ElementGeometryOpcode.CurvePrimitive:
382
- case ElementGeometryOpcode.SolidPrimitive:
383
- case ElementGeometryOpcode.BsplineSurface:
384
- return true;
385
- default:
386
- return false;
387
- }
388
- }
389
- ElementGeometry.isGeometryQueryEntry = isGeometryQueryEntry;
390
- /** Return whether the supplied entry is displayable geometry [[GeometryQuery]], [[BRepEntity.DataProps]], [[TextString]], or [[ImageGraphic]] */
391
- function isGeometricEntry(entry) {
392
- switch (entry.opcode) {
393
- case ElementGeometryOpcode.BRep:
394
- case ElementGeometryOpcode.TextString:
395
- case ElementGeometryOpcode.Image:
396
- return true;
397
- default:
398
- return isGeometryQueryEntry(entry);
399
- }
400
- }
401
- ElementGeometry.isGeometricEntry = isGeometricEntry;
402
- /** Return whether the supplied entry is geometric or a part reference */
403
- function isDisplayableEntry(entry) {
404
- switch (entry.opcode) {
405
- case ElementGeometryOpcode.PartReference:
406
- return true;
407
- default:
408
- return isGeometricEntry(entry);
409
- }
410
- }
411
- ElementGeometry.isDisplayableEntry = isDisplayableEntry;
412
- /** Return whether the supplied entry represents appearance information */
413
- function isAppearanceEntry(entry) {
414
- switch (entry.opcode) {
415
- case ElementGeometryOpcode.BasicSymbology:
416
- case ElementGeometryOpcode.Fill:
417
- case ElementGeometryOpcode.Pattern:
418
- case ElementGeometryOpcode.Material:
419
- case ElementGeometryOpcode.LineStyleModifiers:
420
- return true;
421
- default:
422
- return false;
423
- }
424
- }
425
- ElementGeometry.isAppearanceEntry = isAppearanceEntry;
426
- /** Return whether the supplied entry represents a single open curve or path */
427
- function isCurve(entry) {
428
- switch (entry.opcode) {
429
- case ElementGeometryOpcode.PointPrimitive: {
430
- const buffer = new flatbuffers.ByteBuffer(entry.data);
431
- const ppfb = EGFBAccessors.PointPrimitive.getRootAsPointPrimitive(buffer);
432
- return (EGFBAccessors.BoundaryType.Open === ppfb.boundary());
433
- }
434
- case ElementGeometryOpcode.PointPrimitive2d: {
435
- const buffer = new flatbuffers.ByteBuffer(entry.data);
436
- const ppfb = EGFBAccessors.PointPrimitive2d.getRootAsPointPrimitive2d(buffer);
437
- return (EGFBAccessors.BoundaryType.Open === ppfb.boundary());
438
- }
439
- case ElementGeometryOpcode.ArcPrimitive: {
440
- const buffer = new flatbuffers.ByteBuffer(entry.data);
441
- const ppfb = EGFBAccessors.ArcPrimitive.getRootAsArcPrimitive(buffer);
442
- return (EGFBAccessors.BoundaryType.Open === ppfb.boundary());
443
- }
444
- case ElementGeometryOpcode.CurvePrimitive: {
445
- // should never be a point string or closed bcurve...
446
- return true;
447
- }
448
- case ElementGeometryOpcode.CurveCollection: {
449
- const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
450
- if (undefined === geom || Array.isArray(geom))
451
- return false;
452
- return ("curveCollection" === geom.geometryCategory && !geom.isAnyRegionType);
453
- }
454
- default:
455
- return false;
456
- }
457
- }
458
- ElementGeometry.isCurve = isCurve;
459
- /** Return whether the supplied entry represents a loop, planar region, open polyface, or sheet body */
460
- function isSurface(entry) {
461
- switch (entry.opcode) {
462
- case ElementGeometryOpcode.PointPrimitive: {
463
- const buffer = new flatbuffers.ByteBuffer(entry.data);
464
- const ppfb = EGFBAccessors.PointPrimitive.getRootAsPointPrimitive(buffer);
465
- return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary());
466
- }
467
- case ElementGeometryOpcode.PointPrimitive2d: {
468
- const buffer = new flatbuffers.ByteBuffer(entry.data);
469
- const ppfb = EGFBAccessors.PointPrimitive2d.getRootAsPointPrimitive2d(buffer);
470
- return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary());
471
- }
472
- case ElementGeometryOpcode.ArcPrimitive: {
473
- const buffer = new flatbuffers.ByteBuffer(entry.data);
474
- const ppfb = EGFBAccessors.ArcPrimitive.getRootAsArcPrimitive(buffer);
475
- return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary());
476
- }
477
- case ElementGeometryOpcode.CurvePrimitive: {
478
- // should never be a closed bcurve...
479
- return false;
480
- }
481
- case ElementGeometryOpcode.CurveCollection: {
482
- const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
483
- if (undefined === geom || Array.isArray(geom))
484
- return false;
485
- return ("curveCollection" === geom.geometryCategory && geom.isAnyRegionType);
486
- }
487
- case ElementGeometryOpcode.SolidPrimitive: {
488
- const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
489
- if (undefined === geom || Array.isArray(geom))
490
- return false;
491
- return ("solid" === geom.geometryCategory && !geom.isClosedVolume);
492
- }
493
- case ElementGeometryOpcode.Polyface: {
494
- const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
495
- if (undefined === geom || Array.isArray(geom))
496
- return false;
497
- if ("polyface" !== geom.geometryCategory)
498
- return false;
499
- const polyface = geom;
500
- switch (polyface.expectedClosure) {
501
- case 0:
502
- return !PolyfaceQuery.isPolyfaceClosedByEdgePairing(polyface);
503
- case 1:
504
- return true;
505
- case 2:
506
- default:
507
- return false;
508
- }
509
- }
510
- case ElementGeometryOpcode.BsplineSurface: {
511
- // never treated as a solid even if closed/periodic in u/v...
512
- return true;
513
- }
514
- case ElementGeometryOpcode.BRep: {
515
- const buffer = new flatbuffers.ByteBuffer(entry.data);
516
- const ppfb = EGFBAccessors.BRepData.getRootAsBRepData(buffer);
517
- return (EGFBAccessors.BRepType.Sheet === ppfb.brepType());
518
- }
519
- default:
520
- return false;
521
- }
522
- }
523
- ElementGeometry.isSurface = isSurface;
524
- /** Return whether the supplied entry represents a capped solid, closed polyface, or solid body */
525
- function isSolid(entry) {
526
- switch (entry.opcode) {
527
- case ElementGeometryOpcode.SolidPrimitive: {
528
- const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
529
- if (undefined === geom || Array.isArray(geom))
530
- return false;
531
- return ("solid" === geom.geometryCategory && geom.isClosedVolume);
532
- }
533
- case ElementGeometryOpcode.Polyface: {
534
- const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
535
- if (undefined === geom || Array.isArray(geom))
536
- return false;
537
- if ("polyface" !== geom.geometryCategory)
538
- return false;
539
- const polyface = geom;
540
- switch (polyface.expectedClosure) {
541
- case 0:
542
- return PolyfaceQuery.isPolyfaceClosedByEdgePairing(polyface);
543
- case 2:
544
- return true;
545
- case 1:
546
- default:
547
- return false;
548
- }
549
- }
550
- case ElementGeometryOpcode.BRep: {
551
- const buffer = new flatbuffers.ByteBuffer(entry.data);
552
- const ppfb = EGFBAccessors.BRepData.getRootAsBRepData(buffer);
553
- return (EGFBAccessors.BRepType.Solid === ppfb.brepType());
554
- }
555
- default:
556
- return false;
557
- }
558
- }
559
- ElementGeometry.isSolid = isSolid;
560
- /** Return the body type that would be used to represent the supplied entry */
561
- function getBRepEntityType(entry) {
562
- switch (entry.opcode) {
563
- case ElementGeometryOpcode.PointPrimitive: {
564
- const buffer = new flatbuffers.ByteBuffer(entry.data);
565
- const ppfb = EGFBAccessors.PointPrimitive.getRootAsPointPrimitive(buffer);
566
- if (EGFBAccessors.BoundaryType.None === ppfb.boundary())
567
- return undefined;
568
- return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary() ? BRepEntity.Type.Sheet : BRepEntity.Type.Wire);
569
- }
570
- case ElementGeometryOpcode.PointPrimitive2d: {
571
- const buffer = new flatbuffers.ByteBuffer(entry.data);
572
- const ppfb = EGFBAccessors.PointPrimitive2d.getRootAsPointPrimitive2d(buffer);
573
- if (EGFBAccessors.BoundaryType.None === ppfb.boundary())
574
- return undefined;
575
- return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary() ? BRepEntity.Type.Sheet : BRepEntity.Type.Wire);
576
- }
577
- case ElementGeometryOpcode.ArcPrimitive: {
578
- const buffer = new flatbuffers.ByteBuffer(entry.data);
579
- const ppfb = EGFBAccessors.ArcPrimitive.getRootAsArcPrimitive(buffer);
580
- return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary() ? BRepEntity.Type.Sheet : BRepEntity.Type.Wire);
581
- }
582
- case ElementGeometryOpcode.CurvePrimitive: {
583
- // should never be a point string or closed bcurve...
584
- return BRepEntity.Type.Wire;
585
- }
586
- case ElementGeometryOpcode.CurveCollection: {
587
- const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
588
- if (undefined === geom || Array.isArray(geom))
589
- return undefined;
590
- if ("curveCollection" !== geom.geometryCategory)
591
- return undefined;
592
- const curves = geom;
593
- return (curves.isAnyRegionType ? BRepEntity.Type.Sheet : BRepEntity.Type.Wire);
594
- }
595
- case ElementGeometryOpcode.SolidPrimitive: {
596
- const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
597
- if (undefined === geom || Array.isArray(geom))
598
- return undefined;
599
- if ("solid" !== geom.geometryCategory)
600
- return undefined;
601
- const solid = geom;
602
- return (solid.isClosedVolume ? BRepEntity.Type.Solid : BRepEntity.Type.Sheet);
603
- }
604
- case ElementGeometryOpcode.BsplineSurface: {
605
- // always a surface...
606
- return BRepEntity.Type.Sheet;
607
- }
608
- case ElementGeometryOpcode.Polyface: {
609
- const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
610
- if (undefined === geom || Array.isArray(geom))
611
- return undefined;
612
- if ("polyface" !== geom.geometryCategory)
613
- return undefined;
614
- const polyface = geom;
615
- switch (polyface.expectedClosure) {
616
- case 0:
617
- return PolyfaceQuery.isPolyfaceClosedByEdgePairing(polyface) ? BRepEntity.Type.Solid : BRepEntity.Type.Sheet;
618
- case 1:
619
- return BRepEntity.Type.Sheet;
620
- case 2:
621
- return BRepEntity.Type.Solid;
622
- default:
623
- return undefined;
624
- }
625
- }
626
- case ElementGeometryOpcode.BRep: {
627
- const buffer = new flatbuffers.ByteBuffer(entry.data);
628
- const ppfb = EGFBAccessors.BRepData.getRootAsBRepData(buffer);
629
- switch (ppfb.brepType()) {
630
- case EGFBAccessors.BRepType.Wire:
631
- return BRepEntity.Type.Wire; // always be persisted as a curve type...
632
- case EGFBAccessors.BRepType.Sheet:
633
- return BRepEntity.Type.Sheet;
634
- case EGFBAccessors.BRepType.Solid:
635
- return BRepEntity.Type.Solid;
636
- default:
637
- return undefined;
638
- }
639
- }
640
- default:
641
- return undefined;
642
- }
643
- }
644
- ElementGeometry.getBRepEntityType = getBRepEntityType;
645
- /** Return entry as a [[GeometryQuery]] */
646
- function toGeometryQuery(entry, localToWorld) {
647
- if (!isGeometryQueryEntry(entry))
648
- return undefined;
649
- switch (entry.opcode) {
650
- case ElementGeometryOpcode.PointPrimitive: {
651
- const buffer = new flatbuffers.ByteBuffer(entry.data);
652
- const ppfb = EGFBAccessors.PointPrimitive.getRootAsPointPrimitive(buffer);
653
- const pts = [];
654
- for (let i = 0; i < ppfb.coordsLength(); i++)
655
- pts.push(Point3d.create(ppfb.coords(i).x(), ppfb.coords(i).y(), ppfb.coords(i).z()));
656
- if (0 === pts.length)
657
- return undefined;
658
- if (undefined !== localToWorld)
659
- localToWorld.multiplyPoint3dArrayInPlace(pts);
660
- switch (ppfb.boundary()) {
661
- case EGFBAccessors.BoundaryType.Open:
662
- return LineString3d.createPoints(pts);
663
- case EGFBAccessors.BoundaryType.Closed:
664
- return Loop.createPolygon(pts);
665
- default:
666
- return PointString3d.createPoints(pts);
667
- }
668
- }
669
- case ElementGeometryOpcode.PointPrimitive2d: {
670
- const buffer = new flatbuffers.ByteBuffer(entry.data);
671
- const ppfb = EGFBAccessors.PointPrimitive2d.getRootAsPointPrimitive2d(buffer);
672
- const pts = [];
673
- for (let i = 0; i < ppfb.coordsLength(); i++)
674
- pts.push(Point3d.create(ppfb.coords(i).x(), ppfb.coords(i).y()));
675
- if (0 === pts.length)
676
- return undefined;
677
- if (undefined !== localToWorld)
678
- localToWorld.multiplyPoint3dArrayInPlace(pts);
679
- switch (ppfb.boundary()) {
680
- case EGFBAccessors.BoundaryType.Open:
681
- return LineString3d.createPoints(pts);
682
- case EGFBAccessors.BoundaryType.Closed:
683
- return Loop.createPolygon(pts);
684
- default:
685
- return PointString3d.createPoints(pts);
686
- }
687
- }
688
- case ElementGeometryOpcode.ArcPrimitive: {
689
- const buffer = new flatbuffers.ByteBuffer(entry.data);
690
- const ppfb = EGFBAccessors.ArcPrimitive.getRootAsArcPrimitive(buffer);
691
- const center = Point3d.create(ppfb.center().x(), ppfb.center().y(), ppfb.center().z());
692
- const vector0 = Vector3d.create(ppfb.vector0().x(), ppfb.vector0().y(), ppfb.vector0().z());
693
- const vector90 = Vector3d.create(ppfb.vector90().x(), ppfb.vector90().y(), ppfb.vector90().z());
694
- const arc = Arc3d.create(center, vector0, vector90, AngleSweep.createStartSweepRadians(ppfb.start(), ppfb.sweep()));
695
- if (undefined !== localToWorld && !arc.tryTransformInPlace(localToWorld))
696
- return undefined;
697
- return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary() ? Loop.create(arc) : arc);
698
- }
699
- case ElementGeometryOpcode.CurvePrimitive:
700
- case ElementGeometryOpcode.CurveCollection:
701
- case ElementGeometryOpcode.SolidPrimitive:
702
- case ElementGeometryOpcode.BsplineSurface:
703
- case ElementGeometryOpcode.Polyface:
704
- const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
705
- if (undefined === geom || Array.isArray(geom))
706
- return undefined; // Should always be a single entry not an array...
707
- if (undefined !== localToWorld && !geom.tryTransformInPlace(localToWorld))
708
- return undefined;
709
- return geom;
710
- default:
711
- return undefined; // Not a GeometryQuery, need to be handled explicitly...
712
- }
713
- }
714
- ElementGeometry.toGeometryQuery = toGeometryQuery;
715
- /** Create entry from a [[GeometryQuery]] */
716
- function fromGeometryQuery(geom, worldToLocal) {
717
- let opcode;
718
- switch (geom.geometryCategory) {
719
- case "bsurf":
720
- opcode = ElementGeometryOpcode.BsplineSurface;
721
- break;
722
- case "curveCollection":
723
- opcode = ElementGeometryOpcode.CurveCollection;
724
- break;
725
- case "curvePrimitive":
726
- case "pointCollection":
727
- opcode = ElementGeometryOpcode.CurvePrimitive;
728
- break;
729
- case "polyface":
730
- opcode = ElementGeometryOpcode.Polyface;
731
- break;
732
- case "solid":
733
- opcode = ElementGeometryOpcode.SolidPrimitive;
734
- break;
735
- default:
736
- return undefined;
737
- }
738
- if (undefined !== worldToLocal) {
739
- const localGeom = geom.cloneTransformed(worldToLocal);
740
- if (undefined === localGeom)
741
- return undefined;
742
- geom = localGeom;
743
- }
744
- const data = BentleyGeometryFlatBuffer.geometryToBytes(geom, true);
745
- if (undefined === data)
746
- return undefined;
747
- return { opcode, data };
748
- }
749
- ElementGeometry.fromGeometryQuery = fromGeometryQuery;
750
- /** Return entry as a [[TextString]] */
751
- function toTextString(entry, localToWorld) {
752
- if (ElementGeometryOpcode.TextString !== entry.opcode)
753
- return undefined;
754
- const buffer = new flatbuffers.ByteBuffer(entry.data);
755
- const ppfb = EGFBAccessors.TextString.getRootAsTextString(buffer);
756
- const style = ppfb.style();
757
- if (null === style)
758
- return undefined;
759
- const text = ppfb.text();
760
- const props = { text: (null !== text ? text : ""), font: style.fontId(), height: style.height() };
761
- props.widthFactor = style.widthFactor();
762
- props.bold = style.isBold();
763
- props.italic = style.isItalic();
764
- props.underline = style.isUnderlined();
765
- const transform = ppfb.transform();
766
- if (null !== transform) {
767
- props.origin = Point3d.create(transform.form3d03(), transform.form3d13(), transform.form3d23());
768
- props.rotation = YawPitchRollAngles.createFromMatrix3d(Matrix3d.createRowValues(transform.form3d00(), transform.form3d01(), transform.form3d02(), transform.form3d10(), transform.form3d11(), transform.form3d12(), transform.form3d20(), transform.form3d21(), transform.form3d22()));
769
- }
770
- if (undefined === localToWorld)
771
- return props;
772
- const textString = new TextString(props);
773
- if (!textString.transformInPlace(localToWorld))
774
- return undefined;
775
- return textString.toJSON();
776
- }
777
- ElementGeometry.toTextString = toTextString;
778
- /** Create entry from a [[TextString]] */
779
- function fromTextString(text, worldToLocal) {
780
- if (undefined !== worldToLocal) {
781
- const localText = new TextString(text);
782
- if (!localText.transformInPlace(worldToLocal))
783
- return undefined;
784
- text = localText.toJSON();
785
- }
786
- const fbb = new flatbuffers.Builder();
787
- const builder = EGFBAccessors.TextString;
788
- const textOffset = fbb.createString(text.text);
789
- const styleOffset = EGFBAccessors.TextStringStyle.createTextStringStyle(fbb, 1, 0, text.font, undefined === text.bold ? false : text.bold, undefined === text.italic ? false : text.italic, undefined === text.underline ? false : text.underline, text.height, undefined === text.widthFactor ? 1.0 : text.widthFactor);
790
- builder.startTextString(fbb);
791
- builder.addMajorVersion(fbb, 1);
792
- builder.addMinorVersion(fbb, 0);
793
- builder.addText(fbb, textOffset);
794
- builder.addStyle(fbb, styleOffset);
795
- if (undefined !== text.origin || undefined !== text.rotation) {
796
- const origin = Point3d.fromJSON(text.origin);
797
- const angles = YawPitchRollAngles.fromJSON(text.rotation);
798
- const matrix = angles.toMatrix3d();
799
- const coffs = matrix.coffs;
800
- const transformOffset = EGFBAccessors.TextStringTransform.createTextStringTransform(fbb, coffs[0], coffs[1], coffs[2], origin.x, coffs[3], coffs[4], coffs[5], origin.y, coffs[6], coffs[7], coffs[8], origin.z);
801
- builder.addTransform(fbb, transformOffset);
802
- }
803
- const mLoc = builder.endTextString(fbb);
804
- fbb.finish(mLoc);
805
- const data = fbb.asUint8Array();
806
- return { opcode: ElementGeometryOpcode.TextString, data };
807
- }
808
- ElementGeometry.fromTextString = fromTextString;
809
- /** Return entry as a [[ImageGraphic]] */
810
- function toImageGraphic(entry, localToWorld) {
811
- if (ElementGeometryOpcode.Image !== entry.opcode)
812
- return undefined;
813
- const buffer = new flatbuffers.ByteBuffer(entry.data);
814
- const ppfb = EGFBAccessors.Image.getRootAsImage(buffer);
815
- const textureLong = ppfb.textureId();
816
- const textureId = Id64.fromUint32Pair(textureLong.low, textureLong.high);
817
- const hasBorder = (1 === ppfb.drawBorder());
818
- const corners = new ImageGraphicCorners(Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero());
819
- const corner0 = ppfb.tileCorner0();
820
- const corner1 = ppfb.tileCorner1();
821
- const corner2 = ppfb.tileCorner2();
822
- const corner3 = ppfb.tileCorner3();
823
- if (null !== corner0)
824
- corners[0].setFrom(Point3d.create(corner0.x(), corner0.y(), corner0.z()));
825
- if (null !== corner1)
826
- corners[1].setFrom(Point3d.create(corner1.x(), corner1.y(), corner1.z()));
827
- if (null !== corner2)
828
- corners[2].setFrom(Point3d.create(corner2.x(), corner2.y(), corner2.z()));
829
- if (null !== corner3)
830
- corners[3].setFrom(Point3d.create(corner3.x(), corner3.y(), corner3.z()));
831
- if (undefined !== localToWorld) {
832
- localToWorld.multiplyXYAndZInPlace(corners[0]);
833
- localToWorld.multiplyXYAndZInPlace(corners[1]);
834
- localToWorld.multiplyXYAndZInPlace(corners[2]);
835
- localToWorld.multiplyXYAndZInPlace(corners[3]);
836
- }
837
- return { corners: corners.toJSON(), textureId, hasBorder };
838
- }
839
- ElementGeometry.toImageGraphic = toImageGraphic;
840
- /** Create entry from a [[ImageGraphic]] */
841
- function fromImageGraphic(image, worldToLocal) {
842
- if (undefined !== worldToLocal) {
843
- const localImage = ImageGraphic.fromJSON(image).cloneTransformed(worldToLocal);
844
- image = localImage.toJSON();
845
- }
846
- const fbb = new flatbuffers.Builder();
847
- const builder = EGFBAccessors.Image;
848
- builder.startImage(fbb);
849
- const textudeIdPair = Id64.getUint32Pair(image.textureId);
850
- builder.addTextureId(fbb, flatbuffers.Long.create(textudeIdPair.lower, textudeIdPair.upper));
851
- builder.addDrawBorder(fbb, image.hasBorder ? 1 : 0);
852
- const corners = ImageGraphicCorners.fromJSON(image.corners);
853
- const cornerOffset0 = EGFBAccessors.DPoint3d.createDPoint3d(fbb, corners[0].x, corners[0].y, corners[0].z);
854
- builder.addTileCorner0(fbb, cornerOffset0);
855
- const cornerOffset1 = EGFBAccessors.DPoint3d.createDPoint3d(fbb, corners[1].x, corners[1].y, corners[1].z);
856
- builder.addTileCorner1(fbb, cornerOffset1);
857
- const cornerOffset2 = EGFBAccessors.DPoint3d.createDPoint3d(fbb, corners[2].x, corners[2].y, corners[2].z);
858
- builder.addTileCorner2(fbb, cornerOffset2);
859
- const cornerOffset3 = EGFBAccessors.DPoint3d.createDPoint3d(fbb, corners[3].x, corners[3].y, corners[3].z);
860
- builder.addTileCorner3(fbb, cornerOffset3);
861
- const mLoc = builder.endImage(fbb);
862
- fbb.finish(mLoc);
863
- const data = fbb.asUint8Array();
864
- return { opcode: ElementGeometryOpcode.Image, data };
865
- }
866
- ElementGeometry.fromImageGraphic = fromImageGraphic;
867
- /** Return entry as a [[BRepEntity.DataProps]] for checking brep type and face attachments. */
868
- function toBRep(entry, wantBRepData = false, localToWorld) {
869
- if (ElementGeometryOpcode.BRep !== entry.opcode)
870
- return undefined;
871
- const buffer = new flatbuffers.ByteBuffer(entry.data);
872
- const ppfb = EGFBAccessors.BRepData.getRootAsBRepData(buffer);
873
- const toBRepType = (typeFb) => {
874
- switch (typeFb) {
875
- case EGFBAccessors.BRepType.Wire:
876
- return BRepEntity.Type.Wire;
877
- case EGFBAccessors.BRepType.Sheet:
878
- return BRepEntity.Type.Sheet;
879
- default:
880
- return BRepEntity.Type.Solid;
881
- }
882
- };
883
- const type = toBRepType(ppfb.brepType());
884
- let transform;
885
- const entityTransform = ppfb.entityTransform();
886
- if (null !== entityTransform)
887
- transform = Transform.createRowValues(entityTransform.x00(), entityTransform.x01(), entityTransform.x02(), entityTransform.tx(), entityTransform.x10(), entityTransform.x11(), entityTransform.x12(), entityTransform.ty(), entityTransform.x20(), entityTransform.x21(), entityTransform.x22(), entityTransform.tz());
888
- if (undefined !== localToWorld) {
889
- if (undefined !== transform)
890
- transform.multiplyTransformTransform(localToWorld, transform);
891
- else
892
- transform = localToWorld;
893
- }
894
- const faceSymbLen = ppfb.symbologyLength();
895
- let faceSymbology;
896
- if (0 !== faceSymbLen) {
897
- const faceSymbPropsArray = [];
898
- for (let index = 0; index < faceSymbLen; ++index) {
899
- const faceSymbFb = ppfb.symbology(index);
900
- const faceSymbProps = {};
901
- if (null !== faceSymbFb) {
902
- if (1 === faceSymbFb.useColor())
903
- faceSymbProps.color = faceSymbFb.color();
904
- if (1 === faceSymbFb.useMaterial())
905
- faceSymbProps.materialId = Id64.fromUint32Pair(faceSymbFb.materialId().low, faceSymbFb.materialId().high);
906
- faceSymbProps.transparency = faceSymbFb.transparency();
907
- }
908
- faceSymbPropsArray.push(faceSymbProps);
909
- }
910
- faceSymbology = faceSymbPropsArray;
911
- }
912
- let data;
913
- const entityData = ppfb.entityDataArray();
914
- if (wantBRepData && null !== entityData)
915
- data = Base64EncodedString.fromUint8Array(entityData);
916
- return { data, type, transform: transform === null || transform === void 0 ? void 0 : transform.toJSON(), faceSymbology };
917
- }
918
- ElementGeometry.toBRep = toBRep;
919
- /** Create entry from a [[BRepEntity.DataProps]]. Provided for compatibility with GeometryStreamBuilder only. */
920
- function fromBRep(brep, worldToLocal) {
921
- if (undefined !== worldToLocal) {
922
- const entityTrans = Transform.fromJSON(brep.transform);
923
- const localTrans = entityTrans.multiplyTransformTransform(worldToLocal);
924
- brep = {
925
- data: brep.data,
926
- type: brep.type,
927
- transform: localTrans.isIdentity ? undefined : localTrans.toJSON(),
928
- faceSymbology: brep.faceSymbology,
929
- };
930
- }
931
- const fbb = new flatbuffers.Builder();
932
- const builder = EGFBAccessors.BRepData;
933
- let dataOffset;
934
- let faceSymbOffset;
935
- if (undefined !== brep.data) {
936
- const entityData = Base64EncodedString.toUint8Array(brep.data);
937
- if (entityData.length === 0)
938
- return undefined;
939
- dataOffset = builder.createEntityDataVector(fbb, entityData);
940
- }
941
- if (undefined !== brep.faceSymbology) {
942
- builder.startSymbologyVector(fbb, brep.faceSymbology.length);
943
- for (let i = brep.faceSymbology.length - 1; i >= 0; i--) {
944
- const symb = brep.faceSymbology[i];
945
- const materialIdPair = Id64.getUint32Pair(symb.materialId ? symb.materialId : Id64.invalid);
946
- const matLong = flatbuffers.Long.create(materialIdPair.lower, materialIdPair.upper);
947
- EGFBAccessors.FaceSymbology.createFaceSymbology(fbb, symb.color ? 1 : 0, symb.materialId ? 1 : 0, symb.color ? symb.color : 0, matLong, symb.transparency ? symb.transparency : 0, 0, 0);
948
- }
949
- faceSymbOffset = fbb.endVector();
950
- }
951
- builder.startBRepData(fbb);
952
- const toEGFBBRepType = (type) => {
953
- switch (type) {
954
- case BRepEntity.Type.Wire:
955
- return EGFBAccessors.BRepType.Wire;
956
- case BRepEntity.Type.Sheet:
957
- return EGFBAccessors.BRepType.Sheet;
958
- default:
959
- return EGFBAccessors.BRepType.Solid;
960
- }
961
- };
962
- if (undefined !== brep.type)
963
- builder.addBrepType(fbb, toEGFBBRepType(brep.type));
964
- if (undefined !== brep.transform) {
965
- const transform = Transform.fromJSON(brep.transform);
966
- const transformOffset = EGFBAccessors.Transform.createTransform(fbb, transform.matrix.coffs[0], transform.matrix.coffs[1], transform.matrix.coffs[2], transform.origin.x, transform.matrix.coffs[3], transform.matrix.coffs[4], transform.matrix.coffs[5], transform.origin.y, transform.matrix.coffs[6], transform.matrix.coffs[7], transform.matrix.coffs[8], transform.origin.z);
967
- builder.addEntityTransform(fbb, transformOffset);
968
- }
969
- if (undefined !== dataOffset)
970
- builder.addEntityData(fbb, dataOffset);
971
- if (undefined !== faceSymbOffset)
972
- builder.addSymbology(fbb, faceSymbOffset);
973
- const mLoc = builder.endBRepData(fbb);
974
- fbb.finish(mLoc);
975
- const data = fbb.asUint8Array();
976
- return { opcode: ElementGeometryOpcode.BRep, data };
977
- }
978
- ElementGeometry.fromBRep = fromBRep;
979
- /** Apply transform directly to ElementGeometryDataEntry for a BRep */
980
- function transformBRep(entry, inputTransform) {
981
- if (ElementGeometryOpcode.BRep !== entry.opcode)
982
- return false;
983
- const buffer = new flatbuffers.ByteBuffer(entry.data);
984
- const ppfb = EGFBAccessors.BRepData.getRootAsBRepData(buffer);
985
- const fbb = new flatbuffers.Builder();
986
- const builder = EGFBAccessors.BRepData;
987
- const entityData = ppfb.entityDataArray();
988
- const dataOffset = (null !== entityData ? builder.createEntityDataVector(fbb, entityData) : undefined);
989
- let faceSymbOffset;
990
- const faceSymbLen = ppfb.symbologyLength();
991
- if (0 !== faceSymbLen) {
992
- builder.startSymbologyVector(fbb, faceSymbLen);
993
- for (let i = faceSymbLen - 1; i >= 0; i--) {
994
- const faceSymbFb = ppfb.symbology(i);
995
- if (null === faceSymbFb)
996
- continue;
997
- EGFBAccessors.FaceSymbology.createFaceSymbology(fbb, faceSymbFb.useColor(), faceSymbFb.useMaterial(), faceSymbFb.color(), faceSymbFb.materialId(), faceSymbFb.transparency(), 0, 0);
998
- }
999
- faceSymbOffset = fbb.endVector();
1000
- }
1001
- builder.startBRepData(fbb);
1002
- builder.addBrepType(fbb, ppfb.brepType());
1003
- let transform;
1004
- const entityTransform = ppfb.entityTransform();
1005
- if (null !== entityTransform)
1006
- transform = Transform.createRowValues(entityTransform.x00(), entityTransform.x01(), entityTransform.x02(), entityTransform.tx(), entityTransform.x10(), entityTransform.x11(), entityTransform.x12(), entityTransform.ty(), entityTransform.x20(), entityTransform.x21(), entityTransform.x22(), entityTransform.tz());
1007
- if (undefined !== transform)
1008
- transform.multiplyTransformTransform(inputTransform, transform);
1009
- else
1010
- transform = inputTransform;
1011
- const transformOffset = EGFBAccessors.Transform.createTransform(fbb, transform.matrix.coffs[0], transform.matrix.coffs[1], transform.matrix.coffs[2], transform.origin.x, transform.matrix.coffs[3], transform.matrix.coffs[4], transform.matrix.coffs[5], transform.origin.y, transform.matrix.coffs[6], transform.matrix.coffs[7], transform.matrix.coffs[8], transform.origin.z);
1012
- builder.addEntityTransform(fbb, transformOffset);
1013
- if (undefined !== dataOffset)
1014
- builder.addEntityData(fbb, dataOffset);
1015
- if (undefined !== faceSymbOffset)
1016
- builder.addSymbology(fbb, faceSymbOffset);
1017
- const mLoc = builder.endBRepData(fbb);
1018
- fbb.finish(mLoc);
1019
- entry.data = fbb.asUint8Array();
1020
- return true;
1021
- }
1022
- ElementGeometry.transformBRep = transformBRep;
1023
- /** @internal */
1024
- let StyleMod;
1025
- (function (StyleMod) {
1026
- StyleMod[StyleMod["Scale"] = 1] = "Scale";
1027
- StyleMod[StyleMod["DashScale"] = 2] = "DashScale";
1028
- StyleMod[StyleMod["GapScale"] = 4] = "GapScale";
1029
- StyleMod[StyleMod["StartWidth"] = 8] = "StartWidth";
1030
- StyleMod[StyleMod["EndWidth"] = 16] = "EndWidth";
1031
- StyleMod[StyleMod["DistPhase"] = 32] = "DistPhase";
1032
- StyleMod[StyleMod["FractPhase"] = 64] = "FractPhase";
1033
- StyleMod[StyleMod["CenterPhase"] = 128] = "CenterPhase";
1034
- StyleMod[StyleMod["Normal"] = 256] = "Normal";
1035
- StyleMod[StyleMod["Rotation"] = 512] = "Rotation";
1036
- StyleMod[StyleMod["PhysicalWidth"] = 8192] = "PhysicalWidth";
1037
- StyleMod[StyleMod["SegMode"] = 1073741824] = "SegMode";
1038
- StyleMod[StyleMod["NoSegMode"] = 2147483648] = "NoSegMode";
1039
- })(StyleMod || (StyleMod = {}));
1040
- /** Update the supplied [[GeometryParams]] from an entry with appearance information */
1041
- function updateGeometryParams(entry, geomParams, localToWorld) {
1042
- if (!isAppearanceEntry(entry))
1043
- return false;
1044
- let changed = false;
1045
- switch (entry.opcode) {
1046
- case ElementGeometryOpcode.BasicSymbology: {
1047
- const buffer = new flatbuffers.ByteBuffer(entry.data);
1048
- const ppfb = EGFBAccessors.BasicSymbology.getRootAsBasicSymbology(buffer);
1049
- const subcatLong = ppfb.subCategoryId();
1050
- let subcatId = Id64.fromUint32Pair(subcatLong.low, subcatLong.high);
1051
- if (Id64.isInvalid(subcatId))
1052
- subcatId = geomParams.subCategoryId; // Preserve current sub-category if not explicitly stored...
1053
- if (Id64.isValid(subcatId)) {
1054
- geomParams.setSubCategoryId(subcatId); // Reset to sub-category appearance...
1055
- changed = true;
1056
- }
1057
- if (ppfb.useColor()) {
1058
- const lineColor = ColorDef.fromTbgr(ppfb.color());
1059
- if (undefined === geomParams.lineColor || !lineColor.equals(geomParams.lineColor)) {
1060
- geomParams.lineColor = lineColor;
1061
- changed = true;
1062
- }
1063
- }
1064
- if (ppfb.useWeight()) {
1065
- const weight = ppfb.weight();
1066
- if (undefined === geomParams.weight || weight !== geomParams.weight) {
1067
- geomParams.weight = weight;
1068
- changed = true;
1069
- }
1070
- }
1071
- if (ppfb.useStyle()) {
1072
- const styleLong = ppfb.lineStyleId();
1073
- const styleId = Id64.fromUint32Pair(styleLong.low, styleLong.high);
1074
- if (undefined === geomParams.styleInfo || styleId !== geomParams.styleInfo.styleId) {
1075
- geomParams.styleInfo = new LineStyle.Info(styleId);
1076
- changed = true;
1077
- }
1078
- }
1079
- const transparency = ppfb.transparency();
1080
- if (transparency !== (undefined !== geomParams.elmTransparency ? geomParams.elmTransparency : 0)) {
1081
- geomParams.elmTransparency = transparency;
1082
- changed = true;
1083
- }
1084
- const displayPriority = ppfb.displayPriority();
1085
- if (displayPriority !== (undefined !== geomParams.elmPriority ? geomParams.elmPriority : 0)) {
1086
- geomParams.elmPriority = displayPriority;
1087
- changed = true;
1088
- }
1089
- const geometryClass = ppfb.geomClass();
1090
- if (geometryClass !== (undefined !== geomParams.geometryClass ? geomParams.geometryClass : GeometryClass.Primary)) {
1091
- geomParams.geometryClass = geometryClass;
1092
- changed = true;
1093
- }
1094
- return changed;
1095
- }
1096
- case ElementGeometryOpcode.LineStyleModifiers: {
1097
- const buffer = new flatbuffers.ByteBuffer(entry.data);
1098
- const ppfb = EGFBAccessors.LineStyleModifiers.getRootAsLineStyleModifiers(buffer);
1099
- const props = {};
1100
- if (0 !== (ppfb.modifiers() & StyleMod.Scale))
1101
- props.scale = ppfb.scale();
1102
- if (0 !== (ppfb.modifiers() & StyleMod.GapScale))
1103
- props.gapScale = ppfb.gapScale();
1104
- if (0 !== (ppfb.modifiers() & StyleMod.DashScale))
1105
- props.dashScale = ppfb.dashScale();
1106
- if (0 !== (ppfb.modifiers() & StyleMod.StartWidth))
1107
- props.startWidth = ppfb.startWidth();
1108
- if (0 !== (ppfb.modifiers() & StyleMod.EndWidth))
1109
- props.endWidth = ppfb.endWidth();
1110
- if (0 !== (ppfb.modifiers() & StyleMod.DistPhase))
1111
- props.distPhase = ppfb.distPhase();
1112
- if (0 !== (ppfb.modifiers() & StyleMod.FractPhase))
1113
- props.fractPhase = ppfb.fractPhase();
1114
- if (0 !== (ppfb.modifiers() & StyleMod.CenterPhase))
1115
- props.centerPhase = true;
1116
- if (0 !== (ppfb.modifiers() & StyleMod.SegMode))
1117
- props.segmentMode = true;
1118
- else if (0 !== (ppfb.modifiers() & StyleMod.NoSegMode))
1119
- props.segmentMode = false;
1120
- if (0 !== (ppfb.modifiers() & StyleMod.PhysicalWidth))
1121
- props.physicalWidth = true;
1122
- if (0 !== (ppfb.modifiers() & StyleMod.Normal)) {
1123
- const normal = ppfb.normal();
1124
- if (null !== normal)
1125
- props.normal = Vector3d.create(normal.x(), normal.y(), normal.z());
1126
- }
1127
- if (0 !== (ppfb.modifiers() & StyleMod.Rotation))
1128
- props.rotation = YawPitchRollAngles.createDegrees(ppfb.yaw(), ppfb.pitch(), ppfb.roll());
1129
- const styleMod = new LineStyle.Modifier(props);
1130
- if (undefined !== localToWorld)
1131
- styleMod.applyTransform(localToWorld);
1132
- if (undefined === geomParams.styleInfo) {
1133
- geomParams.styleInfo = new LineStyle.Info(Id64.invalid, styleMod);
1134
- changed = true;
1135
- }
1136
- else if (undefined === geomParams.styleInfo.styleMod || !styleMod.equals(geomParams.styleInfo.styleMod)) {
1137
- geomParams.styleInfo.styleMod = styleMod;
1138
- changed = true;
1139
- }
1140
- return changed;
1141
- }
1142
- case ElementGeometryOpcode.Fill: {
1143
- const buffer = new flatbuffers.ByteBuffer(entry.data);
1144
- const ppfb = EGFBAccessors.AreaFill.getRootAsAreaFill(buffer);
1145
- const toFillDisplay = (fill) => {
1146
- switch (fill) {
1147
- case EGFBAccessors.FillDisplay.ByView:
1148
- return FillDisplay.ByView;
1149
- case EGFBAccessors.FillDisplay.Always:
1150
- return FillDisplay.Always;
1151
- case EGFBAccessors.FillDisplay.Blanking:
1152
- return FillDisplay.Blanking;
1153
- default:
1154
- return FillDisplay.Never;
1155
- }
1156
- };
1157
- const fillDisplay = toFillDisplay(ppfb.fill());
1158
- if (fillDisplay !== (undefined !== geomParams.fillDisplay ? geomParams.fillDisplay : FillDisplay.Never)) {
1159
- geomParams.fillDisplay = fillDisplay;
1160
- changed = true;
1161
- }
1162
- if (FillDisplay.Never === fillDisplay)
1163
- return changed;
1164
- const transparency = ppfb.transparency();
1165
- if (transparency !== (undefined !== geomParams.fillTransparency ? geomParams.fillTransparency : 0)) {
1166
- geomParams.fillTransparency = transparency;
1167
- changed = true;
1168
- }
1169
- if (EGFBAccessors.GradientMode.None !== ppfb.mode()) {
1170
- const toGradientMode = (mode) => {
1171
- switch (mode) {
1172
- case EGFBAccessors.GradientMode.Linear:
1173
- return Gradient.Mode.Linear;
1174
- case EGFBAccessors.GradientMode.Curved:
1175
- return Gradient.Mode.Curved;
1176
- case EGFBAccessors.GradientMode.Cylindrical:
1177
- return Gradient.Mode.Cylindrical;
1178
- case EGFBAccessors.GradientMode.Spherical:
1179
- return Gradient.Mode.Spherical;
1180
- case EGFBAccessors.GradientMode.Hemispherical:
1181
- return Gradient.Mode.Hemispherical;
1182
- case EGFBAccessors.GradientMode.Thematic:
1183
- return Gradient.Mode.Thematic;
1184
- default:
1185
- return Gradient.Mode.None;
1186
- }
1187
- };
1188
- const keys = [];
1189
- const colors = ppfb.colorsArray();
1190
- const values = ppfb.valuesArray();
1191
- if (null !== colors && null !== values && colors.length === values.length) {
1192
- for (let iKey = 0; iKey < colors.length; ++iKey)
1193
- keys.push({ value: values[iKey], color: colors[iKey] });
1194
- }
1195
- const props = { mode: toGradientMode(ppfb.mode()), keys };
1196
- const flags = ppfb.flags();
1197
- const angle = ppfb.angle();
1198
- const tint = ppfb.tint();
1199
- const shift = ppfb.shift();
1200
- props.flags = (0 !== flags ? flags : undefined);
1201
- props.angle = (0 !== angle ? { radians: angle } : undefined);
1202
- props.tint = (0 !== tint ? tint : undefined);
1203
- props.shift = (0 !== shift ? shift : undefined);
1204
- if (Gradient.Mode.Thematic === props.mode) {
1205
- const thematic = ppfb.thematicSettings();
1206
- if (null !== thematic) {
1207
- const tprops = {};
1208
- const mode = thematic.mode();
1209
- const stepCount = thematic.stepCount();
1210
- const marginColor = thematic.marginColor();
1211
- const colorScheme = thematic.colorScheme();
1212
- tprops.mode = (0 !== mode ? mode : undefined);
1213
- tprops.stepCount = (0 !== stepCount ? stepCount : undefined);
1214
- tprops.marginColor = (0 !== marginColor ? marginColor : undefined);
1215
- tprops.colorScheme = (0 !== colorScheme ? colorScheme : undefined);
1216
- props.thematicSettings = tprops;
1217
- }
1218
- }
1219
- const gradient = Gradient.Symb.fromJSON(props);
1220
- if (undefined === geomParams.gradient || !gradient.equals(geomParams.gradient)) {
1221
- geomParams.gradient = gradient;
1222
- changed = true;
1223
- }
1224
- }
1225
- else if (0 !== ppfb.backgroundFill()) {
1226
- const backgroundFill = (2 === ppfb.backgroundFill() ? BackgroundFill.Outline : BackgroundFill.Solid);
1227
- if (backgroundFill !== geomParams.backgroundFill) {
1228
- geomParams.backgroundFill = backgroundFill;
1229
- changed = true;
1230
- }
1231
- }
1232
- else if (ppfb.useColor()) {
1233
- const fillColor = ColorDef.fromTbgr(ppfb.color());
1234
- if (undefined === geomParams.fillColor || !fillColor.equals(geomParams.fillColor)) {
1235
- geomParams.fillColor = fillColor;
1236
- changed = true;
1237
- }
1238
- }
1239
- return changed;
1240
- }
1241
- case ElementGeometryOpcode.Pattern: {
1242
- const buffer = new flatbuffers.ByteBuffer(entry.data);
1243
- const ppfb = EGFBAccessors.AreaPattern.getRootAsAreaPattern(buffer);
1244
- const props = {};
1245
- const origin = ppfb.origin();
1246
- if (null !== origin) {
1247
- const point = Point3d.create(origin.x(), origin.y(), origin.z());
1248
- if (!point.isAlmostZero)
1249
- props.origin = point;
1250
- }
1251
- const rotation = ppfb.rotation();
1252
- if (null !== rotation) {
1253
- const angles = YawPitchRollAngles.createFromMatrix3d(Matrix3d.createRowValues(rotation.x00(), rotation.x01(), rotation.x02(), rotation.x10(), rotation.x11(), rotation.x12(), rotation.x20(), rotation.x21(), rotation.x22()));
1254
- if (undefined !== angles && !angles.isIdentity())
1255
- props.rotation = angles;
1256
- }
1257
- const space1 = ppfb.space1();
1258
- const space2 = ppfb.space2();
1259
- const angle1 = ppfb.angle1();
1260
- const angle2 = ppfb.angle2();
1261
- const scale = ppfb.scale();
1262
- props.space1 = (0 !== space1 ? space1 : undefined);
1263
- props.space2 = (0 !== space2 ? space2 : undefined);
1264
- props.angle1 = (0 !== angle1 ? { radians: angle1 } : undefined);
1265
- props.angle2 = (0 !== angle2 ? { radians: angle2 } : undefined);
1266
- props.scale = (0 !== scale ? scale : undefined);
1267
- if (ppfb.useColor())
1268
- props.color = ppfb.color();
1269
- if (ppfb.useWeight())
1270
- props.weight = ppfb.weight();
1271
- props.invisibleBoundary = (1 === ppfb.invisibleBoundary() ? true : undefined);
1272
- props.snappable = (1 === ppfb.snappable() ? true : undefined);
1273
- const symbolId = Id64.fromUint32Pair(ppfb.symbolId().low, ppfb.symbolId().high);
1274
- props.symbolId = (Id64.isValid(symbolId) ? symbolId : undefined);
1275
- const nDefLines = ppfb.defLineLength();
1276
- if (0 !== nDefLines) {
1277
- const defLines = [];
1278
- for (let iLine = 0; iLine < nDefLines; ++iLine) {
1279
- const defLine = ppfb.defLine(iLine);
1280
- if (!defLine)
1281
- continue;
1282
- const line = {};
1283
- const angle = defLine.angle();
1284
- line.angle = (0 !== angle ? { radians: defLine.angle() } : undefined);
1285
- const through = defLine.through();
1286
- if (through) {
1287
- const thr = Point2d.create(through.x(), through.y());
1288
- if (!thr.isAlmostZero)
1289
- line.through = thr;
1290
- }
1291
- const offset = defLine.offset();
1292
- if (offset) {
1293
- const off = Point2d.create(offset.x(), offset.y());
1294
- if (!off.isAlmostZero)
1295
- line.offset = off;
1296
- }
1297
- const dashArray = defLine.dashesArray();
1298
- if (0 !== defLine.dashesLength() && null !== dashArray) {
1299
- const dashes = [];
1300
- for (const value of dashArray) {
1301
- dashes.push(value);
1302
- }
1303
- line.dashes = dashes;
1304
- }
1305
- defLines.push(line);
1306
- }
1307
- props.defLines = defLines;
1308
- }
1309
- const pattern = AreaPattern.Params.fromJSON(props);
1310
- if (undefined !== localToWorld)
1311
- pattern.applyTransform(localToWorld);
1312
- if (undefined === geomParams.pattern || !pattern.equals(geomParams.pattern)) {
1313
- geomParams.pattern = pattern;
1314
- changed = true;
1315
- }
1316
- return changed;
1317
- }
1318
- case ElementGeometryOpcode.Material: {
1319
- const buffer = new flatbuffers.ByteBuffer(entry.data);
1320
- const ppfb = EGFBAccessors.Material.getRootAsMaterial(buffer);
1321
- if (ppfb.useMaterial()) {
1322
- const matLong = ppfb.materialId();
1323
- const materialId = Id64.fromUint32Pair(matLong.low, matLong.high);
1324
- if (undefined === geomParams.materialId || materialId !== geomParams.materialId) {
1325
- geomParams.materialId = materialId;
1326
- changed = true;
1327
- }
1328
- }
1329
- return changed;
1330
- }
1331
- default:
1332
- return changed;
1333
- }
1334
- }
1335
- ElementGeometry.updateGeometryParams = updateGeometryParams;
1336
- /** Append entries to represent a [[GeometryParams]] */
1337
- function appendGeometryParams(geomParams, entries, worldToLocal) {
1338
- const fbbBas = new flatbuffers.Builder();
1339
- const builder = EGFBAccessors.BasicSymbology;
1340
- builder.startBasicSymbology(fbbBas);
1341
- const subcatIdPair = Id64.getUint32Pair(geomParams.subCategoryId);
1342
- builder.addSubCategoryId(fbbBas, flatbuffers.Long.create(subcatIdPair.lower, subcatIdPair.upper));
1343
- if (undefined !== geomParams.lineColor) {
1344
- builder.addColor(fbbBas, geomParams.lineColor.tbgr);
1345
- builder.addUseColor(fbbBas, 1);
1346
- }
1347
- if (undefined !== geomParams.weight) {
1348
- builder.addWeight(fbbBas, geomParams.weight);
1349
- builder.addUseWeight(fbbBas, 1);
1350
- }
1351
- if (undefined !== geomParams.styleInfo) {
1352
- const styleIdPair = Id64.getUint32Pair(geomParams.styleInfo.styleId);
1353
- builder.addLineStyleId(fbbBas, flatbuffers.Long.create(styleIdPair.lower, styleIdPair.upper));
1354
- builder.addUseStyle(fbbBas, 1);
1355
- }
1356
- if (undefined !== geomParams.elmTransparency && 0 !== geomParams.elmTransparency) {
1357
- builder.addTransparency(fbbBas, geomParams.elmTransparency);
1358
- }
1359
- if (undefined !== geomParams.elmPriority && 0 !== geomParams.elmPriority) {
1360
- builder.addDisplayPriority(fbbBas, geomParams.elmPriority);
1361
- }
1362
- if (undefined !== geomParams.geometryClass && GeometryClass.Primary !== geomParams.geometryClass) {
1363
- builder.addGeomClass(fbbBas, geomParams.geometryClass);
1364
- }
1365
- const mLoc = builder.endBasicSymbology(fbbBas);
1366
- fbbBas.finish(mLoc);
1367
- const data = fbbBas.asUint8Array();
1368
- entries.push({ opcode: ElementGeometryOpcode.BasicSymbology, data });
1369
- if (undefined !== geomParams.styleInfo && undefined !== geomParams.styleInfo.styleMod) {
1370
- const fbbLS = new flatbuffers.Builder();
1371
- const builderLS = EGFBAccessors.LineStyleModifiers;
1372
- builderLS.startLineStyleModifiers(fbbLS);
1373
- let lsMods = geomParams.styleInfo.styleMod;
1374
- if (undefined !== worldToLocal) {
1375
- lsMods = new LineStyle.Modifier(lsMods);
1376
- if (!lsMods.applyTransform(worldToLocal))
1377
- return false;
1378
- }
1379
- let modifiers = 0;
1380
- if (undefined !== lsMods.scale) {
1381
- builderLS.addScale(fbbLS, lsMods.scale);
1382
- modifiers |= StyleMod.Scale;
1383
- }
1384
- if (undefined !== lsMods.dashScale) {
1385
- builderLS.addDashScale(fbbLS, lsMods.dashScale);
1386
- modifiers |= StyleMod.DashScale;
1387
- }
1388
- if (undefined !== lsMods.gapScale) {
1389
- builderLS.addGapScale(fbbLS, lsMods.gapScale);
1390
- modifiers |= StyleMod.GapScale;
1391
- }
1392
- if (undefined !== lsMods.startWidth) {
1393
- builderLS.addStartWidth(fbbLS, lsMods.startWidth);
1394
- modifiers |= StyleMod.StartWidth;
1395
- }
1396
- if (undefined !== lsMods.endWidth) {
1397
- builderLS.addEndWidth(fbbLS, lsMods.endWidth);
1398
- modifiers |= StyleMod.EndWidth;
1399
- }
1400
- if (undefined !== lsMods.distPhase) {
1401
- builderLS.addDistPhase(fbbLS, lsMods.distPhase);
1402
- modifiers |= StyleMod.DistPhase;
1403
- }
1404
- if (undefined !== lsMods.fractPhase) {
1405
- builderLS.addFractPhase(fbbLS, lsMods.fractPhase);
1406
- modifiers |= StyleMod.FractPhase;
1407
- }
1408
- if (lsMods.centerPhase) {
1409
- modifiers |= StyleMod.CenterPhase;
1410
- }
1411
- if (undefined !== lsMods.segmentMode) {
1412
- modifiers |= (lsMods.segmentMode ? StyleMod.SegMode : StyleMod.NoSegMode);
1413
- }
1414
- if (lsMods.physicalWidth) {
1415
- modifiers |= StyleMod.PhysicalWidth;
1416
- }
1417
- if (undefined !== lsMods.normal) {
1418
- const normalOffset = EGFBAccessors.DVec3d.createDVec3d(fbbLS, lsMods.normal.x, lsMods.normal.y, lsMods.normal.z);
1419
- builderLS.addNormal(fbbLS, normalOffset);
1420
- modifiers |= StyleMod.Normal;
1421
- }
1422
- if (undefined !== lsMods.rotation) {
1423
- builderLS.addYaw(fbbLS, lsMods.rotation.yaw.degrees);
1424
- builderLS.addPitch(fbbLS, lsMods.rotation.pitch.degrees);
1425
- builderLS.addRoll(fbbLS, lsMods.rotation.roll.degrees);
1426
- modifiers |= StyleMod.Rotation;
1427
- }
1428
- builderLS.addModifiers(fbbLS, modifiers);
1429
- const mLocLS = builderLS.endLineStyleModifiers(fbbLS);
1430
- fbbLS.finish(mLocLS);
1431
- const dataLS = fbbLS.asUint8Array();
1432
- if (0 !== modifiers)
1433
- entries.push({ opcode: ElementGeometryOpcode.LineStyleModifiers, data: dataLS });
1434
- }
1435
- if (undefined !== geomParams.fillDisplay && FillDisplay.Never !== geomParams.fillDisplay) {
1436
- const fbbFill = new flatbuffers.Builder();
1437
- const builderFill = EGFBAccessors.AreaFill;
1438
- let keyValuesOff;
1439
- let keyColorsOff;
1440
- let thematicOffset;
1441
- if (undefined !== geomParams.gradient) {
1442
- const keyColors = [];
1443
- const keyValues = [];
1444
- for (const key of geomParams.gradient.keys) {
1445
- keyColors.push(key.color.tbgr);
1446
- keyValues.push(key.value);
1447
- }
1448
- keyValuesOff = builderFill.createValuesVector(fbbFill, keyValues);
1449
- keyColorsOff = builderFill.createColorsVector(fbbFill, keyColors);
1450
- if (Gradient.Mode.Thematic === geomParams.gradient.mode && undefined !== geomParams.gradient.thematicSettings) {
1451
- const thematic = geomParams.gradient.thematicSettings;
1452
- const builderThematic = EGFBAccessors.ThematicSettings;
1453
- builderThematic.startThematicSettings(fbbFill);
1454
- builderThematic.addMode(fbbFill, thematic.mode);
1455
- builderThematic.addStepCount(fbbFill, thematic.stepCount);
1456
- builderThematic.addMarginColor(fbbFill, thematic.marginColor.tbgr);
1457
- builderThematic.addColorScheme(fbbFill, thematic.colorScheme);
1458
- const rangeOffset = EGFBAccessors.DRange1d.createDRange1d(fbbFill, ThematicGradientSettings.contentRange, ThematicGradientSettings.contentMax);
1459
- builderThematic.addRange(fbbFill, rangeOffset);
1460
- thematicOffset = builderThematic.endThematicSettings(fbbFill);
1461
- }
1462
- }
1463
- builderFill.startAreaFill(fbbFill);
1464
- const toEGFBFillDisplay = (fill) => {
1465
- switch (fill) {
1466
- case FillDisplay.ByView:
1467
- return EGFBAccessors.FillDisplay.ByView;
1468
- case FillDisplay.Always:
1469
- return EGFBAccessors.FillDisplay.Always;
1470
- case FillDisplay.Blanking:
1471
- return EGFBAccessors.FillDisplay.Blanking;
1472
- default:
1473
- return EGFBAccessors.FillDisplay.None;
1474
- }
1475
- };
1476
- builderFill.addFill(fbbFill, toEGFBFillDisplay(geomParams.fillDisplay));
1477
- if (undefined !== geomParams.fillTransparency)
1478
- builderFill.addTransparency(fbbFill, geomParams.fillTransparency);
1479
- if (undefined !== geomParams.gradient) {
1480
- const toEGFBGradientMode = (mode) => {
1481
- switch (mode) {
1482
- case Gradient.Mode.Linear:
1483
- return EGFBAccessors.GradientMode.Linear;
1484
- case Gradient.Mode.Curved:
1485
- return EGFBAccessors.GradientMode.Curved;
1486
- case Gradient.Mode.Cylindrical:
1487
- return EGFBAccessors.GradientMode.Cylindrical;
1488
- case Gradient.Mode.Spherical:
1489
- return EGFBAccessors.GradientMode.Spherical;
1490
- case Gradient.Mode.Hemispherical:
1491
- return EGFBAccessors.GradientMode.Hemispherical;
1492
- case Gradient.Mode.Thematic:
1493
- return EGFBAccessors.GradientMode.Thematic;
1494
- default:
1495
- return EGFBAccessors.GradientMode.None;
1496
- }
1497
- };
1498
- builderFill.addMode(fbbFill, toEGFBGradientMode(geomParams.gradient.mode));
1499
- builderFill.addFlags(fbbFill, geomParams.gradient.flags);
1500
- builderFill.addShift(fbbFill, geomParams.gradient.shift);
1501
- if (undefined !== geomParams.gradient.tint)
1502
- builderFill.addTint(fbbFill, geomParams.gradient.tint);
1503
- if (undefined !== geomParams.gradient.angle)
1504
- builderFill.addAngle(fbbFill, geomParams.gradient.angle.radians);
1505
- if (undefined !== keyValuesOff)
1506
- builderFill.addValues(fbbFill, keyValuesOff);
1507
- if (undefined !== keyColorsOff)
1508
- builderFill.addColors(fbbFill, keyColorsOff);
1509
- if (undefined !== thematicOffset)
1510
- builderFill.addThematicSettings(fbbFill, thematicOffset);
1511
- }
1512
- else if (undefined !== geomParams.backgroundFill && BackgroundFill.None !== geomParams.backgroundFill) {
1513
- builderFill.addBackgroundFill(fbbFill, BackgroundFill.Outline === geomParams.backgroundFill ? 2 : 1);
1514
- }
1515
- else if (undefined !== geomParams.fillColor) {
1516
- builderFill.addColor(fbbFill, geomParams.fillColor.tbgr);
1517
- builderFill.addUseColor(fbbFill, 1);
1518
- }
1519
- const mLocFill = builderFill.endAreaFill(fbbFill);
1520
- fbbFill.finish(mLocFill);
1521
- const dataFill = fbbFill.asUint8Array();
1522
- entries.push({ opcode: ElementGeometryOpcode.Fill, data: dataFill });
1523
- }
1524
- if (undefined !== geomParams.pattern) {
1525
- const fbbPat = new flatbuffers.Builder();
1526
- const builderPat = EGFBAccessors.AreaPattern;
1527
- let pattern = geomParams.pattern;
1528
- if (undefined !== worldToLocal) {
1529
- pattern = pattern.clone();
1530
- if (!pattern.applyTransform(worldToLocal))
1531
- return false;
1532
- }
1533
- let defLineVecOffset;
1534
- if (undefined !== pattern.defLines) {
1535
- const defLines = pattern.defLines;
1536
- const builderDefLines = EGFBAccessors.DwgHatchDefLine;
1537
- const defLineOffsets = [];
1538
- for (const line of defLines) {
1539
- let dashOffset;
1540
- if (undefined !== line.dashes)
1541
- dashOffset = builderDefLines.createDashesVector(fbbPat, line.dashes);
1542
- builderDefLines.startDwgHatchDefLine(fbbPat);
1543
- if (undefined !== line.angle)
1544
- builderDefLines.addAngle(fbbPat, line.angle.radians);
1545
- // NOTE: Backend requires through and offset to be present...
1546
- const throughOffset = EGFBAccessors.DPoint2d.createDPoint2d(fbbPat, undefined !== line.through ? line.through.x : 0, undefined !== line.through ? line.through.y : 0);
1547
- builderDefLines.addThrough(fbbPat, throughOffset);
1548
- const offsetOffset = EGFBAccessors.DPoint2d.createDPoint2d(fbbPat, undefined !== line.offset ? line.offset.x : 0, undefined !== line.offset ? line.offset.y : 0);
1549
- builderDefLines.addOffset(fbbPat, offsetOffset);
1550
- if (undefined !== dashOffset)
1551
- builderDefLines.addDashes(fbbPat, dashOffset);
1552
- defLineOffsets.push(builderDefLines.endDwgHatchDefLine(fbbPat));
1553
- }
1554
- if (0 !== defLineOffsets.length)
1555
- defLineVecOffset = builderPat.createDefLineVector(fbbPat, defLineOffsets);
1556
- }
1557
- builderPat.startAreaPattern(fbbPat);
1558
- if (undefined !== pattern.origin) {
1559
- const originOffset = EGFBAccessors.DPoint3d.createDPoint3d(fbbPat, pattern.origin.x, pattern.origin.y, pattern.origin.z);
1560
- builderPat.addOrigin(fbbPat, originOffset);
1561
- }
1562
- if (undefined !== pattern.rotation) {
1563
- const matrix = pattern.rotation.toMatrix3d();
1564
- const coffs = matrix.coffs;
1565
- const rotationOffset = EGFBAccessors.RotMatrix.createRotMatrix(fbbPat, coffs[0], coffs[1], coffs[2], coffs[3], coffs[4], coffs[5], coffs[6], coffs[7], coffs[8]);
1566
- builderPat.addRotation(fbbPat, rotationOffset);
1567
- }
1568
- if (undefined !== pattern.space1)
1569
- builderPat.addSpace1(fbbPat, pattern.space1);
1570
- if (undefined !== pattern.space2)
1571
- builderPat.addSpace2(fbbPat, pattern.space2);
1572
- if (undefined !== pattern.angle1)
1573
- builderPat.addAngle1(fbbPat, pattern.angle1.radians);
1574
- if (undefined !== pattern.angle2)
1575
- builderPat.addAngle2(fbbPat, pattern.angle2.radians);
1576
- if (undefined !== pattern.scale)
1577
- builderPat.addScale(fbbPat, pattern.scale);
1578
- if (undefined !== pattern.color) {
1579
- builderPat.addColor(fbbPat, pattern.color.tbgr);
1580
- builderPat.addUseColor(fbbPat, 1);
1581
- }
1582
- if (undefined !== pattern.weight) {
1583
- builderPat.addWeight(fbbPat, pattern.weight);
1584
- builderPat.addUseWeight(fbbPat, 1);
1585
- }
1586
- if (undefined !== pattern.invisibleBoundary && pattern.invisibleBoundary)
1587
- builderPat.addInvisibleBoundary(fbbPat, 1);
1588
- if (undefined !== pattern.snappable && pattern.snappable)
1589
- builderPat.addSnappable(fbbPat, 1);
1590
- if (undefined !== pattern.symbolId) {
1591
- const symbolIdPair = Id64.getUint32Pair(pattern.symbolId);
1592
- builderPat.addSymbolId(fbbPat, flatbuffers.Long.create(symbolIdPair.lower, symbolIdPair.upper));
1593
- }
1594
- if (undefined !== defLineVecOffset)
1595
- builderPat.addDefLine(fbbPat, defLineVecOffset);
1596
- const mLocPat = builderPat.endAreaPattern(fbbPat);
1597
- fbbPat.finish(mLocPat);
1598
- const dataPat = fbbPat.asUint8Array();
1599
- entries.push({ opcode: ElementGeometryOpcode.Pattern, data: dataPat });
1600
- }
1601
- if (undefined !== geomParams.materialId) {
1602
- const fbbMat = new flatbuffers.Builder();
1603
- const builderMat = EGFBAccessors.Material;
1604
- builderMat.startMaterial(fbbMat);
1605
- const matIdPair = Id64.getUint32Pair(geomParams.materialId);
1606
- builderMat.addMaterialId(fbbMat, flatbuffers.Long.create(matIdPair.lower, matIdPair.upper));
1607
- builderMat.addUseMaterial(fbbMat, 1);
1608
- const mLocMat = builderMat.endMaterial(fbbMat);
1609
- fbbMat.finish(mLocMat);
1610
- const dataMat = fbbMat.asUint8Array();
1611
- entries.push({ opcode: ElementGeometryOpcode.Material, data: dataMat });
1612
- }
1613
- return true;
1614
- }
1615
- ElementGeometry.appendGeometryParams = appendGeometryParams;
1616
- /** Return entry as [[GeometryPart]] id and instance transform */
1617
- function toGeometryPart(entry, partToElement) {
1618
- if (ElementGeometryOpcode.PartReference !== entry.opcode)
1619
- return undefined;
1620
- const buffer = new flatbuffers.ByteBuffer(entry.data);
1621
- const ppfb = EGFBAccessors.GeometryPart.getRootAsGeometryPart(buffer);
1622
- const partLong = ppfb.geomPartId();
1623
- const partId = Id64.fromUint32Pair(partLong.low, partLong.high);
1624
- if (undefined !== partToElement) {
1625
- let origin;
1626
- const originfb = ppfb.origin();
1627
- if (null !== originfb)
1628
- origin = Point3d.create(originfb.x(), originfb.y(), originfb.z());
1629
- else
1630
- origin = Point3d.createZero();
1631
- const angles = YawPitchRollAngles.createDegrees(ppfb.yaw(), ppfb.pitch(), ppfb.roll());
1632
- const matrix = angles.toMatrix3d();
1633
- if (1.0 !== ppfb.scale())
1634
- matrix.scaleColumnsInPlace(ppfb.scale(), ppfb.scale(), ppfb.scale());
1635
- Transform.createOriginAndMatrix(origin, matrix, partToElement);
1636
- }
1637
- return partId;
1638
- }
1639
- ElementGeometry.toGeometryPart = toGeometryPart;
1640
- /** Create entry from a [[GeometryPart]] id and instance transform */
1641
- function fromGeometryPart(partId, partTransform, worldToLocal) {
1642
- let partToElement = partTransform;
1643
- if (undefined !== worldToLocal)
1644
- partToElement = worldToLocal.multiplyTransformTransform(undefined !== partTransform ? partTransform : Transform.createIdentity());
1645
- const fbb = new flatbuffers.Builder();
1646
- const builder = EGFBAccessors.GeometryPart;
1647
- builder.startGeometryPart(fbb);
1648
- const idPair = Id64.getUint32Pair(partId);
1649
- builder.addGeomPartId(fbb, flatbuffers.Long.create(idPair.lower, idPair.upper));
1650
- if (undefined !== partToElement && !partToElement.isIdentity) {
1651
- const originOffset = EGFBAccessors.DPoint3d.createDPoint3d(fbb, partToElement.origin.x, partToElement.origin.y, partToElement.origin.z);
1652
- builder.addOrigin(fbb, originOffset);
1653
- const angles = YawPitchRollAngles.createFromMatrix3d(partToElement.matrix);
1654
- if (undefined !== angles) {
1655
- builder.addYaw(fbb, angles.yaw.degrees);
1656
- builder.addPitch(fbb, angles.pitch.degrees);
1657
- builder.addRoll(fbb, angles.roll.degrees);
1658
- }
1659
- const result = partToElement.matrix.factorRigidWithSignedScale();
1660
- if (undefined !== result && result.scale > 0.0)
1661
- builder.addScale(fbb, result.scale);
1662
- }
1663
- const mLoc = builder.endGeometryPart(fbb);
1664
- fbb.finish(mLoc);
1665
- const data = fbb.asUint8Array();
1666
- return { opcode: ElementGeometryOpcode.PartReference, data };
1667
- }
1668
- ElementGeometry.fromGeometryPart = fromGeometryPart;
1669
- /** Return entry as a [[ElementAlignedBox3d]] representing the local range of a geometric entry */
1670
- function toSubGraphicRange(entry) {
1671
- if (ElementGeometryOpcode.SubGraphicRange !== entry.opcode)
1672
- return undefined;
1673
- const buffer = new flatbuffers.ByteBuffer(entry.data);
1674
- const ppfb = EGFBAccessors.PointPrimitive.getRootAsPointPrimitive(buffer);
1675
- if (2 !== ppfb.coordsLength())
1676
- return undefined;
1677
- const low = Point3d.create(ppfb.coords(0).x(), ppfb.coords(0).y(), ppfb.coords(0).z());
1678
- const high = Point3d.create(ppfb.coords(1).x(), ppfb.coords(1).y(), ppfb.coords(1).z());
1679
- return Range3d.create(low, high);
1680
- }
1681
- ElementGeometry.toSubGraphicRange = toSubGraphicRange;
1682
- /** Create entry from a [[ElementAlignedBox3d]] to compute and store local ranges for subsequent geometric entries */
1683
- function fromSubGraphicRange(bbox) {
1684
- const fbb = new flatbuffers.Builder();
1685
- const builder = EGFBAccessors.PointPrimitive;
1686
- builder.startCoordsVector(fbb, 2);
1687
- fbb.addFloat64(bbox.high.z);
1688
- fbb.addFloat64(bbox.high.y);
1689
- fbb.addFloat64(bbox.high.x);
1690
- fbb.addFloat64(bbox.low.z);
1691
- fbb.addFloat64(bbox.low.y);
1692
- fbb.addFloat64(bbox.low.x);
1693
- const offset = fbb.endVector();
1694
- builder.startPointPrimitive(fbb);
1695
- builder.addCoords(fbb, offset);
1696
- const mLoc = builder.endPointPrimitive(fbb);
1697
- fbb.finish(mLoc);
1698
- const data = fbb.asUint8Array();
1699
- return { opcode: ElementGeometryOpcode.SubGraphicRange, data };
1700
- }
1701
- ElementGeometry.fromSubGraphicRange = fromSubGraphicRange;
1702
- /** Create [[Transform]] from row-major storage 4x3 Float64Array */
1703
- function toTransform(sourceToWorld) {
1704
- if (12 !== sourceToWorld.length)
1705
- return undefined;
1706
- return Transform.createRowValues(sourceToWorld[0], sourceToWorld[1], sourceToWorld[2], sourceToWorld[3], sourceToWorld[4], sourceToWorld[5], sourceToWorld[6], sourceToWorld[7], sourceToWorld[8], sourceToWorld[9], sourceToWorld[10], sourceToWorld[11]);
1707
- }
1708
- ElementGeometry.toTransform = toTransform;
1709
- /** Create [[ElementAlignedBox3d]] from lowX, lowY, lowZ, highX, highY, highZ Float64Array */
1710
- function toElementAlignedBox3d(bbox) {
1711
- if (6 !== bbox.length)
1712
- return undefined;
1713
- return Range3d.fromFloat64Array(bbox);
1714
- }
1715
- ElementGeometry.toElementAlignedBox3d = toElementAlignedBox3d;
1716
- })(ElementGeometry || (ElementGeometry = {}));
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /** @packageDocumentation
6
+ * @module Geometry
7
+ */
8
+ import { flatbuffers } from "flatbuffers";
9
+ import { Id64 } from "@itwin/core-bentley";
10
+ import { Angle, AngleSweep, Arc3d, BentleyGeometryFlatBuffer, FrameBuilder, LineString3d, Loop, Matrix3d, Plane3dByOriginAndUnitNormal, Point2d, Point3d, Point3dArray, PointString3d, PolyfaceQuery, Range3d, Transform, Vector3d, YawPitchRollAngles } from "@itwin/core-geometry";
11
+ import { EGFBAccessors } from "./ElementGeometryFB";
12
+ import { Base64EncodedString } from "../Base64EncodedString";
13
+ import { TextString } from "./TextString";
14
+ import { ColorDef } from "../ColorDef";
15
+ import { BackgroundFill, FillDisplay, GeometryClass, GeometryParams } from "../GeometryParams";
16
+ import { Gradient } from "../Gradient";
17
+ import { ThematicGradientSettings } from "../ThematicDisplay";
18
+ import { AreaPattern } from "./AreaPattern";
19
+ import { BRepEntity } from "./GeometryStream";
20
+ import { ImageGraphic, ImageGraphicCorners } from "./ImageGraphic";
21
+ import { LineStyle } from "./LineStyle";
22
+ import { Placement2d, Placement3d } from "./Placement";
23
+ import { isPlacement2dProps } from "../ElementProps";
24
+ /** Specifies the type of an entry in a geometry stream.
25
+ * @see [[ElementGeometryDataEntry.opcode]].
26
+ * @public
27
+ * @extensions
28
+ */
29
+ export var ElementGeometryOpcode;
30
+ (function (ElementGeometryOpcode) {
31
+ /** Local range of the next geometric primitive in the geometry stream. */
32
+ ElementGeometryOpcode[ElementGeometryOpcode["SubGraphicRange"] = 2] = "SubGraphicRange";
33
+ /** A reference to a [GeometryPart]($backend). */
34
+ ElementGeometryOpcode[ElementGeometryOpcode["PartReference"] = 3] = "PartReference";
35
+ /** Sets symbology for subsequent geometry to override [SubCategory]($backend) appearance */
36
+ ElementGeometryOpcode[ElementGeometryOpcode["BasicSymbology"] = 4] = "BasicSymbology";
37
+ /** A line, line string, shape, or point string (automatic simplification of a [CurvePrimitive]($core-geometry) or [CurveCollection]($core-geometry)) */
38
+ ElementGeometryOpcode[ElementGeometryOpcode["PointPrimitive"] = 5] = "PointPrimitive";
39
+ /** A 2d line, line string, shape, or point string (automatic simplification of a [CurvePrimitive]($core-geometry) or [CurveCollection]($core-geometry)) */
40
+ ElementGeometryOpcode[ElementGeometryOpcode["PointPrimitive2d"] = 6] = "PointPrimitive2d";
41
+ /** Arc or ellipse (automatic simplification of a [CurvePrimitive]($core-geometry) or [CurveCollection]($core-geometry)) */
42
+ ElementGeometryOpcode[ElementGeometryOpcode["ArcPrimitive"] = 7] = "ArcPrimitive";
43
+ /** [CurveCollection]($core-geometry) */
44
+ // eslint-disable-next-line @typescript-eslint/no-shadow
45
+ ElementGeometryOpcode[ElementGeometryOpcode["CurveCollection"] = 8] = "CurveCollection";
46
+ /** [Polyface]($core-geometry) */
47
+ // eslint-disable-next-line @typescript-eslint/no-shadow
48
+ ElementGeometryOpcode[ElementGeometryOpcode["Polyface"] = 9] = "Polyface";
49
+ /** [CurvePrimitive]($core-geometry) */
50
+ ElementGeometryOpcode[ElementGeometryOpcode["CurvePrimitive"] = 10] = "CurvePrimitive";
51
+ /** [SolidPrimitive]($core-geometry) */
52
+ // eslint-disable-next-line @typescript-eslint/no-shadow
53
+ ElementGeometryOpcode[ElementGeometryOpcode["SolidPrimitive"] = 11] = "SolidPrimitive";
54
+ /** [BSplineSurface3d]($core-geometry) */
55
+ ElementGeometryOpcode[ElementGeometryOpcode["BsplineSurface"] = 12] = "BsplineSurface";
56
+ /** Opaque and [[Gradient]] fills. */
57
+ ElementGeometryOpcode[ElementGeometryOpcode["Fill"] = 19] = "Fill";
58
+ /** Hatch, cross-hatch, or [[AreaPattern]]. */
59
+ ElementGeometryOpcode[ElementGeometryOpcode["Pattern"] = 20] = "Pattern";
60
+ /** [[RenderMaterial]] */
61
+ ElementGeometryOpcode[ElementGeometryOpcode["Material"] = 21] = "Material";
62
+ /** [[TextString]] */
63
+ // eslint-disable-next-line @typescript-eslint/no-shadow
64
+ ElementGeometryOpcode[ElementGeometryOpcode["TextString"] = 22] = "TextString";
65
+ /** Specifies line style overrides as a [[LineStyle.Modifier]] */
66
+ ElementGeometryOpcode[ElementGeometryOpcode["LineStyleModifiers"] = 23] = "LineStyleModifiers";
67
+ /** Boundary represention solid, sheet, or wire body as a [[BRepEntity.DataProps]] */
68
+ ElementGeometryOpcode[ElementGeometryOpcode["BRep"] = 25] = "BRep";
69
+ /** Small single-tile raster image as an [[ImageGraphic]] */
70
+ ElementGeometryOpcode[ElementGeometryOpcode["Image"] = 28] = "Image";
71
+ })(ElementGeometryOpcode || (ElementGeometryOpcode = {}));
72
+ /** Values for [[BRepGeometryCreate.operation]]
73
+ * @alpha
74
+ */
75
+ export var BRepGeometryOperation;
76
+ (function (BRepGeometryOperation) {
77
+ /** Unite target (first entry) with one or more tool entities. */
78
+ BRepGeometryOperation[BRepGeometryOperation["Unite"] = 0] = "Unite";
79
+ /** Subtract one or more tool entities from target entity (first entry) */
80
+ BRepGeometryOperation[BRepGeometryOperation["Subtract"] = 1] = "Subtract";
81
+ /** Intersect target (first entry) with one or more tool entities */
82
+ BRepGeometryOperation[BRepGeometryOperation["Intersect"] = 2] = "Intersect";
83
+ /** Sew the given set of surfaces together by joining those that share edges in common */
84
+ BRepGeometryOperation[BRepGeometryOperation["Sew"] = 3] = "Sew";
85
+ /** Create a cut in the target (first entry) using a planar region (second entry) and optional depth */
86
+ BRepGeometryOperation[BRepGeometryOperation["Cut"] = 4] = "Cut";
87
+ /** Create a pad or pocket in the target (first entry) using a planar region (second entry) */
88
+ BRepGeometryOperation[BRepGeometryOperation["Emboss"] = 5] = "Emboss";
89
+ /** Create a solid from a surface by offsetting using the specified forward and backward distances */
90
+ BRepGeometryOperation[BRepGeometryOperation["Thicken"] = 6] = "Thicken";
91
+ /** Create a shelled solid by offsetting all faces by the supplied distance */
92
+ BRepGeometryOperation[BRepGeometryOperation["Hollow"] = 7] = "Hollow";
93
+ /** Create a solid or surface by sweeping a planar profile (first entry) along a path (second entry) */
94
+ BRepGeometryOperation[BRepGeometryOperation["Sweep"] = 8] = "Sweep";
95
+ /** Create a solid or surface by lofting through a set of paths or regions */
96
+ BRepGeometryOperation[BRepGeometryOperation["Loft"] = 9] = "Loft";
97
+ /** Create a solid or sheet with all non-smooth/non-laminar edges rounded */
98
+ BRepGeometryOperation[BRepGeometryOperation["Round"] = 10] = "Round";
99
+ /** Offset all faces of a solid or sheet target by the supplied distance. */
100
+ BRepGeometryOperation[BRepGeometryOperation["Offset"] = 11] = "Offset";
101
+ })(BRepGeometryOperation || (BRepGeometryOperation = {}));
102
+ /** Provides utility functions for working with [[ElementGeometryDataEntry]].
103
+ * @alpha
104
+ */
105
+ export var ElementGeometry;
106
+ (function (ElementGeometry) {
107
+ /** [[ElementGeometry.Builder]] is a helper class for populating a [[ElementGeometryDataEntry]] array needed to create a [[GeometricElement]] or [[GeometryPart]]. */
108
+ class Builder {
109
+ constructor() {
110
+ /** GeometryStream entries */
111
+ this.entries = [];
112
+ }
113
+ /** Current placement transform, converts local coordinate (placement relative) input to world */
114
+ get localToWorld() { return this._localToWorld; }
115
+ /** Current inverse placement transform, converts world coordinate input to local (placement relative) */
116
+ get worldToLocal() { return this._worldToLocal; }
117
+ /** Supply optional local to world transform. Used to transform world coordinate input relative to element placement.
118
+ * For a [[GeometricElement]]'s placement to be meaningful, world coordinate geometry should never be appended to an element with an identity placement.
119
+ * Can be called with undefined or identity transform to start appending geometry supplied in local coordinates again.
120
+ */
121
+ setLocalToWorld(localToWorld) {
122
+ this._localToWorld = (undefined === localToWorld || localToWorld.isIdentity ? undefined : localToWorld.clone());
123
+ this._worldToLocal = (undefined === this._localToWorld ? undefined : this._localToWorld.inverse());
124
+ }
125
+ /** Supply local to world transform from a Point3d and optional YawPitchRollAngles.
126
+ * @see [[Placement3d]]
127
+ */
128
+ setLocalToWorld3d(origin, angles = YawPitchRollAngles.createDegrees(0.0, 0.0, 0.0)) {
129
+ this.setLocalToWorld(Transform.createOriginAndMatrix(origin, angles.toMatrix3d()));
130
+ }
131
+ /** Supply local to world transform from a Point2d and optional Angle.
132
+ * @see [[Placement2d]]
133
+ */
134
+ setLocalToWorld2d(origin, angle = Angle.createDegrees(0.0)) {
135
+ this.setLocalToWorld(Transform.createOriginAndMatrix(Point3d.createFrom(origin), Matrix3d.createRotationAroundVector(Vector3d.unitZ(), angle)));
136
+ }
137
+ /** Supply local to world transform from a PlacementProps2d or PlacementProps3d.
138
+ * @see [[PlacementProps]]
139
+ */
140
+ setLocalToWorldFromPlacement(props) {
141
+ const placement = isPlacement2dProps(props) ? Placement2d.fromJSON(props) : Placement3d.fromJSON(props);
142
+ this.setLocalToWorld(placement.transform);
143
+ }
144
+ /** Compute angles suitable for passing to [[setLocalToWorld3d]] from an array of 3d points. */
145
+ static placementAnglesFromPoints(pts, defaultUp, result) {
146
+ const angles = result ? result : new YawPitchRollAngles();
147
+ const zVec = defaultUp ? defaultUp.clone() : Vector3d.unitZ();
148
+ const matrix = Matrix3d.createRigidHeadsUp(zVec);
149
+ YawPitchRollAngles.createFromMatrix3d(matrix, angles);
150
+ if (pts.length < 2 || pts[0].isAlmostEqual(pts[1]))
151
+ return angles;
152
+ // Check if points have a well defined normal to use instead of defaultUp...
153
+ const frameTransform = FrameBuilder.createFrameToDistantPoints(pts);
154
+ if (undefined !== frameTransform) {
155
+ const plane = Plane3dByOriginAndUnitNormal.create(pts[0], frameTransform.matrix.getColumn(2));
156
+ if (undefined !== plane && Point3dArray.isCloseToPlane(pts, plane))
157
+ zVec.setFrom(plane.getNormalRef());
158
+ }
159
+ const xVec = Vector3d.createStartEnd(pts[0], pts[1]);
160
+ if (xVec.isParallelTo(zVec, true))
161
+ return angles;
162
+ const yVec = xVec.unitCrossProduct(zVec);
163
+ if (undefined === yVec)
164
+ return angles;
165
+ Matrix3d.createColumns(xVec, yVec, zVec, matrix);
166
+ if (undefined === Matrix3d.createRigidFromMatrix3d(matrix, undefined, matrix))
167
+ return angles;
168
+ YawPitchRollAngles.createFromMatrix3d(matrix, angles);
169
+ return angles;
170
+ }
171
+ /** Compute angle suitable for passing to [[setLocalToWorld2d]] from an array of xy plane points. */
172
+ static placementAngleFromPoints(pts, result) {
173
+ const angles = ElementGeometry.Builder.placementAnglesFromPoints(pts);
174
+ if (undefined === result)
175
+ return angles.yaw;
176
+ result.setFrom(angles.yaw);
177
+ return result;
178
+ }
179
+ /** Store local ranges for all subsequent geometry appended. Can improve performance of range testing for elements with a GeometryStream
180
+ * containing more than one [[GeometryQuery]] differentiable by range. Not useful for a single [[GeometryQuery]] as its range and that of the [[GeometricElement]] are the same.
181
+ * Ignored when defining a [[GeometryPart]] and not needed when only appending [[GeometryPart]] instances to a [[GeometricElement]] as these store their own range.
182
+ */
183
+ appendGeometryRanges() {
184
+ const entry = fromSubGraphicRange(Range3d.create()); // Computed on backend, just need opcode...
185
+ if (undefined === entry)
186
+ return false;
187
+ this.entries.push(entry);
188
+ return true;
189
+ }
190
+ /** Change [[GeometryParams]] for subsequent geometry.
191
+ * It is not valid to change the sub-category when defining a [[GeometryPart]]. A [[GeometryPart]] inherits the symbology of their instance for anything not explicitly overridden.
192
+ */
193
+ appendGeometryParamsChange(geomParams) {
194
+ return appendGeometryParams(geomParams, this.entries, this._worldToLocal);
195
+ }
196
+ /** Append a [[GeometryQuery]] supplied in either local or world coordinates to the [[ElementGeometryDataEntry]] array */
197
+ appendGeometryQuery(geometry) {
198
+ const entry = ElementGeometry.fromGeometryQuery(geometry, this._worldToLocal);
199
+ if (undefined === entry)
200
+ return false;
201
+ this.entries.push(entry);
202
+ return true;
203
+ }
204
+ /** Append a [[TextString]] supplied in either local or world coordinates to the [[ElementGeometryDataEntry]] array */
205
+ appendTextString(text) {
206
+ const entry = ElementGeometry.fromTextString(text.toJSON(), this._worldToLocal);
207
+ if (undefined === entry)
208
+ return false;
209
+ this.entries.push(entry);
210
+ return true;
211
+ }
212
+ /** Append a [[ImageGraphic]] supplied in either local or world coordinates to the [[ElementGeometryDataEntry]] array */
213
+ appendImageGraphic(image) {
214
+ const entry = ElementGeometry.fromImageGraphic(image.toJSON(), this._worldToLocal);
215
+ if (undefined === entry)
216
+ return false;
217
+ this.entries.push(entry);
218
+ return true;
219
+ }
220
+ /** Append a [[BRepEntity.DataProps]] supplied in either local or world coordinates to the [[ElementGeometryDataEntry]] array.
221
+ * Provided for compatibility with GeometryStreamBuilder only.
222
+ * Backend code should use IModelDb.createBRepGeometry to create a brep [[ElementGeometryDataEntry]] directly.
223
+ */
224
+ appendBRepData(brep) {
225
+ const entry = ElementGeometry.fromBRep(brep, this._worldToLocal);
226
+ if (undefined === entry)
227
+ return false;
228
+ this.entries.push(entry);
229
+ return true;
230
+ }
231
+ /** Append a [[GeometryPart]] instance with relative transform to the [[ElementGeometryDataEntry]] array for creating a [[GeometricElement]].
232
+ * Not valid when defining a [[GeometryPart]] as nesting of parts is not supported.
233
+ */
234
+ appendGeometryPart(partId, partTransform) {
235
+ const entry = ElementGeometry.fromGeometryPart(partId, partTransform, this._worldToLocal);
236
+ if (undefined === entry)
237
+ return false;
238
+ this.entries.push(entry);
239
+ return true;
240
+ }
241
+ /** Append a [[GeometryPart]] instance with relative position, orientation, and scale to the [[ElementGeometryDataEntry]] array for creating a [[GeometricElement3d]].
242
+ * Not valid when defining a [[GeometryPart]] as nesting of parts is not supported.
243
+ */
244
+ appendGeometryPart3d(partId, instanceOrigin, instanceRotation, instanceScale) {
245
+ const partTransform = Transform.createOriginAndMatrix(instanceOrigin, instanceRotation ? instanceRotation.toMatrix3d() : Matrix3d.createIdentity());
246
+ if (undefined !== instanceScale)
247
+ partTransform.matrix.scaleColumnsInPlace(instanceScale, instanceScale, instanceScale);
248
+ return this.appendGeometryPart(partId, partTransform);
249
+ }
250
+ /** Append a [[GeometryPart]] instance with relative position, orientation, and scale to the [[ElementGeometryDataEntry]] array for creating a [[GeometricElement2d]].
251
+ * Not valid when defining a [[GeometryPart]] as nesting of parts is not supported.
252
+ */
253
+ appendGeometryPart2d(partId, instanceOrigin, instanceRotation, instanceScale) {
254
+ return this.appendGeometryPart3d(partId, instanceOrigin ? Point3d.createFrom(instanceOrigin) : undefined, instanceRotation ? new YawPitchRollAngles(instanceRotation) : undefined, instanceScale);
255
+ }
256
+ }
257
+ ElementGeometry.Builder = Builder;
258
+ class IteratorEntry {
259
+ constructor(geomParams, localToWorld, applyLocalToWorld) {
260
+ this.geomParams = geomParams;
261
+ this.localToWorld = localToWorld;
262
+ this._applyLocalToWorld = applyLocalToWorld ? !localToWorld.isIdentity : false;
263
+ }
264
+ get value() { return this._value; }
265
+ set value(value) { this._value = value; }
266
+ get outputTransform() {
267
+ return this._applyLocalToWorld ? this.localToWorld : undefined;
268
+ }
269
+ /** Return the [[GeometryQuery]] representation for the current entry */
270
+ toGeometryQuery() {
271
+ return toGeometryQuery(this.value, this.outputTransform);
272
+ }
273
+ /** Return the [[BRepEntity.DataProps]] representation for the current entry for checking brep type and face attachments. */
274
+ toBRepData(wantBRepData = false) {
275
+ return toBRep(this.value, wantBRepData, this.outputTransform);
276
+ }
277
+ /** Return the [[TextString]] representation for the current entry */
278
+ toTextString() {
279
+ const props = toTextString(this.value, this.outputTransform);
280
+ return (undefined !== props ? new TextString(props) : undefined);
281
+ }
282
+ /** Return the [[ImageGraphic]] representation for the current entry */
283
+ toImageGraphic() {
284
+ const props = toImageGraphic(this.value, this.outputTransform);
285
+ return (undefined !== props ? ImageGraphic.fromJSON(props) : undefined);
286
+ }
287
+ /** Return the GeometryPart information for the current entry */
288
+ toGeometryPart(partToLocal, partToWorld) {
289
+ if (undefined === partToLocal && undefined !== partToWorld)
290
+ partToLocal = Transform.createIdentity();
291
+ const partId = toGeometryPart(this.value, partToLocal);
292
+ if (undefined === partId || undefined === partToLocal || undefined === partToWorld)
293
+ return partId;
294
+ if (undefined !== this.localToWorld)
295
+ this.localToWorld.multiplyTransformTransform(partToLocal, partToWorld);
296
+ return partId;
297
+ }
298
+ }
299
+ ElementGeometry.IteratorEntry = IteratorEntry;
300
+ /** [[ElementGeometry.Iterator]] is a helper class for iterating a [[ElementGeometryDataEntry]] array.
301
+ * Each [[ElementGeometryDataEntry]] returned by the iterator represents exactly one displayable entry.
302
+ */
303
+ class Iterator {
304
+ /** Construct a new Iterator given a [[ElementGeometryInfo]] from either a [[GeometricElement3d]], [[GeometricElement2d]], or [[GeometryPart]].
305
+ * Supply the optional [[GeometryParams]] and localToWorld transform to iterate a [[GeometryPart]] in the context of a [[GeometricElement]] reference.
306
+ */
307
+ constructor(info, categoryOrGeometryParams, localToWorld) {
308
+ /** Current entry position */
309
+ this._index = 0;
310
+ /** Whether deserialized entry data is returned in world or local coordinates */
311
+ this._applyLocalToWorld = false;
312
+ this.entryArray = info.entryArray;
313
+ this.viewIndependent = info.viewIndependent;
314
+ this.brepsPresent = info.brepsPresent;
315
+ if (undefined !== info.categoryId)
316
+ categoryOrGeometryParams = info.categoryId;
317
+ if (undefined !== categoryOrGeometryParams)
318
+ this._appearance = typeof categoryOrGeometryParams === "string" ? new GeometryParams(categoryOrGeometryParams) : categoryOrGeometryParams;
319
+ else
320
+ this._appearance = new GeometryParams(Id64.invalid);
321
+ if (undefined !== info.sourceToWorld)
322
+ localToWorld = ElementGeometry.toTransform(info.sourceToWorld);
323
+ if (undefined !== localToWorld)
324
+ this._localToWorld = localToWorld;
325
+ else
326
+ this._localToWorld = Transform.createIdentity();
327
+ const orgAng = YawPitchRollAngles.tryFromTransform(this._localToWorld);
328
+ if (undefined === orgAng.angles)
329
+ orgAng.angles = YawPitchRollAngles.createDegrees(0, 0, 0);
330
+ let bbox = (undefined !== info.bbox ? ElementGeometry.toElementAlignedBox3d(info.bbox) : undefined);
331
+ if (undefined === bbox)
332
+ bbox = Range3d.createNull();
333
+ this.placement = new Placement3d(orgAng.origin, orgAng.angles, bbox);
334
+ }
335
+ /** Call to return deserialized entry data in world coordinates */
336
+ requestWorldCoordinates() {
337
+ this._applyLocalToWorld = !this._localToWorld.isIdentity;
338
+ }
339
+ // eslint-disable-next-line @typescript-eslint/naming-convention
340
+ get entry() {
341
+ if (undefined === this._entry)
342
+ this._entry = new IteratorEntry(this._appearance, this._localToWorld, this._applyLocalToWorld);
343
+ return this._entry;
344
+ }
345
+ /** Advance to next displayable opcode (geometric entry or geometry part) while updating the current [[GeometryParams]] from appearance related opcodes. */
346
+ next() {
347
+ while (this._index < this.entryArray.length) {
348
+ const value = this.entryArray[this._index++];
349
+ if (ElementGeometry.isAppearanceEntry(value)) {
350
+ const localToWorld = (this._applyLocalToWorld ? this._localToWorld : undefined);
351
+ ElementGeometry.updateGeometryParams(value, this.entry.geomParams, localToWorld);
352
+ }
353
+ else if (ElementGeometryOpcode.SubGraphicRange === value.opcode) {
354
+ // NOTE: localRange remains valid until the next sub-range entry is encountered...
355
+ this.entry.localRange = ElementGeometry.toSubGraphicRange(value);
356
+ }
357
+ else if (ElementGeometryOpcode.PartReference === value.opcode) {
358
+ this.entry.value = value;
359
+ return { value: this.entry, done: false };
360
+ }
361
+ else if (ElementGeometry.isGeometricEntry(value)) {
362
+ this.entry.value = value;
363
+ return { value: this.entry, done: false };
364
+ }
365
+ }
366
+ return { value: this.entry, done: true };
367
+ }
368
+ [Symbol.iterator]() {
369
+ return this;
370
+ }
371
+ }
372
+ ElementGeometry.Iterator = Iterator;
373
+ /** Return whether the supplied entry can be represented as a [[GeometryQuery]] */
374
+ function isGeometryQueryEntry(entry) {
375
+ switch (entry.opcode) {
376
+ case ElementGeometryOpcode.PointPrimitive:
377
+ case ElementGeometryOpcode.PointPrimitive2d:
378
+ case ElementGeometryOpcode.ArcPrimitive:
379
+ case ElementGeometryOpcode.CurveCollection:
380
+ case ElementGeometryOpcode.Polyface:
381
+ case ElementGeometryOpcode.CurvePrimitive:
382
+ case ElementGeometryOpcode.SolidPrimitive:
383
+ case ElementGeometryOpcode.BsplineSurface:
384
+ return true;
385
+ default:
386
+ return false;
387
+ }
388
+ }
389
+ ElementGeometry.isGeometryQueryEntry = isGeometryQueryEntry;
390
+ /** Return whether the supplied entry is displayable geometry [[GeometryQuery]], [[BRepEntity.DataProps]], [[TextString]], or [[ImageGraphic]] */
391
+ function isGeometricEntry(entry) {
392
+ switch (entry.opcode) {
393
+ case ElementGeometryOpcode.BRep:
394
+ case ElementGeometryOpcode.TextString:
395
+ case ElementGeometryOpcode.Image:
396
+ return true;
397
+ default:
398
+ return isGeometryQueryEntry(entry);
399
+ }
400
+ }
401
+ ElementGeometry.isGeometricEntry = isGeometricEntry;
402
+ /** Return whether the supplied entry is geometric or a part reference */
403
+ function isDisplayableEntry(entry) {
404
+ switch (entry.opcode) {
405
+ case ElementGeometryOpcode.PartReference:
406
+ return true;
407
+ default:
408
+ return isGeometricEntry(entry);
409
+ }
410
+ }
411
+ ElementGeometry.isDisplayableEntry = isDisplayableEntry;
412
+ /** Return whether the supplied entry represents appearance information */
413
+ function isAppearanceEntry(entry) {
414
+ switch (entry.opcode) {
415
+ case ElementGeometryOpcode.BasicSymbology:
416
+ case ElementGeometryOpcode.Fill:
417
+ case ElementGeometryOpcode.Pattern:
418
+ case ElementGeometryOpcode.Material:
419
+ case ElementGeometryOpcode.LineStyleModifiers:
420
+ return true;
421
+ default:
422
+ return false;
423
+ }
424
+ }
425
+ ElementGeometry.isAppearanceEntry = isAppearanceEntry;
426
+ /** Return whether the supplied entry represents a single open curve or path */
427
+ function isCurve(entry) {
428
+ switch (entry.opcode) {
429
+ case ElementGeometryOpcode.PointPrimitive: {
430
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
431
+ const ppfb = EGFBAccessors.PointPrimitive.getRootAsPointPrimitive(buffer);
432
+ return (EGFBAccessors.BoundaryType.Open === ppfb.boundary());
433
+ }
434
+ case ElementGeometryOpcode.PointPrimitive2d: {
435
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
436
+ const ppfb = EGFBAccessors.PointPrimitive2d.getRootAsPointPrimitive2d(buffer);
437
+ return (EGFBAccessors.BoundaryType.Open === ppfb.boundary());
438
+ }
439
+ case ElementGeometryOpcode.ArcPrimitive: {
440
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
441
+ const ppfb = EGFBAccessors.ArcPrimitive.getRootAsArcPrimitive(buffer);
442
+ return (EGFBAccessors.BoundaryType.Open === ppfb.boundary());
443
+ }
444
+ case ElementGeometryOpcode.CurvePrimitive: {
445
+ // should never be a point string or closed bcurve...
446
+ return true;
447
+ }
448
+ case ElementGeometryOpcode.CurveCollection: {
449
+ const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
450
+ if (undefined === geom || Array.isArray(geom))
451
+ return false;
452
+ return ("curveCollection" === geom.geometryCategory && !geom.isAnyRegionType);
453
+ }
454
+ default:
455
+ return false;
456
+ }
457
+ }
458
+ ElementGeometry.isCurve = isCurve;
459
+ /** Return whether the supplied entry represents a loop, planar region, open polyface, or sheet body */
460
+ function isSurface(entry) {
461
+ switch (entry.opcode) {
462
+ case ElementGeometryOpcode.PointPrimitive: {
463
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
464
+ const ppfb = EGFBAccessors.PointPrimitive.getRootAsPointPrimitive(buffer);
465
+ return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary());
466
+ }
467
+ case ElementGeometryOpcode.PointPrimitive2d: {
468
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
469
+ const ppfb = EGFBAccessors.PointPrimitive2d.getRootAsPointPrimitive2d(buffer);
470
+ return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary());
471
+ }
472
+ case ElementGeometryOpcode.ArcPrimitive: {
473
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
474
+ const ppfb = EGFBAccessors.ArcPrimitive.getRootAsArcPrimitive(buffer);
475
+ return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary());
476
+ }
477
+ case ElementGeometryOpcode.CurvePrimitive: {
478
+ // should never be a closed bcurve...
479
+ return false;
480
+ }
481
+ case ElementGeometryOpcode.CurveCollection: {
482
+ const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
483
+ if (undefined === geom || Array.isArray(geom))
484
+ return false;
485
+ return ("curveCollection" === geom.geometryCategory && geom.isAnyRegionType);
486
+ }
487
+ case ElementGeometryOpcode.SolidPrimitive: {
488
+ const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
489
+ if (undefined === geom || Array.isArray(geom))
490
+ return false;
491
+ return ("solid" === geom.geometryCategory && !geom.isClosedVolume);
492
+ }
493
+ case ElementGeometryOpcode.Polyface: {
494
+ const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
495
+ if (undefined === geom || Array.isArray(geom))
496
+ return false;
497
+ if ("polyface" !== geom.geometryCategory)
498
+ return false;
499
+ const polyface = geom;
500
+ switch (polyface.expectedClosure) {
501
+ case 0:
502
+ return !PolyfaceQuery.isPolyfaceClosedByEdgePairing(polyface);
503
+ case 1:
504
+ return true;
505
+ case 2:
506
+ default:
507
+ return false;
508
+ }
509
+ }
510
+ case ElementGeometryOpcode.BsplineSurface: {
511
+ // never treated as a solid even if closed/periodic in u/v...
512
+ return true;
513
+ }
514
+ case ElementGeometryOpcode.BRep: {
515
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
516
+ const ppfb = EGFBAccessors.BRepData.getRootAsBRepData(buffer);
517
+ return (EGFBAccessors.BRepType.Sheet === ppfb.brepType());
518
+ }
519
+ default:
520
+ return false;
521
+ }
522
+ }
523
+ ElementGeometry.isSurface = isSurface;
524
+ /** Return whether the supplied entry represents a capped solid, closed polyface, or solid body */
525
+ function isSolid(entry) {
526
+ switch (entry.opcode) {
527
+ case ElementGeometryOpcode.SolidPrimitive: {
528
+ const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
529
+ if (undefined === geom || Array.isArray(geom))
530
+ return false;
531
+ return ("solid" === geom.geometryCategory && geom.isClosedVolume);
532
+ }
533
+ case ElementGeometryOpcode.Polyface: {
534
+ const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
535
+ if (undefined === geom || Array.isArray(geom))
536
+ return false;
537
+ if ("polyface" !== geom.geometryCategory)
538
+ return false;
539
+ const polyface = geom;
540
+ switch (polyface.expectedClosure) {
541
+ case 0:
542
+ return PolyfaceQuery.isPolyfaceClosedByEdgePairing(polyface);
543
+ case 2:
544
+ return true;
545
+ case 1:
546
+ default:
547
+ return false;
548
+ }
549
+ }
550
+ case ElementGeometryOpcode.BRep: {
551
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
552
+ const ppfb = EGFBAccessors.BRepData.getRootAsBRepData(buffer);
553
+ return (EGFBAccessors.BRepType.Solid === ppfb.brepType());
554
+ }
555
+ default:
556
+ return false;
557
+ }
558
+ }
559
+ ElementGeometry.isSolid = isSolid;
560
+ /** Return the body type that would be used to represent the supplied entry */
561
+ function getBRepEntityType(entry) {
562
+ switch (entry.opcode) {
563
+ case ElementGeometryOpcode.PointPrimitive: {
564
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
565
+ const ppfb = EGFBAccessors.PointPrimitive.getRootAsPointPrimitive(buffer);
566
+ if (EGFBAccessors.BoundaryType.None === ppfb.boundary())
567
+ return undefined;
568
+ return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary() ? BRepEntity.Type.Sheet : BRepEntity.Type.Wire);
569
+ }
570
+ case ElementGeometryOpcode.PointPrimitive2d: {
571
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
572
+ const ppfb = EGFBAccessors.PointPrimitive2d.getRootAsPointPrimitive2d(buffer);
573
+ if (EGFBAccessors.BoundaryType.None === ppfb.boundary())
574
+ return undefined;
575
+ return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary() ? BRepEntity.Type.Sheet : BRepEntity.Type.Wire);
576
+ }
577
+ case ElementGeometryOpcode.ArcPrimitive: {
578
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
579
+ const ppfb = EGFBAccessors.ArcPrimitive.getRootAsArcPrimitive(buffer);
580
+ return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary() ? BRepEntity.Type.Sheet : BRepEntity.Type.Wire);
581
+ }
582
+ case ElementGeometryOpcode.CurvePrimitive: {
583
+ // should never be a point string or closed bcurve...
584
+ return BRepEntity.Type.Wire;
585
+ }
586
+ case ElementGeometryOpcode.CurveCollection: {
587
+ const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
588
+ if (undefined === geom || Array.isArray(geom))
589
+ return undefined;
590
+ if ("curveCollection" !== geom.geometryCategory)
591
+ return undefined;
592
+ const curves = geom;
593
+ return (curves.isAnyRegionType ? BRepEntity.Type.Sheet : BRepEntity.Type.Wire);
594
+ }
595
+ case ElementGeometryOpcode.SolidPrimitive: {
596
+ const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
597
+ if (undefined === geom || Array.isArray(geom))
598
+ return undefined;
599
+ if ("solid" !== geom.geometryCategory)
600
+ return undefined;
601
+ const solid = geom;
602
+ return (solid.isClosedVolume ? BRepEntity.Type.Solid : BRepEntity.Type.Sheet);
603
+ }
604
+ case ElementGeometryOpcode.BsplineSurface: {
605
+ // always a surface...
606
+ return BRepEntity.Type.Sheet;
607
+ }
608
+ case ElementGeometryOpcode.Polyface: {
609
+ const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
610
+ if (undefined === geom || Array.isArray(geom))
611
+ return undefined;
612
+ if ("polyface" !== geom.geometryCategory)
613
+ return undefined;
614
+ const polyface = geom;
615
+ switch (polyface.expectedClosure) {
616
+ case 0:
617
+ return PolyfaceQuery.isPolyfaceClosedByEdgePairing(polyface) ? BRepEntity.Type.Solid : BRepEntity.Type.Sheet;
618
+ case 1:
619
+ return BRepEntity.Type.Sheet;
620
+ case 2:
621
+ return BRepEntity.Type.Solid;
622
+ default:
623
+ return undefined;
624
+ }
625
+ }
626
+ case ElementGeometryOpcode.BRep: {
627
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
628
+ const ppfb = EGFBAccessors.BRepData.getRootAsBRepData(buffer);
629
+ switch (ppfb.brepType()) {
630
+ case EGFBAccessors.BRepType.Wire:
631
+ return BRepEntity.Type.Wire; // always be persisted as a curve type...
632
+ case EGFBAccessors.BRepType.Sheet:
633
+ return BRepEntity.Type.Sheet;
634
+ case EGFBAccessors.BRepType.Solid:
635
+ return BRepEntity.Type.Solid;
636
+ default:
637
+ return undefined;
638
+ }
639
+ }
640
+ default:
641
+ return undefined;
642
+ }
643
+ }
644
+ ElementGeometry.getBRepEntityType = getBRepEntityType;
645
+ /** Return entry as a [[GeometryQuery]] */
646
+ function toGeometryQuery(entry, localToWorld) {
647
+ if (!isGeometryQueryEntry(entry))
648
+ return undefined;
649
+ switch (entry.opcode) {
650
+ case ElementGeometryOpcode.PointPrimitive: {
651
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
652
+ const ppfb = EGFBAccessors.PointPrimitive.getRootAsPointPrimitive(buffer);
653
+ const pts = [];
654
+ for (let i = 0; i < ppfb.coordsLength(); i++)
655
+ pts.push(Point3d.create(ppfb.coords(i).x(), ppfb.coords(i).y(), ppfb.coords(i).z()));
656
+ if (0 === pts.length)
657
+ return undefined;
658
+ if (undefined !== localToWorld)
659
+ localToWorld.multiplyPoint3dArrayInPlace(pts);
660
+ switch (ppfb.boundary()) {
661
+ case EGFBAccessors.BoundaryType.Open:
662
+ return LineString3d.createPoints(pts);
663
+ case EGFBAccessors.BoundaryType.Closed:
664
+ return Loop.createPolygon(pts);
665
+ default:
666
+ return PointString3d.createPoints(pts);
667
+ }
668
+ }
669
+ case ElementGeometryOpcode.PointPrimitive2d: {
670
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
671
+ const ppfb = EGFBAccessors.PointPrimitive2d.getRootAsPointPrimitive2d(buffer);
672
+ const pts = [];
673
+ for (let i = 0; i < ppfb.coordsLength(); i++)
674
+ pts.push(Point3d.create(ppfb.coords(i).x(), ppfb.coords(i).y()));
675
+ if (0 === pts.length)
676
+ return undefined;
677
+ if (undefined !== localToWorld)
678
+ localToWorld.multiplyPoint3dArrayInPlace(pts);
679
+ switch (ppfb.boundary()) {
680
+ case EGFBAccessors.BoundaryType.Open:
681
+ return LineString3d.createPoints(pts);
682
+ case EGFBAccessors.BoundaryType.Closed:
683
+ return Loop.createPolygon(pts);
684
+ default:
685
+ return PointString3d.createPoints(pts);
686
+ }
687
+ }
688
+ case ElementGeometryOpcode.ArcPrimitive: {
689
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
690
+ const ppfb = EGFBAccessors.ArcPrimitive.getRootAsArcPrimitive(buffer);
691
+ const center = Point3d.create(ppfb.center().x(), ppfb.center().y(), ppfb.center().z());
692
+ const vector0 = Vector3d.create(ppfb.vector0().x(), ppfb.vector0().y(), ppfb.vector0().z());
693
+ const vector90 = Vector3d.create(ppfb.vector90().x(), ppfb.vector90().y(), ppfb.vector90().z());
694
+ const arc = Arc3d.create(center, vector0, vector90, AngleSweep.createStartSweepRadians(ppfb.start(), ppfb.sweep()));
695
+ if (undefined !== localToWorld && !arc.tryTransformInPlace(localToWorld))
696
+ return undefined;
697
+ return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary() ? Loop.create(arc) : arc);
698
+ }
699
+ case ElementGeometryOpcode.CurvePrimitive:
700
+ case ElementGeometryOpcode.CurveCollection:
701
+ case ElementGeometryOpcode.SolidPrimitive:
702
+ case ElementGeometryOpcode.BsplineSurface:
703
+ case ElementGeometryOpcode.Polyface:
704
+ const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);
705
+ if (undefined === geom || Array.isArray(geom))
706
+ return undefined; // Should always be a single entry not an array...
707
+ if (undefined !== localToWorld && !geom.tryTransformInPlace(localToWorld))
708
+ return undefined;
709
+ return geom;
710
+ default:
711
+ return undefined; // Not a GeometryQuery, need to be handled explicitly...
712
+ }
713
+ }
714
+ ElementGeometry.toGeometryQuery = toGeometryQuery;
715
+ /** Create entry from a [[GeometryQuery]] */
716
+ function fromGeometryQuery(geom, worldToLocal) {
717
+ let opcode;
718
+ switch (geom.geometryCategory) {
719
+ case "bsurf":
720
+ opcode = ElementGeometryOpcode.BsplineSurface;
721
+ break;
722
+ case "curveCollection":
723
+ opcode = ElementGeometryOpcode.CurveCollection;
724
+ break;
725
+ case "curvePrimitive":
726
+ case "pointCollection":
727
+ opcode = ElementGeometryOpcode.CurvePrimitive;
728
+ break;
729
+ case "polyface":
730
+ opcode = ElementGeometryOpcode.Polyface;
731
+ break;
732
+ case "solid":
733
+ opcode = ElementGeometryOpcode.SolidPrimitive;
734
+ break;
735
+ default:
736
+ return undefined;
737
+ }
738
+ if (undefined !== worldToLocal) {
739
+ const localGeom = geom.cloneTransformed(worldToLocal);
740
+ if (undefined === localGeom)
741
+ return undefined;
742
+ geom = localGeom;
743
+ }
744
+ const data = BentleyGeometryFlatBuffer.geometryToBytes(geom, true);
745
+ if (undefined === data)
746
+ return undefined;
747
+ return { opcode, data };
748
+ }
749
+ ElementGeometry.fromGeometryQuery = fromGeometryQuery;
750
+ /** Return entry as a [[TextString]] */
751
+ function toTextString(entry, localToWorld) {
752
+ if (ElementGeometryOpcode.TextString !== entry.opcode)
753
+ return undefined;
754
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
755
+ const ppfb = EGFBAccessors.TextString.getRootAsTextString(buffer);
756
+ const style = ppfb.style();
757
+ if (null === style)
758
+ return undefined;
759
+ const text = ppfb.text();
760
+ const props = { text: (null !== text ? text : ""), font: style.fontId(), height: style.height() };
761
+ props.widthFactor = style.widthFactor();
762
+ props.bold = style.isBold();
763
+ props.italic = style.isItalic();
764
+ props.underline = style.isUnderlined();
765
+ const transform = ppfb.transform();
766
+ if (null !== transform) {
767
+ props.origin = Point3d.create(transform.form3d03(), transform.form3d13(), transform.form3d23());
768
+ props.rotation = YawPitchRollAngles.createFromMatrix3d(Matrix3d.createRowValues(transform.form3d00(), transform.form3d01(), transform.form3d02(), transform.form3d10(), transform.form3d11(), transform.form3d12(), transform.form3d20(), transform.form3d21(), transform.form3d22()));
769
+ }
770
+ if (undefined === localToWorld)
771
+ return props;
772
+ const textString = new TextString(props);
773
+ if (!textString.transformInPlace(localToWorld))
774
+ return undefined;
775
+ return textString.toJSON();
776
+ }
777
+ ElementGeometry.toTextString = toTextString;
778
+ /** Create entry from a [[TextString]] */
779
+ function fromTextString(text, worldToLocal) {
780
+ if (undefined !== worldToLocal) {
781
+ const localText = new TextString(text);
782
+ if (!localText.transformInPlace(worldToLocal))
783
+ return undefined;
784
+ text = localText.toJSON();
785
+ }
786
+ const fbb = new flatbuffers.Builder();
787
+ const builder = EGFBAccessors.TextString;
788
+ const textOffset = fbb.createString(text.text);
789
+ const styleOffset = EGFBAccessors.TextStringStyle.createTextStringStyle(fbb, 1, 0, text.font, undefined === text.bold ? false : text.bold, undefined === text.italic ? false : text.italic, undefined === text.underline ? false : text.underline, text.height, undefined === text.widthFactor ? 1.0 : text.widthFactor);
790
+ builder.startTextString(fbb);
791
+ builder.addMajorVersion(fbb, 1);
792
+ builder.addMinorVersion(fbb, 0);
793
+ builder.addText(fbb, textOffset);
794
+ builder.addStyle(fbb, styleOffset);
795
+ if (undefined !== text.origin || undefined !== text.rotation) {
796
+ const origin = Point3d.fromJSON(text.origin);
797
+ const angles = YawPitchRollAngles.fromJSON(text.rotation);
798
+ const matrix = angles.toMatrix3d();
799
+ const coffs = matrix.coffs;
800
+ const transformOffset = EGFBAccessors.TextStringTransform.createTextStringTransform(fbb, coffs[0], coffs[1], coffs[2], origin.x, coffs[3], coffs[4], coffs[5], origin.y, coffs[6], coffs[7], coffs[8], origin.z);
801
+ builder.addTransform(fbb, transformOffset);
802
+ }
803
+ const mLoc = builder.endTextString(fbb);
804
+ fbb.finish(mLoc);
805
+ const data = fbb.asUint8Array();
806
+ return { opcode: ElementGeometryOpcode.TextString, data };
807
+ }
808
+ ElementGeometry.fromTextString = fromTextString;
809
+ /** Return entry as a [[ImageGraphic]] */
810
+ function toImageGraphic(entry, localToWorld) {
811
+ if (ElementGeometryOpcode.Image !== entry.opcode)
812
+ return undefined;
813
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
814
+ const ppfb = EGFBAccessors.Image.getRootAsImage(buffer);
815
+ const textureLong = ppfb.textureId();
816
+ const textureId = Id64.fromUint32Pair(textureLong.low, textureLong.high);
817
+ const hasBorder = (1 === ppfb.drawBorder());
818
+ const corners = new ImageGraphicCorners(Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero());
819
+ const corner0 = ppfb.tileCorner0();
820
+ const corner1 = ppfb.tileCorner1();
821
+ const corner2 = ppfb.tileCorner2();
822
+ const corner3 = ppfb.tileCorner3();
823
+ if (null !== corner0)
824
+ corners[0].setFrom(Point3d.create(corner0.x(), corner0.y(), corner0.z()));
825
+ if (null !== corner1)
826
+ corners[1].setFrom(Point3d.create(corner1.x(), corner1.y(), corner1.z()));
827
+ if (null !== corner2)
828
+ corners[2].setFrom(Point3d.create(corner2.x(), corner2.y(), corner2.z()));
829
+ if (null !== corner3)
830
+ corners[3].setFrom(Point3d.create(corner3.x(), corner3.y(), corner3.z()));
831
+ if (undefined !== localToWorld) {
832
+ localToWorld.multiplyXYAndZInPlace(corners[0]);
833
+ localToWorld.multiplyXYAndZInPlace(corners[1]);
834
+ localToWorld.multiplyXYAndZInPlace(corners[2]);
835
+ localToWorld.multiplyXYAndZInPlace(corners[3]);
836
+ }
837
+ return { corners: corners.toJSON(), textureId, hasBorder };
838
+ }
839
+ ElementGeometry.toImageGraphic = toImageGraphic;
840
+ /** Create entry from a [[ImageGraphic]] */
841
+ function fromImageGraphic(image, worldToLocal) {
842
+ if (undefined !== worldToLocal) {
843
+ const localImage = ImageGraphic.fromJSON(image).cloneTransformed(worldToLocal);
844
+ image = localImage.toJSON();
845
+ }
846
+ const fbb = new flatbuffers.Builder();
847
+ const builder = EGFBAccessors.Image;
848
+ builder.startImage(fbb);
849
+ const textudeIdPair = Id64.getUint32Pair(image.textureId);
850
+ builder.addTextureId(fbb, flatbuffers.Long.create(textudeIdPair.lower, textudeIdPair.upper));
851
+ builder.addDrawBorder(fbb, image.hasBorder ? 1 : 0);
852
+ const corners = ImageGraphicCorners.fromJSON(image.corners);
853
+ const cornerOffset0 = EGFBAccessors.DPoint3d.createDPoint3d(fbb, corners[0].x, corners[0].y, corners[0].z);
854
+ builder.addTileCorner0(fbb, cornerOffset0);
855
+ const cornerOffset1 = EGFBAccessors.DPoint3d.createDPoint3d(fbb, corners[1].x, corners[1].y, corners[1].z);
856
+ builder.addTileCorner1(fbb, cornerOffset1);
857
+ const cornerOffset2 = EGFBAccessors.DPoint3d.createDPoint3d(fbb, corners[2].x, corners[2].y, corners[2].z);
858
+ builder.addTileCorner2(fbb, cornerOffset2);
859
+ const cornerOffset3 = EGFBAccessors.DPoint3d.createDPoint3d(fbb, corners[3].x, corners[3].y, corners[3].z);
860
+ builder.addTileCorner3(fbb, cornerOffset3);
861
+ const mLoc = builder.endImage(fbb);
862
+ fbb.finish(mLoc);
863
+ const data = fbb.asUint8Array();
864
+ return { opcode: ElementGeometryOpcode.Image, data };
865
+ }
866
+ ElementGeometry.fromImageGraphic = fromImageGraphic;
867
+ /** Return entry as a [[BRepEntity.DataProps]] for checking brep type and face attachments. */
868
+ function toBRep(entry, wantBRepData = false, localToWorld) {
869
+ if (ElementGeometryOpcode.BRep !== entry.opcode)
870
+ return undefined;
871
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
872
+ const ppfb = EGFBAccessors.BRepData.getRootAsBRepData(buffer);
873
+ const toBRepType = (typeFb) => {
874
+ switch (typeFb) {
875
+ case EGFBAccessors.BRepType.Wire:
876
+ return BRepEntity.Type.Wire;
877
+ case EGFBAccessors.BRepType.Sheet:
878
+ return BRepEntity.Type.Sheet;
879
+ default:
880
+ return BRepEntity.Type.Solid;
881
+ }
882
+ };
883
+ const type = toBRepType(ppfb.brepType());
884
+ let transform;
885
+ const entityTransform = ppfb.entityTransform();
886
+ if (null !== entityTransform)
887
+ transform = Transform.createRowValues(entityTransform.x00(), entityTransform.x01(), entityTransform.x02(), entityTransform.tx(), entityTransform.x10(), entityTransform.x11(), entityTransform.x12(), entityTransform.ty(), entityTransform.x20(), entityTransform.x21(), entityTransform.x22(), entityTransform.tz());
888
+ if (undefined !== localToWorld) {
889
+ if (undefined !== transform)
890
+ transform.multiplyTransformTransform(localToWorld, transform);
891
+ else
892
+ transform = localToWorld;
893
+ }
894
+ const faceSymbLen = ppfb.symbologyLength();
895
+ let faceSymbology;
896
+ if (0 !== faceSymbLen) {
897
+ const faceSymbPropsArray = [];
898
+ for (let index = 0; index < faceSymbLen; ++index) {
899
+ const faceSymbFb = ppfb.symbology(index);
900
+ const faceSymbProps = {};
901
+ if (null !== faceSymbFb) {
902
+ if (1 === faceSymbFb.useColor())
903
+ faceSymbProps.color = faceSymbFb.color();
904
+ if (1 === faceSymbFb.useMaterial())
905
+ faceSymbProps.materialId = Id64.fromUint32Pair(faceSymbFb.materialId().low, faceSymbFb.materialId().high);
906
+ faceSymbProps.transparency = faceSymbFb.transparency();
907
+ }
908
+ faceSymbPropsArray.push(faceSymbProps);
909
+ }
910
+ faceSymbology = faceSymbPropsArray;
911
+ }
912
+ let data;
913
+ const entityData = ppfb.entityDataArray();
914
+ if (wantBRepData && null !== entityData)
915
+ data = Base64EncodedString.fromUint8Array(entityData);
916
+ return { data, type, transform: transform === null || transform === void 0 ? void 0 : transform.toJSON(), faceSymbology };
917
+ }
918
+ ElementGeometry.toBRep = toBRep;
919
+ /** Create entry from a [[BRepEntity.DataProps]]. Provided for compatibility with GeometryStreamBuilder only. */
920
+ function fromBRep(brep, worldToLocal) {
921
+ if (undefined !== worldToLocal) {
922
+ const entityTrans = Transform.fromJSON(brep.transform);
923
+ const localTrans = entityTrans.multiplyTransformTransform(worldToLocal);
924
+ brep = {
925
+ data: brep.data,
926
+ type: brep.type,
927
+ transform: localTrans.isIdentity ? undefined : localTrans.toJSON(),
928
+ faceSymbology: brep.faceSymbology,
929
+ };
930
+ }
931
+ const fbb = new flatbuffers.Builder();
932
+ const builder = EGFBAccessors.BRepData;
933
+ let dataOffset;
934
+ let faceSymbOffset;
935
+ if (undefined !== brep.data) {
936
+ const entityData = Base64EncodedString.toUint8Array(brep.data);
937
+ if (entityData.length === 0)
938
+ return undefined;
939
+ dataOffset = builder.createEntityDataVector(fbb, entityData);
940
+ }
941
+ if (undefined !== brep.faceSymbology) {
942
+ builder.startSymbologyVector(fbb, brep.faceSymbology.length);
943
+ for (let i = brep.faceSymbology.length - 1; i >= 0; i--) {
944
+ const symb = brep.faceSymbology[i];
945
+ const materialIdPair = Id64.getUint32Pair(symb.materialId ? symb.materialId : Id64.invalid);
946
+ const matLong = flatbuffers.Long.create(materialIdPair.lower, materialIdPair.upper);
947
+ EGFBAccessors.FaceSymbology.createFaceSymbology(fbb, symb.color ? 1 : 0, symb.materialId ? 1 : 0, symb.color ? symb.color : 0, matLong, symb.transparency ? symb.transparency : 0, 0, 0);
948
+ }
949
+ faceSymbOffset = fbb.endVector();
950
+ }
951
+ builder.startBRepData(fbb);
952
+ const toEGFBBRepType = (type) => {
953
+ switch (type) {
954
+ case BRepEntity.Type.Wire:
955
+ return EGFBAccessors.BRepType.Wire;
956
+ case BRepEntity.Type.Sheet:
957
+ return EGFBAccessors.BRepType.Sheet;
958
+ default:
959
+ return EGFBAccessors.BRepType.Solid;
960
+ }
961
+ };
962
+ if (undefined !== brep.type)
963
+ builder.addBrepType(fbb, toEGFBBRepType(brep.type));
964
+ if (undefined !== brep.transform) {
965
+ const transform = Transform.fromJSON(brep.transform);
966
+ const transformOffset = EGFBAccessors.Transform.createTransform(fbb, transform.matrix.coffs[0], transform.matrix.coffs[1], transform.matrix.coffs[2], transform.origin.x, transform.matrix.coffs[3], transform.matrix.coffs[4], transform.matrix.coffs[5], transform.origin.y, transform.matrix.coffs[6], transform.matrix.coffs[7], transform.matrix.coffs[8], transform.origin.z);
967
+ builder.addEntityTransform(fbb, transformOffset);
968
+ }
969
+ if (undefined !== dataOffset)
970
+ builder.addEntityData(fbb, dataOffset);
971
+ if (undefined !== faceSymbOffset)
972
+ builder.addSymbology(fbb, faceSymbOffset);
973
+ const mLoc = builder.endBRepData(fbb);
974
+ fbb.finish(mLoc);
975
+ const data = fbb.asUint8Array();
976
+ return { opcode: ElementGeometryOpcode.BRep, data };
977
+ }
978
+ ElementGeometry.fromBRep = fromBRep;
979
+ /** Apply transform directly to ElementGeometryDataEntry for a BRep */
980
+ function transformBRep(entry, inputTransform) {
981
+ if (ElementGeometryOpcode.BRep !== entry.opcode)
982
+ return false;
983
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
984
+ const ppfb = EGFBAccessors.BRepData.getRootAsBRepData(buffer);
985
+ const fbb = new flatbuffers.Builder();
986
+ const builder = EGFBAccessors.BRepData;
987
+ const entityData = ppfb.entityDataArray();
988
+ const dataOffset = (null !== entityData ? builder.createEntityDataVector(fbb, entityData) : undefined);
989
+ let faceSymbOffset;
990
+ const faceSymbLen = ppfb.symbologyLength();
991
+ if (0 !== faceSymbLen) {
992
+ builder.startSymbologyVector(fbb, faceSymbLen);
993
+ for (let i = faceSymbLen - 1; i >= 0; i--) {
994
+ const faceSymbFb = ppfb.symbology(i);
995
+ if (null === faceSymbFb)
996
+ continue;
997
+ EGFBAccessors.FaceSymbology.createFaceSymbology(fbb, faceSymbFb.useColor(), faceSymbFb.useMaterial(), faceSymbFb.color(), faceSymbFb.materialId(), faceSymbFb.transparency(), 0, 0);
998
+ }
999
+ faceSymbOffset = fbb.endVector();
1000
+ }
1001
+ builder.startBRepData(fbb);
1002
+ builder.addBrepType(fbb, ppfb.brepType());
1003
+ let transform;
1004
+ const entityTransform = ppfb.entityTransform();
1005
+ if (null !== entityTransform)
1006
+ transform = Transform.createRowValues(entityTransform.x00(), entityTransform.x01(), entityTransform.x02(), entityTransform.tx(), entityTransform.x10(), entityTransform.x11(), entityTransform.x12(), entityTransform.ty(), entityTransform.x20(), entityTransform.x21(), entityTransform.x22(), entityTransform.tz());
1007
+ if (undefined !== transform)
1008
+ transform.multiplyTransformTransform(inputTransform, transform);
1009
+ else
1010
+ transform = inputTransform;
1011
+ const transformOffset = EGFBAccessors.Transform.createTransform(fbb, transform.matrix.coffs[0], transform.matrix.coffs[1], transform.matrix.coffs[2], transform.origin.x, transform.matrix.coffs[3], transform.matrix.coffs[4], transform.matrix.coffs[5], transform.origin.y, transform.matrix.coffs[6], transform.matrix.coffs[7], transform.matrix.coffs[8], transform.origin.z);
1012
+ builder.addEntityTransform(fbb, transformOffset);
1013
+ if (undefined !== dataOffset)
1014
+ builder.addEntityData(fbb, dataOffset);
1015
+ if (undefined !== faceSymbOffset)
1016
+ builder.addSymbology(fbb, faceSymbOffset);
1017
+ const mLoc = builder.endBRepData(fbb);
1018
+ fbb.finish(mLoc);
1019
+ entry.data = fbb.asUint8Array();
1020
+ return true;
1021
+ }
1022
+ ElementGeometry.transformBRep = transformBRep;
1023
+ /** @internal */
1024
+ let StyleMod;
1025
+ (function (StyleMod) {
1026
+ StyleMod[StyleMod["Scale"] = 1] = "Scale";
1027
+ StyleMod[StyleMod["DashScale"] = 2] = "DashScale";
1028
+ StyleMod[StyleMod["GapScale"] = 4] = "GapScale";
1029
+ StyleMod[StyleMod["StartWidth"] = 8] = "StartWidth";
1030
+ StyleMod[StyleMod["EndWidth"] = 16] = "EndWidth";
1031
+ StyleMod[StyleMod["DistPhase"] = 32] = "DistPhase";
1032
+ StyleMod[StyleMod["FractPhase"] = 64] = "FractPhase";
1033
+ StyleMod[StyleMod["CenterPhase"] = 128] = "CenterPhase";
1034
+ StyleMod[StyleMod["Normal"] = 256] = "Normal";
1035
+ StyleMod[StyleMod["Rotation"] = 512] = "Rotation";
1036
+ StyleMod[StyleMod["PhysicalWidth"] = 8192] = "PhysicalWidth";
1037
+ StyleMod[StyleMod["SegMode"] = 1073741824] = "SegMode";
1038
+ StyleMod[StyleMod["NoSegMode"] = 2147483648] = "NoSegMode";
1039
+ })(StyleMod || (StyleMod = {}));
1040
+ /** Update the supplied [[GeometryParams]] from an entry with appearance information */
1041
+ function updateGeometryParams(entry, geomParams, localToWorld) {
1042
+ if (!isAppearanceEntry(entry))
1043
+ return false;
1044
+ let changed = false;
1045
+ switch (entry.opcode) {
1046
+ case ElementGeometryOpcode.BasicSymbology: {
1047
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
1048
+ const ppfb = EGFBAccessors.BasicSymbology.getRootAsBasicSymbology(buffer);
1049
+ const subcatLong = ppfb.subCategoryId();
1050
+ let subcatId = Id64.fromUint32Pair(subcatLong.low, subcatLong.high);
1051
+ if (Id64.isInvalid(subcatId))
1052
+ subcatId = geomParams.subCategoryId; // Preserve current sub-category if not explicitly stored...
1053
+ if (Id64.isValid(subcatId)) {
1054
+ geomParams.setSubCategoryId(subcatId); // Reset to sub-category appearance...
1055
+ changed = true;
1056
+ }
1057
+ if (ppfb.useColor()) {
1058
+ const lineColor = ColorDef.fromTbgr(ppfb.color());
1059
+ if (undefined === geomParams.lineColor || !lineColor.equals(geomParams.lineColor)) {
1060
+ geomParams.lineColor = lineColor;
1061
+ changed = true;
1062
+ }
1063
+ }
1064
+ if (ppfb.useWeight()) {
1065
+ const weight = ppfb.weight();
1066
+ if (undefined === geomParams.weight || weight !== geomParams.weight) {
1067
+ geomParams.weight = weight;
1068
+ changed = true;
1069
+ }
1070
+ }
1071
+ if (ppfb.useStyle()) {
1072
+ const styleLong = ppfb.lineStyleId();
1073
+ const styleId = Id64.fromUint32Pair(styleLong.low, styleLong.high);
1074
+ if (undefined === geomParams.styleInfo || styleId !== geomParams.styleInfo.styleId) {
1075
+ geomParams.styleInfo = new LineStyle.Info(styleId);
1076
+ changed = true;
1077
+ }
1078
+ }
1079
+ const transparency = ppfb.transparency();
1080
+ if (transparency !== (undefined !== geomParams.elmTransparency ? geomParams.elmTransparency : 0)) {
1081
+ geomParams.elmTransparency = transparency;
1082
+ changed = true;
1083
+ }
1084
+ const displayPriority = ppfb.displayPriority();
1085
+ if (displayPriority !== (undefined !== geomParams.elmPriority ? geomParams.elmPriority : 0)) {
1086
+ geomParams.elmPriority = displayPriority;
1087
+ changed = true;
1088
+ }
1089
+ const geometryClass = ppfb.geomClass();
1090
+ if (geometryClass !== (undefined !== geomParams.geometryClass ? geomParams.geometryClass : GeometryClass.Primary)) {
1091
+ geomParams.geometryClass = geometryClass;
1092
+ changed = true;
1093
+ }
1094
+ return changed;
1095
+ }
1096
+ case ElementGeometryOpcode.LineStyleModifiers: {
1097
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
1098
+ const ppfb = EGFBAccessors.LineStyleModifiers.getRootAsLineStyleModifiers(buffer);
1099
+ const props = {};
1100
+ if (0 !== (ppfb.modifiers() & StyleMod.Scale))
1101
+ props.scale = ppfb.scale();
1102
+ if (0 !== (ppfb.modifiers() & StyleMod.GapScale))
1103
+ props.gapScale = ppfb.gapScale();
1104
+ if (0 !== (ppfb.modifiers() & StyleMod.DashScale))
1105
+ props.dashScale = ppfb.dashScale();
1106
+ if (0 !== (ppfb.modifiers() & StyleMod.StartWidth))
1107
+ props.startWidth = ppfb.startWidth();
1108
+ if (0 !== (ppfb.modifiers() & StyleMod.EndWidth))
1109
+ props.endWidth = ppfb.endWidth();
1110
+ if (0 !== (ppfb.modifiers() & StyleMod.DistPhase))
1111
+ props.distPhase = ppfb.distPhase();
1112
+ if (0 !== (ppfb.modifiers() & StyleMod.FractPhase))
1113
+ props.fractPhase = ppfb.fractPhase();
1114
+ if (0 !== (ppfb.modifiers() & StyleMod.CenterPhase))
1115
+ props.centerPhase = true;
1116
+ if (0 !== (ppfb.modifiers() & StyleMod.SegMode))
1117
+ props.segmentMode = true;
1118
+ else if (0 !== (ppfb.modifiers() & StyleMod.NoSegMode))
1119
+ props.segmentMode = false;
1120
+ if (0 !== (ppfb.modifiers() & StyleMod.PhysicalWidth))
1121
+ props.physicalWidth = true;
1122
+ if (0 !== (ppfb.modifiers() & StyleMod.Normal)) {
1123
+ const normal = ppfb.normal();
1124
+ if (null !== normal)
1125
+ props.normal = Vector3d.create(normal.x(), normal.y(), normal.z());
1126
+ }
1127
+ if (0 !== (ppfb.modifiers() & StyleMod.Rotation))
1128
+ props.rotation = YawPitchRollAngles.createDegrees(ppfb.yaw(), ppfb.pitch(), ppfb.roll());
1129
+ const styleMod = new LineStyle.Modifier(props);
1130
+ if (undefined !== localToWorld)
1131
+ styleMod.applyTransform(localToWorld);
1132
+ if (undefined === geomParams.styleInfo) {
1133
+ geomParams.styleInfo = new LineStyle.Info(Id64.invalid, styleMod);
1134
+ changed = true;
1135
+ }
1136
+ else if (undefined === geomParams.styleInfo.styleMod || !styleMod.equals(geomParams.styleInfo.styleMod)) {
1137
+ geomParams.styleInfo.styleMod = styleMod;
1138
+ changed = true;
1139
+ }
1140
+ return changed;
1141
+ }
1142
+ case ElementGeometryOpcode.Fill: {
1143
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
1144
+ const ppfb = EGFBAccessors.AreaFill.getRootAsAreaFill(buffer);
1145
+ const toFillDisplay = (fill) => {
1146
+ switch (fill) {
1147
+ case EGFBAccessors.FillDisplay.ByView:
1148
+ return FillDisplay.ByView;
1149
+ case EGFBAccessors.FillDisplay.Always:
1150
+ return FillDisplay.Always;
1151
+ case EGFBAccessors.FillDisplay.Blanking:
1152
+ return FillDisplay.Blanking;
1153
+ default:
1154
+ return FillDisplay.Never;
1155
+ }
1156
+ };
1157
+ const fillDisplay = toFillDisplay(ppfb.fill());
1158
+ if (fillDisplay !== (undefined !== geomParams.fillDisplay ? geomParams.fillDisplay : FillDisplay.Never)) {
1159
+ geomParams.fillDisplay = fillDisplay;
1160
+ changed = true;
1161
+ }
1162
+ if (FillDisplay.Never === fillDisplay)
1163
+ return changed;
1164
+ const transparency = ppfb.transparency();
1165
+ if (transparency !== (undefined !== geomParams.fillTransparency ? geomParams.fillTransparency : 0)) {
1166
+ geomParams.fillTransparency = transparency;
1167
+ changed = true;
1168
+ }
1169
+ if (EGFBAccessors.GradientMode.None !== ppfb.mode()) {
1170
+ const toGradientMode = (mode) => {
1171
+ switch (mode) {
1172
+ case EGFBAccessors.GradientMode.Linear:
1173
+ return Gradient.Mode.Linear;
1174
+ case EGFBAccessors.GradientMode.Curved:
1175
+ return Gradient.Mode.Curved;
1176
+ case EGFBAccessors.GradientMode.Cylindrical:
1177
+ return Gradient.Mode.Cylindrical;
1178
+ case EGFBAccessors.GradientMode.Spherical:
1179
+ return Gradient.Mode.Spherical;
1180
+ case EGFBAccessors.GradientMode.Hemispherical:
1181
+ return Gradient.Mode.Hemispherical;
1182
+ case EGFBAccessors.GradientMode.Thematic:
1183
+ return Gradient.Mode.Thematic;
1184
+ default:
1185
+ return Gradient.Mode.None;
1186
+ }
1187
+ };
1188
+ const keys = [];
1189
+ const colors = ppfb.colorsArray();
1190
+ const values = ppfb.valuesArray();
1191
+ if (null !== colors && null !== values && colors.length === values.length) {
1192
+ for (let iKey = 0; iKey < colors.length; ++iKey)
1193
+ keys.push({ value: values[iKey], color: colors[iKey] });
1194
+ }
1195
+ const props = { mode: toGradientMode(ppfb.mode()), keys };
1196
+ const flags = ppfb.flags();
1197
+ const angle = ppfb.angle();
1198
+ const tint = ppfb.tint();
1199
+ const shift = ppfb.shift();
1200
+ props.flags = (0 !== flags ? flags : undefined);
1201
+ props.angle = (0 !== angle ? { radians: angle } : undefined);
1202
+ props.tint = (0 !== tint ? tint : undefined);
1203
+ props.shift = (0 !== shift ? shift : undefined);
1204
+ if (Gradient.Mode.Thematic === props.mode) {
1205
+ const thematic = ppfb.thematicSettings();
1206
+ if (null !== thematic) {
1207
+ const tprops = {};
1208
+ const mode = thematic.mode();
1209
+ const stepCount = thematic.stepCount();
1210
+ const marginColor = thematic.marginColor();
1211
+ const colorScheme = thematic.colorScheme();
1212
+ tprops.mode = (0 !== mode ? mode : undefined);
1213
+ tprops.stepCount = (0 !== stepCount ? stepCount : undefined);
1214
+ tprops.marginColor = (0 !== marginColor ? marginColor : undefined);
1215
+ tprops.colorScheme = (0 !== colorScheme ? colorScheme : undefined);
1216
+ props.thematicSettings = tprops;
1217
+ }
1218
+ }
1219
+ const gradient = Gradient.Symb.fromJSON(props);
1220
+ if (undefined === geomParams.gradient || !gradient.equals(geomParams.gradient)) {
1221
+ geomParams.gradient = gradient;
1222
+ changed = true;
1223
+ }
1224
+ }
1225
+ else if (0 !== ppfb.backgroundFill()) {
1226
+ const backgroundFill = (2 === ppfb.backgroundFill() ? BackgroundFill.Outline : BackgroundFill.Solid);
1227
+ if (backgroundFill !== geomParams.backgroundFill) {
1228
+ geomParams.backgroundFill = backgroundFill;
1229
+ changed = true;
1230
+ }
1231
+ }
1232
+ else if (ppfb.useColor()) {
1233
+ const fillColor = ColorDef.fromTbgr(ppfb.color());
1234
+ if (undefined === geomParams.fillColor || !fillColor.equals(geomParams.fillColor)) {
1235
+ geomParams.fillColor = fillColor;
1236
+ changed = true;
1237
+ }
1238
+ }
1239
+ return changed;
1240
+ }
1241
+ case ElementGeometryOpcode.Pattern: {
1242
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
1243
+ const ppfb = EGFBAccessors.AreaPattern.getRootAsAreaPattern(buffer);
1244
+ const props = {};
1245
+ const origin = ppfb.origin();
1246
+ if (null !== origin) {
1247
+ const point = Point3d.create(origin.x(), origin.y(), origin.z());
1248
+ if (!point.isAlmostZero)
1249
+ props.origin = point;
1250
+ }
1251
+ const rotation = ppfb.rotation();
1252
+ if (null !== rotation) {
1253
+ const angles = YawPitchRollAngles.createFromMatrix3d(Matrix3d.createRowValues(rotation.x00(), rotation.x01(), rotation.x02(), rotation.x10(), rotation.x11(), rotation.x12(), rotation.x20(), rotation.x21(), rotation.x22()));
1254
+ if (undefined !== angles && !angles.isIdentity())
1255
+ props.rotation = angles;
1256
+ }
1257
+ const space1 = ppfb.space1();
1258
+ const space2 = ppfb.space2();
1259
+ const angle1 = ppfb.angle1();
1260
+ const angle2 = ppfb.angle2();
1261
+ const scale = ppfb.scale();
1262
+ props.space1 = (0 !== space1 ? space1 : undefined);
1263
+ props.space2 = (0 !== space2 ? space2 : undefined);
1264
+ props.angle1 = (0 !== angle1 ? { radians: angle1 } : undefined);
1265
+ props.angle2 = (0 !== angle2 ? { radians: angle2 } : undefined);
1266
+ props.scale = (0 !== scale ? scale : undefined);
1267
+ if (ppfb.useColor())
1268
+ props.color = ppfb.color();
1269
+ if (ppfb.useWeight())
1270
+ props.weight = ppfb.weight();
1271
+ props.invisibleBoundary = (1 === ppfb.invisibleBoundary() ? true : undefined);
1272
+ props.snappable = (1 === ppfb.snappable() ? true : undefined);
1273
+ const symbolId = Id64.fromUint32Pair(ppfb.symbolId().low, ppfb.symbolId().high);
1274
+ props.symbolId = (Id64.isValid(symbolId) ? symbolId : undefined);
1275
+ const nDefLines = ppfb.defLineLength();
1276
+ if (0 !== nDefLines) {
1277
+ const defLines = [];
1278
+ for (let iLine = 0; iLine < nDefLines; ++iLine) {
1279
+ const defLine = ppfb.defLine(iLine);
1280
+ if (!defLine)
1281
+ continue;
1282
+ const line = {};
1283
+ const angle = defLine.angle();
1284
+ line.angle = (0 !== angle ? { radians: defLine.angle() } : undefined);
1285
+ const through = defLine.through();
1286
+ if (through) {
1287
+ const thr = Point2d.create(through.x(), through.y());
1288
+ if (!thr.isAlmostZero)
1289
+ line.through = thr;
1290
+ }
1291
+ const offset = defLine.offset();
1292
+ if (offset) {
1293
+ const off = Point2d.create(offset.x(), offset.y());
1294
+ if (!off.isAlmostZero)
1295
+ line.offset = off;
1296
+ }
1297
+ const dashArray = defLine.dashesArray();
1298
+ if (0 !== defLine.dashesLength() && null !== dashArray) {
1299
+ const dashes = [];
1300
+ for (const value of dashArray) {
1301
+ dashes.push(value);
1302
+ }
1303
+ line.dashes = dashes;
1304
+ }
1305
+ defLines.push(line);
1306
+ }
1307
+ props.defLines = defLines;
1308
+ }
1309
+ const pattern = AreaPattern.Params.fromJSON(props);
1310
+ if (undefined !== localToWorld)
1311
+ pattern.applyTransform(localToWorld);
1312
+ if (undefined === geomParams.pattern || !pattern.equals(geomParams.pattern)) {
1313
+ geomParams.pattern = pattern;
1314
+ changed = true;
1315
+ }
1316
+ return changed;
1317
+ }
1318
+ case ElementGeometryOpcode.Material: {
1319
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
1320
+ const ppfb = EGFBAccessors.Material.getRootAsMaterial(buffer);
1321
+ if (ppfb.useMaterial()) {
1322
+ const matLong = ppfb.materialId();
1323
+ const materialId = Id64.fromUint32Pair(matLong.low, matLong.high);
1324
+ if (undefined === geomParams.materialId || materialId !== geomParams.materialId) {
1325
+ geomParams.materialId = materialId;
1326
+ changed = true;
1327
+ }
1328
+ }
1329
+ return changed;
1330
+ }
1331
+ default:
1332
+ return changed;
1333
+ }
1334
+ }
1335
+ ElementGeometry.updateGeometryParams = updateGeometryParams;
1336
+ /** Append entries to represent a [[GeometryParams]] */
1337
+ function appendGeometryParams(geomParams, entries, worldToLocal) {
1338
+ const fbbBas = new flatbuffers.Builder();
1339
+ const builder = EGFBAccessors.BasicSymbology;
1340
+ builder.startBasicSymbology(fbbBas);
1341
+ const subcatIdPair = Id64.getUint32Pair(geomParams.subCategoryId);
1342
+ builder.addSubCategoryId(fbbBas, flatbuffers.Long.create(subcatIdPair.lower, subcatIdPair.upper));
1343
+ if (undefined !== geomParams.lineColor) {
1344
+ builder.addColor(fbbBas, geomParams.lineColor.tbgr);
1345
+ builder.addUseColor(fbbBas, 1);
1346
+ }
1347
+ if (undefined !== geomParams.weight) {
1348
+ builder.addWeight(fbbBas, geomParams.weight);
1349
+ builder.addUseWeight(fbbBas, 1);
1350
+ }
1351
+ if (undefined !== geomParams.styleInfo) {
1352
+ const styleIdPair = Id64.getUint32Pair(geomParams.styleInfo.styleId);
1353
+ builder.addLineStyleId(fbbBas, flatbuffers.Long.create(styleIdPair.lower, styleIdPair.upper));
1354
+ builder.addUseStyle(fbbBas, 1);
1355
+ }
1356
+ if (undefined !== geomParams.elmTransparency && 0 !== geomParams.elmTransparency) {
1357
+ builder.addTransparency(fbbBas, geomParams.elmTransparency);
1358
+ }
1359
+ if (undefined !== geomParams.elmPriority && 0 !== geomParams.elmPriority) {
1360
+ builder.addDisplayPriority(fbbBas, geomParams.elmPriority);
1361
+ }
1362
+ if (undefined !== geomParams.geometryClass && GeometryClass.Primary !== geomParams.geometryClass) {
1363
+ builder.addGeomClass(fbbBas, geomParams.geometryClass);
1364
+ }
1365
+ const mLoc = builder.endBasicSymbology(fbbBas);
1366
+ fbbBas.finish(mLoc);
1367
+ const data = fbbBas.asUint8Array();
1368
+ entries.push({ opcode: ElementGeometryOpcode.BasicSymbology, data });
1369
+ if (undefined !== geomParams.styleInfo && undefined !== geomParams.styleInfo.styleMod) {
1370
+ const fbbLS = new flatbuffers.Builder();
1371
+ const builderLS = EGFBAccessors.LineStyleModifiers;
1372
+ builderLS.startLineStyleModifiers(fbbLS);
1373
+ let lsMods = geomParams.styleInfo.styleMod;
1374
+ if (undefined !== worldToLocal) {
1375
+ lsMods = new LineStyle.Modifier(lsMods);
1376
+ if (!lsMods.applyTransform(worldToLocal))
1377
+ return false;
1378
+ }
1379
+ let modifiers = 0;
1380
+ if (undefined !== lsMods.scale) {
1381
+ builderLS.addScale(fbbLS, lsMods.scale);
1382
+ modifiers |= StyleMod.Scale;
1383
+ }
1384
+ if (undefined !== lsMods.dashScale) {
1385
+ builderLS.addDashScale(fbbLS, lsMods.dashScale);
1386
+ modifiers |= StyleMod.DashScale;
1387
+ }
1388
+ if (undefined !== lsMods.gapScale) {
1389
+ builderLS.addGapScale(fbbLS, lsMods.gapScale);
1390
+ modifiers |= StyleMod.GapScale;
1391
+ }
1392
+ if (undefined !== lsMods.startWidth) {
1393
+ builderLS.addStartWidth(fbbLS, lsMods.startWidth);
1394
+ modifiers |= StyleMod.StartWidth;
1395
+ }
1396
+ if (undefined !== lsMods.endWidth) {
1397
+ builderLS.addEndWidth(fbbLS, lsMods.endWidth);
1398
+ modifiers |= StyleMod.EndWidth;
1399
+ }
1400
+ if (undefined !== lsMods.distPhase) {
1401
+ builderLS.addDistPhase(fbbLS, lsMods.distPhase);
1402
+ modifiers |= StyleMod.DistPhase;
1403
+ }
1404
+ if (undefined !== lsMods.fractPhase) {
1405
+ builderLS.addFractPhase(fbbLS, lsMods.fractPhase);
1406
+ modifiers |= StyleMod.FractPhase;
1407
+ }
1408
+ if (lsMods.centerPhase) {
1409
+ modifiers |= StyleMod.CenterPhase;
1410
+ }
1411
+ if (undefined !== lsMods.segmentMode) {
1412
+ modifiers |= (lsMods.segmentMode ? StyleMod.SegMode : StyleMod.NoSegMode);
1413
+ }
1414
+ if (lsMods.physicalWidth) {
1415
+ modifiers |= StyleMod.PhysicalWidth;
1416
+ }
1417
+ if (undefined !== lsMods.normal) {
1418
+ const normalOffset = EGFBAccessors.DVec3d.createDVec3d(fbbLS, lsMods.normal.x, lsMods.normal.y, lsMods.normal.z);
1419
+ builderLS.addNormal(fbbLS, normalOffset);
1420
+ modifiers |= StyleMod.Normal;
1421
+ }
1422
+ if (undefined !== lsMods.rotation) {
1423
+ builderLS.addYaw(fbbLS, lsMods.rotation.yaw.degrees);
1424
+ builderLS.addPitch(fbbLS, lsMods.rotation.pitch.degrees);
1425
+ builderLS.addRoll(fbbLS, lsMods.rotation.roll.degrees);
1426
+ modifiers |= StyleMod.Rotation;
1427
+ }
1428
+ builderLS.addModifiers(fbbLS, modifiers);
1429
+ const mLocLS = builderLS.endLineStyleModifiers(fbbLS);
1430
+ fbbLS.finish(mLocLS);
1431
+ const dataLS = fbbLS.asUint8Array();
1432
+ if (0 !== modifiers)
1433
+ entries.push({ opcode: ElementGeometryOpcode.LineStyleModifiers, data: dataLS });
1434
+ }
1435
+ if (undefined !== geomParams.fillDisplay && FillDisplay.Never !== geomParams.fillDisplay) {
1436
+ const fbbFill = new flatbuffers.Builder();
1437
+ const builderFill = EGFBAccessors.AreaFill;
1438
+ let keyValuesOff;
1439
+ let keyColorsOff;
1440
+ let thematicOffset;
1441
+ if (undefined !== geomParams.gradient) {
1442
+ const keyColors = [];
1443
+ const keyValues = [];
1444
+ for (const key of geomParams.gradient.keys) {
1445
+ keyColors.push(key.color.tbgr);
1446
+ keyValues.push(key.value);
1447
+ }
1448
+ keyValuesOff = builderFill.createValuesVector(fbbFill, keyValues);
1449
+ keyColorsOff = builderFill.createColorsVector(fbbFill, keyColors);
1450
+ if (Gradient.Mode.Thematic === geomParams.gradient.mode && undefined !== geomParams.gradient.thematicSettings) {
1451
+ const thematic = geomParams.gradient.thematicSettings;
1452
+ const builderThematic = EGFBAccessors.ThematicSettings;
1453
+ builderThematic.startThematicSettings(fbbFill);
1454
+ builderThematic.addMode(fbbFill, thematic.mode);
1455
+ builderThematic.addStepCount(fbbFill, thematic.stepCount);
1456
+ builderThematic.addMarginColor(fbbFill, thematic.marginColor.tbgr);
1457
+ builderThematic.addColorScheme(fbbFill, thematic.colorScheme);
1458
+ const rangeOffset = EGFBAccessors.DRange1d.createDRange1d(fbbFill, ThematicGradientSettings.contentRange, ThematicGradientSettings.contentMax);
1459
+ builderThematic.addRange(fbbFill, rangeOffset);
1460
+ thematicOffset = builderThematic.endThematicSettings(fbbFill);
1461
+ }
1462
+ }
1463
+ builderFill.startAreaFill(fbbFill);
1464
+ const toEGFBFillDisplay = (fill) => {
1465
+ switch (fill) {
1466
+ case FillDisplay.ByView:
1467
+ return EGFBAccessors.FillDisplay.ByView;
1468
+ case FillDisplay.Always:
1469
+ return EGFBAccessors.FillDisplay.Always;
1470
+ case FillDisplay.Blanking:
1471
+ return EGFBAccessors.FillDisplay.Blanking;
1472
+ default:
1473
+ return EGFBAccessors.FillDisplay.None;
1474
+ }
1475
+ };
1476
+ builderFill.addFill(fbbFill, toEGFBFillDisplay(geomParams.fillDisplay));
1477
+ if (undefined !== geomParams.fillTransparency)
1478
+ builderFill.addTransparency(fbbFill, geomParams.fillTransparency);
1479
+ if (undefined !== geomParams.gradient) {
1480
+ const toEGFBGradientMode = (mode) => {
1481
+ switch (mode) {
1482
+ case Gradient.Mode.Linear:
1483
+ return EGFBAccessors.GradientMode.Linear;
1484
+ case Gradient.Mode.Curved:
1485
+ return EGFBAccessors.GradientMode.Curved;
1486
+ case Gradient.Mode.Cylindrical:
1487
+ return EGFBAccessors.GradientMode.Cylindrical;
1488
+ case Gradient.Mode.Spherical:
1489
+ return EGFBAccessors.GradientMode.Spherical;
1490
+ case Gradient.Mode.Hemispherical:
1491
+ return EGFBAccessors.GradientMode.Hemispherical;
1492
+ case Gradient.Mode.Thematic:
1493
+ return EGFBAccessors.GradientMode.Thematic;
1494
+ default:
1495
+ return EGFBAccessors.GradientMode.None;
1496
+ }
1497
+ };
1498
+ builderFill.addMode(fbbFill, toEGFBGradientMode(geomParams.gradient.mode));
1499
+ builderFill.addFlags(fbbFill, geomParams.gradient.flags);
1500
+ builderFill.addShift(fbbFill, geomParams.gradient.shift);
1501
+ if (undefined !== geomParams.gradient.tint)
1502
+ builderFill.addTint(fbbFill, geomParams.gradient.tint);
1503
+ if (undefined !== geomParams.gradient.angle)
1504
+ builderFill.addAngle(fbbFill, geomParams.gradient.angle.radians);
1505
+ if (undefined !== keyValuesOff)
1506
+ builderFill.addValues(fbbFill, keyValuesOff);
1507
+ if (undefined !== keyColorsOff)
1508
+ builderFill.addColors(fbbFill, keyColorsOff);
1509
+ if (undefined !== thematicOffset)
1510
+ builderFill.addThematicSettings(fbbFill, thematicOffset);
1511
+ }
1512
+ else if (undefined !== geomParams.backgroundFill && BackgroundFill.None !== geomParams.backgroundFill) {
1513
+ builderFill.addBackgroundFill(fbbFill, BackgroundFill.Outline === geomParams.backgroundFill ? 2 : 1);
1514
+ }
1515
+ else if (undefined !== geomParams.fillColor) {
1516
+ builderFill.addColor(fbbFill, geomParams.fillColor.tbgr);
1517
+ builderFill.addUseColor(fbbFill, 1);
1518
+ }
1519
+ const mLocFill = builderFill.endAreaFill(fbbFill);
1520
+ fbbFill.finish(mLocFill);
1521
+ const dataFill = fbbFill.asUint8Array();
1522
+ entries.push({ opcode: ElementGeometryOpcode.Fill, data: dataFill });
1523
+ }
1524
+ if (undefined !== geomParams.pattern) {
1525
+ const fbbPat = new flatbuffers.Builder();
1526
+ const builderPat = EGFBAccessors.AreaPattern;
1527
+ let pattern = geomParams.pattern;
1528
+ if (undefined !== worldToLocal) {
1529
+ pattern = pattern.clone();
1530
+ if (!pattern.applyTransform(worldToLocal))
1531
+ return false;
1532
+ }
1533
+ let defLineVecOffset;
1534
+ if (undefined !== pattern.defLines) {
1535
+ const defLines = pattern.defLines;
1536
+ const builderDefLines = EGFBAccessors.DwgHatchDefLine;
1537
+ const defLineOffsets = [];
1538
+ for (const line of defLines) {
1539
+ let dashOffset;
1540
+ if (undefined !== line.dashes)
1541
+ dashOffset = builderDefLines.createDashesVector(fbbPat, line.dashes);
1542
+ builderDefLines.startDwgHatchDefLine(fbbPat);
1543
+ if (undefined !== line.angle)
1544
+ builderDefLines.addAngle(fbbPat, line.angle.radians);
1545
+ // NOTE: Backend requires through and offset to be present...
1546
+ const throughOffset = EGFBAccessors.DPoint2d.createDPoint2d(fbbPat, undefined !== line.through ? line.through.x : 0, undefined !== line.through ? line.through.y : 0);
1547
+ builderDefLines.addThrough(fbbPat, throughOffset);
1548
+ const offsetOffset = EGFBAccessors.DPoint2d.createDPoint2d(fbbPat, undefined !== line.offset ? line.offset.x : 0, undefined !== line.offset ? line.offset.y : 0);
1549
+ builderDefLines.addOffset(fbbPat, offsetOffset);
1550
+ if (undefined !== dashOffset)
1551
+ builderDefLines.addDashes(fbbPat, dashOffset);
1552
+ defLineOffsets.push(builderDefLines.endDwgHatchDefLine(fbbPat));
1553
+ }
1554
+ if (0 !== defLineOffsets.length)
1555
+ defLineVecOffset = builderPat.createDefLineVector(fbbPat, defLineOffsets);
1556
+ }
1557
+ builderPat.startAreaPattern(fbbPat);
1558
+ if (undefined !== pattern.origin) {
1559
+ const originOffset = EGFBAccessors.DPoint3d.createDPoint3d(fbbPat, pattern.origin.x, pattern.origin.y, pattern.origin.z);
1560
+ builderPat.addOrigin(fbbPat, originOffset);
1561
+ }
1562
+ if (undefined !== pattern.rotation) {
1563
+ const matrix = pattern.rotation.toMatrix3d();
1564
+ const coffs = matrix.coffs;
1565
+ const rotationOffset = EGFBAccessors.RotMatrix.createRotMatrix(fbbPat, coffs[0], coffs[1], coffs[2], coffs[3], coffs[4], coffs[5], coffs[6], coffs[7], coffs[8]);
1566
+ builderPat.addRotation(fbbPat, rotationOffset);
1567
+ }
1568
+ if (undefined !== pattern.space1)
1569
+ builderPat.addSpace1(fbbPat, pattern.space1);
1570
+ if (undefined !== pattern.space2)
1571
+ builderPat.addSpace2(fbbPat, pattern.space2);
1572
+ if (undefined !== pattern.angle1)
1573
+ builderPat.addAngle1(fbbPat, pattern.angle1.radians);
1574
+ if (undefined !== pattern.angle2)
1575
+ builderPat.addAngle2(fbbPat, pattern.angle2.radians);
1576
+ if (undefined !== pattern.scale)
1577
+ builderPat.addScale(fbbPat, pattern.scale);
1578
+ if (undefined !== pattern.color) {
1579
+ builderPat.addColor(fbbPat, pattern.color.tbgr);
1580
+ builderPat.addUseColor(fbbPat, 1);
1581
+ }
1582
+ if (undefined !== pattern.weight) {
1583
+ builderPat.addWeight(fbbPat, pattern.weight);
1584
+ builderPat.addUseWeight(fbbPat, 1);
1585
+ }
1586
+ if (undefined !== pattern.invisibleBoundary && pattern.invisibleBoundary)
1587
+ builderPat.addInvisibleBoundary(fbbPat, 1);
1588
+ if (undefined !== pattern.snappable && pattern.snappable)
1589
+ builderPat.addSnappable(fbbPat, 1);
1590
+ if (undefined !== pattern.symbolId) {
1591
+ const symbolIdPair = Id64.getUint32Pair(pattern.symbolId);
1592
+ builderPat.addSymbolId(fbbPat, flatbuffers.Long.create(symbolIdPair.lower, symbolIdPair.upper));
1593
+ }
1594
+ if (undefined !== defLineVecOffset)
1595
+ builderPat.addDefLine(fbbPat, defLineVecOffset);
1596
+ const mLocPat = builderPat.endAreaPattern(fbbPat);
1597
+ fbbPat.finish(mLocPat);
1598
+ const dataPat = fbbPat.asUint8Array();
1599
+ entries.push({ opcode: ElementGeometryOpcode.Pattern, data: dataPat });
1600
+ }
1601
+ if (undefined !== geomParams.materialId) {
1602
+ const fbbMat = new flatbuffers.Builder();
1603
+ const builderMat = EGFBAccessors.Material;
1604
+ builderMat.startMaterial(fbbMat);
1605
+ const matIdPair = Id64.getUint32Pair(geomParams.materialId);
1606
+ builderMat.addMaterialId(fbbMat, flatbuffers.Long.create(matIdPair.lower, matIdPair.upper));
1607
+ builderMat.addUseMaterial(fbbMat, 1);
1608
+ const mLocMat = builderMat.endMaterial(fbbMat);
1609
+ fbbMat.finish(mLocMat);
1610
+ const dataMat = fbbMat.asUint8Array();
1611
+ entries.push({ opcode: ElementGeometryOpcode.Material, data: dataMat });
1612
+ }
1613
+ return true;
1614
+ }
1615
+ ElementGeometry.appendGeometryParams = appendGeometryParams;
1616
+ /** Return entry as [[GeometryPart]] id and instance transform */
1617
+ function toGeometryPart(entry, partToElement) {
1618
+ if (ElementGeometryOpcode.PartReference !== entry.opcode)
1619
+ return undefined;
1620
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
1621
+ const ppfb = EGFBAccessors.GeometryPart.getRootAsGeometryPart(buffer);
1622
+ const partLong = ppfb.geomPartId();
1623
+ const partId = Id64.fromUint32Pair(partLong.low, partLong.high);
1624
+ if (undefined !== partToElement) {
1625
+ let origin;
1626
+ const originfb = ppfb.origin();
1627
+ if (null !== originfb)
1628
+ origin = Point3d.create(originfb.x(), originfb.y(), originfb.z());
1629
+ else
1630
+ origin = Point3d.createZero();
1631
+ const angles = YawPitchRollAngles.createDegrees(ppfb.yaw(), ppfb.pitch(), ppfb.roll());
1632
+ const matrix = angles.toMatrix3d();
1633
+ if (1.0 !== ppfb.scale())
1634
+ matrix.scaleColumnsInPlace(ppfb.scale(), ppfb.scale(), ppfb.scale());
1635
+ Transform.createOriginAndMatrix(origin, matrix, partToElement);
1636
+ }
1637
+ return partId;
1638
+ }
1639
+ ElementGeometry.toGeometryPart = toGeometryPart;
1640
+ /** Create entry from a [[GeometryPart]] id and instance transform */
1641
+ function fromGeometryPart(partId, partTransform, worldToLocal) {
1642
+ let partToElement = partTransform;
1643
+ if (undefined !== worldToLocal)
1644
+ partToElement = worldToLocal.multiplyTransformTransform(undefined !== partTransform ? partTransform : Transform.createIdentity());
1645
+ const fbb = new flatbuffers.Builder();
1646
+ const builder = EGFBAccessors.GeometryPart;
1647
+ builder.startGeometryPart(fbb);
1648
+ const idPair = Id64.getUint32Pair(partId);
1649
+ builder.addGeomPartId(fbb, flatbuffers.Long.create(idPair.lower, idPair.upper));
1650
+ if (undefined !== partToElement && !partToElement.isIdentity) {
1651
+ const originOffset = EGFBAccessors.DPoint3d.createDPoint3d(fbb, partToElement.origin.x, partToElement.origin.y, partToElement.origin.z);
1652
+ builder.addOrigin(fbb, originOffset);
1653
+ const angles = YawPitchRollAngles.createFromMatrix3d(partToElement.matrix);
1654
+ if (undefined !== angles) {
1655
+ builder.addYaw(fbb, angles.yaw.degrees);
1656
+ builder.addPitch(fbb, angles.pitch.degrees);
1657
+ builder.addRoll(fbb, angles.roll.degrees);
1658
+ }
1659
+ const result = partToElement.matrix.factorRigidWithSignedScale();
1660
+ if (undefined !== result && result.scale > 0.0)
1661
+ builder.addScale(fbb, result.scale);
1662
+ }
1663
+ const mLoc = builder.endGeometryPart(fbb);
1664
+ fbb.finish(mLoc);
1665
+ const data = fbb.asUint8Array();
1666
+ return { opcode: ElementGeometryOpcode.PartReference, data };
1667
+ }
1668
+ ElementGeometry.fromGeometryPart = fromGeometryPart;
1669
+ /** Return entry as a [[ElementAlignedBox3d]] representing the local range of a geometric entry */
1670
+ function toSubGraphicRange(entry) {
1671
+ if (ElementGeometryOpcode.SubGraphicRange !== entry.opcode)
1672
+ return undefined;
1673
+ const buffer = new flatbuffers.ByteBuffer(entry.data);
1674
+ const ppfb = EGFBAccessors.PointPrimitive.getRootAsPointPrimitive(buffer);
1675
+ if (2 !== ppfb.coordsLength())
1676
+ return undefined;
1677
+ const low = Point3d.create(ppfb.coords(0).x(), ppfb.coords(0).y(), ppfb.coords(0).z());
1678
+ const high = Point3d.create(ppfb.coords(1).x(), ppfb.coords(1).y(), ppfb.coords(1).z());
1679
+ return Range3d.create(low, high);
1680
+ }
1681
+ ElementGeometry.toSubGraphicRange = toSubGraphicRange;
1682
+ /** Create entry from a [[ElementAlignedBox3d]] to compute and store local ranges for subsequent geometric entries */
1683
+ function fromSubGraphicRange(bbox) {
1684
+ const fbb = new flatbuffers.Builder();
1685
+ const builder = EGFBAccessors.PointPrimitive;
1686
+ builder.startCoordsVector(fbb, 2);
1687
+ fbb.addFloat64(bbox.high.z);
1688
+ fbb.addFloat64(bbox.high.y);
1689
+ fbb.addFloat64(bbox.high.x);
1690
+ fbb.addFloat64(bbox.low.z);
1691
+ fbb.addFloat64(bbox.low.y);
1692
+ fbb.addFloat64(bbox.low.x);
1693
+ const offset = fbb.endVector();
1694
+ builder.startPointPrimitive(fbb);
1695
+ builder.addCoords(fbb, offset);
1696
+ const mLoc = builder.endPointPrimitive(fbb);
1697
+ fbb.finish(mLoc);
1698
+ const data = fbb.asUint8Array();
1699
+ return { opcode: ElementGeometryOpcode.SubGraphicRange, data };
1700
+ }
1701
+ ElementGeometry.fromSubGraphicRange = fromSubGraphicRange;
1702
+ /** Create [[Transform]] from row-major storage 4x3 Float64Array */
1703
+ function toTransform(sourceToWorld) {
1704
+ if (12 !== sourceToWorld.length)
1705
+ return undefined;
1706
+ return Transform.createRowValues(sourceToWorld[0], sourceToWorld[1], sourceToWorld[2], sourceToWorld[3], sourceToWorld[4], sourceToWorld[5], sourceToWorld[6], sourceToWorld[7], sourceToWorld[8], sourceToWorld[9], sourceToWorld[10], sourceToWorld[11]);
1707
+ }
1708
+ ElementGeometry.toTransform = toTransform;
1709
+ /** Create [[ElementAlignedBox3d]] from lowX, lowY, lowZ, highX, highY, highZ Float64Array */
1710
+ function toElementAlignedBox3d(bbox) {
1711
+ if (6 !== bbox.length)
1712
+ return undefined;
1713
+ return Range3d.fromFloat64Array(bbox);
1714
+ }
1715
+ ElementGeometry.toElementAlignedBox3d = toElementAlignedBox3d;
1716
+ })(ElementGeometry || (ElementGeometry = {}));
1717
1717
  //# sourceMappingURL=ElementGeometry.js.map