@faicad/faijs 0.31.1 → 0.32.3

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 (1538) hide show
  1. package/dist/api/api-namespace.d.ts.map +1 -1
  2. package/dist/api/api-namespace.js +9 -3
  3. package/dist/api/api-namespace.js.map +1 -1
  4. package/dist/api/boolean-op/index.d.ts.map +1 -1
  5. package/dist/api/boolean-op/index.js +1 -0
  6. package/dist/api/boolean-op/index.js.map +1 -1
  7. package/dist/api/boolean.d.ts.map +1 -1
  8. package/dist/api/boolean.js +4 -0
  9. package/dist/api/boolean.js.map +1 -1
  10. package/dist/api/brep-operations/joinery-brep.js +10 -10
  11. package/dist/api/brep-operations/joinery-brep.js.map +1 -1
  12. package/dist/api/chamfer.d.ts.map +1 -1
  13. package/dist/api/chamfer.js +1 -0
  14. package/dist/api/chamfer.js.map +1 -1
  15. package/dist/api/curve-sketch/index.d.ts.map +1 -1
  16. package/dist/api/curve-sketch/index.js +3 -0
  17. package/dist/api/curve-sketch/index.js.map +1 -1
  18. package/dist/api/draft.d.ts.map +1 -1
  19. package/dist/api/draft.js +1 -0
  20. package/dist/api/draft.js.map +1 -1
  21. package/dist/api/engrave.d.ts.map +1 -1
  22. package/dist/api/engrave.js +1 -0
  23. package/dist/api/engrave.js.map +1 -1
  24. package/dist/api/extrude.d.ts.map +1 -1
  25. package/dist/api/extrude.js +18 -17
  26. package/dist/api/extrude.js.map +1 -1
  27. package/dist/api/feature-repair.d.ts.map +1 -1
  28. package/dist/api/feature-repair.js +6 -0
  29. package/dist/api/feature-repair.js.map +1 -1
  30. package/dist/api/fillet-variable.d.ts.map +1 -1
  31. package/dist/api/fillet-variable.js +1 -0
  32. package/dist/api/fillet-variable.js.map +1 -1
  33. package/dist/api/fillet.d.ts.map +1 -1
  34. package/dist/api/fillet.js +1 -0
  35. package/dist/api/fillet.js.map +1 -1
  36. package/dist/api/generated/operations.js +16 -16
  37. package/dist/api/generated/operations.js.map +1 -1
  38. package/dist/api/generated/sketching.js +1 -1
  39. package/dist/api/generated/sketching.js.map +1 -1
  40. package/dist/api/generated/topology.js +18 -18
  41. package/dist/api/generated/topology.js.map +1 -1
  42. package/dist/api/helix.d.ts.map +1 -1
  43. package/dist/api/helix.js +1 -0
  44. package/dist/api/helix.js.map +1 -1
  45. package/dist/api/import-brep.d.ts.map +1 -1
  46. package/dist/api/import-brep.js +1 -0
  47. package/dist/api/import-brep.js.map +1 -1
  48. package/dist/api/import-step.d.ts.map +1 -1
  49. package/dist/api/import-step.js +1 -0
  50. package/dist/api/import-step.js.map +1 -1
  51. package/dist/api/index.d.ts +5 -2
  52. package/dist/api/index.d.ts.map +1 -1
  53. package/dist/api/index.js +3 -0
  54. package/dist/api/index.js.map +1 -1
  55. package/dist/api/loft-advanced.d.ts +66 -0
  56. package/dist/api/loft-advanced.d.ts.map +1 -0
  57. package/dist/api/loft-advanced.js +112 -0
  58. package/dist/api/loft-advanced.js.map +1 -0
  59. package/dist/api/loft.d.ts +16 -23
  60. package/dist/api/loft.d.ts.map +1 -1
  61. package/dist/api/loft.js +22 -40
  62. package/dist/api/loft.js.map +1 -1
  63. package/dist/api/measure-query/index.d.ts.map +1 -1
  64. package/dist/api/measure-query/index.js +2 -0
  65. package/dist/api/measure-query/index.js.map +1 -1
  66. package/dist/api/pattern.d.ts.map +1 -1
  67. package/dist/api/pattern.js +1 -0
  68. package/dist/api/pattern.js.map +1 -1
  69. package/dist/api/place.d.ts.map +1 -1
  70. package/dist/api/place.js +1 -0
  71. package/dist/api/place.js.map +1 -1
  72. package/dist/api/profile.d.ts.map +1 -1
  73. package/dist/api/profile.js +1 -0
  74. package/dist/api/profile.js.map +1 -1
  75. package/dist/api/punch-hole.d.ts.map +1 -1
  76. package/dist/api/punch-hole.js +1 -0
  77. package/dist/api/punch-hole.js.map +1 -1
  78. package/dist/api/replicate.d.ts.map +1 -1
  79. package/dist/api/replicate.js +6 -0
  80. package/dist/api/replicate.js.map +1 -1
  81. package/dist/api/revolve.d.ts.map +1 -1
  82. package/dist/api/revolve.js +1 -0
  83. package/dist/api/revolve.js.map +1 -1
  84. package/dist/api/screw.d.ts.map +1 -1
  85. package/dist/api/screw.js +1 -0
  86. package/dist/api/screw.js.map +1 -1
  87. package/dist/api/sdf.d.ts.map +1 -1
  88. package/dist/api/sdf.js +1 -0
  89. package/dist/api/sdf.js.map +1 -1
  90. package/dist/api/shell.d.ts.map +1 -1
  91. package/dist/api/shell.js +1 -0
  92. package/dist/api/shell.js.map +1 -1
  93. package/dist/api/sketch-on-face.d.ts +34 -30
  94. package/dist/api/sketch-on-face.d.ts.map +1 -1
  95. package/dist/api/sketch-on-face.js +41 -31
  96. package/dist/api/sketch-on-face.js.map +1 -1
  97. package/dist/api/sketch-on-plane.d.ts.map +1 -1
  98. package/dist/api/sketch-on-plane.js +1 -0
  99. package/dist/api/sketch-on-plane.js.map +1 -1
  100. package/dist/api/sketch-on-surface.d.ts +76 -0
  101. package/dist/api/sketch-on-surface.d.ts.map +1 -0
  102. package/dist/api/sketch-on-surface.js +99 -0
  103. package/dist/api/sketch-on-surface.js.map +1 -0
  104. package/dist/api/solid-offset/index.d.ts.map +1 -1
  105. package/dist/api/solid-offset/index.js +1 -0
  106. package/dist/api/solid-offset/index.js.map +1 -1
  107. package/dist/api/split.d.ts.map +1 -1
  108. package/dist/api/split.js +1 -0
  109. package/dist/api/split.js.map +1 -1
  110. package/dist/api/surface/arg-spec.d.ts +5 -4
  111. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  112. package/dist/api/surface/arg-spec.js +2 -2
  113. package/dist/api/surface/arg-spec.js.map +1 -1
  114. package/dist/api/surface-face/index.d.ts.map +1 -1
  115. package/dist/api/surface-face/index.js +5 -0
  116. package/dist/api/surface-face/index.js.map +1 -1
  117. package/dist/api/surface.d.ts.map +1 -1
  118. package/dist/api/surface.js +1 -0
  119. package/dist/api/surface.js.map +1 -1
  120. package/dist/api/sweep-advanced.d.ts +117 -0
  121. package/dist/api/sweep-advanced.d.ts.map +1 -0
  122. package/dist/api/sweep-advanced.js +94 -0
  123. package/dist/api/sweep-advanced.js.map +1 -0
  124. package/dist/api/sweep.d.ts +18 -88
  125. package/dist/api/sweep.d.ts.map +1 -1
  126. package/dist/api/sweep.js +27 -30
  127. package/dist/api/sweep.js.map +1 -1
  128. package/dist/api/thicken.d.ts.map +1 -1
  129. package/dist/api/thicken.js +1 -0
  130. package/dist/api/thicken.js.map +1 -1
  131. package/dist/api/transform.d.ts.map +1 -1
  132. package/dist/api/transform.js +2 -0
  133. package/dist/api/transform.js.map +1 -1
  134. package/dist/api/wire.d.ts.map +1 -1
  135. package/dist/api/wire.js +1 -0
  136. package/dist/api/wire.js.map +1 -1
  137. package/dist/boolean/cross-section.d.ts +7 -6
  138. package/dist/boolean/cross-section.d.ts.map +1 -1
  139. package/dist/boolean/cross-section.js +38 -27
  140. package/dist/boolean/cross-section.js.map +1 -1
  141. package/dist/boolean/deriveNormals.d.ts +5 -5
  142. package/dist/boolean/deriveNormals.d.ts.map +1 -1
  143. package/dist/boolean/deriveNormals.js +18 -18
  144. package/dist/boolean/deriveNormals.js.map +1 -1
  145. package/dist/boolean/extrude-helpers.d.ts +6 -6
  146. package/dist/boolean/extrude-helpers.d.ts.map +1 -1
  147. package/dist/boolean/extrude-helpers.js +6 -6
  148. package/dist/boolean/extrude-helpers.js.map +1 -1
  149. package/dist/boolean/geo-convert.d.ts +11 -8
  150. package/dist/boolean/geo-convert.d.ts.map +1 -1
  151. package/dist/boolean/geo-convert.js +17 -73
  152. package/dist/boolean/geo-convert.js.map +1 -1
  153. package/dist/boolean/index.js.map +1 -1
  154. package/dist/brep/brep-ops.d.ts +5 -5
  155. package/dist/brep/brep-ops.d.ts.map +1 -1
  156. package/dist/brep/brep-ops.js +42 -42
  157. package/dist/brep/brep-ops.js.map +1 -1
  158. package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
  159. package/dist/brep/engine/adapters/brep-mock.js +24 -0
  160. package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
  161. package/dist/brep/engine/primitives.d.ts +30 -0
  162. package/dist/brep/engine/primitives.d.ts.map +1 -1
  163. package/dist/brep/engine/primitives.js.map +1 -1
  164. package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
  165. package/dist/brepkit-kernel/brepkitKernel.js +138 -0
  166. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  167. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  168. package/dist/cad-runtime/runtime.js +5 -2
  169. package/dist/cad-runtime/runtime.js.map +1 -1
  170. package/dist/define-op.d.ts +16 -7
  171. package/dist/define-op.d.ts.map +1 -1
  172. package/dist/define-op.js +2 -0
  173. package/dist/define-op.js.map +1 -1
  174. package/dist/index.d.ts +1 -0
  175. package/dist/index.d.ts.map +1 -1
  176. package/dist/index.js.map +1 -1
  177. package/dist/lang/codegen.d.ts +14 -3
  178. package/dist/lang/codegen.d.ts.map +1 -1
  179. package/dist/lang/codegen.js +80 -5
  180. package/dist/lang/codegen.js.map +1 -1
  181. package/dist/lang/metadata-extractor.d.ts +10 -3
  182. package/dist/lang/metadata-extractor.d.ts.map +1 -1
  183. package/dist/lang/metadata-extractor.js +160 -65
  184. package/dist/lang/metadata-extractor.js.map +1 -1
  185. package/dist/lang/symbol-table.generated.d.ts +3 -0
  186. package/dist/lang/symbol-table.generated.d.ts.map +1 -1
  187. package/dist/lang/symbol-table.generated.js +3 -0
  188. package/dist/lang/symbol-table.generated.js.map +1 -1
  189. package/dist/math3d/Box3.d.ts +86 -0
  190. package/dist/math3d/Box3.d.ts.map +1 -0
  191. package/dist/math3d/Box3.js +149 -0
  192. package/dist/math3d/Box3.js.map +1 -0
  193. package/dist/math3d/Euler.d.ts +64 -0
  194. package/dist/math3d/Euler.d.ts.map +1 -0
  195. package/dist/math3d/Euler.js +94 -0
  196. package/dist/math3d/Euler.js.map +1 -0
  197. package/dist/math3d/Mat4.d.ts +196 -0
  198. package/dist/math3d/Mat4.d.ts.map +1 -0
  199. package/dist/math3d/Mat4.js +518 -0
  200. package/dist/math3d/Mat4.js.map +1 -0
  201. package/dist/math3d/Plane.d.ts +67 -0
  202. package/dist/math3d/Plane.d.ts.map +1 -0
  203. package/dist/math3d/Plane.js +90 -0
  204. package/dist/math3d/Plane.js.map +1 -0
  205. package/dist/math3d/Quat.d.ts +163 -0
  206. package/dist/math3d/Quat.d.ts.map +1 -0
  207. package/dist/math3d/Quat.js +408 -0
  208. package/dist/math3d/Quat.js.map +1 -0
  209. package/dist/math3d/Vec2.d.ts +185 -0
  210. package/dist/math3d/Vec2.d.ts.map +1 -0
  211. package/dist/math3d/Vec2.js +276 -0
  212. package/dist/math3d/Vec2.js.map +1 -0
  213. package/dist/math3d/Vec3.d.ts +326 -0
  214. package/dist/math3d/Vec3.d.ts.map +1 -0
  215. package/dist/math3d/Vec3.js +521 -0
  216. package/dist/math3d/Vec3.js.map +1 -0
  217. package/dist/math3d/index.d.ts +19 -0
  218. package/dist/math3d/index.d.ts.map +1 -0
  219. package/dist/math3d/index.js +19 -0
  220. package/dist/math3d/index.js.map +1 -0
  221. package/dist/mesh/decoration-provider.d.ts +2 -2
  222. package/dist/mesh/decoration-provider.d.ts.map +1 -1
  223. package/dist/mesh/decoration-provider.js.map +1 -1
  224. package/dist/mesh/engrave.d.ts.map +1 -1
  225. package/dist/mesh/engrave.js +36 -37
  226. package/dist/mesh/engrave.js.map +1 -1
  227. package/dist/mesh/io.d.ts.map +1 -1
  228. package/dist/mesh/io.js +6 -7
  229. package/dist/mesh/io.js.map +1 -1
  230. package/dist/mesh/knurl/KnurlGenerator.d.ts +8 -7
  231. package/dist/mesh/knurl/KnurlGenerator.d.ts.map +1 -1
  232. package/dist/mesh/knurl/KnurlGenerator.js +9 -9
  233. package/dist/mesh/knurl/KnurlGenerator.js.map +1 -1
  234. package/dist/mesh/knurl/displacement.d.ts +7 -6
  235. package/dist/mesh/knurl/displacement.d.ts.map +1 -1
  236. package/dist/mesh/knurl/displacement.js +29 -29
  237. package/dist/mesh/knurl/displacement.js.map +1 -1
  238. package/dist/mesh/knurl/subdivision.d.ts +3 -3
  239. package/dist/mesh/knurl/subdivision.d.ts.map +1 -1
  240. package/dist/mesh/knurl/subdivision.js +21 -15
  241. package/dist/mesh/knurl/subdivision.js.map +1 -1
  242. package/dist/mesh/knurl/textureLoader.d.ts +3 -3
  243. package/dist/mesh/knurl/textureLoader.d.ts.map +1 -1
  244. package/dist/mesh/knurl/textureLoader.js.map +1 -1
  245. package/dist/mesh/meshdata/index.d.ts +12 -0
  246. package/dist/mesh/meshdata/index.d.ts.map +1 -0
  247. package/dist/mesh/meshdata/index.js +12 -0
  248. package/dist/mesh/meshdata/index.js.map +1 -0
  249. package/dist/mesh/meshdata/ops.d.ts +62 -0
  250. package/dist/mesh/meshdata/ops.d.ts.map +1 -0
  251. package/dist/mesh/meshdata/ops.js +160 -0
  252. package/dist/mesh/meshdata/ops.js.map +1 -0
  253. package/dist/mesh/meshdata/parametric.d.ts +70 -0
  254. package/dist/mesh/meshdata/parametric.d.ts.map +1 -0
  255. package/dist/mesh/meshdata/parametric.js +213 -0
  256. package/dist/mesh/meshdata/parametric.js.map +1 -0
  257. package/dist/mesh/meshdata/weld.d.ts +21 -0
  258. package/dist/mesh/meshdata/weld.d.ts.map +1 -0
  259. package/dist/mesh/meshdata/weld.js +50 -0
  260. package/dist/mesh/meshdata/weld.js.map +1 -0
  261. package/dist/mesh/primitives.d.ts +1 -1
  262. package/dist/mesh/primitives.d.ts.map +1 -1
  263. package/dist/mesh/primitives.js +38 -39
  264. package/dist/mesh/primitives.js.map +1 -1
  265. package/dist/mesh/query.js +11 -11
  266. package/dist/mesh/query.js.map +1 -1
  267. package/dist/mesh/stl-loader.d.ts +7 -7
  268. package/dist/mesh/stl-loader.d.ts.map +1 -1
  269. package/dist/mesh/stl-loader.js +12 -24
  270. package/dist/mesh/stl-loader.js.map +1 -1
  271. package/dist/mesh/threemf-view.d.ts +11 -11
  272. package/dist/mesh/threemf-view.d.ts.map +1 -1
  273. package/dist/mesh/threemf-view.js +10 -10
  274. package/dist/mesh/threemf-view.js.map +1 -1
  275. package/dist/mesh/transform.d.ts +14 -8
  276. package/dist/mesh/transform.d.ts.map +1 -1
  277. package/dist/mesh/transform.js +18 -13
  278. package/dist/mesh/transform.js.map +1 -1
  279. package/dist/mesh/types.d.ts +2 -0
  280. package/dist/mesh/types.d.ts.map +1 -1
  281. package/dist/mesh/types.js.map +1 -1
  282. package/dist/occt-kernel/occt-primitives.d.ts.map +1 -1
  283. package/dist/occt-kernel/occt-primitives.js +20 -0
  284. package/dist/occt-kernel/occt-primitives.js.map +1 -1
  285. package/dist/primitives/brep-primitives.d.ts +8 -12
  286. package/dist/primitives/brep-primitives.d.ts.map +1 -1
  287. package/dist/primitives/brep-primitives.js +10 -28
  288. package/dist/primitives/brep-primitives.js.map +1 -1
  289. package/dist/primitives/index.js.map +1 -1
  290. package/dist/primitives/mesh-primitives.d.ts +10 -10
  291. package/dist/primitives/mesh-primitives.d.ts.map +1 -1
  292. package/dist/primitives/mesh-primitives.js +29 -76
  293. package/dist/primitives/mesh-primitives.js.map +1 -1
  294. package/dist/primitives/screw/screw.d.ts +3 -3
  295. package/dist/primitives/screw/screw.d.ts.map +1 -1
  296. package/dist/primitives/screw/screw.js +10 -9
  297. package/dist/primitives/screw/screw.js.map +1 -1
  298. package/dist/sdf/index.js.map +1 -1
  299. package/dist/units.d.ts +40 -0
  300. package/dist/units.d.ts.map +1 -1
  301. package/dist/units.js.map +1 -1
  302. package/package.json +15 -5
  303. package/dist/api/brep-mirror/booleanFns.d.ts +0 -40
  304. package/dist/api/brep-mirror/booleanFns.d.ts.map +0 -1
  305. package/dist/api/brep-mirror/booleanFns.js +0 -104
  306. package/dist/api/brep-mirror/booleanFns.js.map +0 -1
  307. package/dist/api/brep-mirror/brepHelpers.d.ts +0 -55
  308. package/dist/api/brep-mirror/brepHelpers.d.ts.map +0 -1
  309. package/dist/api/brep-mirror/brepHelpers.js +0 -131
  310. package/dist/api/brep-mirror/brepHelpers.js.map +0 -1
  311. package/dist/api/brep-mirror/compoundFns.d.ts +0 -47
  312. package/dist/api/brep-mirror/compoundFns.d.ts.map +0 -1
  313. package/dist/api/brep-mirror/compoundFns.js +0 -300
  314. package/dist/api/brep-mirror/compoundFns.js.map +0 -1
  315. package/dist/api/brep-mirror/healingFns.d.ts +0 -78
  316. package/dist/api/brep-mirror/healingFns.d.ts.map +0 -1
  317. package/dist/api/brep-mirror/healingFns.js +0 -294
  318. package/dist/api/brep-mirror/healingFns.js.map +0 -1
  319. package/dist/api/brep-mirror/hullFns.d.ts +0 -20
  320. package/dist/api/brep-mirror/hullFns.d.ts.map +0 -1
  321. package/dist/api/brep-mirror/hullFns.js +0 -46
  322. package/dist/api/brep-mirror/hullFns.js.map +0 -1
  323. package/dist/api/brep-mirror/joinery-brep.d.ts +0 -172
  324. package/dist/api/brep-mirror/joinery-brep.d.ts.map +0 -1
  325. package/dist/api/brep-mirror/joinery-brep.js +0 -463
  326. package/dist/api/brep-mirror/joinery-brep.js.map +0 -1
  327. package/dist/api/brep-mirror/patternFns.d.ts +0 -43
  328. package/dist/api/brep-mirror/patternFns.d.ts.map +0 -1
  329. package/dist/api/brep-mirror/patternFns.js +0 -178
  330. package/dist/api/brep-mirror/patternFns.js.map +0 -1
  331. package/dist/api/brep-mirror/primitiveFns.d.ts +0 -42
  332. package/dist/api/brep-mirror/primitiveFns.d.ts.map +0 -1
  333. package/dist/api/brep-mirror/primitiveFns.js +0 -104
  334. package/dist/api/brep-mirror/primitiveFns.js.map +0 -1
  335. package/dist/api/brep-mirror/roofFns.d.ts +0 -24
  336. package/dist/api/brep-mirror/roofFns.d.ts.map +0 -1
  337. package/dist/api/brep-mirror/roofFns.js +0 -229
  338. package/dist/api/brep-mirror/roofFns.js.map +0 -1
  339. package/dist/api/brep-mirror/straightSkeleton.d.ts +0 -36
  340. package/dist/api/brep-mirror/straightSkeleton.d.ts.map +0 -1
  341. package/dist/api/brep-mirror/straightSkeleton.js +0 -443
  342. package/dist/api/brep-mirror/straightSkeleton.js.map +0 -1
  343. package/dist/api/brep-mirror/sweepFns.d.ts +0 -55
  344. package/dist/api/brep-mirror/sweepFns.d.ts.map +0 -1
  345. package/dist/api/brep-mirror/sweepFns.js +0 -200
  346. package/dist/api/brep-mirror/sweepFns.js.map +0 -1
  347. package/dist/api/brep-mirror/threadFns.d.ts +0 -83
  348. package/dist/api/brep-mirror/threadFns.d.ts.map +0 -1
  349. package/dist/api/brep-mirror/threadFns.js +0 -138
  350. package/dist/api/brep-mirror/threadFns.js.map +0 -1
  351. package/dist/api/brep-mirror/topologyFns.d.ts +0 -74
  352. package/dist/api/brep-mirror/topologyFns.d.ts.map +0 -1
  353. package/dist/api/brep-mirror/topologyFns.js +0 -276
  354. package/dist/api/brep-mirror/topologyFns.js.map +0 -1
  355. package/dist/api/brepjs-compat/constants.d.ts +0 -11
  356. package/dist/api/brepjs-compat/constants.d.ts.map +0 -1
  357. package/dist/api/brepjs-compat/constants.js +0 -11
  358. package/dist/api/brepjs-compat/constants.js.map +0 -1
  359. package/dist/api/brepjs-compat/index.d.ts +0 -21
  360. package/dist/api/brepjs-compat/index.d.ts.map +0 -1
  361. package/dist/api/brepjs-compat/index.js +0 -22
  362. package/dist/api/brepjs-compat/index.js.map +0 -1
  363. package/dist/api/brepjs-compat/planeOps.d.ts +0 -98
  364. package/dist/api/brepjs-compat/planeOps.d.ts.map +0 -1
  365. package/dist/api/brepjs-compat/planeOps.js +0 -170
  366. package/dist/api/brepjs-compat/planeOps.js.map +0 -1
  367. package/dist/api/brepjs-compat/planeTypes.d.ts +0 -24
  368. package/dist/api/brepjs-compat/planeTypes.d.ts.map +0 -1
  369. package/dist/api/brepjs-compat/planeTypes.js +0 -8
  370. package/dist/api/brepjs-compat/planeTypes.js.map +0 -1
  371. package/dist/api/brepjs-compat/types.d.ts +0 -64
  372. package/dist/api/brepjs-compat/types.d.ts.map +0 -1
  373. package/dist/api/brepjs-compat/types.js +0 -48
  374. package/dist/api/brepjs-compat/types.js.map +0 -1
  375. package/dist/api/brepjs-compat/vecOps.d.ts +0 -124
  376. package/dist/api/brepjs-compat/vecOps.d.ts.map +0 -1
  377. package/dist/api/brepjs-compat/vecOps.js +0 -202
  378. package/dist/api/brepjs-compat/vecOps.js.map +0 -1
  379. package/dist/api/generated/brepjs/index.d.ts +0 -310
  380. package/dist/api/generated/brepjs/index.d.ts.map +0 -1
  381. package/dist/api/generated/brepjs/index.js +0 -195
  382. package/dist/api/generated/brepjs/index.js.map +0 -1
  383. package/dist/api/generated/cad/script-face.d.ts +0 -12
  384. package/dist/api/generated/cad/script-face.d.ts.map +0 -1
  385. package/dist/api/generated/cad/script-face.js +0 -146
  386. package/dist/api/generated/cad/script-face.js.map +0 -1
  387. package/dist/api/internal/compat-projection.d.ts +0 -55
  388. package/dist/api/internal/compat-projection.d.ts.map +0 -1
  389. package/dist/api/internal/compat-projection.js +0 -75
  390. package/dist/api/internal/compat-projection.js.map +0 -1
  391. package/dist/api/occt-kernel-bridge.d.ts +0 -118
  392. package/dist/api/occt-kernel-bridge.d.ts.map +0 -1
  393. package/dist/api/occt-kernel-bridge.js +0 -283
  394. package/dist/api/occt-kernel-bridge.js.map +0 -1
  395. package/dist/api/sketch.d.ts +0 -80
  396. package/dist/api/sketch.d.ts.map +0 -1
  397. package/dist/api/sketch.js +0 -155
  398. package/dist/api/sketch.js.map +0 -1
  399. package/dist/api/surface/projection-overrides.d.ts +0 -38
  400. package/dist/api/surface/projection-overrides.d.ts.map +0 -1
  401. package/dist/api/surface/projection-overrides.js +0 -169
  402. package/dist/api/surface/projection-overrides.js.map +0 -1
  403. package/dist/brepjs-compat.d.ts +0 -20
  404. package/dist/brepjs-compat.d.ts.map +0 -1
  405. package/dist/brepjs-compat.js +0 -20
  406. package/dist/brepjs-compat.js.map +0 -1
  407. package/dist/cad-runtime/createRuntimeWithCad.d.ts +0 -22
  408. package/dist/cad-runtime/createRuntimeWithCad.d.ts.map +0 -1
  409. package/dist/cad-runtime/createRuntimeWithCad.js +0 -29
  410. package/dist/cad-runtime/createRuntimeWithCad.js.map +0 -1
  411. package/dist/fcstd/attachment.d.ts +0 -72
  412. package/dist/fcstd/attachment.d.ts.map +0 -1
  413. package/dist/fcstd/attachment.js +0 -93
  414. package/dist/fcstd/attachment.js.map +0 -1
  415. package/dist/fcstd/build-fai-zip.d.ts +0 -40
  416. package/dist/fcstd/build-fai-zip.d.ts.map +0 -1
  417. package/dist/fcstd/build-fai-zip.js +0 -111
  418. package/dist/fcstd/build-fai-zip.js.map +0 -1
  419. package/dist/fcstd/cli.d.ts +0 -3
  420. package/dist/fcstd/cli.d.ts.map +0 -1
  421. package/dist/fcstd/cli.js +0 -37
  422. package/dist/fcstd/cli.js.map +0 -1
  423. package/dist/fcstd/codegen.d.ts +0 -79
  424. package/dist/fcstd/codegen.d.ts.map +0 -1
  425. package/dist/fcstd/codegen.js +0 -605
  426. package/dist/fcstd/codegen.js.map +0 -1
  427. package/dist/fcstd/container.d.ts +0 -75
  428. package/dist/fcstd/container.d.ts.map +0 -1
  429. package/dist/fcstd/container.js +0 -36
  430. package/dist/fcstd/container.js.map +0 -1
  431. package/dist/fcstd/contour.d.ts +0 -43
  432. package/dist/fcstd/contour.d.ts.map +0 -1
  433. package/dist/fcstd/contour.js +0 -96
  434. package/dist/fcstd/contour.js.map +0 -1
  435. package/dist/fcstd/convert.d.ts +0 -63
  436. package/dist/fcstd/convert.d.ts.map +0 -1
  437. package/dist/fcstd/convert.js +0 -274
  438. package/dist/fcstd/convert.js.map +0 -1
  439. package/dist/fcstd/document.d.ts +0 -48
  440. package/dist/fcstd/document.d.ts.map +0 -1
  441. package/dist/fcstd/document.js +0 -140
  442. package/dist/fcstd/document.js.map +0 -1
  443. package/dist/fcstd/expressions.d.ts +0 -74
  444. package/dist/fcstd/expressions.d.ts.map +0 -1
  445. package/dist/fcstd/expressions.js +0 -157
  446. package/dist/fcstd/expressions.js.map +0 -1
  447. package/dist/fcstd/external-geo.d.ts +0 -49
  448. package/dist/fcstd/external-geo.d.ts.map +0 -1
  449. package/dist/fcstd/external-geo.js +0 -140
  450. package/dist/fcstd/external-geo.js.map +0 -1
  451. package/dist/fcstd/feature-translate.d.ts +0 -189
  452. package/dist/fcstd/feature-translate.d.ts.map +0 -1
  453. package/dist/fcstd/feature-translate.js +0 -968
  454. package/dist/fcstd/feature-translate.js.map +0 -1
  455. package/dist/fcstd/index.d.ts +0 -23
  456. package/dist/fcstd/index.d.ts.map +0 -1
  457. package/dist/fcstd/index.js +0 -19
  458. package/dist/fcstd/index.js.map +0 -1
  459. package/dist/fcstd/placement.d.ts +0 -93
  460. package/dist/fcstd/placement.d.ts.map +0 -1
  461. package/dist/fcstd/placement.js +0 -117
  462. package/dist/fcstd/placement.js.map +0 -1
  463. package/dist/fcstd/planegcs-backend.d.ts +0 -34
  464. package/dist/fcstd/planegcs-backend.d.ts.map +0 -1
  465. package/dist/fcstd/planegcs-backend.js +0 -626
  466. package/dist/fcstd/planegcs-backend.js.map +0 -1
  467. package/dist/fcstd/sketch-parse.d.ts +0 -181
  468. package/dist/fcstd/sketch-parse.d.ts.map +0 -1
  469. package/dist/fcstd/sketch-parse.js +0 -227
  470. package/dist/fcstd/sketch-parse.js.map +0 -1
  471. package/dist/fcstd/sketch-solver.d.ts +0 -63
  472. package/dist/fcstd/sketch-solver.d.ts.map +0 -1
  473. package/dist/fcstd/sketch-solver.js +0 -28
  474. package/dist/fcstd/sketch-solver.js.map +0 -1
  475. package/dist/fcstd/sketch-verify.d.ts +0 -43
  476. package/dist/fcstd/sketch-verify.d.ts.map +0 -1
  477. package/dist/fcstd/sketch-verify.js +0 -62
  478. package/dist/fcstd/sketch-verify.js.map +0 -1
  479. package/dist/fcstd/structural-types.d.ts +0 -83
  480. package/dist/fcstd/structural-types.d.ts.map +0 -1
  481. package/dist/fcstd/structural-types.js +0 -121
  482. package/dist/fcstd/structural-types.js.map +0 -1
  483. package/dist/fcstd/unpack.d.ts +0 -44
  484. package/dist/fcstd/unpack.d.ts.map +0 -1
  485. package/dist/fcstd/unpack.js +0 -64
  486. package/dist/fcstd/unpack.js.map +0 -1
  487. package/dist/fcstd-convert.d.ts +0 -30
  488. package/dist/fcstd-convert.d.ts.map +0 -1
  489. package/dist/fcstd-convert.js +0 -27
  490. package/dist/fcstd-convert.js.map +0 -1
  491. package/dist/mesh/creased-normals.d.ts +0 -50
  492. package/dist/mesh/creased-normals.d.ts.map +0 -1
  493. package/dist/mesh/creased-normals.js +0 -114
  494. package/dist/mesh/creased-normals.js.map +0 -1
  495. package/dist/occt-kernel/generated/occtPlatform.generated.d.ts +0 -260
  496. package/dist/occt-kernel/generated/occtPlatform.generated.d.ts.map +0 -1
  497. package/dist/occt-kernel/generated/occtPlatform.generated.js +0 -875
  498. package/dist/occt-kernel/generated/occtPlatform.generated.js.map +0 -1
  499. package/dist/occt-kernel/stepMetaParser.d.ts +0 -44
  500. package/dist/occt-kernel/stepMetaParser.d.ts.map +0 -1
  501. package/dist/occt-kernel/stepMetaParser.js +0 -166
  502. package/dist/occt-kernel/stepMetaParser.js.map +0 -1
  503. package/dist/vendored/brepjs/2d/blueprints/baseSketcher2d.d.ts +0 -106
  504. package/dist/vendored/brepjs/2d/blueprints/baseSketcher2d.d.ts.map +0 -1
  505. package/dist/vendored/brepjs/2d/blueprints/baseSketcher2d.js +0 -341
  506. package/dist/vendored/brepjs/2d/blueprints/baseSketcher2d.js.map +0 -1
  507. package/dist/vendored/brepjs/2d/blueprints/blueprint.d.ts +0 -185
  508. package/dist/vendored/brepjs/2d/blueprints/blueprint.d.ts.map +0 -1
  509. package/dist/vendored/brepjs/2d/blueprints/blueprint.js +0 -361
  510. package/dist/vendored/brepjs/2d/blueprints/blueprint.js.map +0 -1
  511. package/dist/vendored/brepjs/2d/blueprints/blueprintApproximations.d.ts +0 -15
  512. package/dist/vendored/brepjs/2d/blueprints/blueprintApproximations.d.ts.map +0 -1
  513. package/dist/vendored/brepjs/2d/blueprints/blueprintApproximations.js +0 -28
  514. package/dist/vendored/brepjs/2d/blueprints/blueprintApproximations.js.map +0 -1
  515. package/dist/vendored/brepjs/2d/blueprints/blueprintCustomCorners.d.ts +0 -29
  516. package/dist/vendored/brepjs/2d/blueprints/blueprintCustomCorners.d.ts.map +0 -1
  517. package/dist/vendored/brepjs/2d/blueprints/blueprintCustomCorners.js +0 -86
  518. package/dist/vendored/brepjs/2d/blueprints/blueprintCustomCorners.js.map +0 -1
  519. package/dist/vendored/brepjs/2d/blueprints/blueprintFns.d.ts +0 -57
  520. package/dist/vendored/brepjs/2d/blueprints/blueprintFns.d.ts.map +0 -1
  521. package/dist/vendored/brepjs/2d/blueprints/blueprintFns.js +0 -92
  522. package/dist/vendored/brepjs/2d/blueprints/blueprintFns.js.map +0 -1
  523. package/dist/vendored/brepjs/2d/blueprints/blueprintOffset.d.ts +0 -58
  524. package/dist/vendored/brepjs/2d/blueprints/blueprintOffset.d.ts.map +0 -1
  525. package/dist/vendored/brepjs/2d/blueprints/blueprintOffset.js +0 -346
  526. package/dist/vendored/brepjs/2d/blueprints/blueprintOffset.js.map +0 -1
  527. package/dist/vendored/brepjs/2d/blueprints/blueprintSketcher.d.ts +0 -30
  528. package/dist/vendored/brepjs/2d/blueprints/blueprintSketcher.d.ts.map +0 -1
  529. package/dist/vendored/brepjs/2d/blueprints/blueprintSketcher.js +0 -45
  530. package/dist/vendored/brepjs/2d/blueprints/blueprintSketcher.js.map +0 -1
  531. package/dist/vendored/brepjs/2d/blueprints/blueprints.d.ts +0 -68
  532. package/dist/vendored/brepjs/2d/blueprints/blueprints.d.ts.map +0 -1
  533. package/dist/vendored/brepjs/2d/blueprints/blueprints.js +0 -116
  534. package/dist/vendored/brepjs/2d/blueprints/blueprints.js.map +0 -1
  535. package/dist/vendored/brepjs/2d/blueprints/boolean2D.d.ts +0 -68
  536. package/dist/vendored/brepjs/2d/blueprints/boolean2D.d.ts.map +0 -1
  537. package/dist/vendored/brepjs/2d/blueprints/boolean2D.js +0 -362
  538. package/dist/vendored/brepjs/2d/blueprints/boolean2D.js.map +0 -1
  539. package/dist/vendored/brepjs/2d/blueprints/booleanHelpers.d.ts +0 -34
  540. package/dist/vendored/brepjs/2d/blueprints/booleanHelpers.d.ts.map +0 -1
  541. package/dist/vendored/brepjs/2d/blueprints/booleanHelpers.js +0 -176
  542. package/dist/vendored/brepjs/2d/blueprints/booleanHelpers.js.map +0 -1
  543. package/dist/vendored/brepjs/2d/blueprints/booleanOperations.d.ts +0 -55
  544. package/dist/vendored/brepjs/2d/blueprints/booleanOperations.d.ts.map +0 -1
  545. package/dist/vendored/brepjs/2d/blueprints/booleanOperations.js +0 -110
  546. package/dist/vendored/brepjs/2d/blueprints/booleanOperations.js.map +0 -1
  547. package/dist/vendored/brepjs/2d/blueprints/cannedBlueprints.d.ts +0 -41
  548. package/dist/vendored/brepjs/2d/blueprints/cannedBlueprints.d.ts.map +0 -1
  549. package/dist/vendored/brepjs/2d/blueprints/cannedBlueprints.js +0 -90
  550. package/dist/vendored/brepjs/2d/blueprints/cannedBlueprints.js.map +0 -1
  551. package/dist/vendored/brepjs/2d/blueprints/compoundBlueprint.d.ts +0 -85
  552. package/dist/vendored/brepjs/2d/blueprints/compoundBlueprint.d.ts.map +0 -1
  553. package/dist/vendored/brepjs/2d/blueprints/compoundBlueprint.js +0 -136
  554. package/dist/vendored/brepjs/2d/blueprints/compoundBlueprint.js.map +0 -1
  555. package/dist/vendored/brepjs/2d/blueprints/ellipseUtils.d.ts +0 -48
  556. package/dist/vendored/brepjs/2d/blueprints/ellipseUtils.d.ts.map +0 -1
  557. package/dist/vendored/brepjs/2d/blueprints/ellipseUtils.js +0 -154
  558. package/dist/vendored/brepjs/2d/blueprints/ellipseUtils.js.map +0 -1
  559. package/dist/vendored/brepjs/2d/blueprints/genericSketcher.d.ts +0 -342
  560. package/dist/vendored/brepjs/2d/blueprints/genericSketcher.d.ts.map +0 -1
  561. package/dist/vendored/brepjs/2d/blueprints/genericSketcher.js +0 -32
  562. package/dist/vendored/brepjs/2d/blueprints/genericSketcher.js.map +0 -1
  563. package/dist/vendored/brepjs/2d/blueprints/index.d.ts +0 -16
  564. package/dist/vendored/brepjs/2d/blueprints/index.d.ts.map +0 -1
  565. package/dist/vendored/brepjs/2d/blueprints/index.js +0 -13
  566. package/dist/vendored/brepjs/2d/blueprints/index.js.map +0 -1
  567. package/dist/vendored/brepjs/2d/blueprints/intersectionSegments.d.ts +0 -18
  568. package/dist/vendored/brepjs/2d/blueprints/intersectionSegments.d.ts.map +0 -1
  569. package/dist/vendored/brepjs/2d/blueprints/intersectionSegments.js +0 -230
  570. package/dist/vendored/brepjs/2d/blueprints/intersectionSegments.js.map +0 -1
  571. package/dist/vendored/brepjs/2d/blueprints/lib.d.ts +0 -73
  572. package/dist/vendored/brepjs/2d/blueprints/lib.d.ts.map +0 -1
  573. package/dist/vendored/brepjs/2d/blueprints/lib.js +0 -103
  574. package/dist/vendored/brepjs/2d/blueprints/lib.js.map +0 -1
  575. package/dist/vendored/brepjs/2d/blueprints/segmentAssembly.d.ts +0 -31
  576. package/dist/vendored/brepjs/2d/blueprints/segmentAssembly.d.ts.map +0 -1
  577. package/dist/vendored/brepjs/2d/blueprints/segmentAssembly.js +0 -226
  578. package/dist/vendored/brepjs/2d/blueprints/segmentAssembly.js.map +0 -1
  579. package/dist/vendored/brepjs/2d/blueprints/svg.d.ts +0 -22
  580. package/dist/vendored/brepjs/2d/blueprints/svg.d.ts.map +0 -1
  581. package/dist/vendored/brepjs/2d/blueprints/svg.js +0 -30
  582. package/dist/vendored/brepjs/2d/blueprints/svg.js.map +0 -1
  583. package/dist/vendored/brepjs/2d/curve2dGeometryFns.d.ts +0 -124
  584. package/dist/vendored/brepjs/2d/curve2dGeometryFns.d.ts.map +0 -1
  585. package/dist/vendored/brepjs/2d/curve2dGeometryFns.js +0 -235
  586. package/dist/vendored/brepjs/2d/curve2dGeometryFns.js.map +0 -1
  587. package/dist/vendored/brepjs/2d/curves.d.ts +0 -45
  588. package/dist/vendored/brepjs/2d/curves.d.ts.map +0 -1
  589. package/dist/vendored/brepjs/2d/curves.js +0 -139
  590. package/dist/vendored/brepjs/2d/curves.js.map +0 -1
  591. package/dist/vendored/brepjs/2d/lib/approximations.d.ts +0 -47
  592. package/dist/vendored/brepjs/2d/lib/approximations.d.ts.map +0 -1
  593. package/dist/vendored/brepjs/2d/lib/approximations.js +0 -82
  594. package/dist/vendored/brepjs/2d/lib/approximations.js.map +0 -1
  595. package/dist/vendored/brepjs/2d/lib/boundingBox2d.d.ts +0 -39
  596. package/dist/vendored/brepjs/2d/lib/boundingBox2d.d.ts.map +0 -1
  597. package/dist/vendored/brepjs/2d/lib/boundingBox2d.js +0 -88
  598. package/dist/vendored/brepjs/2d/lib/boundingBox2d.js.map +0 -1
  599. package/dist/vendored/brepjs/2d/lib/curve2D.d.ts +0 -82
  600. package/dist/vendored/brepjs/2d/lib/curve2D.d.ts.map +0 -1
  601. package/dist/vendored/brepjs/2d/lib/curve2D.js +0 -258
  602. package/dist/vendored/brepjs/2d/lib/curve2D.js.map +0 -1
  603. package/dist/vendored/brepjs/2d/lib/curve2dFns.d.ts +0 -53
  604. package/dist/vendored/brepjs/2d/lib/curve2dFns.d.ts.map +0 -1
  605. package/dist/vendored/brepjs/2d/lib/curve2dFns.js +0 -69
  606. package/dist/vendored/brepjs/2d/lib/curve2dFns.js.map +0 -1
  607. package/dist/vendored/brepjs/2d/lib/customCorners.d.ts +0 -29
  608. package/dist/vendored/brepjs/2d/lib/customCorners.d.ts.map +0 -1
  609. package/dist/vendored/brepjs/2d/lib/customCorners.js +0 -237
  610. package/dist/vendored/brepjs/2d/lib/customCorners.js.map +0 -1
  611. package/dist/vendored/brepjs/2d/lib/definitions.d.ts +0 -12
  612. package/dist/vendored/brepjs/2d/lib/definitions.d.ts.map +0 -1
  613. package/dist/vendored/brepjs/2d/lib/definitions.js +0 -19
  614. package/dist/vendored/brepjs/2d/lib/definitions.js.map +0 -1
  615. package/dist/vendored/brepjs/2d/lib/ellipseArcFlags.d.ts +0 -21
  616. package/dist/vendored/brepjs/2d/lib/ellipseArcFlags.d.ts.map +0 -1
  617. package/dist/vendored/brepjs/2d/lib/ellipseArcFlags.js +0 -71
  618. package/dist/vendored/brepjs/2d/lib/ellipseArcFlags.js.map +0 -1
  619. package/dist/vendored/brepjs/2d/lib/index.d.ts +0 -14
  620. package/dist/vendored/brepjs/2d/lib/index.d.ts.map +0 -1
  621. package/dist/vendored/brepjs/2d/lib/index.js +0 -14
  622. package/dist/vendored/brepjs/2d/lib/index.js.map +0 -1
  623. package/dist/vendored/brepjs/2d/lib/intersections.d.ts +0 -34
  624. package/dist/vendored/brepjs/2d/lib/intersections.d.ts.map +0 -1
  625. package/dist/vendored/brepjs/2d/lib/intersections.js +0 -77
  626. package/dist/vendored/brepjs/2d/lib/intersections.js.map +0 -1
  627. package/dist/vendored/brepjs/2d/lib/makeCurves.d.ts +0 -63
  628. package/dist/vendored/brepjs/2d/lib/makeCurves.d.ts.map +0 -1
  629. package/dist/vendored/brepjs/2d/lib/makeCurves.js +0 -117
  630. package/dist/vendored/brepjs/2d/lib/makeCurves.js.map +0 -1
  631. package/dist/vendored/brepjs/2d/lib/offset.d.ts +0 -30
  632. package/dist/vendored/brepjs/2d/lib/offset.d.ts.map +0 -1
  633. package/dist/vendored/brepjs/2d/lib/offset.js +0 -109
  634. package/dist/vendored/brepjs/2d/lib/offset.js.map +0 -1
  635. package/dist/vendored/brepjs/2d/lib/precision.d.ts +0 -12
  636. package/dist/vendored/brepjs/2d/lib/precision.d.ts.map +0 -1
  637. package/dist/vendored/brepjs/2d/lib/precision.js +0 -12
  638. package/dist/vendored/brepjs/2d/lib/precision.js.map +0 -1
  639. package/dist/vendored/brepjs/2d/lib/stitching.d.ts +0 -15
  640. package/dist/vendored/brepjs/2d/lib/stitching.d.ts.map +0 -1
  641. package/dist/vendored/brepjs/2d/lib/stitching.js +0 -67
  642. package/dist/vendored/brepjs/2d/lib/stitching.js.map +0 -1
  643. package/dist/vendored/brepjs/2d/lib/svgPath.d.ts +0 -4
  644. package/dist/vendored/brepjs/2d/lib/svgPath.d.ts.map +0 -1
  645. package/dist/vendored/brepjs/2d/lib/svgPath.js +0 -114
  646. package/dist/vendored/brepjs/2d/lib/svgPath.js.map +0 -1
  647. package/dist/vendored/brepjs/2d/lib/utils.d.ts +0 -11
  648. package/dist/vendored/brepjs/2d/lib/utils.d.ts.map +0 -1
  649. package/dist/vendored/brepjs/2d/lib/utils.js +0 -24
  650. package/dist/vendored/brepjs/2d/lib/utils.js.map +0 -1
  651. package/dist/vendored/brepjs/2d/lib/vectorOperations.d.ts +0 -19
  652. package/dist/vendored/brepjs/2d/lib/vectorOperations.d.ts.map +0 -1
  653. package/dist/vendored/brepjs/2d/lib/vectorOperations.js +0 -26
  654. package/dist/vendored/brepjs/2d/lib/vectorOperations.js.map +0 -1
  655. package/dist/vendored/brepjs/2d.d.ts +0 -26
  656. package/dist/vendored/brepjs/2d.d.ts.map +0 -1
  657. package/dist/vendored/brepjs/2d.js +0 -33
  658. package/dist/vendored/brepjs/2d.js.map +0 -1
  659. package/dist/vendored/brepjs/core/constants.d.ts +0 -7
  660. package/dist/vendored/brepjs/core/constants.d.ts.map +0 -1
  661. package/dist/vendored/brepjs/core/constants.js +0 -7
  662. package/dist/vendored/brepjs/core/constants.js.map +0 -1
  663. package/dist/vendored/brepjs/core/curve2dHandle.d.ts +0 -35
  664. package/dist/vendored/brepjs/core/curve2dHandle.d.ts.map +0 -1
  665. package/dist/vendored/brepjs/core/curve2dHandle.js +0 -48
  666. package/dist/vendored/brepjs/core/curve2dHandle.js.map +0 -1
  667. package/dist/vendored/brepjs/core/dimensionTypes.d.ts +0 -61
  668. package/dist/vendored/brepjs/core/dimensionTypes.d.ts.map +0 -1
  669. package/dist/vendored/brepjs/core/dimensionTypes.js +0 -54
  670. package/dist/vendored/brepjs/core/dimensionTypes.js.map +0 -1
  671. package/dist/vendored/brepjs/core/disposal.d.ts +0 -136
  672. package/dist/vendored/brepjs/core/disposal.d.ts.map +0 -1
  673. package/dist/vendored/brepjs/core/disposal.js +0 -441
  674. package/dist/vendored/brepjs/core/disposal.js.map +0 -1
  675. package/dist/vendored/brepjs/core/errors.d.ts +0 -191
  676. package/dist/vendored/brepjs/core/errors.d.ts.map +0 -1
  677. package/dist/vendored/brepjs/core/errors.js +0 -238
  678. package/dist/vendored/brepjs/core/errors.js.map +0 -1
  679. package/dist/vendored/brepjs/core/kernelBoundary.d.ts +0 -40
  680. package/dist/vendored/brepjs/core/kernelBoundary.d.ts.map +0 -1
  681. package/dist/vendored/brepjs/core/kernelBoundary.js +0 -99
  682. package/dist/vendored/brepjs/core/kernelBoundary.js.map +0 -1
  683. package/dist/vendored/brepjs/core/kernelCall.d.ts +0 -48
  684. package/dist/vendored/brepjs/core/kernelCall.d.ts.map +0 -1
  685. package/dist/vendored/brepjs/core/kernelCall.js +0 -154
  686. package/dist/vendored/brepjs/core/kernelCall.js.map +0 -1
  687. package/dist/vendored/brepjs/core/kernelErrorTranslation.d.ts +0 -17
  688. package/dist/vendored/brepjs/core/kernelErrorTranslation.d.ts.map +0 -1
  689. package/dist/vendored/brepjs/core/kernelErrorTranslation.js +0 -98
  690. package/dist/vendored/brepjs/core/kernelErrorTranslation.js.map +0 -1
  691. package/dist/vendored/brepjs/core/planeOps.d.ts +0 -62
  692. package/dist/vendored/brepjs/core/planeOps.d.ts.map +0 -1
  693. package/dist/vendored/brepjs/core/planeOps.js +0 -148
  694. package/dist/vendored/brepjs/core/planeOps.js.map +0 -1
  695. package/dist/vendored/brepjs/core/planeTypes.d.ts +0 -22
  696. package/dist/vendored/brepjs/core/planeTypes.d.ts.map +0 -1
  697. package/dist/vendored/brepjs/core/planeTypes.js +0 -6
  698. package/dist/vendored/brepjs/core/planeTypes.js.map +0 -1
  699. package/dist/vendored/brepjs/core/result.d.ts +0 -85
  700. package/dist/vendored/brepjs/core/result.d.ts.map +0 -1
  701. package/dist/vendored/brepjs/core/result.js +0 -212
  702. package/dist/vendored/brepjs/core/result.js.map +0 -1
  703. package/dist/vendored/brepjs/core/shapeTypeCache.d.ts +0 -27
  704. package/dist/vendored/brepjs/core/shapeTypeCache.d.ts.map +0 -1
  705. package/dist/vendored/brepjs/core/shapeTypeCache.js +0 -40
  706. package/dist/vendored/brepjs/core/shapeTypeCache.js.map +0 -1
  707. package/dist/vendored/brepjs/core/shapeTypes.d.ts +0 -199
  708. package/dist/vendored/brepjs/core/shapeTypes.d.ts.map +0 -1
  709. package/dist/vendored/brepjs/core/shapeTypes.js +0 -267
  710. package/dist/vendored/brepjs/core/shapeTypes.js.map +0 -1
  711. package/dist/vendored/brepjs/core/typeDiscriminants.d.ts +0 -25
  712. package/dist/vendored/brepjs/core/typeDiscriminants.d.ts.map +0 -1
  713. package/dist/vendored/brepjs/core/typeDiscriminants.js +0 -50
  714. package/dist/vendored/brepjs/core/typeDiscriminants.js.map +0 -1
  715. package/dist/vendored/brepjs/core/types.d.ts +0 -51
  716. package/dist/vendored/brepjs/core/types.d.ts.map +0 -1
  717. package/dist/vendored/brepjs/core/types.js +0 -35
  718. package/dist/vendored/brepjs/core/types.js.map +0 -1
  719. package/dist/vendored/brepjs/core/validityTypes.d.ts +0 -143
  720. package/dist/vendored/brepjs/core/validityTypes.d.ts.map +0 -1
  721. package/dist/vendored/brepjs/core/validityTypes.js +0 -174
  722. package/dist/vendored/brepjs/core/validityTypes.js.map +0 -1
  723. package/dist/vendored/brepjs/core/vecOps.d.ts +0 -53
  724. package/dist/vendored/brepjs/core/vecOps.d.ts.map +0 -1
  725. package/dist/vendored/brepjs/core/vecOps.js +0 -131
  726. package/dist/vendored/brepjs/core/vecOps.js.map +0 -1
  727. package/dist/vendored/brepjs/core.d.ts +0 -17
  728. package/dist/vendored/brepjs/core.d.ts.map +0 -1
  729. package/dist/vendored/brepjs/core.js +0 -13
  730. package/dist/vendored/brepjs/core.js.map +0 -1
  731. package/dist/vendored/brepjs/gear/gearFns.d.ts +0 -148
  732. package/dist/vendored/brepjs/gear/gearFns.d.ts.map +0 -1
  733. package/dist/vendored/brepjs/gear/gearFns.js +0 -479
  734. package/dist/vendored/brepjs/gear/gearFns.js.map +0 -1
  735. package/dist/vendored/brepjs/gear/gearMath.d.ts +0 -89
  736. package/dist/vendored/brepjs/gear/gearMath.d.ts.map +0 -1
  737. package/dist/vendored/brepjs/gear/gearMath.js +0 -195
  738. package/dist/vendored/brepjs/gear/gearMath.js.map +0 -1
  739. package/dist/vendored/brepjs/gear/gearProfile.d.ts +0 -17
  740. package/dist/vendored/brepjs/gear/gearProfile.d.ts.map +0 -1
  741. package/dist/vendored/brepjs/gear/gearProfile.js +0 -159
  742. package/dist/vendored/brepjs/gear/gearProfile.js.map +0 -1
  743. package/dist/vendored/brepjs/gear/index.d.ts +0 -4
  744. package/dist/vendored/brepjs/gear/index.d.ts.map +0 -1
  745. package/dist/vendored/brepjs/gear/index.js +0 -4
  746. package/dist/vendored/brepjs/gear/index.js.map +0 -1
  747. package/dist/vendored/brepjs/index.d.ts +0 -152
  748. package/dist/vendored/brepjs/index.d.ts.map +0 -1
  749. package/dist/vendored/brepjs/index.js +0 -195
  750. package/dist/vendored/brepjs/index.js.map +0 -1
  751. package/dist/vendored/brepjs/io/dxfExportFns.d.ts +0 -74
  752. package/dist/vendored/brepjs/io/dxfExportFns.d.ts.map +0 -1
  753. package/dist/vendored/brepjs/io/dxfExportFns.js +0 -134
  754. package/dist/vendored/brepjs/io/dxfExportFns.js.map +0 -1
  755. package/dist/vendored/brepjs/io/dxfImportFns.d.ts +0 -20
  756. package/dist/vendored/brepjs/io/dxfImportFns.d.ts.map +0 -1
  757. package/dist/vendored/brepjs/io/dxfImportFns.js +0 -132
  758. package/dist/vendored/brepjs/io/dxfImportFns.js.map +0 -1
  759. package/dist/vendored/brepjs/io/gltfExportFns.d.ts +0 -97
  760. package/dist/vendored/brepjs/io/gltfExportFns.d.ts.map +0 -1
  761. package/dist/vendored/brepjs/io/gltfExportFns.js +0 -460
  762. package/dist/vendored/brepjs/io/gltfExportFns.js.map +0 -1
  763. package/dist/vendored/brepjs/io/gltfImportFns.d.ts +0 -21
  764. package/dist/vendored/brepjs/io/gltfImportFns.d.ts.map +0 -1
  765. package/dist/vendored/brepjs/io/gltfImportFns.js +0 -33
  766. package/dist/vendored/brepjs/io/gltfImportFns.js.map +0 -1
  767. package/dist/vendored/brepjs/io/importFns.d.ts +0 -56
  768. package/dist/vendored/brepjs/io/importFns.d.ts.map +0 -1
  769. package/dist/vendored/brepjs/io/importFns.js +0 -108
  770. package/dist/vendored/brepjs/io/importFns.js.map +0 -1
  771. package/dist/vendored/brepjs/io/ioUtils.d.ts +0 -22
  772. package/dist/vendored/brepjs/io/ioUtils.d.ts.map +0 -1
  773. package/dist/vendored/brepjs/io/ioUtils.js +0 -56
  774. package/dist/vendored/brepjs/io/ioUtils.js.map +0 -1
  775. package/dist/vendored/brepjs/io/objExportFns.d.ts +0 -23
  776. package/dist/vendored/brepjs/io/objExportFns.d.ts.map +0 -1
  777. package/dist/vendored/brepjs/io/objExportFns.js +0 -67
  778. package/dist/vendored/brepjs/io/objExportFns.js.map +0 -1
  779. package/dist/vendored/brepjs/io/objImportFns.d.ts +0 -26
  780. package/dist/vendored/brepjs/io/objImportFns.d.ts.map +0 -1
  781. package/dist/vendored/brepjs/io/objImportFns.js +0 -96
  782. package/dist/vendored/brepjs/io/objImportFns.js.map +0 -1
  783. package/dist/vendored/brepjs/io/stepConfigFns.d.ts +0 -30
  784. package/dist/vendored/brepjs/io/stepConfigFns.d.ts.map +0 -1
  785. package/dist/vendored/brepjs/io/stepConfigFns.js +0 -30
  786. package/dist/vendored/brepjs/io/stepConfigFns.js.map +0 -1
  787. package/dist/vendored/brepjs/io/svgImportFns.d.ts +0 -58
  788. package/dist/vendored/brepjs/io/svgImportFns.d.ts.map +0 -1
  789. package/dist/vendored/brepjs/io/svgImportFns.js +0 -394
  790. package/dist/vendored/brepjs/io/svgImportFns.js.map +0 -1
  791. package/dist/vendored/brepjs/io/threemfExportFns.d.ts +0 -48
  792. package/dist/vendored/brepjs/io/threemfExportFns.d.ts.map +0 -1
  793. package/dist/vendored/brepjs/io/threemfExportFns.js +0 -345
  794. package/dist/vendored/brepjs/io/threemfExportFns.js.map +0 -1
  795. package/dist/vendored/brepjs/io/threemfImportFns.d.ts +0 -22
  796. package/dist/vendored/brepjs/io/threemfImportFns.d.ts.map +0 -1
  797. package/dist/vendored/brepjs/io/threemfImportFns.js +0 -350
  798. package/dist/vendored/brepjs/io/threemfImportFns.js.map +0 -1
  799. package/dist/vendored/brepjs/io.d.ts +0 -17
  800. package/dist/vendored/brepjs/io.d.ts.map +0 -1
  801. package/dist/vendored/brepjs/io.js +0 -20
  802. package/dist/vendored/brepjs/io.js.map +0 -1
  803. package/dist/vendored/brepjs/kernel/capabilities.d.ts +0 -36
  804. package/dist/vendored/brepjs/kernel/capabilities.d.ts.map +0 -1
  805. package/dist/vendored/brepjs/kernel/capabilities.js +0 -35
  806. package/dist/vendored/brepjs/kernel/capabilities.js.map +0 -1
  807. package/dist/vendored/brepjs/kernel/geometry2d.d.ts +0 -96
  808. package/dist/vendored/brepjs/kernel/geometry2d.d.ts.map +0 -1
  809. package/dist/vendored/brepjs/kernel/geometry2d.js +0 -885
  810. package/dist/vendored/brepjs/kernel/geometry2d.js.map +0 -1
  811. package/dist/vendored/brepjs/kernel/hullGeometry.d.ts +0 -23
  812. package/dist/vendored/brepjs/kernel/hullGeometry.d.ts.map +0 -1
  813. package/dist/vendored/brepjs/kernel/hullGeometry.js +0 -312
  814. package/dist/vendored/brepjs/kernel/hullGeometry.js.map +0 -1
  815. package/dist/vendored/brepjs/kernel/index.d.ts +0 -73
  816. package/dist/vendored/brepjs/kernel/index.d.ts.map +0 -1
  817. package/dist/vendored/brepjs/kernel/index.js +0 -161
  818. package/dist/vendored/brepjs/kernel/index.js.map +0 -1
  819. package/dist/vendored/brepjs/kernel/interfaces/booleanOps.d.ts +0 -44
  820. package/dist/vendored/brepjs/kernel/interfaces/booleanOps.d.ts.map +0 -1
  821. package/dist/vendored/brepjs/kernel/interfaces/booleanOps.js +0 -11
  822. package/dist/vendored/brepjs/kernel/interfaces/booleanOps.js.map +0 -1
  823. package/dist/vendored/brepjs/kernel/interfaces/builderOps.d.ts +0 -67
  824. package/dist/vendored/brepjs/kernel/interfaces/builderOps.d.ts.map +0 -1
  825. package/dist/vendored/brepjs/kernel/interfaces/builderOps.js +0 -12
  826. package/dist/vendored/brepjs/kernel/interfaces/builderOps.js.map +0 -1
  827. package/dist/vendored/brepjs/kernel/interfaces/core.d.ts +0 -46
  828. package/dist/vendored/brepjs/kernel/interfaces/core.d.ts.map +0 -1
  829. package/dist/vendored/brepjs/kernel/interfaces/core.js +0 -11
  830. package/dist/vendored/brepjs/kernel/interfaces/core.js.map +0 -1
  831. package/dist/vendored/brepjs/kernel/interfaces/curveOps.d.ts +0 -53
  832. package/dist/vendored/brepjs/kernel/interfaces/curveOps.d.ts.map +0 -1
  833. package/dist/vendored/brepjs/kernel/interfaces/curveOps.js +0 -12
  834. package/dist/vendored/brepjs/kernel/interfaces/curveOps.js.map +0 -1
  835. package/dist/vendored/brepjs/kernel/interfaces/evolutionOps.d.ts +0 -32
  836. package/dist/vendored/brepjs/kernel/interfaces/evolutionOps.d.ts.map +0 -1
  837. package/dist/vendored/brepjs/kernel/interfaces/evolutionOps.js +0 -14
  838. package/dist/vendored/brepjs/kernel/interfaces/evolutionOps.js.map +0 -1
  839. package/dist/vendored/brepjs/kernel/interfaces/index.d.ts +0 -43
  840. package/dist/vendored/brepjs/kernel/interfaces/index.d.ts.map +0 -1
  841. package/dist/vendored/brepjs/kernel/interfaces/index.js +0 -12
  842. package/dist/vendored/brepjs/kernel/interfaces/index.js.map +0 -1
  843. package/dist/vendored/brepjs/kernel/interfaces/ioOps.d.ts +0 -65
  844. package/dist/vendored/brepjs/kernel/interfaces/ioOps.d.ts.map +0 -1
  845. package/dist/vendored/brepjs/kernel/interfaces/ioOps.js +0 -9
  846. package/dist/vendored/brepjs/kernel/interfaces/ioOps.js.map +0 -1
  847. package/dist/vendored/brepjs/kernel/interfaces/measureOps.d.ts +0 -55
  848. package/dist/vendored/brepjs/kernel/interfaces/measureOps.d.ts.map +0 -1
  849. package/dist/vendored/brepjs/kernel/interfaces/measureOps.js +0 -9
  850. package/dist/vendored/brepjs/kernel/interfaces/measureOps.js.map +0 -1
  851. package/dist/vendored/brepjs/kernel/interfaces/meshOps.d.ts +0 -25
  852. package/dist/vendored/brepjs/kernel/interfaces/meshOps.d.ts.map +0 -1
  853. package/dist/vendored/brepjs/kernel/interfaces/meshOps.js +0 -8
  854. package/dist/vendored/brepjs/kernel/interfaces/meshOps.js.map +0 -1
  855. package/dist/vendored/brepjs/kernel/interfaces/modifierOps.d.ts +0 -53
  856. package/dist/vendored/brepjs/kernel/interfaces/modifierOps.d.ts.map +0 -1
  857. package/dist/vendored/brepjs/kernel/interfaces/modifierOps.js +0 -10
  858. package/dist/vendored/brepjs/kernel/interfaces/modifierOps.js.map +0 -1
  859. package/dist/vendored/brepjs/kernel/interfaces/primitiveOps.d.ts +0 -22
  860. package/dist/vendored/brepjs/kernel/interfaces/primitiveOps.d.ts.map +0 -1
  861. package/dist/vendored/brepjs/kernel/interfaces/primitiveOps.js +0 -11
  862. package/dist/vendored/brepjs/kernel/interfaces/primitiveOps.js.map +0 -1
  863. package/dist/vendored/brepjs/kernel/interfaces/repairOps.d.ts +0 -43
  864. package/dist/vendored/brepjs/kernel/interfaces/repairOps.d.ts.map +0 -1
  865. package/dist/vendored/brepjs/kernel/interfaces/repairOps.js +0 -9
  866. package/dist/vendored/brepjs/kernel/interfaces/repairOps.js.map +0 -1
  867. package/dist/vendored/brepjs/kernel/interfaces/surfaceOps.d.ts +0 -72
  868. package/dist/vendored/brepjs/kernel/interfaces/surfaceOps.d.ts.map +0 -1
  869. package/dist/vendored/brepjs/kernel/interfaces/surfaceOps.js +0 -13
  870. package/dist/vendored/brepjs/kernel/interfaces/surfaceOps.js.map +0 -1
  871. package/dist/vendored/brepjs/kernel/interfaces/sweepOps.d.ts +0 -73
  872. package/dist/vendored/brepjs/kernel/interfaces/sweepOps.d.ts.map +0 -1
  873. package/dist/vendored/brepjs/kernel/interfaces/sweepOps.js +0 -11
  874. package/dist/vendored/brepjs/kernel/interfaces/sweepOps.js.map +0 -1
  875. package/dist/vendored/brepjs/kernel/interfaces/topologyOps.d.ts +0 -62
  876. package/dist/vendored/brepjs/kernel/interfaces/topologyOps.d.ts.map +0 -1
  877. package/dist/vendored/brepjs/kernel/interfaces/topologyOps.js +0 -9
  878. package/dist/vendored/brepjs/kernel/interfaces/topologyOps.js.map +0 -1
  879. package/dist/vendored/brepjs/kernel/interfaces/transformOps.d.ts +0 -80
  880. package/dist/vendored/brepjs/kernel/interfaces/transformOps.d.ts.map +0 -1
  881. package/dist/vendored/brepjs/kernel/interfaces/transformOps.js +0 -11
  882. package/dist/vendored/brepjs/kernel/interfaces/transformOps.js.map +0 -1
  883. package/dist/vendored/brepjs/kernel/kernel2dTypes.d.ts +0 -145
  884. package/dist/vendored/brepjs/kernel/kernel2dTypes.d.ts.map +0 -1
  885. package/dist/vendored/brepjs/kernel/kernel2dTypes.js +0 -18
  886. package/dist/vendored/brepjs/kernel/kernel2dTypes.js.map +0 -1
  887. package/dist/vendored/brepjs/kernel/occt/wasmTypes/externals.d.ts +0 -41
  888. package/dist/vendored/brepjs/kernel/occt/wasmTypes/externals.d.ts.map +0 -1
  889. package/dist/vendored/brepjs/kernel/occt/wasmTypes/externals.js +0 -2
  890. package/dist/vendored/brepjs/kernel/occt/wasmTypes/externals.js.map +0 -1
  891. package/dist/vendored/brepjs/kernel/occtWasm/adapterShims.d.ts +0 -17
  892. package/dist/vendored/brepjs/kernel/occtWasm/adapterShims.d.ts.map +0 -1
  893. package/dist/vendored/brepjs/kernel/occtWasm/adapterShims.js +0 -75
  894. package/dist/vendored/brepjs/kernel/occtWasm/adapterShims.js.map +0 -1
  895. package/dist/vendored/brepjs/kernel/occtWasm/booleanOps.d.ts +0 -36
  896. package/dist/vendored/brepjs/kernel/occtWasm/booleanOps.d.ts.map +0 -1
  897. package/dist/vendored/brepjs/kernel/occtWasm/booleanOps.js +0 -116
  898. package/dist/vendored/brepjs/kernel/occtWasm/booleanOps.js.map +0 -1
  899. package/dist/vendored/brepjs/kernel/occtWasm/constructionOps.d.ts +0 -43
  900. package/dist/vendored/brepjs/kernel/occtWasm/constructionOps.d.ts.map +0 -1
  901. package/dist/vendored/brepjs/kernel/occtWasm/constructionOps.js +0 -292
  902. package/dist/vendored/brepjs/kernel/occtWasm/constructionOps.js.map +0 -1
  903. package/dist/vendored/brepjs/kernel/occtWasm/curveOps.d.ts +0 -34
  904. package/dist/vendored/brepjs/kernel/occtWasm/curveOps.d.ts.map +0 -1
  905. package/dist/vendored/brepjs/kernel/occtWasm/curveOps.js +0 -164
  906. package/dist/vendored/brepjs/kernel/occtWasm/curveOps.js.map +0 -1
  907. package/dist/vendored/brepjs/kernel/occtWasm/evolutionOps.d.ts +0 -26
  908. package/dist/vendored/brepjs/kernel/occtWasm/evolutionOps.d.ts.map +0 -1
  909. package/dist/vendored/brepjs/kernel/occtWasm/evolutionOps.js +0 -256
  910. package/dist/vendored/brepjs/kernel/occtWasm/evolutionOps.js.map +0 -1
  911. package/dist/vendored/brepjs/kernel/occtWasm/helpers.d.ts +0 -42
  912. package/dist/vendored/brepjs/kernel/occtWasm/helpers.d.ts.map +0 -1
  913. package/dist/vendored/brepjs/kernel/occtWasm/helpers.js +0 -146
  914. package/dist/vendored/brepjs/kernel/occtWasm/helpers.js.map +0 -1
  915. package/dist/vendored/brepjs/kernel/occtWasm/hullOps.d.ts +0 -17
  916. package/dist/vendored/brepjs/kernel/occtWasm/hullOps.d.ts.map +0 -1
  917. package/dist/vendored/brepjs/kernel/occtWasm/hullOps.js +0 -55
  918. package/dist/vendored/brepjs/kernel/occtWasm/hullOps.js.map +0 -1
  919. package/dist/vendored/brepjs/kernel/occtWasm/ioOps.d.ts +0 -58
  920. package/dist/vendored/brepjs/kernel/occtWasm/ioOps.d.ts.map +0 -1
  921. package/dist/vendored/brepjs/kernel/occtWasm/ioOps.js +0 -303
  922. package/dist/vendored/brepjs/kernel/occtWasm/ioOps.js.map +0 -1
  923. package/dist/vendored/brepjs/kernel/occtWasm/kernel2dOps.d.ts +0 -113
  924. package/dist/vendored/brepjs/kernel/occtWasm/kernel2dOps.d.ts.map +0 -1
  925. package/dist/vendored/brepjs/kernel/occtWasm/kernel2dOps.js +0 -731
  926. package/dist/vendored/brepjs/kernel/occtWasm/kernel2dOps.js.map +0 -1
  927. package/dist/vendored/brepjs/kernel/occtWasm/measureOps.d.ts +0 -62
  928. package/dist/vendored/brepjs/kernel/occtWasm/measureOps.d.ts.map +0 -1
  929. package/dist/vendored/brepjs/kernel/occtWasm/measureOps.js +0 -338
  930. package/dist/vendored/brepjs/kernel/occtWasm/measureOps.js.map +0 -1
  931. package/dist/vendored/brepjs/kernel/occtWasm/meshOps.d.ts +0 -12
  932. package/dist/vendored/brepjs/kernel/occtWasm/meshOps.d.ts.map +0 -1
  933. package/dist/vendored/brepjs/kernel/occtWasm/meshOps.js +0 -120
  934. package/dist/vendored/brepjs/kernel/occtWasm/meshOps.js.map +0 -1
  935. package/dist/vendored/brepjs/kernel/occtWasm/modifierOps.d.ts +0 -20
  936. package/dist/vendored/brepjs/kernel/occtWasm/modifierOps.d.ts.map +0 -1
  937. package/dist/vendored/brepjs/kernel/occtWasm/modifierOps.js +0 -187
  938. package/dist/vendored/brepjs/kernel/occtWasm/modifierOps.js.map +0 -1
  939. package/dist/vendored/brepjs/kernel/occtWasm/occtWasmAdapter.d.ts +0 -513
  940. package/dist/vendored/brepjs/kernel/occtWasm/occtWasmAdapter.d.ts.map +0 -1
  941. package/dist/vendored/brepjs/kernel/occtWasm/occtWasmAdapter.js +0 -1016
  942. package/dist/vendored/brepjs/kernel/occtWasm/occtWasmAdapter.js.map +0 -1
  943. package/dist/vendored/brepjs/kernel/occtWasm/occtWasmTypes.d.ts +0 -332
  944. package/dist/vendored/brepjs/kernel/occtWasm/occtWasmTypes.d.ts.map +0 -1
  945. package/dist/vendored/brepjs/kernel/occtWasm/occtWasmTypes.js +0 -10
  946. package/dist/vendored/brepjs/kernel/occtWasm/occtWasmTypes.js.map +0 -1
  947. package/dist/vendored/brepjs/kernel/occtWasm/primitiveOps.d.ts +0 -16
  948. package/dist/vendored/brepjs/kernel/occtWasm/primitiveOps.d.ts.map +0 -1
  949. package/dist/vendored/brepjs/kernel/occtWasm/primitiveOps.js +0 -64
  950. package/dist/vendored/brepjs/kernel/occtWasm/primitiveOps.js.map +0 -1
  951. package/dist/vendored/brepjs/kernel/occtWasm/repairOps.d.ts +0 -16
  952. package/dist/vendored/brepjs/kernel/occtWasm/repairOps.d.ts.map +0 -1
  953. package/dist/vendored/brepjs/kernel/occtWasm/repairOps.js +0 -38
  954. package/dist/vendored/brepjs/kernel/occtWasm/repairOps.js.map +0 -1
  955. package/dist/vendored/brepjs/kernel/occtWasm/surfaceOps.d.ts +0 -56
  956. package/dist/vendored/brepjs/kernel/occtWasm/surfaceOps.d.ts.map +0 -1
  957. package/dist/vendored/brepjs/kernel/occtWasm/surfaceOps.js +0 -247
  958. package/dist/vendored/brepjs/kernel/occtWasm/surfaceOps.js.map +0 -1
  959. package/dist/vendored/brepjs/kernel/occtWasm/sweepOps.d.ts +0 -56
  960. package/dist/vendored/brepjs/kernel/occtWasm/sweepOps.d.ts.map +0 -1
  961. package/dist/vendored/brepjs/kernel/occtWasm/sweepOps.js +0 -235
  962. package/dist/vendored/brepjs/kernel/occtWasm/sweepOps.js.map +0 -1
  963. package/dist/vendored/brepjs/kernel/occtWasm/topologyOps.d.ts +0 -25
  964. package/dist/vendored/brepjs/kernel/occtWasm/topologyOps.d.ts.map +0 -1
  965. package/dist/vendored/brepjs/kernel/occtWasm/topologyOps.js +0 -127
  966. package/dist/vendored/brepjs/kernel/occtWasm/topologyOps.js.map +0 -1
  967. package/dist/vendored/brepjs/kernel/occtWasm/transformOps.d.ts +0 -40
  968. package/dist/vendored/brepjs/kernel/occtWasm/transformOps.d.ts.map +0 -1
  969. package/dist/vendored/brepjs/kernel/occtWasm/transformOps.js +0 -275
  970. package/dist/vendored/brepjs/kernel/occtWasm/transformOps.js.map +0 -1
  971. package/dist/vendored/brepjs/kernel/quality.d.ts +0 -28
  972. package/dist/vendored/brepjs/kernel/quality.d.ts.map +0 -1
  973. package/dist/vendored/brepjs/kernel/quality.js +0 -40
  974. package/dist/vendored/brepjs/kernel/quality.js.map +0 -1
  975. package/dist/vendored/brepjs/kernel/solverAdapter.d.ts +0 -50
  976. package/dist/vendored/brepjs/kernel/solverAdapter.d.ts.map +0 -1
  977. package/dist/vendored/brepjs/kernel/solverAdapter.js +0 -330
  978. package/dist/vendored/brepjs/kernel/solverAdapter.js.map +0 -1
  979. package/dist/vendored/brepjs/kernel/stlBuilder.d.ts +0 -21
  980. package/dist/vendored/brepjs/kernel/stlBuilder.d.ts.map +0 -1
  981. package/dist/vendored/brepjs/kernel/stlBuilder.js +0 -106
  982. package/dist/vendored/brepjs/kernel/stlBuilder.js.map +0 -1
  983. package/dist/vendored/brepjs/kernel/types.d.ts +0 -214
  984. package/dist/vendored/brepjs/kernel/types.d.ts.map +0 -1
  985. package/dist/vendored/brepjs/kernel/types.js +0 -22
  986. package/dist/vendored/brepjs/kernel/types.js.map +0 -1
  987. package/dist/vendored/brepjs/kernel/unsupported.d.ts +0 -15
  988. package/dist/vendored/brepjs/kernel/unsupported.d.ts.map +0 -1
  989. package/dist/vendored/brepjs/kernel/unsupported.js +0 -25
  990. package/dist/vendored/brepjs/kernel/unsupported.js.map +0 -1
  991. package/dist/vendored/brepjs/measurement/interferenceFns.d.ts +0 -68
  992. package/dist/vendored/brepjs/measurement/interferenceFns.d.ts.map +0 -1
  993. package/dist/vendored/brepjs/measurement/interferenceFns.js +0 -102
  994. package/dist/vendored/brepjs/measurement/interferenceFns.js.map +0 -1
  995. package/dist/vendored/brepjs/measurement/measureCache.d.ts +0 -20
  996. package/dist/vendored/brepjs/measurement/measureCache.d.ts.map +0 -1
  997. package/dist/vendored/brepjs/measurement/measureCache.js +0 -28
  998. package/dist/vendored/brepjs/measurement/measureCache.js.map +0 -1
  999. package/dist/vendored/brepjs/measurement/measureFns.d.ts +0 -92
  1000. package/dist/vendored/brepjs/measurement/measureFns.d.ts.map +0 -1
  1001. package/dist/vendored/brepjs/measurement/measureFns.js +0 -239
  1002. package/dist/vendored/brepjs/measurement/measureFns.js.map +0 -1
  1003. package/dist/vendored/brepjs/measurement/measureTypes.d.ts +0 -35
  1004. package/dist/vendored/brepjs/measurement/measureTypes.d.ts.map +0 -1
  1005. package/dist/vendored/brepjs/measurement/measureTypes.js +0 -7
  1006. package/dist/vendored/brepjs/measurement/measureTypes.js.map +0 -1
  1007. package/dist/vendored/brepjs/measurement.d.ts +0 -5
  1008. package/dist/vendored/brepjs/measurement.d.ts.map +0 -1
  1009. package/dist/vendored/brepjs/measurement.js +0 -5
  1010. package/dist/vendored/brepjs/measurement.js.map +0 -1
  1011. package/dist/vendored/brepjs/ns/booleans.d.ts +0 -11
  1012. package/dist/vendored/brepjs/ns/booleans.d.ts.map +0 -1
  1013. package/dist/vendored/brepjs/ns/booleans.js +0 -11
  1014. package/dist/vendored/brepjs/ns/booleans.js.map +0 -1
  1015. package/dist/vendored/brepjs/ns/construction.d.ts +0 -10
  1016. package/dist/vendored/brepjs/ns/construction.d.ts.map +0 -1
  1017. package/dist/vendored/brepjs/ns/construction.js +0 -10
  1018. package/dist/vendored/brepjs/ns/construction.js.map +0 -1
  1019. package/dist/vendored/brepjs/ns/ioNs.d.ts +0 -18
  1020. package/dist/vendored/brepjs/ns/ioNs.d.ts.map +0 -1
  1021. package/dist/vendored/brepjs/ns/ioNs.js +0 -20
  1022. package/dist/vendored/brepjs/ns/ioNs.js.map +0 -1
  1023. package/dist/vendored/brepjs/ns/measurement.d.ts +0 -6
  1024. package/dist/vendored/brepjs/ns/measurement.d.ts.map +0 -1
  1025. package/dist/vendored/brepjs/ns/measurement.js +0 -6
  1026. package/dist/vendored/brepjs/ns/measurement.js.map +0 -1
  1027. package/dist/vendored/brepjs/ns/modifiers.d.ts +0 -6
  1028. package/dist/vendored/brepjs/ns/modifiers.d.ts.map +0 -1
  1029. package/dist/vendored/brepjs/ns/modifiers.js +0 -6
  1030. package/dist/vendored/brepjs/ns/modifiers.js.map +0 -1
  1031. package/dist/vendored/brepjs/ns/patterns.d.ts +0 -5
  1032. package/dist/vendored/brepjs/ns/patterns.d.ts.map +0 -1
  1033. package/dist/vendored/brepjs/ns/patterns.js +0 -5
  1034. package/dist/vendored/brepjs/ns/patterns.js.map +0 -1
  1035. package/dist/vendored/brepjs/ns/primitives.d.ts +0 -7
  1036. package/dist/vendored/brepjs/ns/primitives.d.ts.map +0 -1
  1037. package/dist/vendored/brepjs/ns/primitives.js +0 -7
  1038. package/dist/vendored/brepjs/ns/primitives.js.map +0 -1
  1039. package/dist/vendored/brepjs/ns/query.d.ts +0 -6
  1040. package/dist/vendored/brepjs/ns/query.d.ts.map +0 -1
  1041. package/dist/vendored/brepjs/ns/query.js +0 -6
  1042. package/dist/vendored/brepjs/ns/query.js.map +0 -1
  1043. package/dist/vendored/brepjs/ns/transforms.d.ts +0 -5
  1044. package/dist/vendored/brepjs/ns/transforms.d.ts.map +0 -1
  1045. package/dist/vendored/brepjs/ns/transforms.js +0 -5
  1046. package/dist/vendored/brepjs/ns/transforms.js.map +0 -1
  1047. package/dist/vendored/brepjs/operations/api.d.ts +0 -39
  1048. package/dist/vendored/brepjs/operations/api.d.ts.map +0 -1
  1049. package/dist/vendored/brepjs/operations/api.js +0 -41
  1050. package/dist/vendored/brepjs/operations/api.js.map +0 -1
  1051. package/dist/vendored/brepjs/operations/assemblyFns.d.ts +0 -54
  1052. package/dist/vendored/brepjs/operations/assemblyFns.d.ts.map +0 -1
  1053. package/dist/vendored/brepjs/operations/assemblyFns.js +0 -91
  1054. package/dist/vendored/brepjs/operations/assemblyFns.js.map +0 -1
  1055. package/dist/vendored/brepjs/operations/compoundOpsFns.d.ts +0 -43
  1056. package/dist/vendored/brepjs/operations/compoundOpsFns.d.ts.map +0 -1
  1057. package/dist/vendored/brepjs/operations/compoundOpsFns.js +0 -368
  1058. package/dist/vendored/brepjs/operations/compoundOpsFns.js.map +0 -1
  1059. package/dist/vendored/brepjs/operations/convexHullFns.d.ts +0 -27
  1060. package/dist/vendored/brepjs/operations/convexHullFns.d.ts.map +0 -1
  1061. package/dist/vendored/brepjs/operations/convexHullFns.js +0 -50
  1062. package/dist/vendored/brepjs/operations/convexHullFns.js.map +0 -1
  1063. package/dist/vendored/brepjs/operations/dhFns.d.ts +0 -47
  1064. package/dist/vendored/brepjs/operations/dhFns.d.ts.map +0 -1
  1065. package/dist/vendored/brepjs/operations/dhFns.js +0 -53
  1066. package/dist/vendored/brepjs/operations/dhFns.js.map +0 -1
  1067. package/dist/vendored/brepjs/operations/exporterFns.d.ts +0 -47
  1068. package/dist/vendored/brepjs/operations/exporterFns.d.ts.map +0 -1
  1069. package/dist/vendored/brepjs/operations/exporterFns.js +0 -66
  1070. package/dist/vendored/brepjs/operations/exporterFns.js.map +0 -1
  1071. package/dist/vendored/brepjs/operations/exporterUtils.d.ts +0 -6
  1072. package/dist/vendored/brepjs/operations/exporterUtils.d.ts.map +0 -1
  1073. package/dist/vendored/brepjs/operations/exporterUtils.js +0 -5
  1074. package/dist/vendored/brepjs/operations/exporterUtils.js.map +0 -1
  1075. package/dist/vendored/brepjs/operations/exporters.d.ts +0 -59
  1076. package/dist/vendored/brepjs/operations/exporters.d.ts.map +0 -1
  1077. package/dist/vendored/brepjs/operations/exporters.js +0 -74
  1078. package/dist/vendored/brepjs/operations/exporters.js.map +0 -1
  1079. package/dist/vendored/brepjs/operations/extrudeFns.d.ts +0 -47
  1080. package/dist/vendored/brepjs/operations/extrudeFns.d.ts.map +0 -1
  1081. package/dist/vendored/brepjs/operations/extrudeFns.js +0 -119
  1082. package/dist/vendored/brepjs/operations/extrudeFns.js.map +0 -1
  1083. package/dist/vendored/brepjs/operations/extrudeUtils.d.ts +0 -63
  1084. package/dist/vendored/brepjs/operations/extrudeUtils.d.ts.map +0 -1
  1085. package/dist/vendored/brepjs/operations/extrudeUtils.js +0 -33
  1086. package/dist/vendored/brepjs/operations/extrudeUtils.js.map +0 -1
  1087. package/dist/vendored/brepjs/operations/guidedSweepFns.d.ts +0 -6
  1088. package/dist/vendored/brepjs/operations/guidedSweepFns.d.ts.map +0 -1
  1089. package/dist/vendored/brepjs/operations/guidedSweepFns.js +0 -6
  1090. package/dist/vendored/brepjs/operations/guidedSweepFns.js.map +0 -1
  1091. package/dist/vendored/brepjs/operations/historyFns.d.ts +0 -83
  1092. package/dist/vendored/brepjs/operations/historyFns.d.ts.map +0 -1
  1093. package/dist/vendored/brepjs/operations/historyFns.js +0 -256
  1094. package/dist/vendored/brepjs/operations/historyFns.js.map +0 -1
  1095. package/dist/vendored/brepjs/operations/ikFns.d.ts +0 -74
  1096. package/dist/vendored/brepjs/operations/ikFns.d.ts.map +0 -1
  1097. package/dist/vendored/brepjs/operations/ikFns.js +0 -320
  1098. package/dist/vendored/brepjs/operations/ikFns.js.map +0 -1
  1099. package/dist/vendored/brepjs/operations/instanceFns.d.ts +0 -76
  1100. package/dist/vendored/brepjs/operations/instanceFns.d.ts.map +0 -1
  1101. package/dist/vendored/brepjs/operations/instanceFns.js +0 -128
  1102. package/dist/vendored/brepjs/operations/instanceFns.js.map +0 -1
  1103. package/dist/vendored/brepjs/operations/jointFns.d.ts +0 -176
  1104. package/dist/vendored/brepjs/operations/jointFns.d.ts.map +0 -1
  1105. package/dist/vendored/brepjs/operations/jointFns.js +0 -298
  1106. package/dist/vendored/brepjs/operations/jointFns.js.map +0 -1
  1107. package/dist/vendored/brepjs/operations/loftFns.d.ts +0 -60
  1108. package/dist/vendored/brepjs/operations/loftFns.d.ts.map +0 -1
  1109. package/dist/vendored/brepjs/operations/loftFns.js +0 -112
  1110. package/dist/vendored/brepjs/operations/loftFns.js.map +0 -1
  1111. package/dist/vendored/brepjs/operations/mateFns.d.ts +0 -53
  1112. package/dist/vendored/brepjs/operations/mateFns.d.ts.map +0 -1
  1113. package/dist/vendored/brepjs/operations/mateFns.js +0 -142
  1114. package/dist/vendored/brepjs/operations/mateFns.js.map +0 -1
  1115. package/dist/vendored/brepjs/operations/multiSweepFns.d.ts +0 -6
  1116. package/dist/vendored/brepjs/operations/multiSweepFns.d.ts.map +0 -1
  1117. package/dist/vendored/brepjs/operations/multiSweepFns.js +0 -6
  1118. package/dist/vendored/brepjs/operations/multiSweepFns.js.map +0 -1
  1119. package/dist/vendored/brepjs/operations/patternFns.d.ts +0 -46
  1120. package/dist/vendored/brepjs/operations/patternFns.d.ts.map +0 -1
  1121. package/dist/vendored/brepjs/operations/patternFns.js +0 -126
  1122. package/dist/vendored/brepjs/operations/patternFns.js.map +0 -1
  1123. package/dist/vendored/brepjs/operations/roofFns.d.ts +0 -25
  1124. package/dist/vendored/brepjs/operations/roofFns.d.ts.map +0 -1
  1125. package/dist/vendored/brepjs/operations/roofFns.js +0 -250
  1126. package/dist/vendored/brepjs/operations/roofFns.js.map +0 -1
  1127. package/dist/vendored/brepjs/operations/straightSkeleton.d.ts +0 -29
  1128. package/dist/vendored/brepjs/operations/straightSkeleton.d.ts.map +0 -1
  1129. package/dist/vendored/brepjs/operations/straightSkeleton.js +0 -440
  1130. package/dist/vendored/brepjs/operations/straightSkeleton.js.map +0 -1
  1131. package/dist/vendored/brepjs/operations/sweepFns.d.ts +0 -121
  1132. package/dist/vendored/brepjs/operations/sweepFns.d.ts.map +0 -1
  1133. package/dist/vendored/brepjs/operations/sweepFns.js +0 -438
  1134. package/dist/vendored/brepjs/operations/sweepFns.js.map +0 -1
  1135. package/dist/vendored/brepjs/operations/threadFns.d.ts +0 -57
  1136. package/dist/vendored/brepjs/operations/threadFns.d.ts.map +0 -1
  1137. package/dist/vendored/brepjs/operations/threadFns.js +0 -145
  1138. package/dist/vendored/brepjs/operations/threadFns.js.map +0 -1
  1139. package/dist/vendored/brepjs/operations/urdfFns.d.ts +0 -48
  1140. package/dist/vendored/brepjs/operations/urdfFns.d.ts.map +0 -1
  1141. package/dist/vendored/brepjs/operations/urdfFns.js +0 -171
  1142. package/dist/vendored/brepjs/operations/urdfFns.js.map +0 -1
  1143. package/dist/vendored/brepjs/operations.d.ts +0 -20
  1144. package/dist/vendored/brepjs/operations.d.ts.map +0 -1
  1145. package/dist/vendored/brepjs/operations.js +0 -26
  1146. package/dist/vendored/brepjs/operations.js.map +0 -1
  1147. package/dist/vendored/brepjs/projection/cameraFns.d.ts +0 -63
  1148. package/dist/vendored/brepjs/projection/cameraFns.d.ts.map +0 -1
  1149. package/dist/vendored/brepjs/projection/cameraFns.js +0 -89
  1150. package/dist/vendored/brepjs/projection/cameraFns.js.map +0 -1
  1151. package/dist/vendored/brepjs/projection/makeProjectedEdges.d.ts +0 -14
  1152. package/dist/vendored/brepjs/projection/makeProjectedEdges.d.ts.map +0 -1
  1153. package/dist/vendored/brepjs/projection/makeProjectedEdges.js +0 -111
  1154. package/dist/vendored/brepjs/projection/makeProjectedEdges.js.map +0 -1
  1155. package/dist/vendored/brepjs/projection/projectionPlanes.d.ts +0 -18
  1156. package/dist/vendored/brepjs/projection/projectionPlanes.d.ts.map +0 -1
  1157. package/dist/vendored/brepjs/projection/projectionPlanes.js +0 -23
  1158. package/dist/vendored/brepjs/projection/projectionPlanes.js.map +0 -1
  1159. package/dist/vendored/brepjs/projection.d.ts +0 -12
  1160. package/dist/vendored/brepjs/projection.d.ts.map +0 -1
  1161. package/dist/vendored/brepjs/projection.js +0 -12
  1162. package/dist/vendored/brepjs/projection.js.map +0 -1
  1163. package/dist/vendored/brepjs/query/cornerFinder.d.ts +0 -54
  1164. package/dist/vendored/brepjs/query/cornerFinder.d.ts.map +0 -1
  1165. package/dist/vendored/brepjs/query/cornerFinder.js +0 -73
  1166. package/dist/vendored/brepjs/query/cornerFinder.js.map +0 -1
  1167. package/dist/vendored/brepjs/query/directionUtils.d.ts +0 -9
  1168. package/dist/vendored/brepjs/query/directionUtils.d.ts.map +0 -1
  1169. package/dist/vendored/brepjs/query/directionUtils.js +0 -18
  1170. package/dist/vendored/brepjs/query/directionUtils.js.map +0 -1
  1171. package/dist/vendored/brepjs/query/edgeFinder.d.ts +0 -5
  1172. package/dist/vendored/brepjs/query/edgeFinder.d.ts.map +0 -1
  1173. package/dist/vendored/brepjs/query/edgeFinder.js +0 -5
  1174. package/dist/vendored/brepjs/query/edgeFinder.js.map +0 -1
  1175. package/dist/vendored/brepjs/query/faceFinder.d.ts +0 -5
  1176. package/dist/vendored/brepjs/query/faceFinder.d.ts.map +0 -1
  1177. package/dist/vendored/brepjs/query/faceFinder.js +0 -5
  1178. package/dist/vendored/brepjs/query/faceFinder.js.map +0 -1
  1179. package/dist/vendored/brepjs/query/finderCore.d.ts +0 -49
  1180. package/dist/vendored/brepjs/query/finderCore.d.ts.map +0 -1
  1181. package/dist/vendored/brepjs/query/finderCore.js +0 -120
  1182. package/dist/vendored/brepjs/query/finderCore.js.map +0 -1
  1183. package/dist/vendored/brepjs/query/finderFns.d.ts +0 -25
  1184. package/dist/vendored/brepjs/query/finderFns.d.ts.map +0 -1
  1185. package/dist/vendored/brepjs/query/finderFns.js +0 -25
  1186. package/dist/vendored/brepjs/query/finderFns.js.map +0 -1
  1187. package/dist/vendored/brepjs/query/helpers.d.ts +0 -11
  1188. package/dist/vendored/brepjs/query/helpers.d.ts.map +0 -1
  1189. package/dist/vendored/brepjs/query/helpers.js +0 -17
  1190. package/dist/vendored/brepjs/query/helpers.js.map +0 -1
  1191. package/dist/vendored/brepjs/query/shapeDistanceFilter.d.ts +0 -15
  1192. package/dist/vendored/brepjs/query/shapeDistanceFilter.d.ts.map +0 -1
  1193. package/dist/vendored/brepjs/query/shapeDistanceFilter.js +0 -21
  1194. package/dist/vendored/brepjs/query/shapeDistanceFilter.js.map +0 -1
  1195. package/dist/vendored/brepjs/query/shapeFinders.d.ts +0 -39
  1196. package/dist/vendored/brepjs/query/shapeFinders.d.ts.map +0 -1
  1197. package/dist/vendored/brepjs/query/shapeFinders.js +0 -82
  1198. package/dist/vendored/brepjs/query/shapeFinders.js.map +0 -1
  1199. package/dist/vendored/brepjs/query/vertexFinder.d.ts +0 -19
  1200. package/dist/vendored/brepjs/query/vertexFinder.d.ts.map +0 -1
  1201. package/dist/vendored/brepjs/query/vertexFinder.js +0 -73
  1202. package/dist/vendored/brepjs/query/vertexFinder.js.map +0 -1
  1203. package/dist/vendored/brepjs/query/wireFinder.d.ts +0 -5
  1204. package/dist/vendored/brepjs/query/wireFinder.d.ts.map +0 -1
  1205. package/dist/vendored/brepjs/query/wireFinder.js +0 -5
  1206. package/dist/vendored/brepjs/query/wireFinder.js.map +0 -1
  1207. package/dist/vendored/brepjs/query.d.ts +0 -6
  1208. package/dist/vendored/brepjs/query.d.ts.map +0 -1
  1209. package/dist/vendored/brepjs/query.js +0 -6
  1210. package/dist/vendored/brepjs/query.js.map +0 -1
  1211. package/dist/vendored/brepjs/result.d.ts +0 -7
  1212. package/dist/vendored/brepjs/result.d.ts.map +0 -1
  1213. package/dist/vendored/brepjs/result.js +0 -7
  1214. package/dist/vendored/brepjs/result.js.map +0 -1
  1215. package/dist/vendored/brepjs/shapeRef.d.ts +0 -13
  1216. package/dist/vendored/brepjs/shapeRef.d.ts.map +0 -1
  1217. package/dist/vendored/brepjs/shapeRef.js +0 -13
  1218. package/dist/vendored/brepjs/shapeRef.js.map +0 -1
  1219. package/dist/vendored/brepjs/sketching/cannedSketches.d.ts +0 -144
  1220. package/dist/vendored/brepjs/sketching/cannedSketches.d.ts.map +0 -1
  1221. package/dist/vendored/brepjs/sketching/cannedSketches.js +0 -327
  1222. package/dist/vendored/brepjs/sketching/cannedSketches.js.map +0 -1
  1223. package/dist/vendored/brepjs/sketching/compoundSketch.d.ts +0 -70
  1224. package/dist/vendored/brepjs/sketching/compoundSketch.d.ts.map +0 -1
  1225. package/dist/vendored/brepjs/sketching/compoundSketch.js +0 -87
  1226. package/dist/vendored/brepjs/sketching/compoundSketch.js.map +0 -1
  1227. package/dist/vendored/brepjs/sketching/draw3d.d.ts +0 -22
  1228. package/dist/vendored/brepjs/sketching/draw3d.d.ts.map +0 -1
  1229. package/dist/vendored/brepjs/sketching/draw3d.js +0 -150
  1230. package/dist/vendored/brepjs/sketching/draw3d.js.map +0 -1
  1231. package/dist/vendored/brepjs/sketching/drawFns.d.ts +0 -122
  1232. package/dist/vendored/brepjs/sketching/drawFns.d.ts.map +0 -1
  1233. package/dist/vendored/brepjs/sketching/drawFns.js +0 -129
  1234. package/dist/vendored/brepjs/sketching/drawFns.js.map +0 -1
  1235. package/dist/vendored/brepjs/sketching/drawing.d.ts +0 -128
  1236. package/dist/vendored/brepjs/sketching/drawing.d.ts.map +0 -1
  1237. package/dist/vendored/brepjs/sketching/drawing.js +0 -275
  1238. package/dist/vendored/brepjs/sketching/drawing.js.map +0 -1
  1239. package/dist/vendored/brepjs/sketching/drawingFactories.d.ts +0 -95
  1240. package/dist/vendored/brepjs/sketching/drawingFactories.d.ts.map +0 -1
  1241. package/dist/vendored/brepjs/sketching/drawingFactories.js +0 -125
  1242. package/dist/vendored/brepjs/sketching/drawingFactories.js.map +0 -1
  1243. package/dist/vendored/brepjs/sketching/drawingPen.d.ts +0 -35
  1244. package/dist/vendored/brepjs/sketching/drawingPen.d.ts.map +0 -1
  1245. package/dist/vendored/brepjs/sketching/drawingPen.js +0 -57
  1246. package/dist/vendored/brepjs/sketching/drawingPen.js.map +0 -1
  1247. package/dist/vendored/brepjs/sketching/faceSketcher.d.ts +0 -53
  1248. package/dist/vendored/brepjs/sketching/faceSketcher.d.ts.map +0 -1
  1249. package/dist/vendored/brepjs/sketching/faceSketcher.js +0 -167
  1250. package/dist/vendored/brepjs/sketching/faceSketcher.js.map +0 -1
  1251. package/dist/vendored/brepjs/sketching/shortcuts.d.ts +0 -16
  1252. package/dist/vendored/brepjs/sketching/shortcuts.d.ts.map +0 -1
  1253. package/dist/vendored/brepjs/sketching/shortcuts.js +0 -24
  1254. package/dist/vendored/brepjs/sketching/shortcuts.js.map +0 -1
  1255. package/dist/vendored/brepjs/sketching/sketch.d.ts +0 -157
  1256. package/dist/vendored/brepjs/sketching/sketch.d.ts.map +0 -1
  1257. package/dist/vendored/brepjs/sketching/sketch.js +0 -151
  1258. package/dist/vendored/brepjs/sketching/sketch.js.map +0 -1
  1259. package/dist/vendored/brepjs/sketching/sketchFns.d.ts +0 -89
  1260. package/dist/vendored/brepjs/sketching/sketchFns.d.ts.map +0 -1
  1261. package/dist/vendored/brepjs/sketching/sketchFns.js +0 -266
  1262. package/dist/vendored/brepjs/sketching/sketchFns.js.map +0 -1
  1263. package/dist/vendored/brepjs/sketching/sketcher.d.ts +0 -70
  1264. package/dist/vendored/brepjs/sketching/sketcher.d.ts.map +0 -1
  1265. package/dist/vendored/brepjs/sketching/sketcher.js +0 -181
  1266. package/dist/vendored/brepjs/sketching/sketcher.js.map +0 -1
  1267. package/dist/vendored/brepjs/sketching/sketches.d.ts +0 -70
  1268. package/dist/vendored/brepjs/sketching/sketches.d.ts.map +0 -1
  1269. package/dist/vendored/brepjs/sketching/sketches.js +0 -91
  1270. package/dist/vendored/brepjs/sketching/sketches.js.map +0 -1
  1271. package/dist/vendored/brepjs/sketching.d.ts +0 -28
  1272. package/dist/vendored/brepjs/sketching.d.ts.map +0 -1
  1273. package/dist/vendored/brepjs/sketching.js +0 -30
  1274. package/dist/vendored/brepjs/sketching.js.map +0 -1
  1275. package/dist/vendored/brepjs/text/fontRegistry.d.ts +0 -23
  1276. package/dist/vendored/brepjs/text/fontRegistry.d.ts.map +0 -1
  1277. package/dist/vendored/brepjs/text/fontRegistry.js +0 -61
  1278. package/dist/vendored/brepjs/text/fontRegistry.js.map +0 -1
  1279. package/dist/vendored/brepjs/text/sketchText.d.ts +0 -31
  1280. package/dist/vendored/brepjs/text/sketchText.d.ts.map +0 -1
  1281. package/dist/vendored/brepjs/text/sketchText.js +0 -30
  1282. package/dist/vendored/brepjs/text/sketchText.js.map +0 -1
  1283. package/dist/vendored/brepjs/text/textBlueprints.d.ts +0 -19
  1284. package/dist/vendored/brepjs/text/textBlueprints.d.ts.map +0 -1
  1285. package/dist/vendored/brepjs/text/textBlueprints.js +0 -61
  1286. package/dist/vendored/brepjs/text/textBlueprints.js.map +0 -1
  1287. package/dist/vendored/brepjs/text/textMetrics.d.ts +0 -40
  1288. package/dist/vendored/brepjs/text/textMetrics.d.ts.map +0 -1
  1289. package/dist/vendored/brepjs/text/textMetrics.js +0 -43
  1290. package/dist/vendored/brepjs/text/textMetrics.js.map +0 -1
  1291. package/dist/vendored/brepjs/text.d.ts +0 -13
  1292. package/dist/vendored/brepjs/text.d.ts.map +0 -1
  1293. package/dist/vendored/brepjs/text.js +0 -13
  1294. package/dist/vendored/brepjs/text.js.map +0 -1
  1295. package/dist/vendored/brepjs/topology/adjacencyFns.d.ts +0 -89
  1296. package/dist/vendored/brepjs/topology/adjacencyFns.d.ts.map +0 -1
  1297. package/dist/vendored/brepjs/topology/adjacencyFns.js +0 -411
  1298. package/dist/vendored/brepjs/topology/adjacencyFns.js.map +0 -1
  1299. package/dist/vendored/brepjs/topology/api.d.ts +0 -145
  1300. package/dist/vendored/brepjs/topology/api.d.ts.map +0 -1
  1301. package/dist/vendored/brepjs/topology/api.js +0 -282
  1302. package/dist/vendored/brepjs/topology/api.js.map +0 -1
  1303. package/dist/vendored/brepjs/topology/apiTypes.d.ts +0 -135
  1304. package/dist/vendored/brepjs/topology/apiTypes.d.ts.map +0 -1
  1305. package/dist/vendored/brepjs/topology/apiTypes.js +0 -24
  1306. package/dist/vendored/brepjs/topology/apiTypes.js.map +0 -1
  1307. package/dist/vendored/brepjs/topology/booleanBatchFns.d.ts +0 -52
  1308. package/dist/vendored/brepjs/topology/booleanBatchFns.d.ts.map +0 -1
  1309. package/dist/vendored/brepjs/topology/booleanBatchFns.js +0 -164
  1310. package/dist/vendored/brepjs/topology/booleanBatchFns.js.map +0 -1
  1311. package/dist/vendored/brepjs/topology/booleanDiagnosticFns.d.ts +0 -21
  1312. package/dist/vendored/brepjs/topology/booleanDiagnosticFns.d.ts.map +0 -1
  1313. package/dist/vendored/brepjs/topology/booleanDiagnosticFns.js +0 -23
  1314. package/dist/vendored/brepjs/topology/booleanDiagnosticFns.js.map +0 -1
  1315. package/dist/vendored/brepjs/topology/booleanFns.d.ts +0 -155
  1316. package/dist/vendored/brepjs/topology/booleanFns.d.ts.map +0 -1
  1317. package/dist/vendored/brepjs/topology/booleanFns.js +0 -600
  1318. package/dist/vendored/brepjs/topology/booleanFns.js.map +0 -1
  1319. package/dist/vendored/brepjs/topology/cast.d.ts +0 -48
  1320. package/dist/vendored/brepjs/topology/cast.d.ts.map +0 -1
  1321. package/dist/vendored/brepjs/topology/cast.js +0 -113
  1322. package/dist/vendored/brepjs/topology/cast.js.map +0 -1
  1323. package/dist/vendored/brepjs/topology/chamferAngleFns.d.ts +0 -24
  1324. package/dist/vendored/brepjs/topology/chamferAngleFns.d.ts.map +0 -1
  1325. package/dist/vendored/brepjs/topology/chamferAngleFns.js +0 -64
  1326. package/dist/vendored/brepjs/topology/chamferAngleFns.js.map +0 -1
  1327. package/dist/vendored/brepjs/topology/compoundOpsFns.d.ts +0 -6
  1328. package/dist/vendored/brepjs/topology/compoundOpsFns.d.ts.map +0 -1
  1329. package/dist/vendored/brepjs/topology/compoundOpsFns.js +0 -6
  1330. package/dist/vendored/brepjs/topology/compoundOpsFns.js.map +0 -1
  1331. package/dist/vendored/brepjs/topology/curveBuilders.d.ts +0 -90
  1332. package/dist/vendored/brepjs/topology/curveBuilders.d.ts.map +0 -1
  1333. package/dist/vendored/brepjs/topology/curveBuilders.js +0 -125
  1334. package/dist/vendored/brepjs/topology/curveBuilders.js.map +0 -1
  1335. package/dist/vendored/brepjs/topology/curveFns.d.ts +0 -96
  1336. package/dist/vendored/brepjs/topology/curveFns.d.ts.map +0 -1
  1337. package/dist/vendored/brepjs/topology/curveFns.js +0 -191
  1338. package/dist/vendored/brepjs/topology/curveFns.js.map +0 -1
  1339. package/dist/vendored/brepjs/topology/evolutionFns.d.ts +0 -78
  1340. package/dist/vendored/brepjs/topology/evolutionFns.d.ts.map +0 -1
  1341. package/dist/vendored/brepjs/topology/evolutionFns.js +0 -271
  1342. package/dist/vendored/brepjs/topology/evolutionFns.js.map +0 -1
  1343. package/dist/vendored/brepjs/topology/faceFns.d.ts +0 -86
  1344. package/dist/vendored/brepjs/topology/faceFns.d.ts.map +0 -1
  1345. package/dist/vendored/brepjs/topology/faceFns.js +0 -169
  1346. package/dist/vendored/brepjs/topology/faceFns.js.map +0 -1
  1347. package/dist/vendored/brepjs/topology/healingFns.d.ts +0 -98
  1348. package/dist/vendored/brepjs/topology/healingFns.d.ts.map +0 -1
  1349. package/dist/vendored/brepjs/topology/healingFns.js +0 -338
  1350. package/dist/vendored/brepjs/topology/healingFns.js.map +0 -1
  1351. package/dist/vendored/brepjs/topology/hullFns.d.ts +0 -21
  1352. package/dist/vendored/brepjs/topology/hullFns.d.ts.map +0 -1
  1353. package/dist/vendored/brepjs/topology/hullFns.js +0 -60
  1354. package/dist/vendored/brepjs/topology/hullFns.js.map +0 -1
  1355. package/dist/vendored/brepjs/topology/index.d.ts +0 -14
  1356. package/dist/vendored/brepjs/topology/index.d.ts.map +0 -1
  1357. package/dist/vendored/brepjs/topology/index.js +0 -17
  1358. package/dist/vendored/brepjs/topology/index.js.map +0 -1
  1359. package/dist/vendored/brepjs/topology/meshCache.d.ts +0 -68
  1360. package/dist/vendored/brepjs/topology/meshCache.d.ts.map +0 -1
  1361. package/dist/vendored/brepjs/topology/meshCache.js +0 -117
  1362. package/dist/vendored/brepjs/topology/meshCache.js.map +0 -1
  1363. package/dist/vendored/brepjs/topology/meshFns.d.ts +0 -179
  1364. package/dist/vendored/brepjs/topology/meshFns.d.ts.map +0 -1
  1365. package/dist/vendored/brepjs/topology/meshFns.js +0 -393
  1366. package/dist/vendored/brepjs/topology/meshFns.js.map +0 -1
  1367. package/dist/vendored/brepjs/topology/metadata/colorFns.d.ts +0 -41
  1368. package/dist/vendored/brepjs/topology/metadata/colorFns.d.ts.map +0 -1
  1369. package/dist/vendored/brepjs/topology/metadata/colorFns.js +0 -128
  1370. package/dist/vendored/brepjs/topology/metadata/colorFns.js.map +0 -1
  1371. package/dist/vendored/brepjs/topology/metadata/faceTagFns.d.ts +0 -44
  1372. package/dist/vendored/brepjs/topology/metadata/faceTagFns.d.ts.map +0 -1
  1373. package/dist/vendored/brepjs/topology/metadata/faceTagFns.js +0 -168
  1374. package/dist/vendored/brepjs/topology/metadata/faceTagFns.js.map +0 -1
  1375. package/dist/vendored/brepjs/topology/metadata/metadataPropagation.d.ts +0 -59
  1376. package/dist/vendored/brepjs/topology/metadata/metadataPropagation.d.ts.map +0 -1
  1377. package/dist/vendored/brepjs/topology/metadata/metadataPropagation.js +0 -109
  1378. package/dist/vendored/brepjs/topology/metadata/metadataPropagation.js.map +0 -1
  1379. package/dist/vendored/brepjs/topology/metadata/originTrackingFns.d.ts +0 -43
  1380. package/dist/vendored/brepjs/topology/metadata/originTrackingFns.d.ts.map +0 -1
  1381. package/dist/vendored/brepjs/topology/metadata/originTrackingFns.js +0 -270
  1382. package/dist/vendored/brepjs/topology/metadata/originTrackingFns.js.map +0 -1
  1383. package/dist/vendored/brepjs/topology/minkowskiFns.d.ts +0 -26
  1384. package/dist/vendored/brepjs/topology/minkowskiFns.d.ts.map +0 -1
  1385. package/dist/vendored/brepjs/topology/minkowskiFns.js +0 -136
  1386. package/dist/vendored/brepjs/topology/minkowskiFns.js.map +0 -1
  1387. package/dist/vendored/brepjs/topology/modifierFns.d.ts +0 -87
  1388. package/dist/vendored/brepjs/topology/modifierFns.d.ts.map +0 -1
  1389. package/dist/vendored/brepjs/topology/modifierFns.js +0 -446
  1390. package/dist/vendored/brepjs/topology/modifierFns.js.map +0 -1
  1391. package/dist/vendored/brepjs/topology/nurbsFns.d.ts +0 -13
  1392. package/dist/vendored/brepjs/topology/nurbsFns.d.ts.map +0 -1
  1393. package/dist/vendored/brepjs/topology/nurbsFns.js +0 -22
  1394. package/dist/vendored/brepjs/topology/nurbsFns.js.map +0 -1
  1395. package/dist/vendored/brepjs/topology/polyhedronFns.d.ts +0 -11
  1396. package/dist/vendored/brepjs/topology/polyhedronFns.d.ts.map +0 -1
  1397. package/dist/vendored/brepjs/topology/polyhedronFns.js +0 -47
  1398. package/dist/vendored/brepjs/topology/polyhedronFns.js.map +0 -1
  1399. package/dist/vendored/brepjs/topology/positionFns.d.ts +0 -18
  1400. package/dist/vendored/brepjs/topology/positionFns.d.ts.map +0 -1
  1401. package/dist/vendored/brepjs/topology/positionFns.js +0 -34
  1402. package/dist/vendored/brepjs/topology/positionFns.js.map +0 -1
  1403. package/dist/vendored/brepjs/topology/primitiveFns.d.ts +0 -244
  1404. package/dist/vendored/brepjs/topology/primitiveFns.d.ts.map +0 -1
  1405. package/dist/vendored/brepjs/topology/primitiveFns.js +0 -361
  1406. package/dist/vendored/brepjs/topology/primitiveFns.js.map +0 -1
  1407. package/dist/vendored/brepjs/topology/shapeBooleans.d.ts +0 -14
  1408. package/dist/vendored/brepjs/topology/shapeBooleans.d.ts.map +0 -1
  1409. package/dist/vendored/brepjs/topology/shapeBooleans.js +0 -24
  1410. package/dist/vendored/brepjs/topology/shapeBooleans.js.map +0 -1
  1411. package/dist/vendored/brepjs/topology/shapeFns.d.ts +0 -30
  1412. package/dist/vendored/brepjs/topology/shapeFns.d.ts.map +0 -1
  1413. package/dist/vendored/brepjs/topology/shapeFns.js +0 -50
  1414. package/dist/vendored/brepjs/topology/shapeFns.js.map +0 -1
  1415. package/dist/vendored/brepjs/topology/shapeHelpers.d.ts +0 -9
  1416. package/dist/vendored/brepjs/topology/shapeHelpers.d.ts.map +0 -1
  1417. package/dist/vendored/brepjs/topology/shapeHelpers.js +0 -14
  1418. package/dist/vendored/brepjs/topology/shapeHelpers.js.map +0 -1
  1419. package/dist/vendored/brepjs/topology/shapeModifiers.d.ts +0 -33
  1420. package/dist/vendored/brepjs/topology/shapeModifiers.d.ts.map +0 -1
  1421. package/dist/vendored/brepjs/topology/shapeModifiers.js +0 -28
  1422. package/dist/vendored/brepjs/topology/shapeModifiers.js.map +0 -1
  1423. package/dist/vendored/brepjs/topology/shapeRef/derivedFaceRefFns.d.ts +0 -29
  1424. package/dist/vendored/brepjs/topology/shapeRef/derivedFaceRefFns.d.ts.map +0 -1
  1425. package/dist/vendored/brepjs/topology/shapeRef/derivedFaceRefFns.js +0 -135
  1426. package/dist/vendored/brepjs/topology/shapeRef/derivedFaceRefFns.js.map +0 -1
  1427. package/dist/vendored/brepjs/topology/shapeRef/edgeRefFns.d.ts +0 -25
  1428. package/dist/vendored/brepjs/topology/shapeRef/edgeRefFns.d.ts.map +0 -1
  1429. package/dist/vendored/brepjs/topology/shapeRef/edgeRefFns.js +0 -123
  1430. package/dist/vendored/brepjs/topology/shapeRef/edgeRefFns.js.map +0 -1
  1431. package/dist/vendored/brepjs/topology/shapeRef/index.d.ts +0 -11
  1432. package/dist/vendored/brepjs/topology/shapeRef/index.d.ts.map +0 -1
  1433. package/dist/vendored/brepjs/topology/shapeRef/index.js +0 -10
  1434. package/dist/vendored/brepjs/topology/shapeRef/index.js.map +0 -1
  1435. package/dist/vendored/brepjs/topology/shapeRef/refResolveFns.d.ts +0 -66
  1436. package/dist/vendored/brepjs/topology/shapeRef/refResolveFns.d.ts.map +0 -1
  1437. package/dist/vendored/brepjs/topology/shapeRef/refResolveFns.js +0 -128
  1438. package/dist/vendored/brepjs/topology/shapeRef/refResolveFns.js.map +0 -1
  1439. package/dist/vendored/brepjs/topology/shapeRef/roleLookup.d.ts +0 -18
  1440. package/dist/vendored/brepjs/topology/shapeRef/roleLookup.d.ts.map +0 -1
  1441. package/dist/vendored/brepjs/topology/shapeRef/roleLookup.js +0 -51
  1442. package/dist/vendored/brepjs/topology/shapeRef/roleLookup.js.map +0 -1
  1443. package/dist/vendored/brepjs/topology/shapeRef/scoring.d.ts +0 -20
  1444. package/dist/vendored/brepjs/topology/shapeRef/scoring.d.ts.map +0 -1
  1445. package/dist/vendored/brepjs/topology/shapeRef/scoring.js +0 -65
  1446. package/dist/vendored/brepjs/topology/shapeRef/scoring.js.map +0 -1
  1447. package/dist/vendored/brepjs/topology/shapeRef/shapeRefFns.d.ts +0 -59
  1448. package/dist/vendored/brepjs/topology/shapeRef/shapeRefFns.d.ts.map +0 -1
  1449. package/dist/vendored/brepjs/topology/shapeRef/shapeRefFns.js +0 -266
  1450. package/dist/vendored/brepjs/topology/shapeRef/shapeRefFns.js.map +0 -1
  1451. package/dist/vendored/brepjs/topology/shapeRef/shapeRefTypes.d.ts +0 -153
  1452. package/dist/vendored/brepjs/topology/shapeRef/shapeRefTypes.d.ts.map +0 -1
  1453. package/dist/vendored/brepjs/topology/shapeRef/shapeRefTypes.js +0 -6
  1454. package/dist/vendored/brepjs/topology/shapeRef/shapeRefTypes.js.map +0 -1
  1455. package/dist/vendored/brepjs/topology/shapeRef/vertexRefFns.d.ts +0 -24
  1456. package/dist/vendored/brepjs/topology/shapeRef/vertexRefFns.d.ts.map +0 -1
  1457. package/dist/vendored/brepjs/topology/shapeRef/vertexRefFns.js +0 -128
  1458. package/dist/vendored/brepjs/topology/shapeRef/vertexRefFns.js.map +0 -1
  1459. package/dist/vendored/brepjs/topology/shapeUtils.d.ts +0 -16
  1460. package/dist/vendored/brepjs/topology/shapeUtils.d.ts.map +0 -1
  1461. package/dist/vendored/brepjs/topology/shapeUtils.js +0 -28
  1462. package/dist/vendored/brepjs/topology/shapeUtils.js.map +0 -1
  1463. package/dist/vendored/brepjs/topology/solidBuilders.d.ts +0 -74
  1464. package/dist/vendored/brepjs/topology/solidBuilders.d.ts.map +0 -1
  1465. package/dist/vendored/brepjs/topology/solidBuilders.js +0 -173
  1466. package/dist/vendored/brepjs/topology/solidBuilders.js.map +0 -1
  1467. package/dist/vendored/brepjs/topology/surfaceBuilders.d.ts +0 -47
  1468. package/dist/vendored/brepjs/topology/surfaceBuilders.d.ts.map +0 -1
  1469. package/dist/vendored/brepjs/topology/surfaceBuilders.js +0 -162
  1470. package/dist/vendored/brepjs/topology/surfaceBuilders.js.map +0 -1
  1471. package/dist/vendored/brepjs/topology/surfaceFns.d.ts +0 -41
  1472. package/dist/vendored/brepjs/topology/surfaceFns.d.ts.map +0 -1
  1473. package/dist/vendored/brepjs/topology/surfaceFns.js +0 -178
  1474. package/dist/vendored/brepjs/topology/surfaceFns.js.map +0 -1
  1475. package/dist/vendored/brepjs/topology/threeHelpers.d.ts +0 -124
  1476. package/dist/vendored/brepjs/topology/threeHelpers.d.ts.map +0 -1
  1477. package/dist/vendored/brepjs/topology/threeHelpers.js +0 -118
  1478. package/dist/vendored/brepjs/topology/threeHelpers.js.map +0 -1
  1479. package/dist/vendored/brepjs/topology/topologyQueryFns.d.ts +0 -100
  1480. package/dist/vendored/brepjs/topology/topologyQueryFns.d.ts.map +0 -1
  1481. package/dist/vendored/brepjs/topology/topologyQueryFns.js +0 -307
  1482. package/dist/vendored/brepjs/topology/topologyQueryFns.js.map +0 -1
  1483. package/dist/vendored/brepjs/topology/transformFns.d.ts +0 -69
  1484. package/dist/vendored/brepjs/topology/transformFns.d.ts.map +0 -1
  1485. package/dist/vendored/brepjs/topology/transformFns.js +0 -235
  1486. package/dist/vendored/brepjs/topology/transformFns.js.map +0 -1
  1487. package/dist/vendored/brepjs/topology/wrapperFns.d.ts +0 -169
  1488. package/dist/vendored/brepjs/topology/wrapperFns.d.ts.map +0 -1
  1489. package/dist/vendored/brepjs/topology/wrapperFns.js +0 -291
  1490. package/dist/vendored/brepjs/topology/wrapperFns.js.map +0 -1
  1491. package/dist/vendored/brepjs/topology.d.ts +0 -28
  1492. package/dist/vendored/brepjs/topology.d.ts.map +0 -1
  1493. package/dist/vendored/brepjs/topology.js +0 -39
  1494. package/dist/vendored/brepjs/topology.js.map +0 -1
  1495. package/dist/vendored/brepjs/utils/arrayAccess.d.ts +0 -12
  1496. package/dist/vendored/brepjs/utils/arrayAccess.d.ts.map +0 -1
  1497. package/dist/vendored/brepjs/utils/arrayAccess.js +0 -25
  1498. package/dist/vendored/brepjs/utils/arrayAccess.js.map +0 -1
  1499. package/dist/vendored/brepjs/utils/bug.d.ts +0 -15
  1500. package/dist/vendored/brepjs/utils/bug.d.ts.map +0 -1
  1501. package/dist/vendored/brepjs/utils/bug.js +0 -21
  1502. package/dist/vendored/brepjs/utils/bug.js.map +0 -1
  1503. package/dist/vendored/brepjs/utils/ioFilename.d.ts +0 -3
  1504. package/dist/vendored/brepjs/utils/ioFilename.d.ts.map +0 -1
  1505. package/dist/vendored/brepjs/utils/ioFilename.js +0 -7
  1506. package/dist/vendored/brepjs/utils/ioFilename.js.map +0 -1
  1507. package/dist/vendored/brepjs/utils/precisionRound.d.ts +0 -11
  1508. package/dist/vendored/brepjs/utils/precisionRound.d.ts.map +0 -1
  1509. package/dist/vendored/brepjs/utils/precisionRound.js +0 -19
  1510. package/dist/vendored/brepjs/utils/precisionRound.js.map +0 -1
  1511. package/dist/vendored/brepjs/utils/quaternion.d.ts +0 -18
  1512. package/dist/vendored/brepjs/utils/quaternion.d.ts.map +0 -1
  1513. package/dist/vendored/brepjs/utils/quaternion.js +0 -68
  1514. package/dist/vendored/brepjs/utils/quaternion.js.map +0 -1
  1515. package/dist/vendored/brepjs/utils/range.d.ts +0 -3
  1516. package/dist/vendored/brepjs/utils/range.d.ts.map +0 -1
  1517. package/dist/vendored/brepjs/utils/range.js +0 -5
  1518. package/dist/vendored/brepjs/utils/range.js.map +0 -1
  1519. package/dist/vendored/brepjs/utils/uuid.d.ts +0 -3
  1520. package/dist/vendored/brepjs/utils/uuid.d.ts.map +0 -1
  1521. package/dist/vendored/brepjs/utils/uuid.js +0 -7
  1522. package/dist/vendored/brepjs/utils/uuid.js.map +0 -1
  1523. package/dist/vendored/brepjs/utils/vec2d.d.ts +0 -62
  1524. package/dist/vendored/brepjs/utils/vec2d.d.ts.map +0 -1
  1525. package/dist/vendored/brepjs/utils/vec2d.js +0 -107
  1526. package/dist/vendored/brepjs/utils/vec2d.js.map +0 -1
  1527. package/dist/vendored/brepjs/utils/vec3.d.ts +0 -32
  1528. package/dist/vendored/brepjs/utils/vec3.d.ts.map +0 -1
  1529. package/dist/vendored/brepjs/utils/vec3.js +0 -35
  1530. package/dist/vendored/brepjs/utils/vec3.js.map +0 -1
  1531. package/dist/vendored/brepjs/utils/zip.d.ts +0 -5
  1532. package/dist/vendored/brepjs/utils/zip.d.ts.map +0 -1
  1533. package/dist/vendored/brepjs/utils/zip.js +0 -8
  1534. package/dist/vendored/brepjs/utils/zip.js.map +0 -1
  1535. package/dist/vendored/brepjs/vectors.d.ts +0 -11
  1536. package/dist/vendored/brepjs/vectors.d.ts.map +0 -1
  1537. package/dist/vendored/brepjs/vectors.js +0 -9
  1538. package/dist/vendored/brepjs/vectors.js.map +0 -1
@@ -18,7 +18,7 @@
18
18
  *
19
19
  * 坐标系:Z-up、毫米,与 mesh 路径一致。
20
20
  */
21
- import * as THREE from 'three';
21
+ import { Vec3 as Vec3C, Mat4 } from '../math3d/index.js';
22
22
  import type { BrepHandle } from './engine/types.js';
23
23
  import type { BrepEngineApi } from './engine/primitives.js';
24
24
  import type { Shape, Vec3 } from '../mesh/types.js';
@@ -207,8 +207,8 @@ export interface DrillBrepParams {
207
207
  export interface DrillGeometry {
208
208
  readonly radius: number;
209
209
  readonly holeHeight: number;
210
- readonly holeCenter: THREE.Vector3;
211
- readonly direction: THREE.Vector3;
210
+ readonly holeCenter: Vec3C;
211
+ readonly direction: Vec3C;
212
212
  }
213
213
  /** 从 `DrillBrepParams` 推导钻孔几何(孔中心/高度/轴向)。供 `drillBrep` 与 role-table 路径共用。
214
214
  * @param kernel - BREP 引擎接口
@@ -386,12 +386,12 @@ export declare function loadBrepAssembly(kernel: BrepEngineApi, buffer: ArrayBuf
386
386
  multiSolidCount?: number;
387
387
  }>;
388
388
  /**
389
- * Convert a THREE.Matrix4 into the 3x4 row-major array (12 doubles) the OCCT
389
+ * Convert a Mat4 into the 3x4 row-major array (12 doubles) the OCCT
390
390
  * transform expects.
391
391
  *
392
392
  * OCCT transform accepts [r00,r01,r02,tx, r10,r11,r12,ty, r20,r21,r22,tz].
393
393
  * @param matrix - the source matrix to convert.
394
394
  * @returns the 3x4 row-major array of 12 doubles.
395
395
  */
396
- export declare function matrixToArray(matrix: THREE.Matrix4): number[];
396
+ export declare function matrixToArray(matrix: Mat4): number[];
397
397
  //# sourceMappingURL=brep-ops.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"brep-ops.d.ts","sourceRoot":"","sources":["../../src/brep/brep-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brep-ops.d.ts","sourceRoot":"","sources":["../../src/brep/brep-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,EAAe,MAAM,WAAW,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,gBAAgB,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AASxD,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,EAAmB,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAI5E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,UAAU,EACjB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,cAAc,EAC1B,QAAQ,CAAC,EAAE,QAAQ,EACnB,iBAAiB,CAAC,EAAE,mBAAmB,GACtC,KAAK,CAqBP;AAID;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,IAAI,GACX,UAAU,CAEZ;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,IAAI,EACZ,KAAK,CAAC,EAAE,IAAI,GACX,UAAU,CAYZ;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAclE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,SAAS,MAAM,EAAE,GACrB,UAAU,CAGZ;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,MAAM,CAAC,EAAE,IAAI,GACZ,UAAU,CAWZ;AAID;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAC5C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAC/B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACpC,UAAU,CAWZ;AAID;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,aAAa,EACrB,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,UAAU,GACZ,UAAU,CAEZ;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,aAAa,EACrB,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,UAAU,GACZ,UAAU,CAEZ;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,aAAa,EACrB,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,UAAU,GACZ,UAAU,CAEZ;AAID,oBAAoB;AACpB,MAAM,WAAW,eAAe;IAC9B,UAAU;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB;IAChB,QAAQ,EAAE,IAAI,CAAA;IACd,wBAAwB;IACxB,SAAS,EAAE,IAAI,CAAA;IACf,gBAAgB;IAChB,UAAU,EAAE,IAAI,CAAA;IAChB,UAAU;IACV,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;CAC9B;AAED;;;;;;;;;;;;;GAaG;AACH,+EAA+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAA;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,eAAe,GACtB,aAAa,CAkEf;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,GAAG,UAAU,CAuB1F;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,eAAe,GACtB,UAAU,CAWZ;AAID,oBAAoB;AACpB,MAAM,WAAW,eAAe;IAC9B,aAAa;IACb,MAAM,EAAE,IAAI,CAAA;IACZ;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,IAAI,CAAA;CACnB;AAED,oBAAoB;AACpB,MAAM,WAAW,eAAe;IAC9B,gBAAgB;IAChB,KAAK,EAAE,UAAU,CAAA;IACjB,gBAAgB;IAChB,IAAI,EAAE,UAAU,CAAA;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,eAAe,GACtB,eAAe,CA8DjB;AAID,sBAAsB;AACtB,MAAM,WAAW,iBAAiB;IAChC,aAAa;IACb,MAAM,EAAE,IAAI,CAAA;IACZ;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,WAAW;IACX,MAAM,EAAE,MAAM,CAAA;IACd,WAAW;IACX,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAAA;CAC3C;AAoBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,iBAAiB,GACxB,UAAU,CAkKZ;AA0BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,WAAW,EACnB,SAAS,CAAC,EAAE,cAAc,EAC1B,MAAM,CAAC,EAAE,QAAQ,EACjB,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACjC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAuD/D;AAsBD,6CAA6C;AAC7C,MAAM,WAAW,oBAAoB;IACnC,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ,6BAA6B;IAC7B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;IACtC,kBAAkB;IAClB,KAAK,EAAE,KAAK,CAAA;IACZ,mEAAmE;IACnE,KAAK,EAAE,UAAU,CAAA;CAClB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;IAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmCrG;AA8CD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,CAQpD"}
@@ -18,7 +18,7 @@
18
18
  *
19
19
  * 坐标系:Z-up、毫米,与 mesh 路径一致。
20
20
  */
21
- import * as THREE from 'three';
21
+ import { Vec3 as Vec3C, Mat4, Euler, Quat } from '../math3d/index.js';
22
22
  import { getOcctKernel, importAssemblyFromStep, collectLeafParts, } from '../occt-kernel/occtKernel.js';
23
23
  import { getSolidColorsOrdered } from '../occt-kernel/stepColorParser.js';
24
24
  import { getSolidBoundingBox } from './brep-utils.js';
@@ -86,11 +86,11 @@ export function translateBrep(kernel, solid, offset) {
86
86
  * @returns 新实体
87
87
  */
88
88
  export function rotateBrep(kernel, solid, angles, pivot) {
89
- const euler = new THREE.Euler((angles[0] * Math.PI) / 180, (angles[1] * Math.PI) / 180, (angles[2] * Math.PI) / 180);
90
- const matrix = new THREE.Matrix4().makeRotationFromEuler(euler);
89
+ const euler = new Euler((angles[0] * Math.PI) / 180, (angles[1] * Math.PI) / 180, (angles[2] * Math.PI) / 180);
90
+ const matrix = new Mat4().makeRotationFromEuler(euler);
91
91
  if (pivot) {
92
- matrix.premultiply(new THREE.Matrix4().makeTranslation(pivot[0], pivot[1], pivot[2]));
93
- matrix.multiply(new THREE.Matrix4().makeTranslation(-pivot[0], -pivot[1], -pivot[2]));
92
+ matrix.premultiply(new Mat4().makeTranslation(pivot[0], pivot[1], pivot[2]));
93
+ matrix.multiply(new Mat4().makeTranslation(-pivot[0], -pivot[1], -pivot[2]));
94
94
  }
95
95
  return kernel.transform(solid, matrixToArray(matrix));
96
96
  }
@@ -176,13 +176,13 @@ export function applyAffineBrep(kernel, solid, m12) {
176
176
  */
177
177
  export function scaleBrep(kernel, solid, factor, center) {
178
178
  const f = typeof factor === 'number' ? [factor, factor, factor] : factor;
179
- const scale = new THREE.Matrix4().makeScale(f[0], f[1], f[2]);
179
+ const scale = new Mat4().makeScale(f[0], f[1], f[2]);
180
180
  // T(c)·S·T(−c):不动点为 center;缺省时退化为原点缩放(现状行为)。
181
181
  const matrix = center
182
- ? new THREE.Matrix4()
182
+ ? new Mat4()
183
183
  .makeTranslation(center[0], center[1], center[2])
184
184
  .multiply(scale)
185
- .multiply(new THREE.Matrix4().makeTranslation(-center[0], -center[1], -center[2]))
185
+ .multiply(new Mat4().makeTranslation(-center[0], -center[1], -center[2]))
186
186
  : scale;
187
187
  return applyAffineBrep(kernel, solid, matrixToArray(matrix));
188
188
  }
@@ -204,13 +204,13 @@ export function scaleBrep(kernel, solid, factor, center) {
204
204
  * @returns 新实体(调用方负责释放输入实体)
205
205
  */
206
206
  export function applyTransformBrep(kernel, solid, quaternion, pivot, translation) {
207
- const rotation = new THREE.Matrix4().makeRotationFromQuaternion(new THREE.Quaternion(quaternion[0], quaternion[1], quaternion[2], quaternion[3]));
207
+ const rotation = new Mat4().makeRotationFromQuaternion(new Quat(quaternion[0], quaternion[1], quaternion[2], quaternion[3]));
208
208
  // T(translation) · T(pivot) · R · T(-pivot) = T(pivot+translation) · R · T(-pivot)
209
209
  // 先绕 pivot 旋转,再平移 translation(与 mesh 路径 applyTransform 一致)
210
- const matrix = new THREE.Matrix4()
210
+ const matrix = new Mat4()
211
211
  .makeTranslation(pivot[0] + translation[0], pivot[1] + translation[1], pivot[2] + translation[2])
212
212
  .multiply(rotation)
213
- .multiply(new THREE.Matrix4().makeTranslation(-pivot[0], -pivot[1], -pivot[2]));
213
+ .multiply(new Mat4().makeTranslation(-pivot[0], -pivot[1], -pivot[2]));
214
214
  return kernel.transform(solid, matrixToArray(matrix));
215
215
  }
216
216
  // ─── 布尔操作 ───
@@ -255,25 +255,25 @@ export function commonBrep(kernel, a, b) {
255
255
  */
256
256
  export function computeDrillGeometry(kernel, solid, params) {
257
257
  const radius = params.diameter / 2;
258
- const direction = new THREE.Vector3(...params.direction).normalize();
258
+ const direction = new Vec3C(...params.direction).normalize();
259
259
  // 确保方向指向材料内部
260
- const faceNormal = new THREE.Vector3(...params.faceNormal);
260
+ const faceNormal = new Vec3C(...params.faceNormal);
261
261
  if (direction.dot(faceNormal) > 0) {
262
262
  direction.negate();
263
263
  }
264
264
  // 计算孔的高度和中心
265
265
  const bbox = getSolidBoundingBox(kernel, solid);
266
- const bboxSize = new THREE.Vector3(bbox.max[0] - bbox.min[0], bbox.max[1] - bbox.min[1], bbox.max[2] - bbox.min[2]);
266
+ const bboxSize = new Vec3C(bbox.max[0] - bbox.min[0], bbox.max[1] - bbox.min[1], bbox.max[2] - bbox.min[2]);
267
267
  const bboxMax = Math.max(bboxSize.x, bboxSize.y, bboxSize.z);
268
268
  let holeHeight;
269
269
  let holeCenter;
270
- const pos = new THREE.Vector3(...params.position);
270
+ const pos = new Vec3C(...params.position);
271
271
  // 通孔:depth <= 0(契约:depth<=0 表示通孔,与 mesh 路径 `depth>0 ? 'blind':'through'` 一致)。
272
272
  // ⚠️ 只判 `=== 0` 会让 depth<0 落入盲孔分支 → safeDepth=0 → 零高圆柱 → OCCT transform 崩溃。
273
273
  if (params.depth <= 0) {
274
274
  const d = direction.clone().normalize();
275
- const bbMin = new THREE.Vector3(bbox.min[0], bbox.min[1], bbox.min[2]);
276
- const bbMax = new THREE.Vector3(bbox.max[0], bbox.max[1], bbox.max[2]);
275
+ const bbMin = new Vec3C(bbox.min[0], bbox.min[1], bbox.min[2]);
276
+ const bbMax = new Vec3C(bbox.max[0], bbox.max[1], bbox.max[2]);
277
277
  let tNear = -Infinity;
278
278
  let tFar = Infinity;
279
279
  const axes = [
@@ -322,16 +322,16 @@ export function computeDrillGeometry(kernel, solid, params) {
322
322
  export function buildDrillToolSolid(kernel, geom) {
323
323
  const cylinder = kernel.makeCylinder(geom.radius, geom.holeHeight);
324
324
  // 计算从 Z 轴到 direction 的旋转
325
- const zAxis = new THREE.Vector3(0, 0, 1);
326
- const quat = new THREE.Quaternion().setFromUnitVectors(zAxis, geom.direction);
327
- const rotMatrix = new THREE.Matrix4().makeRotationFromQuaternion(quat);
325
+ const zAxis = new Vec3C(0, 0, 1);
326
+ const quat = new Quat().setFromUnitVectors(zAxis, geom.direction);
327
+ const rotMatrix = new Mat4().makeRotationFromQuaternion(quat);
328
328
  // 平移矩阵:到孔中心,并减去 height/2(因为圆柱从 Z=0 开始)
329
- const transMatrix = new THREE.Matrix4().makeTranslation(geom.holeCenter.x, geom.holeCenter.y, geom.holeCenter.z);
329
+ const transMatrix = new Mat4().makeTranslation(geom.holeCenter.x, geom.holeCenter.y, geom.holeCenter.z);
330
330
  // 组合:先旋转,再平移
331
- const finalMatrix = new THREE.Matrix4().multiplyMatrices(transMatrix, rotMatrix);
331
+ const finalMatrix = new Mat4().multiplyMatrices(transMatrix, rotMatrix);
332
332
  // 还需要补偿圆柱的起始位置(从 Z=0 开始 → 需要先下移 height/2)
333
- const offsetMatrix = new THREE.Matrix4().makeTranslation(0, 0, -geom.holeHeight / 2);
334
- const fullMatrix = new THREE.Matrix4().multiplyMatrices(finalMatrix, offsetMatrix);
333
+ const offsetMatrix = new Mat4().makeTranslation(0, 0, -geom.holeHeight / 2);
334
+ const fullMatrix = new Mat4().multiplyMatrices(finalMatrix, offsetMatrix);
335
335
  const toolSolid = kernel.transform(cylinder, matrixToArray(fullMatrix));
336
336
  kernel.release(cylinder);
337
337
  return toolSolid;
@@ -373,23 +373,23 @@ export function drillBrep(kernel, solid, params) {
373
373
  */
374
374
  export function splitBrep(kernel, solid, params) {
375
375
  const bbox = getSolidBoundingBox(kernel, solid);
376
- const bboxSize = new THREE.Vector3(bbox.max[0] - bbox.min[0], bbox.max[1] - bbox.min[1], bbox.max[2] - bbox.min[2]);
376
+ const bboxSize = new Vec3C(bbox.max[0] - bbox.min[0], bbox.max[1] - bbox.min[1], bbox.max[2] - bbox.min[2]);
377
377
  const bboxMax = Math.max(bboxSize.x, bboxSize.y, bboxSize.z);
378
378
  // 创建一个大的盒子代表法线正方向的半空间
379
- const normal = new THREE.Vector3(...params.normal).normalize();
379
+ const normal = new Vec3C(...params.normal).normalize();
380
380
  const halfSize = bboxMax * 3; // 足够大
381
381
  // 先在局部坐标系(Z 轴 = 法线方向)创建盒子
382
382
  // 然后旋转到世界坐标系
383
- const zAxis = new THREE.Vector3(0, 0, 1);
384
- const quat = new THREE.Quaternion().setFromUnitVectors(zAxis, normal);
385
- const rotMatrix = new THREE.Matrix4().makeRotationFromQuaternion(quat);
383
+ const zAxis = new Vec3C(0, 0, 1);
384
+ const quat = new Quat().setFromUnitVectors(zAxis, normal);
385
+ const rotMatrix = new Mat4().makeRotationFromQuaternion(quat);
386
386
  // 在局部坐标系中,盒子从 Z=0(切割平面)延伸到 Z=halfSize
387
387
  const localBox = kernel.makeBoxFromCorners({ x: -halfSize, y: -halfSize, z: 0 }, { x: halfSize, y: halfSize, z: halfSize });
388
388
  // 计算切割平面的世界坐标原点(planeCenter / planeDistance 二选一必填,
389
389
  // 都缺省直接报错,不隐式回退 bbox 中心)
390
390
  const planeOrigin = resolvePlaneOrigin(normal, params.planeCenter, params.planeDistance);
391
- const transMatrix = new THREE.Matrix4().makeTranslation(planeOrigin.x, planeOrigin.y, planeOrigin.z);
392
- const finalMatrix = new THREE.Matrix4().multiplyMatrices(transMatrix, rotMatrix);
391
+ const transMatrix = new Mat4().makeTranslation(planeOrigin.x, planeOrigin.y, planeOrigin.z);
392
+ const finalMatrix = new Mat4().multiplyMatrices(transMatrix, rotMatrix);
393
393
  const halfSpaceBox = kernel.transform(localBox, matrixToArray(finalMatrix));
394
394
  kernel.release(localBox);
395
395
  try {
@@ -417,7 +417,7 @@ export function splitBrep(kernel, solid, params) {
417
417
  /** 从 planeCenter / planeDistance 收敛出切割平面上的一个点(planeOrigin)。 */
418
418
  function resolvePlaneOrigin(normal, planeCenter, planeDistance) {
419
419
  if (planeCenter !== undefined) {
420
- return new THREE.Vector3(...planeCenter);
420
+ return new Vec3C(...planeCenter);
421
421
  }
422
422
  if (planeDistance !== undefined) {
423
423
  // 平面方程 n·x = d 上的点:取法线上距原点 d 处(n 为单位向量)
@@ -443,7 +443,7 @@ function resolvePlaneOrigin(normal, planeCenter, planeDistance) {
443
443
  */
444
444
  export function extrudeBrep(kernel, solid, params) {
445
445
  const mode = params.mode ?? 'centered';
446
- const normal = new THREE.Vector3(...params.normal).normalize();
446
+ const normal = new Vec3C(...params.normal).normalize();
447
447
  const length = params.length;
448
448
  // 1. 确定切割平面位置(世界系,来源静态:planeCenter 或 planeDistance,
449
449
  // 都缺省直接报错,不隐式回退 bbox 中心)
@@ -456,17 +456,17 @@ export function extrudeBrep(kernel, solid, params) {
456
456
  // 3. 获取截面
457
457
  // 使用 section 获取切割平面与实体的交线
458
458
  const bbox = getSolidBoundingBox(kernel, solid);
459
- const zAxis = new THREE.Vector3(0, 0, 1);
460
- const quat = new THREE.Quaternion().setFromUnitVectors(zAxis, normal);
461
- const rotMatrix = new THREE.Matrix4().makeRotationFromQuaternion(quat);
462
- const transMatrix = new THREE.Matrix4().makeTranslation(planeOrigin.x, planeOrigin.y, planeOrigin.z);
463
- const planeMatrix = new THREE.Matrix4().multiplyMatrices(transMatrix, rotMatrix);
459
+ const zAxis = new Vec3C(0, 0, 1);
460
+ const quat = new Quat().setFromUnitVectors(zAxis, normal);
461
+ const rotMatrix = new Mat4().makeRotationFromQuaternion(quat);
462
+ const transMatrix = new Mat4().makeTranslation(planeOrigin.x, planeOrigin.y, planeOrigin.z);
463
+ const planeMatrix = new Mat4().multiplyMatrices(transMatrix, rotMatrix);
464
464
  // 创建一个大的矩形面作为切割平面
465
- const bboxSize = new THREE.Vector3(bbox.max[0] - bbox.min[0], bbox.max[1] - bbox.min[1], bbox.max[2] - bbox.min[2]);
465
+ const bboxSize = new Vec3C(bbox.max[0] - bbox.min[0], bbox.max[1] - bbox.min[1], bbox.max[2] - bbox.min[2]);
466
466
  const planeSize = Math.max(bboxSize.x, bboxSize.y, bboxSize.z) * 3;
467
467
  const planeRect = kernel.makeRectangle(planeSize, planeSize);
468
468
  // makeRectangle creates a face from [0,0] to [width,height] — center it at origin first
469
- const centerMatrix = new THREE.Matrix4().makeTranslation(-planeSize / 2, -planeSize / 2, 0);
469
+ const centerMatrix = new Mat4().makeTranslation(-planeSize / 2, -planeSize / 2, 0);
470
470
  const centeredRect = kernel.transform(planeRect, matrixToArray(centerMatrix));
471
471
  kernel.release(planeRect);
472
472
  const planeFace = kernel.transform(centeredRect, matrixToArray(planeMatrix));
@@ -797,7 +797,7 @@ function toImportAssemblyNode(nodes, leafIndex) {
797
797
  }
798
798
  // ─── 辅助函数 ───
799
799
  /**
800
- * Convert a THREE.Matrix4 into the 3x4 row-major array (12 doubles) the OCCT
800
+ * Convert a Mat4 into the 3x4 row-major array (12 doubles) the OCCT
801
801
  * transform expects.
802
802
  *
803
803
  * OCCT transform accepts [r00,r01,r02,tx, r10,r11,r12,ty, r20,r21,r22,tz].
@@ -806,7 +806,7 @@ function toImportAssemblyNode(nodes, leafIndex) {
806
806
  */
807
807
  export function matrixToArray(matrix) {
808
808
  const e = matrix.elements;
809
- // THREE.Matrix4 是 column-major,OCCT 需要 row-major 3x4
809
+ // Mat4 是 column-major,OCCT 需要 row-major 3x4
810
810
  return [
811
811
  e[0], e[4], e[8], e[12],
812
812
  e[1], e[5], e[9], e[13],
@@ -1 +1 @@
1
- {"version":3,"file":"brep-ops.js","sourceRoot":"","sources":["../../src/brep/brep-ops.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * 核心 BREP 操作 — 使用 OCCT 精确实体运算\n *\n * @platform occt — 本文件 import occt-kernel:`extrudeBrep` 用原生 `section`\n * (BRepAlgoAPI_Section,occt-only,L1 只有 sectionByPlane)构造截面 → 守卫①\n * 要求平台 import 自证身份。本文件是内部工具面(非 op 文件),文件级标注即满足\n * 守卫;调用方 op 若经本文件触达 occt-only 能力,须在 defineOp 声明 engines\n * (extrudeBrep 的 section 仅 occt 路径可达,brepkit 下由调用方引擎声明拦截)。\n *\n * See docs/api-contract.md §8 (dual-path geometry contract: BREP / Mesh).\n *\n * 与 mesh 路径(transform.ts / boolean/ / drill.ts / split.ts / extrude.ts)对照:\n * - mesh 路径:消费 Shape(三角网格),走 manifold-3d(mesh-CSG)\n * - BREP 路径:消费 BrepHandle(OCCT 实体句柄),走 OCCT 精确布尔/变换\n *\n * 所有函数都是纯函数(可 import occtWasmKernel,不读 store)。\n * 输入输出均为 OCCT BrepHandle,调用方负责句柄生命周期。\n *\n * 坐标系:Z-up、毫米,与 mesh 路径一致。\n */\n\nimport * as THREE from 'three'\nimport type { BrepHandle, BrepMeshResult } from './engine/types'\nimport type { BrepEngineApi } from './engine/primitives'\nimport {\n getOcctKernel,\n importAssemblyFromStep,\n collectLeafParts,\n type ShapeHandle,\n type AssemblyPartNode,\n} from '../occt-kernel/occtKernel'\nimport { getSolidColorsOrdered } from '../occt-kernel/stepColorParser'\nimport type { Shape, Vec3 } from '../mesh/types'\nimport type { ImportAssemblyNode } from '../mesh/import-model'\nimport type { BrepChainState } from './brep-chain'\nimport type { PartName } from '../identity'\nimport { getSolidBoundingBox } from './brep-utils'\nimport { getTessellation, type TessellationDensity } from '../runtime-state'\n\n// ─── 通用工具 ───\n\n/**\n * 将 OCCT solid 三角化为 Shape(供显示用)。\n *\n * 如果传入 brepChain + stmtId,同时把完整 BrepMeshResult(含 faceGroups)缓存到\n * brepChain.meshShapeCache,供 buildBrepTopology 复用——确保拓扑 mesh 与显示 mesh\n * 完全一致(规则 1:拓扑数据生成所使用的 mesh,必须是当前用户看到的 mesh)。\n *\n * @param kernel the initialized OCCT kernel.\n * @param solid the CAD solid handle.\n * @param segments optional tessellation segment count (affects precision).\n * @param brepChain optional - caches the BrepMeshResult when provided.\n * @param partName optional - the part this solid belongs to, paired with brepChain as the cache key.\n * @param defaultDeflection optional - per-call deflection fallback when `segments` is absent\n * (wins over the global tessellation knob; explicit `segments` still wins over both).\n * @returns the tessellated Shape.\n */\nexport function solidToShape(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n segments?: number,\n brepChain?: BrepChainState,\n partName?: PartName,\n defaultDeflection?: TessellationDensity,\n): Shape {\n // Deflection precedence: explicit segments > per-call defaultDeflection > global\n // tessellation (host-tunable via createRuntime, proposal 2026-10-07).\n const fallback = defaultDeflection ?? getTessellation()\n const angularDeflection = segments\n ? (2 * Math.PI) / Math.max(3, segments)\n : fallback.angularDeflection\n const mesh: BrepMeshResult = kernel.meshShape(solid, {\n linearDeflection: fallback.linearDeflection,\n angularDeflection,\n })\n\n // 规则 1:缓存完整 BrepMeshResult(含 faceGroups),供 buildBrepTopology 复用\n if (brepChain?.meshShapeCache && partName) {\n brepChain.meshShapeCache.set(partName, mesh)\n }\n\n return {\n positions: new Float32Array(mesh.positions),\n indices: new Uint32Array(mesh.indices),\n }\n}\n\n// ─── 变换操作 ───\n\n/**\n * BREP 平移:使用 OCCT translate(精确,不损失几何精度)。\n *\n * @param kernel OCCT 内核\n * @param solid 输入实体\n * @param offset 平移量 [dx, dy, dz]\n * @returns 新实体(调用方负责释放输入实体)\n */\nexport function translateBrep(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n offset: Vec3,\n): BrepHandle {\n return kernel.translate(solid, offset[0], offset[1], offset[2])\n}\n\n/**\n * BREP 旋转:使用 OCCT transform(3x4 仿射矩阵)。\n *\n * 与 mesh 路径 rotate_euler(shape, angles, pivot?) 一致:\n * - angles 为 XYZ 欧拉角(角度制)\n * - pivot 为旋转中心(可选,默认原点)\n *\n * @param kernel OCCT 内核\n * @param solid 输入实体\n * @param angles XYZ 欧拉角(角度制)\n * @param pivot 旋转中心(可选)\n * @returns 新实体\n */\nexport function rotateBrep(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n angles: Vec3,\n pivot?: Vec3,\n): BrepHandle {\n const euler = new THREE.Euler(\n (angles[0] * Math.PI) / 180,\n (angles[1] * Math.PI) / 180,\n (angles[2] * Math.PI) / 180,\n )\n const matrix = new THREE.Matrix4().makeRotationFromEuler(euler)\n if (pivot) {\n matrix.premultiply(new THREE.Matrix4().makeTranslation(pivot[0], pivot[1], pivot[2]))\n matrix.multiply(new THREE.Matrix4().makeTranslation(-pivot[0], -pivot[1], -pivot[2]))\n }\n return kernel.transform(solid, matrixToArray(matrix))\n}\n\n/**\n * 判定 3×4 行主序仿射矩阵的线性部分是否为**相似变换**(旋转/反射 × 等比缩放)——\n * 即 `gp_Trsf` 能精确承载、`kernel.transform`(BRepBuilderAPI_Transform)唯一\n * 正确处理的那一类。\n *\n * 判据必须用**相对**容差,不能像 2026-10-07 之前那样用绝对容差:\n * GOTCHA(2026-10-07,openscad example023 parity)——一个 60° 刚体旋转只要按\n * 7 位小数打印(`0.8660254`),行范数就是 `0.99999999645`(与 1 相差 3.6e-9)。\n * 绝对容差 1e-9 会判定 `|‖row2‖ − ‖row0‖| = 3.6e-9 > 1e-9` ⇒ 把这个**纯旋转**\n * 判成\"非相似\",从而错误地走进 `generalTransform`;而 occt 侧 `gp_GTrsf` 路径在\n * **已三角化**的形状上会重复计入被平移面的 TopLoc(顶盖 z 由 5 变 10,绕过在\n * `occt-kernel/occt-primitives.ts` 的 `generalTransform` 适配层,本层不感知)。\n * 相对容差 1e-6 覆盖 7 位小数打印精度,同时仍能区分真正的非等比缩放\n * (如 z×2.5 行范数相差 2.5 倍)。正交性同用 1e-6:7 位小数打印的旋转,行点积\n * 误差上界约 2e-7。\n *\n * @param m12 - 3×4 行主序矩阵(12 元素:`[r00,r01,r02,tx, r10,r11,r12,ty, r20,r21,r22,tz]`)。\n * @returns `true` 当且仅当线性部分可逆且为相似变换。\n */\nexport function isSimilarityAffine(m12: readonly number[]): boolean {\n const s0 = Math.hypot(m12[0]!, m12[1]!, m12[2]!)\n const s1 = Math.hypot(m12[4]!, m12[5]!, m12[6]!)\n const s2 = Math.hypot(m12[8]!, m12[9]!, m12[10]!)\n if (!(s0 > 1e-12) || !(s1 > 1e-12) || !(s2 > 1e-12)) return false\n const REL = 1e-6\n if (Math.abs(s1 - s0) > REL * s0 || Math.abs(s2 - s0) > REL * s0) return false\n const dot = (r: number, c: number): number =>\n m12[r * 4]! * m12[c * 4]! + m12[r * 4 + 1]! * m12[c * 4 + 1]! + m12[r * 4 + 2]! * m12[c * 4 + 2]!\n return (\n Math.abs(dot(0, 1)) <= REL * s0 * s1 &&\n Math.abs(dot(0, 2)) <= REL * s0 * s2 &&\n Math.abs(dot(1, 2)) <= REL * s1 * s2\n )\n}\n\n/**\n * 施加 3×4 行主序仿射矩阵,按矩阵类别选**唯一正确**的 OCCT 路径。\n *\n * 两条路径的差异是**正确性**而不只是性能:\n * - 相似(旋转/反射 × 等比缩放)→ `kernel.transform`(BRepBuilderAPI_Transform)。\n * - 其余(非等比缩放、错切)→ `kernel.generalTransform`(gp_GTrsf)。\n *\n * GOTCHA(2026-10-07):occt 的 `generalTransform` 在**已经三角化过**的形状上会\n * 重复计入被平移面的 TopLoc(精确 z∈[0,5],网格顶盖却落在 z=10;非等比 z×2.5 时\n * 12.5 vs 17.5)。该缺陷是 **occt 专属**(brepkit 的 GTrsf 路径干净),因此绕过\n * **不在本层**——本层是引擎中立分派,让每个引擎都为 occt 的毛病多付一次句柄分配\n * 是错的(还会扰动 brepkit 的 `cut` bbox,见 multi-engine-op-parity)。\n * 绕过落在 occt 适配层:`occt-kernel/occt-primitives.ts` 的 `generalTransform`\n * 先 `copy` 再变换。`kernel.transform` 无此问题,故相似矩阵不付这份深拷贝成本。\n *\n * 反向陷阱:把非相似矩阵交给 `kernel.transform` 是**静默错误**——OCCT 会按\n * `det^(1/3)` 取等比因子近似(实测 z×2.5 被当成 1.357 倍等比缩放)。所以分类\n * 判据既不能过严(把刚体旋转推给 GTrsf),也不能过宽(把非等比缩放塞给 Trsf)。\n *\n * @param kernel - L1 引擎句柄。\n * @param solid - 输入实体(不被消费、不被释放;调用方保留其所有权)。\n * @param m12 - 3×4 行主序矩阵(12 元素)。\n * @returns 变换后的新实体(调用方负责释放)。\n */\nexport function applyAffineBrep(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n m12: readonly number[],\n): BrepHandle {\n if (isSimilarityAffine(m12)) return kernel.transform(solid, m12 as number[])\n return kernel.generalTransform(solid, m12 as number[])\n}\n\n/**\n * BREP 缩放:使用 OCCT transform(3x4 仿射矩阵)。\n *\n * 与 mesh 路径 scale(P6 §4.6)一致:\n * - factor 为 number(均匀缩放)或 Vec3 [sx, sy, sz](非均匀)\n * - center 为缩放不动点(p' = center + S·(p − center));缺省 [0,0,0](原点),\n * 与早期 brepjs `scale(shape, factor, { center? })` 的默认一致。\n *\n * 路径分派交给 {@link applyAffineBrep}:等比走 `transform`,非等比走\n * `generalTransform`(gp_Trsf 表达不了非等比)。注意判据是**数值**相似性而非\n * 因子逐分量相等——`[1, 1, 1+1e-9]` 这种数值上就是等比,归 `transform` 一侧。\n *\n * @param kernel OCCT 内核\n * @param solid 输入实体\n * @param factor 缩放因子\n * @param center 缩放不动点(可选,默认原点)\n * @returns 新实体\n */\nexport function scaleBrep(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n factor: number | Vec3,\n center?: Vec3,\n): BrepHandle {\n const f = typeof factor === 'number' ? [factor, factor, factor] : factor\n const scale = new THREE.Matrix4().makeScale(f[0], f[1], f[2])\n // T(c)·S·T(−c):不动点为 center;缺省时退化为原点缩放(现状行为)。\n const matrix = center\n ? new THREE.Matrix4()\n .makeTranslation(center[0], center[1], center[2])\n .multiply(scale)\n .multiply(new THREE.Matrix4().makeTranslation(-center[0], -center[1], -center[2]))\n : scale\n return applyAffineBrep(kernel, solid, matrixToArray(matrix))\n}\n\n// ─── 装配变换 ───\n\n/**\n * BREP 版 applyTransform:与 mesh ops/assemble.ts 的 applyTransform 同语义(绕 pivot 旋转 + 平移)。\n *\n * 数学公式:p' = R·(p − pivot) + pivot + translation\n * 等价 Matrix4 = T(pivot) · R · T(−pivot) · T(translation)\n *\n * 用四元数而非欧拉角,是因为装配变换源是 api/assembly 的四元数;\n * 转欧拉会引入顺序/万向锁歧义。与 mesh applyTransform 顶点公式完全等价。\n *\n * @param kernel OCCT 内核\n * @param solid 输入实体\n * @param quaternion 旋转四元数 [x, y, z, w]\n * @param pivot 旋转中心\n * @param translation 平移量\n * @returns 新实体(调用方负责释放输入实体)\n */\nexport function applyTransformBrep(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n quaternion: [number, number, number, number],\n pivot: [number, number, number],\n translation: [number, number, number],\n): BrepHandle {\n const rotation = new THREE.Matrix4().makeRotationFromQuaternion(\n new THREE.Quaternion(quaternion[0], quaternion[1], quaternion[2], quaternion[3]),\n )\n // T(translation) · T(pivot) · R · T(-pivot) = T(pivot+translation) · R · T(-pivot)\n // 先绕 pivot 旋转,再平移 translation(与 mesh 路径 applyTransform 一致)\n const matrix = new THREE.Matrix4()\n .makeTranslation(pivot[0] + translation[0], pivot[1] + translation[1], pivot[2] + translation[2])\n .multiply(rotation)\n .multiply(new THREE.Matrix4().makeTranslation(-pivot[0], -pivot[1], -pivot[2]))\n return kernel.transform(solid, matrixToArray(matrix))\n}\n\n// ─── 布尔操作 ───\n\n/**\n * BREP 布尔并集:使用 OCCT fuse(BRepAlgoAPI_Fuse)。\n *\n * @param kernel OCCT 内核\n * @param a 实体 A\n * @param b 实体 B\n * @returns 融合后的实体\n */\nexport function fuseBrep(\n kernel: BrepEngineApi,\n a: BrepHandle,\n b: BrepHandle,\n): BrepHandle {\n return kernel.fuse(a, b)\n}\n\n/**\n * BREP 布尔差集:使用 OCCT cut(BRepAlgoAPI_Cut)。\n *\n * @param kernel OCCT 内核\n * @param a 基体\n * @param b 工具(从基体中减去)\n * @returns 切割后的实体\n */\nexport function cutBrep(\n kernel: BrepEngineApi,\n a: BrepHandle,\n b: BrepHandle,\n): BrepHandle {\n return kernel.cut(a, b)\n}\n\n/**\n * BREP 布尔交集:使用 OCCT common(BRepAlgoAPI_Common)。\n *\n * @param kernel OCCT 内核\n * @param a 实体 A\n * @param b 实体 B\n * @returns 交集实体\n */\nexport function commonBrep(\n kernel: BrepEngineApi,\n a: BrepHandle,\n b: BrepHandle,\n): BrepHandle {\n return kernel.common(a, b)\n}\n\n// ─── 钻孔操作 ───\n\n/** drillBrep 的参数 */\nexport interface DrillBrepParams {\n /** 孔直径 */\n diameter: number\n /** 孔深度(0 = 通孔) */\n depth: number\n /** 孔位置(世界空间) */\n position: Vec3\n /** 钻孔方向(世界空间,指向材料内部) */\n direction: Vec3\n /** 面法向(世界空间) */\n faceNormal: Vec3\n /** 孔类型 */\n holeType?: 'simple' | 'screw'\n}\n\n/**\n * BREP 钻孔:创建圆柱工具实体并用 OCCT cut 减去。\n *\n * 仅支持圆柱孔(holeType='simple')。\n * 螺丝孔(holeType='screw')由调用方判断为 mesh-only,触发 BREP 链断裂。\n *\n * 通孔(depth=0):创建一个足够长的圆柱体穿透整个零件。\n * 盲孔(depth>0):创建指定深度的圆柱体。\n *\n * @param kernel OCCT 内核\n * @param solid 目标实体\n * @param params 钻孔参数\n * @returns 钻孔后的实体\n */\n/** 钻孔几何参数(由 `DrillBrepParams` 推导;roleTable 路径与 `drillBrep` 共用同一份几何,避免重复计算)。 */\nexport interface DrillGeometry {\n readonly radius: number\n readonly holeHeight: number\n readonly holeCenter: THREE.Vector3\n readonly direction: THREE.Vector3\n}\n\n/** 从 `DrillBrepParams` 推导钻孔几何(孔中心/高度/轴向)。供 `drillBrep` 与 role-table 路径共用。\n * @param kernel - BREP 引擎接口\n * @param solid - 待钻孔实体(用于 bbox 推导通孔高度)\n * @param params - 钻孔参数(直径/深度/位置/方向/面法向)\n * @returns 钻孔几何(半径/高度/中心/轴向)\n */\nexport function computeDrillGeometry(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n params: DrillBrepParams,\n): DrillGeometry {\n const radius = params.diameter / 2\n const direction = new THREE.Vector3(...params.direction).normalize()\n // 确保方向指向材料内部\n const faceNormal = new THREE.Vector3(...params.faceNormal)\n if (direction.dot(faceNormal) > 0) {\n direction.negate()\n }\n\n // 计算孔的高度和中心\n const bbox = getSolidBoundingBox(kernel, solid)\n const bboxSize = new THREE.Vector3(\n bbox.max[0] - bbox.min[0],\n bbox.max[1] - bbox.min[1],\n bbox.max[2] - bbox.min[2],\n )\n const bboxMax = Math.max(bboxSize.x, bboxSize.y, bboxSize.z)\n\n let holeHeight: number\n let holeCenter: THREE.Vector3\n const pos = new THREE.Vector3(...params.position)\n\n // 通孔:depth <= 0(契约:depth<=0 表示通孔,与 mesh 路径 `depth>0 ? 'blind':'through'` 一致)。\n // ⚠️ 只判 `=== 0` 会让 depth<0 落入盲孔分支 → safeDepth=0 → 零高圆柱 → OCCT transform 崩溃。\n if (params.depth <= 0) {\n const d = direction.clone().normalize()\n const bbMin = new THREE.Vector3(bbox.min[0], bbox.min[1], bbox.min[2])\n const bbMax = new THREE.Vector3(bbox.max[0], bbox.max[1], bbox.max[2])\n\n let tNear = -Infinity\n let tFar = Infinity\n const axes: Array<[number, number, number, number]> = [\n [0, d.x, bbMin.x, bbMax.x],\n [1, d.y, bbMin.y, bbMax.y],\n [2, d.z, bbMin.z, bbMax.z],\n ]\n const pArr = [pos.x, pos.y, pos.z]\n for (const [axis, di, lo, hi] of axes) {\n const pi = pArr[axis]\n if (Math.abs(di) > 1e-12) {\n const t1 = (lo - pi) / di\n const t2 = (hi - pi) / di\n tNear = Math.max(tNear, Math.min(t1, t2))\n tFar = Math.min(tFar, Math.max(t1, t2))\n } else if (pi < lo || pi > hi) {\n // 与 slab 平行且在外部 — 无交点(与 mesh 行为一致:几乎不钻孔)\n tNear = 0\n tFar = 0\n }\n }\n if (!isFinite(tNear) || !isFinite(tFar) || tFar < tNear) {\n // 不穿过 bbox:与 mesh 一致,只留 0.2mm 微小孔\n holeHeight = 0.2\n holeCenter = pos.clone()\n } else {\n holeHeight = tFar - tNear + 0.2\n holeCenter = pos.clone().add(direction.clone().normalize().multiplyScalar((tNear + tFar) / 2))\n }\n } else {\n // 盲孔:深度钳制到 bboxMax(与 mesh cad-core/drill.ts 一致)\n const safeDepth = Math.max(0, Math.min(params.depth, bboxMax))\n holeHeight = safeDepth\n holeCenter = pos.clone().add(direction.clone().normalize().multiplyScalar(safeDepth / 2))\n }\n\n return { radius, holeHeight, holeCenter, direction }\n}\n\n/** 由钻孔几何构造刀具实体(圆柱,旋转 + 平移到孔位)。调用方负责 release。\n * @param kernel - BREP 引擎接口\n * @param geom - 钻孔几何(半径/高度/中心/轴向)\n * @returns 刀具实体(BrepHandle,调用方负责 release)\n */\nexport function buildDrillToolSolid(kernel: BrepEngineApi, geom: DrillGeometry): BrepHandle {\n const cylinder = kernel.makeCylinder(geom.radius, geom.holeHeight)\n\n // 计算从 Z 轴到 direction 的旋转\n const zAxis = new THREE.Vector3(0, 0, 1)\n const quat = new THREE.Quaternion().setFromUnitVectors(zAxis, geom.direction)\n const rotMatrix = new THREE.Matrix4().makeRotationFromQuaternion(quat)\n\n // 平移矩阵:到孔中心,并减去 height/2(因为圆柱从 Z=0 开始)\n const transMatrix = new THREE.Matrix4().makeTranslation(\n geom.holeCenter.x,\n geom.holeCenter.y,\n geom.holeCenter.z,\n )\n // 组合:先旋转,再平移\n const finalMatrix = new THREE.Matrix4().multiplyMatrices(transMatrix, rotMatrix)\n // 还需要补偿圆柱的起始位置(从 Z=0 开始 → 需要先下移 height/2)\n const offsetMatrix = new THREE.Matrix4().makeTranslation(0, 0, -geom.holeHeight / 2)\n const fullMatrix = new THREE.Matrix4().multiplyMatrices(finalMatrix, offsetMatrix)\n\n const toolSolid = kernel.transform(cylinder, matrixToArray(fullMatrix))\n kernel.release(cylinder)\n return toolSolid\n}\n\n/** 在实体上钻一个孔:由参数推导几何、构造刀具实体并做布尔差。\n * @param kernel - BREP 引擎接口\n * @param solid - 待钻孔实体\n * @param params - 钻孔参数(直径/深度/位置/方向/面法向)\n * @returns 钻孔后的实体(BrepHandle)\n */\nexport function drillBrep(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n params: DrillBrepParams,\n): BrepHandle {\n const geom = computeDrillGeometry(kernel, solid, params)\n const toolSolid = buildDrillToolSolid(kernel, geom)\n try {\n const result = kernel.cut(solid, toolSolid)\n kernel.release(toolSolid)\n return result\n } catch (err) {\n kernel.release(toolSolid)\n throw new Error(`[drillBrep] OCCT cut failed: ${err instanceof Error ? err.message : String(err)}`, { cause: err })\n }\n}\n\n// ─── 分割操作 ───\n\n/** splitBrep 的参数 */\nexport interface SplitBrepParams {\n /** 切割平面法线 */\n normal: Vec3\n /**\n * 切割平面位置:世界系平面方程 d 值(n·x = planeDistance)。\n * 与 planeCenter 二选一必填;都缺省时抛错,不隐式回退。\n */\n planeDistance?: number\n /**\n * 切割平面位置:世界坐标点(平面中心)。\n * 与 planeDistance 二选一必填;都缺省时抛错,不隐式回退。\n */\n planeCenter?: Vec3\n}\n\n/** splitBrep 的结果 */\nexport interface SplitBrepResult {\n /** 法线正方向的半部分 */\n front: BrepHandle\n /** 法线负方向的半部分 */\n back: BrepHandle\n}\n\n/**\n * BREP 平面分割:使用 OCCT cut + common 实现平面分割。\n *\n * 仅支持平面分割(cutMode='plane')。\n * 燕尾/定位销/直榫等复杂分割由 joinery-brep.ts 处理。\n *\n * 实现方式:\n * 1. 创建一个大的半空间盒子(法线正方向一侧)\n * 2. common(solid, box) → 法线正方向的半部分\n * 3. cut(solid, box) → 法线负方向的半部分\n *\n * @param kernel OCCT 内核\n * @param solid 目标实体\n * @param params 分割参数\n * @returns 两个半部分\n */\nexport function splitBrep(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n params: SplitBrepParams,\n): SplitBrepResult {\n const bbox = getSolidBoundingBox(kernel, solid)\n const bboxSize = new THREE.Vector3(\n bbox.max[0] - bbox.min[0],\n bbox.max[1] - bbox.min[1],\n bbox.max[2] - bbox.min[2],\n )\n const bboxMax = Math.max(bboxSize.x, bboxSize.y, bboxSize.z)\n\n // 创建一个大的盒子代表法线正方向的半空间\n const normal = new THREE.Vector3(...params.normal).normalize()\n const halfSize = bboxMax * 3 // 足够大\n\n // 先在局部坐标系(Z 轴 = 法线方向)创建盒子\n // 然后旋转到世界坐标系\n const zAxis = new THREE.Vector3(0, 0, 1)\n const quat = new THREE.Quaternion().setFromUnitVectors(zAxis, normal)\n const rotMatrix = new THREE.Matrix4().makeRotationFromQuaternion(quat)\n\n // 在局部坐标系中,盒子从 Z=0(切割平面)延伸到 Z=halfSize\n const localBox = kernel.makeBoxFromCorners(\n { x: -halfSize, y: -halfSize, z: 0 },\n { x: halfSize, y: halfSize, z: halfSize },\n )\n\n // 计算切割平面的世界坐标原点(planeCenter / planeDistance 二选一必填,\n // 都缺省直接报错,不隐式回退 bbox 中心)\n const planeOrigin = resolvePlaneOrigin(normal, params.planeCenter, params.planeDistance)\n\n const transMatrix = new THREE.Matrix4().makeTranslation(\n planeOrigin.x,\n planeOrigin.y,\n planeOrigin.z,\n )\n const finalMatrix = new THREE.Matrix4().multiplyMatrices(transMatrix, rotMatrix)\n\n const halfSpaceBox = kernel.transform(localBox, matrixToArray(finalMatrix))\n kernel.release(localBox)\n\n try {\n // P2(2026-10-06):规避 occt-wasm 在 Chrome worker 下 common 对\"平面退化 BOP\"\n // 挂死(common(solid, 半边盒) 不稳定;cut 稳定——drill 打孔 cut 在 worker 正常)。\n // 差集对偶:back(负侧)= solid - 正盒;front(正侧)= solid - 负盒。\n // 数学等价于 common/cut(盒覆盖 solid 全尺寸,边界同为切割平面),node 探针验证\n // 三角化结果与原实现一致。common 保留在 node/非 worker 环境的回退不可行——\n // 静态行为应一致,故统一走两 cut。\n const back = kernel.cut(solid, halfSpaceBox)\n // 负盒:local 系 z ∈ [-halfSize, 0],同 finalMatrix(平面沿 -normal 方向扩展)\n const localBoxNeg = kernel.makeBoxFromCorners(\n { x: -halfSize, y: -halfSize, z: -halfSize },\n { x: halfSize, y: halfSize, z: 0 },\n )\n const negBox = kernel.transform(localBoxNeg, matrixToArray(finalMatrix))\n kernel.release(localBoxNeg)\n const front = kernel.cut(solid, negBox)\n kernel.release(halfSpaceBox)\n kernel.release(negBox)\n return { front, back }\n } catch (err) {\n kernel.release(halfSpaceBox)\n throw new Error(`[splitBrep] OCCT split failed: ${err instanceof Error ? err.message : String(err)}`, { cause: err })\n }\n}\n\n// ─── 拉伸操作 ───\n\n/** extrudeBrep 的参数 */\nexport interface ExtrudeBrepParams {\n /** 拉伸法线方向 */\n normal: Vec3\n /**\n * 切割平面位置:世界系平面方程 d 值(n·x = planeDistance)。\n * 与 planeCenter 二选一必填;都缺省时抛错,不隐式回退。\n */\n planeDistance?: number\n /**\n * 切割平面位置:世界坐标点(平面中心)。\n * 与 planeDistance 二选一必填;都缺省时抛错,不隐式回退。\n */\n planeCenter?: Vec3\n /** 拉伸长度 */\n length: number\n /** 拉伸模式 */\n mode?: 'centered' | 'forward' | 'backward'\n}\n\n/** 从 planeCenter / planeDistance 收敛出切割平面上的一个点(planeOrigin)。 */\nfunction resolvePlaneOrigin(\n normal: THREE.Vector3,\n planeCenter?: Vec3,\n planeDistance?: number,\n): THREE.Vector3 {\n if (planeCenter !== undefined) {\n return new THREE.Vector3(...planeCenter)\n }\n if (planeDistance !== undefined) {\n // 平面方程 n·x = d 上的点:取法线上距原点 d 处(n 为单位向量)\n return normal.clone().multiplyScalar(planeDistance)\n }\n throw new Error(\n '[extrudeBrep] plane location missing: provide planeCenter or planeDistance (implicit bbox-center fallback is forbidden)',\n )\n}\n\n/**\n * BREP 拉伸:在切割平面处将实体切开,中段沿法线拉伸 length,三段 fuse。\n *\n * 实现方式:\n * 1. 用平面分割得到 front + back\n * 2. 获取截面线(section edges → wire → face)\n * 3. 沿法线拉伸截面 face → 中段实体\n * 4. fuse(front, extruded, back)\n *\n * 如果截面无法构建 face(开放线框等),抛出错误由调用方处理为链断裂。\n *\n * @param kernel OCCT 内核\n * @param solid 目标实体\n * @param params 拉伸参数\n * @returns 拉伸后的实体\n */\nexport function extrudeBrep(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n params: ExtrudeBrepParams,\n): BrepHandle {\n const mode = params.mode ?? 'centered'\n const normal = new THREE.Vector3(...params.normal).normalize()\n const length = params.length\n\n // 1. 确定切割平面位置(世界系,来源静态:planeCenter 或 planeDistance,\n // 都缺省直接报错,不隐式回退 bbox 中心)\n const planeOrigin = resolvePlaneOrigin(normal, params.planeCenter, params.planeDistance)\n\n // 2. 分割实体\n const splitResult = splitBrep(kernel, solid, {\n normal: [normal.x, normal.y, normal.z],\n planeCenter: [planeOrigin.x, planeOrigin.y, planeOrigin.z],\n })\n\n // 3. 获取截面\n // 使用 section 获取切割平面与实体的交线\n const bbox = getSolidBoundingBox(kernel, solid)\n const zAxis = new THREE.Vector3(0, 0, 1)\n const quat = new THREE.Quaternion().setFromUnitVectors(zAxis, normal)\n const rotMatrix = new THREE.Matrix4().makeRotationFromQuaternion(quat)\n const transMatrix = new THREE.Matrix4().makeTranslation(\n planeOrigin.x,\n planeOrigin.y,\n planeOrigin.z,\n )\n const planeMatrix = new THREE.Matrix4().multiplyMatrices(transMatrix, rotMatrix)\n\n // 创建一个大的矩形面作为切割平面\n const bboxSize = new THREE.Vector3(\n bbox.max[0] - bbox.min[0],\n bbox.max[1] - bbox.min[1],\n bbox.max[2] - bbox.min[2],\n )\n const planeSize = Math.max(bboxSize.x, bboxSize.y, bboxSize.z) * 3\n const planeRect = kernel.makeRectangle(planeSize, planeSize)\n // makeRectangle creates a face from [0,0] to [width,height] — center it at origin first\n const centerMatrix = new THREE.Matrix4().makeTranslation(-planeSize / 2, -planeSize / 2, 0)\n const centeredRect = kernel.transform(planeRect, matrixToArray(centerMatrix))\n kernel.release(planeRect)\n const planeFace = kernel.transform(centeredRect, matrixToArray(planeMatrix))\n kernel.release(centeredRect)\n\n // 获取截面边(occt-only 平台面,D3)。BrepHandle(branded number)与\n // occt-wasm ShapeHandle 运行时同构,品牌转换只发生在平台边界;转回 BrepHandle\n // 后继续用 L1 面(getSubShapes/makeWire/extrude)。\n const sectionEdges = getOcctKernel().section(\n solid as unknown as ShapeHandle,\n planeFace as unknown as ShapeHandle,\n ) as unknown as BrepHandle\n kernel.release(planeFace)\n\n // 4. 构建截面 wire → face → 拉伸\n let extrudedSolid: BrepHandle\n try {\n // 尝试从截面边构建 wire\n const subShapes = kernel.getSubShapes(sectionEdges, 'edge')\n if (subShapes.length === 0) {\n kernel.release(sectionEdges)\n kernel.release(splitResult.front)\n kernel.release(splitResult.back)\n throw new Error('no section edges from plane intersection')\n }\n\n const wire = kernel.makeWire(subShapes)\n const face = kernel.makeFace(wire)\n kernel.release(wire)\n\n // 计算拉伸向量\n let extrudeVec: THREE.Vector3\n if (mode === 'centered') {\n extrudeVec = normal.clone().multiplyScalar(length)\n } else if (mode === 'forward') {\n extrudeVec = normal.clone().multiplyScalar(length)\n } else {\n // backward\n extrudeVec = normal.clone().multiplyScalar(-length)\n }\n\n extrudedSolid = kernel.extrude(face, extrudeVec.x, extrudeVec.y, extrudeVec.z)\n kernel.release(face)\n kernel.release(sectionEdges)\n } catch {\n // 截面构建失败 — 释放资源并抛出\n if (sectionEdges) kernel.release(sectionEdges)\n kernel.release(splitResult.front)\n kernel.release(splitResult.back)\n throw new Error('[extrudeBrep] failed to build extrusion from section')\n }\n\n // 5. 中段落位补偿(修复 centered 模式中空 / 开壳)\n //\n // 切割平面位于 planeOrigin,splitBrep 产出的 front/back 其切面恰好在 planeOrigin。\n // - forward:front 偏移 +L、back 偏移 0 → 中段(从 planeOrigin 沿 +normal 拉伸 L,\n // 底面在 planeOrigin)的顶面(planeOrigin+L)正好接 front 底面,无需位移。\n // - backward:front 偏移 0、back 偏移 -L → 中段(沿 -normal 拉伸 L,顶在 planeOrigin)\n // 底面(planeOrigin-L)正好接 back 顶面,无需位移。\n // - centered:front 偏移 +L/2、back 偏移 -L/2,二者之间让出 L 的缝隙;但中段默认\n // 从 planeOrigin 沿 +normal 拉伸 L,落在 planeOrigin→planeOrigin+L,与 back 顶面\n // (planeOrigin-L/2) 和 front 底面 (planeOrigin+L/2) 各错开 L/2,形成两道 L/2 的缝隙\n // → fuse 后实体开壳 / 中空。必须对中段额外沿 -normal 位移 L/2,使其落在\n // planeOrigin-L/2 → planeOrigin+L/2,正好填补缝隙。\n const middleOffset = mode === 'centered' ? -length / 2 : 0\n if (middleOffset !== 0) {\n const translatedMiddle = kernel.translate(\n extrudedSolid,\n normal.x * middleOffset,\n normal.y * middleOffset,\n normal.z * middleOffset,\n )\n kernel.release(extrudedSolid)\n extrudedSolid = translatedMiddle\n }\n\n // 6. 计算各段位置\n let frontOffset: number\n let backOffset: number\n if (mode === 'centered') {\n frontOffset = length / 2\n backOffset = -length / 2\n } else if (mode === 'forward') {\n frontOffset = length\n backOffset = 0\n } else {\n frontOffset = 0\n backOffset = -length\n }\n\n // 平移 front 和 back\n const frontTranslated = kernel.translate(\n splitResult.front,\n normal.x * frontOffset,\n normal.y * frontOffset,\n normal.z * frontOffset,\n )\n kernel.release(splitResult.front)\n\n const backTranslated = kernel.translate(\n splitResult.back,\n normal.x * backOffset,\n normal.y * backOffset,\n normal.z * backOffset,\n )\n kernel.release(splitResult.back)\n\n // 7. Fuse 三段\n let result: BrepHandle\n try {\n const fused1 = kernel.fuse(frontTranslated, extrudedSolid)\n kernel.release(frontTranslated)\n kernel.release(extrudedSolid)\n result = kernel.fuse(fused1, backTranslated)\n kernel.release(fused1)\n kernel.release(backTranslated)\n } catch (err) {\n kernel.release(frontTranslated)\n kernel.release(extrudedSolid)\n kernel.release(backTranslated)\n throw new Error(`[extrudeBrep] fuse failed: ${err instanceof Error ? err.message : String(err)}`, { cause: err })\n }\n\n return result\n}\n\n// ─── STEP/BREP 导入操作 ───\n\n/**\n * 单零件导入的 STEP 颜色挂载(P2,方案 §5 STEP 行)。\n *\n * `getSolidColorsOrdered`(stepColorParser)把 STYLED_ITEM → COLOUR_RGB 引用链\n * 解析为按 MANIFOLD_SOLID_BREP 文件序的颜色数组;该序与 OCCT\n * `getSubShapes(compound,'solid')` 一致(stepColorParser 注释),因此取 `[0]`\n * 即「loadBrep 单零件收敛取第一个 solid」的颜色,语义对齐。\n *\n * 宽容兼容外部数据:BREP(CASCADE Topology 文本)无颜色概念直接跳过;STEP\n * 文本无 `STYLED_ITEM` 早退(零额外开销);引用链缺失/未知预定义色返回 null,\n * 一律不挂外观、不抛错(AGENTS.md 全局铁律:不得以内部严格性拒收正常文件)。\n */\nfunction applyFirstStepColor(shape: Shape, buffer: ArrayBuffer): Shape {\n const head = new TextDecoder('utf-8').decode(buffer.slice(0, 64))\n if (head.includes('CASCADE Topology')) return shape\n const text = new TextDecoder('utf-8').decode(buffer)\n if (!text.includes('STYLED_ITEM')) return shape\n const c0 = getSolidColorsOrdered(text)[0]\n if (c0) shape.appearance = { color: [c0[0], c0[1], c0[2]] }\n return shape\n}\n\n/**\n * BREP-native STEP 导入:使用 OCCT kernel.importStep 导入 STEP 文件为精确实体。\n *\n * 与 mesh 路径(cad-core/io.ts importFile → loadFormat → meshes)对照:\n * - mesh 路径:STEP → 三角网格,丢弃 OCCT BrepHandle\n * - BREP 路径:STEP → kernel.importStep → 保留 BrepHandle,同时三角化为显示 mesh\n *\n * 导入的 solid 存入 brepChain.solidCache,后续操作(drillBrep/splitBrep 等)\n * 将其作为\"基座特征\"进行精确运算。\n *\n * **设计决策(I5 不准合并;fileid-container-and-nesting §5.4 单零件收敛)**:\n * - 单 solid STEP:`importStep` 返回 Compound 包裹(顶层是 `TopoDS_Compound`,\n * 内含 1 个 `TopoDS_Solid`)。此处**解包**返回真实 Solid(`solids[0]`),\n * 下游 `isValid`/编辑/导出都针对真实实体。\n * - 多 solid STEP:**只支持单零件**(§5.4)——降级取**第一个** solid 返回(单一\n * 非复合 Shape),并回传 `multiSolidCount`(≥2 表示本文件被降级取件,由 load op\n * 登记\"多零件降级\" pending,宿主据此弹警告 §5.4:166)。取件点唯一,逐 part 拆\n * 分只发生在 load op 内部,宿主不再发多条 load。\n * - **不调用 `kernel.isValid`**:`importStep` 对单 solid STEP 也返回 Compound 包裹,\n * `isValid(compound)` 返回 false(Compound 不是 Solid),这会误杀合法 STEP。\n * 合法性判据改为 `getSubShapes(top, 'solid').length >= 1`(含 ≥1 个 solid 即合法),\n * 与装配路径 `walkLabel` 一致。\n *\n * @param kernel the initialized OCCT kernel.\n * @param buffer the raw STEP file bytes (a text-encoded ArrayBuffer).\n * @param brepChain optional - caches the tessellated BrepMeshResult when provided.\n * @param stmtId optional - the part this solid belongs to, paired with brepChain as the cache key.\n * @param opts optional - `allowNonSolid` relaxes the solid requirement so\n * a frozen wireframe/surface asset (a Draft wire, a face, a\n * shell) can be imported as addressable geometry. Callers\n * must decide this STATICALLY from the asset itself (see\n * `brepTextHasSolid`), never by retrying after a failure.\n * @returns { solid: the OCCT solid handle, shape: the display tessellated mesh,\n * multiSolidCount: total solids declared when > 1 (single-part take-first) }\n */\nexport function loadBrep(\n kernel: BrepEngineApi,\n buffer: ArrayBuffer,\n brepChain?: BrepChainState,\n stmtId?: PartName,\n opts?: { allowNonSolid?: boolean },\n): { solid: BrepHandle; shape: Shape; multiSolidCount?: number } {\n // BREP 文件(CASCADE Topology 文本格式)必须用 kernel.fromBREP 解析;\n // 误用 STEP 解析器(importStep)读 BREP 会抛 \"failed to read STEP data\"。\n const decoder = new TextDecoder('utf-8')\n const head = decoder.decode(buffer.slice(0, 64))\n const top = head.includes('CASCADE Topology')\n ? kernel.fromBREP(decoder.decode(buffer))\n : kernel.importStep(buffer)\n\n // 校验:含至少一个 solid 子形即合法(不调用 isValid,见上文设计决策)\n const solids = kernel.getSubShapes(top, 'solid')\n if (solids.length < 1) {\n // 非实体导入(allowNonSolid):冻结资产是 wireframe/surface(Draft 线/面/壳)\n // 时仍可作为可寻址几何导入——顶点/边/线/面/壳都算有内容。此时返回 top 本身,\n // 它独立持有几何,不能释放。\n // 注意:这类 Shape 进不了布尔运算(OCCT fuse/cut 抛 \"boolean operation\n // failed\"),调用方必须自己保证它只流向变换/聚合。\n if (opts?.allowNonSolid && hasAnyTopology(kernel, top)) {\n const shape = solidToShape(kernel, top, undefined, brepChain, stmtId)\n return { solid: top, shape: applyFirstStepColor(shape, buffer) }\n }\n kernel.release(top)\n throw new Error(\n `[loadBrep] imported shape contains no solid sub-shapes ` +\n `(solidCount=0) — wireframe/surface/invalid shapes are not supported ` +\n `unless allowNonSolid is set`\n )\n }\n\n // 单 solid:解包返回真实 Solid(非 Compound 包裹)\n if (solids.length === 1) {\n const realSolid = solids[0]\n kernel.release(top) // 释放 Compound 包裹,realSolid 独立持有\n const shape = solidToShape(kernel, realSolid, undefined, brepChain, stmtId)\n return { solid: realSolid, shape: applyFirstStepColor(shape, buffer) }\n }\n\n // 多 solid(§5.4 单零件收敛):只支持单零件 —— 降级取**第一个** solid,\n // 返回单一非复合 Shape,并回传 multiSolidCount(≥2 表示本文件被降级取件,\n // 由 `cad.load` op 登记\"多零件降级\" pending,宿主据零件数弹警告 §5.4:166)。\n // 取件点唯一:多零件拆分只发生在 load op 内部,宿主不再逐 part 拆、不再发\n // 多条 load。`solids` 是 kernel.getSubShapes(top,'solid') 的内核枚举序;对同一\n // import 路径、同一 OCCT 版本,该序是确定性的,故\"第一个\"可复现(红线 7)。\n const first = solids[0]\n if (!first) {\n kernel.release(top)\n throw new Error(`[loadBrep] imported shape has 0 solid sub-shapes`)\n }\n // 释放其余多余子形句柄(first 独立持有几何,剩下的子是 top 的子引用)\n for (const s of solids.slice(1)) {\n try { kernel.release(s) } catch { /* already released */ }\n }\n kernel.release(top) // 释放 Compound 包裹,first 独立持有(同单 solid 模式)\n const shape = solidToShape(kernel, first, undefined, brepChain, stmtId)\n return { solid: first, shape: applyFirstStepColor(shape, buffer), multiSolidCount: solids.length }\n}\n\n/** Sub-shape kinds that make an imported shape \"addressable but not a solid\". */\nconst NON_SOLID_KINDS = ['vertex', 'edge', 'wire', 'face', 'shell'] as const\n\n/**\n * Does a freshly imported shape hold any sub-shape at all?\n *\n * Guards the `allowNonSolid` path: a file whose TShapes table is empty (or that\n * holds only a bare compound with nothing inside) is a broken asset, not a\n * wireframe one, and must still fail loudly.\n *\n * @param kernel - the initialized OCCT kernel.\n * @param top - the imported top-level shape handle.\n * @returns true when at least one non-solid sub-shape exists.\n */\nfunction hasAnyTopology(kernel: BrepEngineApi, top: BrepHandle): boolean {\n return NON_SOLID_KINDS.some((kind) => kernel.getSubShapes(top, kind).length > 0)\n}\n\n// ─── 多零件 STEP 装配导入(P0,方案 2026-10-06-step-3mf-multipart-import-plan.md §5.3)───\n\n/** 多零件 STEP 导入中的一个零件(几何 + solid 句柄 + 身份)。 */\nexport interface LoadBrepAssemblyPart {\n /** 零件序号(0 起,DFS 声明序)。 */\n index: number\n /** 零件名(XCAF label;无则回退 `imported:<index>`)。 */\n name: string\n /** 显示色 sRGB 0..1,无则 null。 */\n color: [number, number, number] | null\n /** 三角化显示 mesh。 */\n shape: Shape\n /** OCCT solid 句柄(已烘 location;生命周期归 brepChain,调用方经 fromBrep 绑定)。 */\n solid: BrepHandle\n}\n\n/**\n * BREP-native 多零件 STEP 导入(XCAF 装配树 → 逐零件 Shape + 装配层级)。\n *\n * 与 `loadBrep`(单零件收敛,§5.4 旧行为)对照:loadBrepAssembly 走\n * `importAssemblyFromStep`(XCAF),返回**全部**叶零件(DFS 声明序)与装配树。\n *\n * - 装配树叶子 = 零件;合成节点(syntheticGroup:单一产品含多 MANIFOLD_SOLID_BREP)\n * 如实表达为中间节点;\n * - 无装配结构的单叶文件 → 1 个零件、无 assembly(行为与现状单零件一致);\n * - 句柄互通(T0):`importAssemblyFromStep` 内部用 initOcctWasm() 全局单例内核,\n * 与注入的 `BrepEngineApi`(createOcctPrimitives 包装同一单例)句柄数值互通——\n * 探针见 test/brep/load-brep-assembly.test.ts;\n * - 释放:装配节点句柄已由 walkLabel 释放,叶句柄随返回 parts 交给调用方\n * (fromBrep 绑定后归 brepChain 管理,不在此释放)。\n *\n * @param kernel - the initialized OCCT kernel (L1 contract face).\n * @param buffer - the raw STEP file bytes (text-encoded ArrayBuffer; stpz\n * unzipping is the caller's job — faijs never unzips implicitly).\n * @returns 全部零件 + 装配层级(多叶时)+ 叶数(>1 时)。\n */\nexport async function loadBrepAssembly(\n kernel: BrepEngineApi,\n buffer: ArrayBuffer,\n): Promise<{ parts: LoadBrepAssemblyPart[]; assembly?: ImportAssemblyNode; multiSolidCount?: number }> {\n const nodes = await importAssemblyFromStep(buffer)\n const leaves = collectLeafParts(nodes)\n\n // DFS 声明序:leaf 序 = parts 序 = ImportModel.parts.index。\n // 实体校验(与 load op「要求导入物含实体」契约一致):leaf 必须持有实体\n // (自身是 solid,或 label 内含 solid);空 label / wireframe 零件跳过,\n // 全部跳过则报错(不静默回退)。parts 下标保持连续(0..N-1)。\n const leafIndex = new Map<AssemblyPartNode, number>()\n const parts: LoadBrepAssemblyPart[] = []\n for (const leaf of leaves) {\n if (!leaf.shapeHandle || !leafHasSolid(kernel, leaf.shapeHandle)) continue\n const idx = parts.length\n leafIndex.set(leaf, idx)\n const h = leaf.shapeHandle as unknown as BrepHandle\n parts.push({\n index: idx,\n name: leaf.name || `imported:${idx}`,\n color: leaf.color,\n shape: solidToShape(kernel, h),\n solid: h,\n })\n }\n\n // 无叶零件(空/异常/纯 wireframe 文件)→ 报错暴露(不静默回退)。\n if (parts.length === 0) {\n throw new Error('[loadBrepAssembly] imported STEP contains no solid leaf parts')\n }\n\n const assembly = toImportAssemblyNode(nodes, leafIndex)\n return {\n parts,\n ...(assembly ? { assembly } : {}),\n ...(parts.length > 1 ? { multiSolidCount: parts.length } : {}),\n }\n}\n\n/**\n * leaf 是否持有实体(loadBrepAssembly 实体校验):自身是 solid(syntheticGroup\n * 拆出的单个 solid 句柄),或 label compound 内含 solid。getSubShapes 的引用\n * 句柄须立即 release(walkLabel 只释放了它自己取的副本)。\n */\nfunction leafHasSolid(kernel: BrepEngineApi, h: ShapeHandle): boolean {\n const bh = h as unknown as BrepHandle\n if (kernel.isSolid(bh)) return true\n const solids = kernel.getSubShapes(bh, 'solid')\n const n = solids.length\n for (const s of solids) kernel.release(s)\n return n > 0\n}\n\n/**\n * XCAF 装配树 → ImportAssemblyNode(DFS 序与 parts 一致)。\n *\n * - 单根且根为叶(无装配结构)→ undefined(单零件路径,与现状一致);\n * - 单根装配 → 该根;\n * - 多根 → 合成虚拟根 `{ name: 'imported' }`(确定性结构名,非零件身份)。\n */\nfunction toImportAssemblyNode(\n nodes: AssemblyPartNode[],\n leafIndex: Map<AssemblyPartNode, number>,\n): ImportAssemblyNode | undefined {\n if (nodes.length === 0) return undefined\n const convert = (node: AssemblyPartNode): ImportAssemblyNode => {\n if (node.children.length === 0) {\n const idx = leafIndex.get(node)\n return { name: node.name, ...(idx !== undefined ? { partIndex: idx } : {}) }\n }\n return { name: node.name, children: node.children.map(convert) }\n }\n if (nodes.length === 1) {\n const root = convert(nodes[0])\n // 单根且根为叶(无装配结构)→ 不表达装配层级\n if (root.partIndex !== undefined) return undefined\n return root\n }\n return { name: 'imported', children: nodes.map(convert) }\n}\n\n// ─── 辅助函数 ───\n\n/**\n * Convert a THREE.Matrix4 into the 3x4 row-major array (12 doubles) the OCCT\n * transform expects.\n *\n * OCCT transform accepts [r00,r01,r02,tx, r10,r11,r12,ty, r20,r21,r22,tz].\n * @param matrix - the source matrix to convert.\n * @returns the 3x4 row-major array of 12 doubles.\n */\nexport function matrixToArray(matrix: THREE.Matrix4): number[] {\n const e = matrix.elements\n // THREE.Matrix4 是 column-major,OCCT 需要 row-major 3x4\n return [\n e[0], e[4], e[8], e[12],\n e[1], e[5], e[9], e[13],\n e[2], e[6], e[10], e[14],\n ]\n}\n"]}
1
+ {"version":3,"file":"brep-ops.js","sourceRoot":"","sources":["../../src/brep/brep-ops.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * 核心 BREP 操作 — 使用 OCCT 精确实体运算\n *\n * @platform occt — 本文件 import occt-kernel:`extrudeBrep` 用原生 `section`\n * (BRepAlgoAPI_Section,occt-only,L1 只有 sectionByPlane)构造截面 → 守卫①\n * 要求平台 import 自证身份。本文件是内部工具面(非 op 文件),文件级标注即满足\n * 守卫;调用方 op 若经本文件触达 occt-only 能力,须在 defineOp 声明 engines\n * (extrudeBrep 的 section 仅 occt 路径可达,brepkit 下由调用方引擎声明拦截)。\n *\n * See docs/api-contract.md §8 (dual-path geometry contract: BREP / Mesh).\n *\n * 与 mesh 路径(transform.ts / boolean/ / drill.ts / split.ts / extrude.ts)对照:\n * - mesh 路径:消费 Shape(三角网格),走 manifold-3d(mesh-CSG)\n * - BREP 路径:消费 BrepHandle(OCCT 实体句柄),走 OCCT 精确布尔/变换\n *\n * 所有函数都是纯函数(可 import occtWasmKernel,不读 store)。\n * 输入输出均为 OCCT BrepHandle,调用方负责句柄生命周期。\n *\n * 坐标系:Z-up、毫米,与 mesh 路径一致。\n */\n\nimport { Vec3 as Vec3C, Mat4, Euler, Quat } from '../math3d'\nimport type { BrepHandle, BrepMeshResult } from './engine/types'\nimport type { BrepEngineApi } from './engine/primitives'\nimport {\n getOcctKernel,\n importAssemblyFromStep,\n collectLeafParts,\n type ShapeHandle,\n type AssemblyPartNode,\n} from '../occt-kernel/occtKernel'\nimport { getSolidColorsOrdered } from '../occt-kernel/stepColorParser'\nimport type { Shape, Vec3 } from '../mesh/types'\nimport type { ImportAssemblyNode } from '../mesh/import-model'\nimport type { BrepChainState } from './brep-chain'\nimport type { PartName } from '../identity'\nimport { getSolidBoundingBox } from './brep-utils'\nimport { getTessellation, type TessellationDensity } from '../runtime-state'\n\n// ─── 通用工具 ───\n\n/**\n * 将 OCCT solid 三角化为 Shape(供显示用)。\n *\n * 如果传入 brepChain + stmtId,同时把完整 BrepMeshResult(含 faceGroups)缓存到\n * brepChain.meshShapeCache,供 buildBrepTopology 复用——确保拓扑 mesh 与显示 mesh\n * 完全一致(规则 1:拓扑数据生成所使用的 mesh,必须是当前用户看到的 mesh)。\n *\n * @param kernel the initialized OCCT kernel.\n * @param solid the CAD solid handle.\n * @param segments optional tessellation segment count (affects precision).\n * @param brepChain optional - caches the BrepMeshResult when provided.\n * @param partName optional - the part this solid belongs to, paired with brepChain as the cache key.\n * @param defaultDeflection optional - per-call deflection fallback when `segments` is absent\n * (wins over the global tessellation knob; explicit `segments` still wins over both).\n * @returns the tessellated Shape.\n */\nexport function solidToShape(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n segments?: number,\n brepChain?: BrepChainState,\n partName?: PartName,\n defaultDeflection?: TessellationDensity,\n): Shape {\n // Deflection precedence: explicit segments > per-call defaultDeflection > global\n // tessellation (host-tunable via createRuntime, proposal 2026-10-07).\n const fallback = defaultDeflection ?? getTessellation()\n const angularDeflection = segments\n ? (2 * Math.PI) / Math.max(3, segments)\n : fallback.angularDeflection\n const mesh: BrepMeshResult = kernel.meshShape(solid, {\n linearDeflection: fallback.linearDeflection,\n angularDeflection,\n })\n\n // 规则 1:缓存完整 BrepMeshResult(含 faceGroups),供 buildBrepTopology 复用\n if (brepChain?.meshShapeCache && partName) {\n brepChain.meshShapeCache.set(partName, mesh)\n }\n\n return {\n positions: new Float32Array(mesh.positions),\n indices: new Uint32Array(mesh.indices),\n }\n}\n\n// ─── 变换操作 ───\n\n/**\n * BREP 平移:使用 OCCT translate(精确,不损失几何精度)。\n *\n * @param kernel OCCT 内核\n * @param solid 输入实体\n * @param offset 平移量 [dx, dy, dz]\n * @returns 新实体(调用方负责释放输入实体)\n */\nexport function translateBrep(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n offset: Vec3,\n): BrepHandle {\n return kernel.translate(solid, offset[0], offset[1], offset[2])\n}\n\n/**\n * BREP 旋转:使用 OCCT transform(3x4 仿射矩阵)。\n *\n * 与 mesh 路径 rotate_euler(shape, angles, pivot?) 一致:\n * - angles 为 XYZ 欧拉角(角度制)\n * - pivot 为旋转中心(可选,默认原点)\n *\n * @param kernel OCCT 内核\n * @param solid 输入实体\n * @param angles XYZ 欧拉角(角度制)\n * @param pivot 旋转中心(可选)\n * @returns 新实体\n */\nexport function rotateBrep(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n angles: Vec3,\n pivot?: Vec3,\n): BrepHandle {\n const euler = new Euler(\n (angles[0] * Math.PI) / 180,\n (angles[1] * Math.PI) / 180,\n (angles[2] * Math.PI) / 180,\n )\n const matrix = new Mat4().makeRotationFromEuler(euler)\n if (pivot) {\n matrix.premultiply(new Mat4().makeTranslation(pivot[0], pivot[1], pivot[2]))\n matrix.multiply(new Mat4().makeTranslation(-pivot[0], -pivot[1], -pivot[2]))\n }\n return kernel.transform(solid, matrixToArray(matrix))\n}\n\n/**\n * 判定 3×4 行主序仿射矩阵的线性部分是否为**相似变换**(旋转/反射 × 等比缩放)——\n * 即 `gp_Trsf` 能精确承载、`kernel.transform`(BRepBuilderAPI_Transform)唯一\n * 正确处理的那一类。\n *\n * 判据必须用**相对**容差,不能像 2026-10-07 之前那样用绝对容差:\n * GOTCHA(2026-10-07,openscad example023 parity)——一个 60° 刚体旋转只要按\n * 7 位小数打印(`0.8660254`),行范数就是 `0.99999999645`(与 1 相差 3.6e-9)。\n * 绝对容差 1e-9 会判定 `|‖row2‖ − ‖row0‖| = 3.6e-9 > 1e-9` ⇒ 把这个**纯旋转**\n * 判成\"非相似\",从而错误地走进 `generalTransform`;而 occt 侧 `gp_GTrsf` 路径在\n * **已三角化**的形状上会重复计入被平移面的 TopLoc(顶盖 z 由 5 变 10,绕过在\n * `occt-kernel/occt-primitives.ts` 的 `generalTransform` 适配层,本层不感知)。\n * 相对容差 1e-6 覆盖 7 位小数打印精度,同时仍能区分真正的非等比缩放\n * (如 z×2.5 行范数相差 2.5 倍)。正交性同用 1e-6:7 位小数打印的旋转,行点积\n * 误差上界约 2e-7。\n *\n * @param m12 - 3×4 行主序矩阵(12 元素:`[r00,r01,r02,tx, r10,r11,r12,ty, r20,r21,r22,tz]`)。\n * @returns `true` 当且仅当线性部分可逆且为相似变换。\n */\nexport function isSimilarityAffine(m12: readonly number[]): boolean {\n const s0 = Math.hypot(m12[0]!, m12[1]!, m12[2]!)\n const s1 = Math.hypot(m12[4]!, m12[5]!, m12[6]!)\n const s2 = Math.hypot(m12[8]!, m12[9]!, m12[10]!)\n if (!(s0 > 1e-12) || !(s1 > 1e-12) || !(s2 > 1e-12)) return false\n const REL = 1e-6\n if (Math.abs(s1 - s0) > REL * s0 || Math.abs(s2 - s0) > REL * s0) return false\n const dot = (r: number, c: number): number =>\n m12[r * 4]! * m12[c * 4]! + m12[r * 4 + 1]! * m12[c * 4 + 1]! + m12[r * 4 + 2]! * m12[c * 4 + 2]!\n return (\n Math.abs(dot(0, 1)) <= REL * s0 * s1 &&\n Math.abs(dot(0, 2)) <= REL * s0 * s2 &&\n Math.abs(dot(1, 2)) <= REL * s1 * s2\n )\n}\n\n/**\n * 施加 3×4 行主序仿射矩阵,按矩阵类别选**唯一正确**的 OCCT 路径。\n *\n * 两条路径的差异是**正确性**而不只是性能:\n * - 相似(旋转/反射 × 等比缩放)→ `kernel.transform`(BRepBuilderAPI_Transform)。\n * - 其余(非等比缩放、错切)→ `kernel.generalTransform`(gp_GTrsf)。\n *\n * GOTCHA(2026-10-07):occt 的 `generalTransform` 在**已经三角化过**的形状上会\n * 重复计入被平移面的 TopLoc(精确 z∈[0,5],网格顶盖却落在 z=10;非等比 z×2.5 时\n * 12.5 vs 17.5)。该缺陷是 **occt 专属**(brepkit 的 GTrsf 路径干净),因此绕过\n * **不在本层**——本层是引擎中立分派,让每个引擎都为 occt 的毛病多付一次句柄分配\n * 是错的(还会扰动 brepkit 的 `cut` bbox,见 multi-engine-op-parity)。\n * 绕过落在 occt 适配层:`occt-kernel/occt-primitives.ts` 的 `generalTransform`\n * 先 `copy` 再变换。`kernel.transform` 无此问题,故相似矩阵不付这份深拷贝成本。\n *\n * 反向陷阱:把非相似矩阵交给 `kernel.transform` 是**静默错误**——OCCT 会按\n * `det^(1/3)` 取等比因子近似(实测 z×2.5 被当成 1.357 倍等比缩放)。所以分类\n * 判据既不能过严(把刚体旋转推给 GTrsf),也不能过宽(把非等比缩放塞给 Trsf)。\n *\n * @param kernel - L1 引擎句柄。\n * @param solid - 输入实体(不被消费、不被释放;调用方保留其所有权)。\n * @param m12 - 3×4 行主序矩阵(12 元素)。\n * @returns 变换后的新实体(调用方负责释放)。\n */\nexport function applyAffineBrep(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n m12: readonly number[],\n): BrepHandle {\n if (isSimilarityAffine(m12)) return kernel.transform(solid, m12 as number[])\n return kernel.generalTransform(solid, m12 as number[])\n}\n\n/**\n * BREP 缩放:使用 OCCT transform(3x4 仿射矩阵)。\n *\n * 与 mesh 路径 scale(P6 §4.6)一致:\n * - factor 为 number(均匀缩放)或 Vec3 [sx, sy, sz](非均匀)\n * - center 为缩放不动点(p' = center + S·(p − center));缺省 [0,0,0](原点),\n * 与早期 brepjs `scale(shape, factor, { center? })` 的默认一致。\n *\n * 路径分派交给 {@link applyAffineBrep}:等比走 `transform`,非等比走\n * `generalTransform`(gp_Trsf 表达不了非等比)。注意判据是**数值**相似性而非\n * 因子逐分量相等——`[1, 1, 1+1e-9]` 这种数值上就是等比,归 `transform` 一侧。\n *\n * @param kernel OCCT 内核\n * @param solid 输入实体\n * @param factor 缩放因子\n * @param center 缩放不动点(可选,默认原点)\n * @returns 新实体\n */\nexport function scaleBrep(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n factor: number | Vec3,\n center?: Vec3,\n): BrepHandle {\n const f = typeof factor === 'number' ? [factor, factor, factor] : factor\n const scale = new Mat4().makeScale(f[0], f[1], f[2])\n // T(c)·S·T(−c):不动点为 center;缺省时退化为原点缩放(现状行为)。\n const matrix = center\n ? new Mat4()\n .makeTranslation(center[0], center[1], center[2])\n .multiply(scale)\n .multiply(new Mat4().makeTranslation(-center[0], -center[1], -center[2]))\n : scale\n return applyAffineBrep(kernel, solid, matrixToArray(matrix))\n}\n\n// ─── 装配变换 ───\n\n/**\n * BREP 版 applyTransform:与 mesh ops/assemble.ts 的 applyTransform 同语义(绕 pivot 旋转 + 平移)。\n *\n * 数学公式:p' = R·(p − pivot) + pivot + translation\n * 等价 Matrix4 = T(pivot) · R · T(−pivot) · T(translation)\n *\n * 用四元数而非欧拉角,是因为装配变换源是 api/assembly 的四元数;\n * 转欧拉会引入顺序/万向锁歧义。与 mesh applyTransform 顶点公式完全等价。\n *\n * @param kernel OCCT 内核\n * @param solid 输入实体\n * @param quaternion 旋转四元数 [x, y, z, w]\n * @param pivot 旋转中心\n * @param translation 平移量\n * @returns 新实体(调用方负责释放输入实体)\n */\nexport function applyTransformBrep(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n quaternion: [number, number, number, number],\n pivot: [number, number, number],\n translation: [number, number, number],\n): BrepHandle {\n const rotation = new Mat4().makeRotationFromQuaternion(\n new Quat(quaternion[0], quaternion[1], quaternion[2], quaternion[3]),\n )\n // T(translation) · T(pivot) · R · T(-pivot) = T(pivot+translation) · R · T(-pivot)\n // 先绕 pivot 旋转,再平移 translation(与 mesh 路径 applyTransform 一致)\n const matrix = new Mat4()\n .makeTranslation(pivot[0] + translation[0], pivot[1] + translation[1], pivot[2] + translation[2])\n .multiply(rotation)\n .multiply(new Mat4().makeTranslation(-pivot[0], -pivot[1], -pivot[2]))\n return kernel.transform(solid, matrixToArray(matrix))\n}\n\n// ─── 布尔操作 ───\n\n/**\n * BREP 布尔并集:使用 OCCT fuse(BRepAlgoAPI_Fuse)。\n *\n * @param kernel OCCT 内核\n * @param a 实体 A\n * @param b 实体 B\n * @returns 融合后的实体\n */\nexport function fuseBrep(\n kernel: BrepEngineApi,\n a: BrepHandle,\n b: BrepHandle,\n): BrepHandle {\n return kernel.fuse(a, b)\n}\n\n/**\n * BREP 布尔差集:使用 OCCT cut(BRepAlgoAPI_Cut)。\n *\n * @param kernel OCCT 内核\n * @param a 基体\n * @param b 工具(从基体中减去)\n * @returns 切割后的实体\n */\nexport function cutBrep(\n kernel: BrepEngineApi,\n a: BrepHandle,\n b: BrepHandle,\n): BrepHandle {\n return kernel.cut(a, b)\n}\n\n/**\n * BREP 布尔交集:使用 OCCT common(BRepAlgoAPI_Common)。\n *\n * @param kernel OCCT 内核\n * @param a 实体 A\n * @param b 实体 B\n * @returns 交集实体\n */\nexport function commonBrep(\n kernel: BrepEngineApi,\n a: BrepHandle,\n b: BrepHandle,\n): BrepHandle {\n return kernel.common(a, b)\n}\n\n// ─── 钻孔操作 ───\n\n/** drillBrep 的参数 */\nexport interface DrillBrepParams {\n /** 孔直径 */\n diameter: number\n /** 孔深度(0 = 通孔) */\n depth: number\n /** 孔位置(世界空间) */\n position: Vec3\n /** 钻孔方向(世界空间,指向材料内部) */\n direction: Vec3\n /** 面法向(世界空间) */\n faceNormal: Vec3\n /** 孔类型 */\n holeType?: 'simple' | 'screw'\n}\n\n/**\n * BREP 钻孔:创建圆柱工具实体并用 OCCT cut 减去。\n *\n * 仅支持圆柱孔(holeType='simple')。\n * 螺丝孔(holeType='screw')由调用方判断为 mesh-only,触发 BREP 链断裂。\n *\n * 通孔(depth=0):创建一个足够长的圆柱体穿透整个零件。\n * 盲孔(depth>0):创建指定深度的圆柱体。\n *\n * @param kernel OCCT 内核\n * @param solid 目标实体\n * @param params 钻孔参数\n * @returns 钻孔后的实体\n */\n/** 钻孔几何参数(由 `DrillBrepParams` 推导;roleTable 路径与 `drillBrep` 共用同一份几何,避免重复计算)。 */\nexport interface DrillGeometry {\n readonly radius: number\n readonly holeHeight: number\n readonly holeCenter: Vec3C\n readonly direction: Vec3C\n}\n\n/** 从 `DrillBrepParams` 推导钻孔几何(孔中心/高度/轴向)。供 `drillBrep` 与 role-table 路径共用。\n * @param kernel - BREP 引擎接口\n * @param solid - 待钻孔实体(用于 bbox 推导通孔高度)\n * @param params - 钻孔参数(直径/深度/位置/方向/面法向)\n * @returns 钻孔几何(半径/高度/中心/轴向)\n */\nexport function computeDrillGeometry(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n params: DrillBrepParams,\n): DrillGeometry {\n const radius = params.diameter / 2\n const direction = new Vec3C(...params.direction).normalize()\n // 确保方向指向材料内部\n const faceNormal = new Vec3C(...params.faceNormal)\n if (direction.dot(faceNormal) > 0) {\n direction.negate()\n }\n\n // 计算孔的高度和中心\n const bbox = getSolidBoundingBox(kernel, solid)\n const bboxSize = new Vec3C(\n bbox.max[0] - bbox.min[0],\n bbox.max[1] - bbox.min[1],\n bbox.max[2] - bbox.min[2],\n )\n const bboxMax = Math.max(bboxSize.x, bboxSize.y, bboxSize.z)\n\n let holeHeight: number\n let holeCenter: Vec3C\n const pos = new Vec3C(...params.position)\n\n // 通孔:depth <= 0(契约:depth<=0 表示通孔,与 mesh 路径 `depth>0 ? 'blind':'through'` 一致)。\n // ⚠️ 只判 `=== 0` 会让 depth<0 落入盲孔分支 → safeDepth=0 → 零高圆柱 → OCCT transform 崩溃。\n if (params.depth <= 0) {\n const d = direction.clone().normalize()\n const bbMin = new Vec3C(bbox.min[0], bbox.min[1], bbox.min[2])\n const bbMax = new Vec3C(bbox.max[0], bbox.max[1], bbox.max[2])\n\n let tNear = -Infinity\n let tFar = Infinity\n const axes: Array<[number, number, number, number]> = [\n [0, d.x, bbMin.x, bbMax.x],\n [1, d.y, bbMin.y, bbMax.y],\n [2, d.z, bbMin.z, bbMax.z],\n ]\n const pArr = [pos.x, pos.y, pos.z]\n for (const [axis, di, lo, hi] of axes) {\n const pi = pArr[axis]\n if (Math.abs(di) > 1e-12) {\n const t1 = (lo - pi) / di\n const t2 = (hi - pi) / di\n tNear = Math.max(tNear, Math.min(t1, t2))\n tFar = Math.min(tFar, Math.max(t1, t2))\n } else if (pi < lo || pi > hi) {\n // 与 slab 平行且在外部 — 无交点(与 mesh 行为一致:几乎不钻孔)\n tNear = 0\n tFar = 0\n }\n }\n if (!isFinite(tNear) || !isFinite(tFar) || tFar < tNear) {\n // 不穿过 bbox:与 mesh 一致,只留 0.2mm 微小孔\n holeHeight = 0.2\n holeCenter = pos.clone()\n } else {\n holeHeight = tFar - tNear + 0.2\n holeCenter = pos.clone().add(direction.clone().normalize().multiplyScalar((tNear + tFar) / 2))\n }\n } else {\n // 盲孔:深度钳制到 bboxMax(与 mesh cad-core/drill.ts 一致)\n const safeDepth = Math.max(0, Math.min(params.depth, bboxMax))\n holeHeight = safeDepth\n holeCenter = pos.clone().add(direction.clone().normalize().multiplyScalar(safeDepth / 2))\n }\n\n return { radius, holeHeight, holeCenter, direction }\n}\n\n/** 由钻孔几何构造刀具实体(圆柱,旋转 + 平移到孔位)。调用方负责 release。\n * @param kernel - BREP 引擎接口\n * @param geom - 钻孔几何(半径/高度/中心/轴向)\n * @returns 刀具实体(BrepHandle,调用方负责 release)\n */\nexport function buildDrillToolSolid(kernel: BrepEngineApi, geom: DrillGeometry): BrepHandle {\n const cylinder = kernel.makeCylinder(geom.radius, geom.holeHeight)\n\n // 计算从 Z 轴到 direction 的旋转\n const zAxis = new Vec3C(0, 0, 1)\n const quat = new Quat().setFromUnitVectors(zAxis, geom.direction)\n const rotMatrix = new Mat4().makeRotationFromQuaternion(quat)\n\n // 平移矩阵:到孔中心,并减去 height/2(因为圆柱从 Z=0 开始)\n const transMatrix = new Mat4().makeTranslation(\n geom.holeCenter.x,\n geom.holeCenter.y,\n geom.holeCenter.z,\n )\n // 组合:先旋转,再平移\n const finalMatrix = new Mat4().multiplyMatrices(transMatrix, rotMatrix)\n // 还需要补偿圆柱的起始位置(从 Z=0 开始 → 需要先下移 height/2)\n const offsetMatrix = new Mat4().makeTranslation(0, 0, -geom.holeHeight / 2)\n const fullMatrix = new Mat4().multiplyMatrices(finalMatrix, offsetMatrix)\n\n const toolSolid = kernel.transform(cylinder, matrixToArray(fullMatrix))\n kernel.release(cylinder)\n return toolSolid\n}\n\n/** 在实体上钻一个孔:由参数推导几何、构造刀具实体并做布尔差。\n * @param kernel - BREP 引擎接口\n * @param solid - 待钻孔实体\n * @param params - 钻孔参数(直径/深度/位置/方向/面法向)\n * @returns 钻孔后的实体(BrepHandle)\n */\nexport function drillBrep(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n params: DrillBrepParams,\n): BrepHandle {\n const geom = computeDrillGeometry(kernel, solid, params)\n const toolSolid = buildDrillToolSolid(kernel, geom)\n try {\n const result = kernel.cut(solid, toolSolid)\n kernel.release(toolSolid)\n return result\n } catch (err) {\n kernel.release(toolSolid)\n throw new Error(`[drillBrep] OCCT cut failed: ${err instanceof Error ? err.message : String(err)}`, { cause: err })\n }\n}\n\n// ─── 分割操作 ───\n\n/** splitBrep 的参数 */\nexport interface SplitBrepParams {\n /** 切割平面法线 */\n normal: Vec3\n /**\n * 切割平面位置:世界系平面方程 d 值(n·x = planeDistance)。\n * 与 planeCenter 二选一必填;都缺省时抛错,不隐式回退。\n */\n planeDistance?: number\n /**\n * 切割平面位置:世界坐标点(平面中心)。\n * 与 planeDistance 二选一必填;都缺省时抛错,不隐式回退。\n */\n planeCenter?: Vec3\n}\n\n/** splitBrep 的结果 */\nexport interface SplitBrepResult {\n /** 法线正方向的半部分 */\n front: BrepHandle\n /** 法线负方向的半部分 */\n back: BrepHandle\n}\n\n/**\n * BREP 平面分割:使用 OCCT cut + common 实现平面分割。\n *\n * 仅支持平面分割(cutMode='plane')。\n * 燕尾/定位销/直榫等复杂分割由 joinery-brep.ts 处理。\n *\n * 实现方式:\n * 1. 创建一个大的半空间盒子(法线正方向一侧)\n * 2. common(solid, box) → 法线正方向的半部分\n * 3. cut(solid, box) → 法线负方向的半部分\n *\n * @param kernel OCCT 内核\n * @param solid 目标实体\n * @param params 分割参数\n * @returns 两个半部分\n */\nexport function splitBrep(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n params: SplitBrepParams,\n): SplitBrepResult {\n const bbox = getSolidBoundingBox(kernel, solid)\n const bboxSize = new Vec3C(\n bbox.max[0] - bbox.min[0],\n bbox.max[1] - bbox.min[1],\n bbox.max[2] - bbox.min[2],\n )\n const bboxMax = Math.max(bboxSize.x, bboxSize.y, bboxSize.z)\n\n // 创建一个大的盒子代表法线正方向的半空间\n const normal = new Vec3C(...params.normal).normalize()\n const halfSize = bboxMax * 3 // 足够大\n\n // 先在局部坐标系(Z 轴 = 法线方向)创建盒子\n // 然后旋转到世界坐标系\n const zAxis = new Vec3C(0, 0, 1)\n const quat = new Quat().setFromUnitVectors(zAxis, normal)\n const rotMatrix = new Mat4().makeRotationFromQuaternion(quat)\n\n // 在局部坐标系中,盒子从 Z=0(切割平面)延伸到 Z=halfSize\n const localBox = kernel.makeBoxFromCorners(\n { x: -halfSize, y: -halfSize, z: 0 },\n { x: halfSize, y: halfSize, z: halfSize },\n )\n\n // 计算切割平面的世界坐标原点(planeCenter / planeDistance 二选一必填,\n // 都缺省直接报错,不隐式回退 bbox 中心)\n const planeOrigin = resolvePlaneOrigin(normal, params.planeCenter, params.planeDistance)\n\n const transMatrix = new Mat4().makeTranslation(\n planeOrigin.x,\n planeOrigin.y,\n planeOrigin.z,\n )\n const finalMatrix = new Mat4().multiplyMatrices(transMatrix, rotMatrix)\n\n const halfSpaceBox = kernel.transform(localBox, matrixToArray(finalMatrix))\n kernel.release(localBox)\n\n try {\n // P2(2026-10-06):规避 occt-wasm 在 Chrome worker 下 common 对\"平面退化 BOP\"\n // 挂死(common(solid, 半边盒) 不稳定;cut 稳定——drill 打孔 cut 在 worker 正常)。\n // 差集对偶:back(负侧)= solid - 正盒;front(正侧)= solid - 负盒。\n // 数学等价于 common/cut(盒覆盖 solid 全尺寸,边界同为切割平面),node 探针验证\n // 三角化结果与原实现一致。common 保留在 node/非 worker 环境的回退不可行——\n // 静态行为应一致,故统一走两 cut。\n const back = kernel.cut(solid, halfSpaceBox)\n // 负盒:local 系 z ∈ [-halfSize, 0],同 finalMatrix(平面沿 -normal 方向扩展)\n const localBoxNeg = kernel.makeBoxFromCorners(\n { x: -halfSize, y: -halfSize, z: -halfSize },\n { x: halfSize, y: halfSize, z: 0 },\n )\n const negBox = kernel.transform(localBoxNeg, matrixToArray(finalMatrix))\n kernel.release(localBoxNeg)\n const front = kernel.cut(solid, negBox)\n kernel.release(halfSpaceBox)\n kernel.release(negBox)\n return { front, back }\n } catch (err) {\n kernel.release(halfSpaceBox)\n throw new Error(`[splitBrep] OCCT split failed: ${err instanceof Error ? err.message : String(err)}`, { cause: err })\n }\n}\n\n// ─── 拉伸操作 ───\n\n/** extrudeBrep 的参数 */\nexport interface ExtrudeBrepParams {\n /** 拉伸法线方向 */\n normal: Vec3\n /**\n * 切割平面位置:世界系平面方程 d 值(n·x = planeDistance)。\n * 与 planeCenter 二选一必填;都缺省时抛错,不隐式回退。\n */\n planeDistance?: number\n /**\n * 切割平面位置:世界坐标点(平面中心)。\n * 与 planeDistance 二选一必填;都缺省时抛错,不隐式回退。\n */\n planeCenter?: Vec3\n /** 拉伸长度 */\n length: number\n /** 拉伸模式 */\n mode?: 'centered' | 'forward' | 'backward'\n}\n\n/** 从 planeCenter / planeDistance 收敛出切割平面上的一个点(planeOrigin)。 */\nfunction resolvePlaneOrigin(\n normal: Vec3C,\n planeCenter?: Vec3,\n planeDistance?: number,\n): Vec3C {\n if (planeCenter !== undefined) {\n return new Vec3C(...planeCenter)\n }\n if (planeDistance !== undefined) {\n // 平面方程 n·x = d 上的点:取法线上距原点 d 处(n 为单位向量)\n return normal.clone().multiplyScalar(planeDistance)\n }\n throw new Error(\n '[extrudeBrep] plane location missing: provide planeCenter or planeDistance (implicit bbox-center fallback is forbidden)',\n )\n}\n\n/**\n * BREP 拉伸:在切割平面处将实体切开,中段沿法线拉伸 length,三段 fuse。\n *\n * 实现方式:\n * 1. 用平面分割得到 front + back\n * 2. 获取截面线(section edges → wire → face)\n * 3. 沿法线拉伸截面 face → 中段实体\n * 4. fuse(front, extruded, back)\n *\n * 如果截面无法构建 face(开放线框等),抛出错误由调用方处理为链断裂。\n *\n * @param kernel OCCT 内核\n * @param solid 目标实体\n * @param params 拉伸参数\n * @returns 拉伸后的实体\n */\nexport function extrudeBrep(\n kernel: BrepEngineApi,\n solid: BrepHandle,\n params: ExtrudeBrepParams,\n): BrepHandle {\n const mode = params.mode ?? 'centered'\n const normal = new Vec3C(...params.normal).normalize()\n const length = params.length\n\n // 1. 确定切割平面位置(世界系,来源静态:planeCenter 或 planeDistance,\n // 都缺省直接报错,不隐式回退 bbox 中心)\n const planeOrigin = resolvePlaneOrigin(normal, params.planeCenter, params.planeDistance)\n\n // 2. 分割实体\n const splitResult = splitBrep(kernel, solid, {\n normal: [normal.x, normal.y, normal.z],\n planeCenter: [planeOrigin.x, planeOrigin.y, planeOrigin.z],\n })\n\n // 3. 获取截面\n // 使用 section 获取切割平面与实体的交线\n const bbox = getSolidBoundingBox(kernel, solid)\n const zAxis = new Vec3C(0, 0, 1)\n const quat = new Quat().setFromUnitVectors(zAxis, normal)\n const rotMatrix = new Mat4().makeRotationFromQuaternion(quat)\n const transMatrix = new Mat4().makeTranslation(\n planeOrigin.x,\n planeOrigin.y,\n planeOrigin.z,\n )\n const planeMatrix = new Mat4().multiplyMatrices(transMatrix, rotMatrix)\n\n // 创建一个大的矩形面作为切割平面\n const bboxSize = new Vec3C(\n bbox.max[0] - bbox.min[0],\n bbox.max[1] - bbox.min[1],\n bbox.max[2] - bbox.min[2],\n )\n const planeSize = Math.max(bboxSize.x, bboxSize.y, bboxSize.z) * 3\n const planeRect = kernel.makeRectangle(planeSize, planeSize)\n // makeRectangle creates a face from [0,0] to [width,height] — center it at origin first\n const centerMatrix = new Mat4().makeTranslation(-planeSize / 2, -planeSize / 2, 0)\n const centeredRect = kernel.transform(planeRect, matrixToArray(centerMatrix))\n kernel.release(planeRect)\n const planeFace = kernel.transform(centeredRect, matrixToArray(planeMatrix))\n kernel.release(centeredRect)\n\n // 获取截面边(occt-only 平台面,D3)。BrepHandle(branded number)与\n // occt-wasm ShapeHandle 运行时同构,品牌转换只发生在平台边界;转回 BrepHandle\n // 后继续用 L1 面(getSubShapes/makeWire/extrude)。\n const sectionEdges = getOcctKernel().section(\n solid as unknown as ShapeHandle,\n planeFace as unknown as ShapeHandle,\n ) as unknown as BrepHandle\n kernel.release(planeFace)\n\n // 4. 构建截面 wire → face → 拉伸\n let extrudedSolid: BrepHandle\n try {\n // 尝试从截面边构建 wire\n const subShapes = kernel.getSubShapes(sectionEdges, 'edge')\n if (subShapes.length === 0) {\n kernel.release(sectionEdges)\n kernel.release(splitResult.front)\n kernel.release(splitResult.back)\n throw new Error('no section edges from plane intersection')\n }\n\n const wire = kernel.makeWire(subShapes)\n const face = kernel.makeFace(wire)\n kernel.release(wire)\n\n // 计算拉伸向量\n let extrudeVec: Vec3C\n if (mode === 'centered') {\n extrudeVec = normal.clone().multiplyScalar(length)\n } else if (mode === 'forward') {\n extrudeVec = normal.clone().multiplyScalar(length)\n } else {\n // backward\n extrudeVec = normal.clone().multiplyScalar(-length)\n }\n\n extrudedSolid = kernel.extrude(face, extrudeVec.x, extrudeVec.y, extrudeVec.z)\n kernel.release(face)\n kernel.release(sectionEdges)\n } catch {\n // 截面构建失败 — 释放资源并抛出\n if (sectionEdges) kernel.release(sectionEdges)\n kernel.release(splitResult.front)\n kernel.release(splitResult.back)\n throw new Error('[extrudeBrep] failed to build extrusion from section')\n }\n\n // 5. 中段落位补偿(修复 centered 模式中空 / 开壳)\n //\n // 切割平面位于 planeOrigin,splitBrep 产出的 front/back 其切面恰好在 planeOrigin。\n // - forward:front 偏移 +L、back 偏移 0 → 中段(从 planeOrigin 沿 +normal 拉伸 L,\n // 底面在 planeOrigin)的顶面(planeOrigin+L)正好接 front 底面,无需位移。\n // - backward:front 偏移 0、back 偏移 -L → 中段(沿 -normal 拉伸 L,顶在 planeOrigin)\n // 底面(planeOrigin-L)正好接 back 顶面,无需位移。\n // - centered:front 偏移 +L/2、back 偏移 -L/2,二者之间让出 L 的缝隙;但中段默认\n // 从 planeOrigin 沿 +normal 拉伸 L,落在 planeOrigin→planeOrigin+L,与 back 顶面\n // (planeOrigin-L/2) 和 front 底面 (planeOrigin+L/2) 各错开 L/2,形成两道 L/2 的缝隙\n // → fuse 后实体开壳 / 中空。必须对中段额外沿 -normal 位移 L/2,使其落在\n // planeOrigin-L/2 → planeOrigin+L/2,正好填补缝隙。\n const middleOffset = mode === 'centered' ? -length / 2 : 0\n if (middleOffset !== 0) {\n const translatedMiddle = kernel.translate(\n extrudedSolid,\n normal.x * middleOffset,\n normal.y * middleOffset,\n normal.z * middleOffset,\n )\n kernel.release(extrudedSolid)\n extrudedSolid = translatedMiddle\n }\n\n // 6. 计算各段位置\n let frontOffset: number\n let backOffset: number\n if (mode === 'centered') {\n frontOffset = length / 2\n backOffset = -length / 2\n } else if (mode === 'forward') {\n frontOffset = length\n backOffset = 0\n } else {\n frontOffset = 0\n backOffset = -length\n }\n\n // 平移 front 和 back\n const frontTranslated = kernel.translate(\n splitResult.front,\n normal.x * frontOffset,\n normal.y * frontOffset,\n normal.z * frontOffset,\n )\n kernel.release(splitResult.front)\n\n const backTranslated = kernel.translate(\n splitResult.back,\n normal.x * backOffset,\n normal.y * backOffset,\n normal.z * backOffset,\n )\n kernel.release(splitResult.back)\n\n // 7. Fuse 三段\n let result: BrepHandle\n try {\n const fused1 = kernel.fuse(frontTranslated, extrudedSolid)\n kernel.release(frontTranslated)\n kernel.release(extrudedSolid)\n result = kernel.fuse(fused1, backTranslated)\n kernel.release(fused1)\n kernel.release(backTranslated)\n } catch (err) {\n kernel.release(frontTranslated)\n kernel.release(extrudedSolid)\n kernel.release(backTranslated)\n throw new Error(`[extrudeBrep] fuse failed: ${err instanceof Error ? err.message : String(err)}`, { cause: err })\n }\n\n return result\n}\n\n// ─── STEP/BREP 导入操作 ───\n\n/**\n * 单零件导入的 STEP 颜色挂载(P2,方案 §5 STEP 行)。\n *\n * `getSolidColorsOrdered`(stepColorParser)把 STYLED_ITEM → COLOUR_RGB 引用链\n * 解析为按 MANIFOLD_SOLID_BREP 文件序的颜色数组;该序与 OCCT\n * `getSubShapes(compound,'solid')` 一致(stepColorParser 注释),因此取 `[0]`\n * 即「loadBrep 单零件收敛取第一个 solid」的颜色,语义对齐。\n *\n * 宽容兼容外部数据:BREP(CASCADE Topology 文本)无颜色概念直接跳过;STEP\n * 文本无 `STYLED_ITEM` 早退(零额外开销);引用链缺失/未知预定义色返回 null,\n * 一律不挂外观、不抛错(AGENTS.md 全局铁律:不得以内部严格性拒收正常文件)。\n */\nfunction applyFirstStepColor(shape: Shape, buffer: ArrayBuffer): Shape {\n const head = new TextDecoder('utf-8').decode(buffer.slice(0, 64))\n if (head.includes('CASCADE Topology')) return shape\n const text = new TextDecoder('utf-8').decode(buffer)\n if (!text.includes('STYLED_ITEM')) return shape\n const c0 = getSolidColorsOrdered(text)[0]\n if (c0) shape.appearance = { color: [c0[0], c0[1], c0[2]] }\n return shape\n}\n\n/**\n * BREP-native STEP 导入:使用 OCCT kernel.importStep 导入 STEP 文件为精确实体。\n *\n * 与 mesh 路径(cad-core/io.ts importFile → loadFormat → meshes)对照:\n * - mesh 路径:STEP → 三角网格,丢弃 OCCT BrepHandle\n * - BREP 路径:STEP → kernel.importStep → 保留 BrepHandle,同时三角化为显示 mesh\n *\n * 导入的 solid 存入 brepChain.solidCache,后续操作(drillBrep/splitBrep 等)\n * 将其作为\"基座特征\"进行精确运算。\n *\n * **设计决策(I5 不准合并;fileid-container-and-nesting §5.4 单零件收敛)**:\n * - 单 solid STEP:`importStep` 返回 Compound 包裹(顶层是 `TopoDS_Compound`,\n * 内含 1 个 `TopoDS_Solid`)。此处**解包**返回真实 Solid(`solids[0]`),\n * 下游 `isValid`/编辑/导出都针对真实实体。\n * - 多 solid STEP:**只支持单零件**(§5.4)——降级取**第一个** solid 返回(单一\n * 非复合 Shape),并回传 `multiSolidCount`(≥2 表示本文件被降级取件,由 load op\n * 登记\"多零件降级\" pending,宿主据此弹警告 §5.4:166)。取件点唯一,逐 part 拆\n * 分只发生在 load op 内部,宿主不再发多条 load。\n * - **不调用 `kernel.isValid`**:`importStep` 对单 solid STEP 也返回 Compound 包裹,\n * `isValid(compound)` 返回 false(Compound 不是 Solid),这会误杀合法 STEP。\n * 合法性判据改为 `getSubShapes(top, 'solid').length >= 1`(含 ≥1 个 solid 即合法),\n * 与装配路径 `walkLabel` 一致。\n *\n * @param kernel the initialized OCCT kernel.\n * @param buffer the raw STEP file bytes (a text-encoded ArrayBuffer).\n * @param brepChain optional - caches the tessellated BrepMeshResult when provided.\n * @param stmtId optional - the part this solid belongs to, paired with brepChain as the cache key.\n * @param opts optional - `allowNonSolid` relaxes the solid requirement so\n * a frozen wireframe/surface asset (a Draft wire, a face, a\n * shell) can be imported as addressable geometry. Callers\n * must decide this STATICALLY from the asset itself (see\n * `brepTextHasSolid`), never by retrying after a failure.\n * @returns { solid: the OCCT solid handle, shape: the display tessellated mesh,\n * multiSolidCount: total solids declared when > 1 (single-part take-first) }\n */\nexport function loadBrep(\n kernel: BrepEngineApi,\n buffer: ArrayBuffer,\n brepChain?: BrepChainState,\n stmtId?: PartName,\n opts?: { allowNonSolid?: boolean },\n): { solid: BrepHandle; shape: Shape; multiSolidCount?: number } {\n // BREP 文件(CASCADE Topology 文本格式)必须用 kernel.fromBREP 解析;\n // 误用 STEP 解析器(importStep)读 BREP 会抛 \"failed to read STEP data\"。\n const decoder = new TextDecoder('utf-8')\n const head = decoder.decode(buffer.slice(0, 64))\n const top = head.includes('CASCADE Topology')\n ? kernel.fromBREP(decoder.decode(buffer))\n : kernel.importStep(buffer)\n\n // 校验:含至少一个 solid 子形即合法(不调用 isValid,见上文设计决策)\n const solids = kernel.getSubShapes(top, 'solid')\n if (solids.length < 1) {\n // 非实体导入(allowNonSolid):冻结资产是 wireframe/surface(Draft 线/面/壳)\n // 时仍可作为可寻址几何导入——顶点/边/线/面/壳都算有内容。此时返回 top 本身,\n // 它独立持有几何,不能释放。\n // 注意:这类 Shape 进不了布尔运算(OCCT fuse/cut 抛 \"boolean operation\n // failed\"),调用方必须自己保证它只流向变换/聚合。\n if (opts?.allowNonSolid && hasAnyTopology(kernel, top)) {\n const shape = solidToShape(kernel, top, undefined, brepChain, stmtId)\n return { solid: top, shape: applyFirstStepColor(shape, buffer) }\n }\n kernel.release(top)\n throw new Error(\n `[loadBrep] imported shape contains no solid sub-shapes ` +\n `(solidCount=0) — wireframe/surface/invalid shapes are not supported ` +\n `unless allowNonSolid is set`\n )\n }\n\n // 单 solid:解包返回真实 Solid(非 Compound 包裹)\n if (solids.length === 1) {\n const realSolid = solids[0]\n kernel.release(top) // 释放 Compound 包裹,realSolid 独立持有\n const shape = solidToShape(kernel, realSolid, undefined, brepChain, stmtId)\n return { solid: realSolid, shape: applyFirstStepColor(shape, buffer) }\n }\n\n // 多 solid(§5.4 单零件收敛):只支持单零件 —— 降级取**第一个** solid,\n // 返回单一非复合 Shape,并回传 multiSolidCount(≥2 表示本文件被降级取件,\n // 由 `cad.load` op 登记\"多零件降级\" pending,宿主据零件数弹警告 §5.4:166)。\n // 取件点唯一:多零件拆分只发生在 load op 内部,宿主不再逐 part 拆、不再发\n // 多条 load。`solids` 是 kernel.getSubShapes(top,'solid') 的内核枚举序;对同一\n // import 路径、同一 OCCT 版本,该序是确定性的,故\"第一个\"可复现(红线 7)。\n const first = solids[0]\n if (!first) {\n kernel.release(top)\n throw new Error(`[loadBrep] imported shape has 0 solid sub-shapes`)\n }\n // 释放其余多余子形句柄(first 独立持有几何,剩下的子是 top 的子引用)\n for (const s of solids.slice(1)) {\n try { kernel.release(s) } catch { /* already released */ }\n }\n kernel.release(top) // 释放 Compound 包裹,first 独立持有(同单 solid 模式)\n const shape = solidToShape(kernel, first, undefined, brepChain, stmtId)\n return { solid: first, shape: applyFirstStepColor(shape, buffer), multiSolidCount: solids.length }\n}\n\n/** Sub-shape kinds that make an imported shape \"addressable but not a solid\". */\nconst NON_SOLID_KINDS = ['vertex', 'edge', 'wire', 'face', 'shell'] as const\n\n/**\n * Does a freshly imported shape hold any sub-shape at all?\n *\n * Guards the `allowNonSolid` path: a file whose TShapes table is empty (or that\n * holds only a bare compound with nothing inside) is a broken asset, not a\n * wireframe one, and must still fail loudly.\n *\n * @param kernel - the initialized OCCT kernel.\n * @param top - the imported top-level shape handle.\n * @returns true when at least one non-solid sub-shape exists.\n */\nfunction hasAnyTopology(kernel: BrepEngineApi, top: BrepHandle): boolean {\n return NON_SOLID_KINDS.some((kind) => kernel.getSubShapes(top, kind).length > 0)\n}\n\n// ─── 多零件 STEP 装配导入(P0,方案 2026-10-06-step-3mf-multipart-import-plan.md §5.3)───\n\n/** 多零件 STEP 导入中的一个零件(几何 + solid 句柄 + 身份)。 */\nexport interface LoadBrepAssemblyPart {\n /** 零件序号(0 起,DFS 声明序)。 */\n index: number\n /** 零件名(XCAF label;无则回退 `imported:<index>`)。 */\n name: string\n /** 显示色 sRGB 0..1,无则 null。 */\n color: [number, number, number] | null\n /** 三角化显示 mesh。 */\n shape: Shape\n /** OCCT solid 句柄(已烘 location;生命周期归 brepChain,调用方经 fromBrep 绑定)。 */\n solid: BrepHandle\n}\n\n/**\n * BREP-native 多零件 STEP 导入(XCAF 装配树 → 逐零件 Shape + 装配层级)。\n *\n * 与 `loadBrep`(单零件收敛,§5.4 旧行为)对照:loadBrepAssembly 走\n * `importAssemblyFromStep`(XCAF),返回**全部**叶零件(DFS 声明序)与装配树。\n *\n * - 装配树叶子 = 零件;合成节点(syntheticGroup:单一产品含多 MANIFOLD_SOLID_BREP)\n * 如实表达为中间节点;\n * - 无装配结构的单叶文件 → 1 个零件、无 assembly(行为与现状单零件一致);\n * - 句柄互通(T0):`importAssemblyFromStep` 内部用 initOcctWasm() 全局单例内核,\n * 与注入的 `BrepEngineApi`(createOcctPrimitives 包装同一单例)句柄数值互通——\n * 探针见 test/brep/load-brep-assembly.test.ts;\n * - 释放:装配节点句柄已由 walkLabel 释放,叶句柄随返回 parts 交给调用方\n * (fromBrep 绑定后归 brepChain 管理,不在此释放)。\n *\n * @param kernel - the initialized OCCT kernel (L1 contract face).\n * @param buffer - the raw STEP file bytes (text-encoded ArrayBuffer; stpz\n * unzipping is the caller's job — faijs never unzips implicitly).\n * @returns 全部零件 + 装配层级(多叶时)+ 叶数(>1 时)。\n */\nexport async function loadBrepAssembly(\n kernel: BrepEngineApi,\n buffer: ArrayBuffer,\n): Promise<{ parts: LoadBrepAssemblyPart[]; assembly?: ImportAssemblyNode; multiSolidCount?: number }> {\n const nodes = await importAssemblyFromStep(buffer)\n const leaves = collectLeafParts(nodes)\n\n // DFS 声明序:leaf 序 = parts 序 = ImportModel.parts.index。\n // 实体校验(与 load op「要求导入物含实体」契约一致):leaf 必须持有实体\n // (自身是 solid,或 label 内含 solid);空 label / wireframe 零件跳过,\n // 全部跳过则报错(不静默回退)。parts 下标保持连续(0..N-1)。\n const leafIndex = new Map<AssemblyPartNode, number>()\n const parts: LoadBrepAssemblyPart[] = []\n for (const leaf of leaves) {\n if (!leaf.shapeHandle || !leafHasSolid(kernel, leaf.shapeHandle)) continue\n const idx = parts.length\n leafIndex.set(leaf, idx)\n const h = leaf.shapeHandle as unknown as BrepHandle\n parts.push({\n index: idx,\n name: leaf.name || `imported:${idx}`,\n color: leaf.color,\n shape: solidToShape(kernel, h),\n solid: h,\n })\n }\n\n // 无叶零件(空/异常/纯 wireframe 文件)→ 报错暴露(不静默回退)。\n if (parts.length === 0) {\n throw new Error('[loadBrepAssembly] imported STEP contains no solid leaf parts')\n }\n\n const assembly = toImportAssemblyNode(nodes, leafIndex)\n return {\n parts,\n ...(assembly ? { assembly } : {}),\n ...(parts.length > 1 ? { multiSolidCount: parts.length } : {}),\n }\n}\n\n/**\n * leaf 是否持有实体(loadBrepAssembly 实体校验):自身是 solid(syntheticGroup\n * 拆出的单个 solid 句柄),或 label compound 内含 solid。getSubShapes 的引用\n * 句柄须立即 release(walkLabel 只释放了它自己取的副本)。\n */\nfunction leafHasSolid(kernel: BrepEngineApi, h: ShapeHandle): boolean {\n const bh = h as unknown as BrepHandle\n if (kernel.isSolid(bh)) return true\n const solids = kernel.getSubShapes(bh, 'solid')\n const n = solids.length\n for (const s of solids) kernel.release(s)\n return n > 0\n}\n\n/**\n * XCAF 装配树 → ImportAssemblyNode(DFS 序与 parts 一致)。\n *\n * - 单根且根为叶(无装配结构)→ undefined(单零件路径,与现状一致);\n * - 单根装配 → 该根;\n * - 多根 → 合成虚拟根 `{ name: 'imported' }`(确定性结构名,非零件身份)。\n */\nfunction toImportAssemblyNode(\n nodes: AssemblyPartNode[],\n leafIndex: Map<AssemblyPartNode, number>,\n): ImportAssemblyNode | undefined {\n if (nodes.length === 0) return undefined\n const convert = (node: AssemblyPartNode): ImportAssemblyNode => {\n if (node.children.length === 0) {\n const idx = leafIndex.get(node)\n return { name: node.name, ...(idx !== undefined ? { partIndex: idx } : {}) }\n }\n return { name: node.name, children: node.children.map(convert) }\n }\n if (nodes.length === 1) {\n const root = convert(nodes[0])\n // 单根且根为叶(无装配结构)→ 不表达装配层级\n if (root.partIndex !== undefined) return undefined\n return root\n }\n return { name: 'imported', children: nodes.map(convert) }\n}\n\n// ─── 辅助函数 ───\n\n/**\n * Convert a Mat4 into the 3x4 row-major array (12 doubles) the OCCT\n * transform expects.\n *\n * OCCT transform accepts [r00,r01,r02,tx, r10,r11,r12,ty, r20,r21,r22,tz].\n * @param matrix - the source matrix to convert.\n * @returns the 3x4 row-major array of 12 doubles.\n */\nexport function matrixToArray(matrix: Mat4): number[] {\n const e = matrix.elements\n // Mat4 是 column-major,OCCT 需要 row-major 3x4\n return [\n e[0], e[4], e[8], e[12],\n e[1], e[5], e[9], e[13],\n e[2], e[6], e[10], e[14],\n ]\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"brep-mock.d.ts","sourceRoot":"","sources":["../../../../src/brep/engine/adapters/brep-mock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAaH,OAAO,KAAK,EAAE,aAAa,EAAgC,MAAM,eAAe,CAAA;AAEhF,wCAAwC;AACxC,eAAO,MAAM,mBAAmB,cAAc,CAAA;AAoC9C;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAkYjD;AAED,yEAAyE;AACzE,wBAAgB,sBAAsB,IAAI,IAAI,CAK7C"}
1
+ {"version":3,"file":"brep-mock.d.ts","sourceRoot":"","sources":["../../../../src/brep/engine/adapters/brep-mock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAaH,OAAO,KAAK,EAAE,aAAa,EAAgC,MAAM,eAAe,CAAA;AAEhF,wCAAwC;AACxC,eAAO,MAAM,mBAAmB,cAAc,CAAA;AAoC9C;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAyZjD;AAED,yEAAyE;AACzE,wBAAgB,sBAAsB,IAAI,IAAI,CAK7C"}