brepjs 12.8.2 → 12.10.0

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 (294) hide show
  1. package/dist/2d/blueprints/{approximations.d.ts → blueprintApproximations.d.ts} +1 -1
  2. package/dist/2d/blueprints/blueprintApproximations.d.ts.map +1 -0
  3. package/dist/2d/blueprints/{customCorners.d.ts → blueprintCustomCorners.d.ts} +1 -1
  4. package/dist/2d/blueprints/blueprintCustomCorners.d.ts.map +1 -0
  5. package/dist/2d/blueprints/blueprintFns.d.ts +17 -3
  6. package/dist/2d/blueprints/blueprintFns.d.ts.map +1 -1
  7. package/dist/2d/blueprints/{offset.d.ts → blueprintOffset.d.ts} +1 -1
  8. package/dist/2d/blueprints/blueprintOffset.d.ts.map +1 -0
  9. package/dist/2d/blueprints/index.d.ts +4 -4
  10. package/dist/2d/blueprints/index.d.ts.map +1 -1
  11. package/dist/2d/lib/Curve2D.d.ts +1 -1
  12. package/dist/2d/lib/Curve2D.d.ts.map +1 -1
  13. package/dist/2d/lib/svgPath.d.ts.map +1 -1
  14. package/dist/2d/lib/vectorOperations.d.ts +4 -1
  15. package/dist/2d/lib/vectorOperations.d.ts.map +1 -1
  16. package/dist/2d-CzEysb7A.js +108 -0
  17. package/dist/2d-DCxS_sb_.cjs +107 -0
  18. package/dist/2d.cjs +24 -88
  19. package/dist/2d.d.ts +1 -1
  20. package/dist/2d.js +34 -99
  21. package/dist/{Blueprint-CQ28WJhz.cjs → Blueprint-BoC0DsDm.cjs} +15 -45
  22. package/dist/{Blueprint-DbVaf6k7.js → Blueprint-CQNRtmYG.js} +33 -63
  23. package/dist/{boolean2D-y3E92F0u.js → boolean2D-DXAt4GAK.js} +132 -62
  24. package/dist/{boolean2D-0blbVtJ8.cjs → boolean2D-N9Pgumgg.cjs} +112 -42
  25. package/dist/{booleanFns-BCTjYZAg.js → booleanFns-BXV7Oh0h.js} +53 -50
  26. package/dist/{booleanFns-gmsX3Cv2.cjs → booleanFns-CxArUj_q.cjs} +43 -40
  27. package/dist/brepjs.cjs +448 -379
  28. package/dist/brepjs.js +1634 -1563
  29. package/dist/core/dimensionTypes.d.ts +52 -0
  30. package/dist/core/dimensionTypes.d.ts.map +1 -0
  31. package/dist/core/disposal.d.ts +18 -0
  32. package/dist/core/disposal.d.ts.map +1 -1
  33. package/dist/core/errors.d.ts +7 -8
  34. package/dist/core/errors.d.ts.map +1 -1
  35. package/dist/core/kernelErrorTranslation.d.ts +15 -0
  36. package/dist/core/kernelErrorTranslation.d.ts.map +1 -0
  37. package/dist/core/planeOps.d.ts +14 -0
  38. package/dist/core/planeOps.d.ts.map +1 -1
  39. package/dist/core/result.d.ts +4 -0
  40. package/dist/core/result.d.ts.map +1 -1
  41. package/dist/core/shapeTypes.d.ts +14 -146
  42. package/dist/core/shapeTypes.d.ts.map +1 -1
  43. package/dist/core/{definitionMaps.d.ts → typeDiscriminants.d.ts} +5 -1
  44. package/dist/core/typeDiscriminants.d.ts.map +1 -0
  45. package/dist/core/validityTypes.d.ts +100 -0
  46. package/dist/core/validityTypes.d.ts.map +1 -0
  47. package/dist/core.cjs +52 -11
  48. package/dist/core.d.ts +1 -1
  49. package/dist/core.d.ts.map +1 -1
  50. package/dist/core.js +119 -76
  51. package/dist/{curveFns-BZngcnQ1.cjs → curveFns-CWZRuXQ3.cjs} +2 -2
  52. package/dist/{curveFns-mROFhiuG.js → curveFns-OmbtFSG8.js} +14 -14
  53. package/dist/{drawFns-Bwakrq7w.js → drawFns-8S0ULGRj.js} +146 -118
  54. package/dist/{drawFns-CjRc1NfQ.cjs → drawFns-voV2wEp8.cjs} +153 -125
  55. package/dist/{faceFns-B8GnxjdY.js → faceFns-Bn2seBfp.js} +16 -24
  56. package/dist/{faceFns-DB1Fc5gy.cjs → faceFns-CmIrjdt1.cjs} +2 -10
  57. package/dist/{helpers-X0juxnwj.js → helpers-CEn618MW.js} +89 -21
  58. package/dist/{helpers-C8NoT0Wu.cjs → helpers-mipaxDTy.cjs} +77 -9
  59. package/dist/index.d.ts +20 -19
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/io/gltfImportFns.d.ts +18 -0
  62. package/dist/io/gltfImportFns.d.ts.map +1 -0
  63. package/dist/io/ioUtils.d.ts +16 -0
  64. package/dist/io/ioUtils.d.ts.map +1 -0
  65. package/dist/io/objImportFns.d.ts.map +1 -1
  66. package/dist/io/threemfImportFns.d.ts.map +1 -1
  67. package/dist/io.cjs +4 -4
  68. package/dist/io.js +4 -4
  69. package/dist/kernel/brepkit/booleanOps.d.ts +23 -0
  70. package/dist/kernel/brepkit/booleanOps.d.ts.map +1 -0
  71. package/dist/kernel/brepkit/constructionOps.d.ts +51 -0
  72. package/dist/kernel/brepkit/constructionOps.d.ts.map +1 -0
  73. package/dist/kernel/brepkit/evolutionOps.d.ts +31 -0
  74. package/dist/kernel/brepkit/evolutionOps.d.ts.map +1 -0
  75. package/dist/kernel/brepkit/geometryOps.d.ts +56 -0
  76. package/dist/kernel/brepkit/geometryOps.d.ts.map +1 -0
  77. package/dist/kernel/brepkit/helpers.d.ts +84 -0
  78. package/dist/kernel/brepkit/helpers.d.ts.map +1 -0
  79. package/dist/kernel/brepkit/internalOps.d.ts +28 -0
  80. package/dist/kernel/brepkit/internalOps.d.ts.map +1 -0
  81. package/dist/kernel/brepkit/ioOps.d.ts +43 -0
  82. package/dist/kernel/brepkit/ioOps.d.ts.map +1 -0
  83. package/dist/kernel/brepkit/measureOps.d.ts +30 -0
  84. package/dist/kernel/brepkit/measureOps.d.ts.map +1 -0
  85. package/dist/kernel/brepkit/meshOps.d.ts +7 -0
  86. package/dist/kernel/brepkit/meshOps.d.ts.map +1 -0
  87. package/dist/kernel/brepkit/modifierOps.d.ts +15 -0
  88. package/dist/kernel/brepkit/modifierOps.d.ts.map +1 -0
  89. package/dist/kernel/brepkit/repairOps.d.ts +14 -0
  90. package/dist/kernel/brepkit/repairOps.d.ts.map +1 -0
  91. package/dist/kernel/brepkit/sweepOps.d.ts +27 -0
  92. package/dist/kernel/brepkit/sweepOps.d.ts.map +1 -0
  93. package/dist/kernel/brepkit/topologyOps.d.ts +16 -0
  94. package/dist/kernel/brepkit/topologyOps.d.ts.map +1 -0
  95. package/dist/kernel/brepkit/transformOps.d.ts +14 -0
  96. package/dist/kernel/brepkit/transformOps.d.ts.map +1 -0
  97. package/dist/kernel/brepkitAdapter.d.ts +1 -1
  98. package/dist/kernel/brepkitAdapter.d.ts.map +1 -1
  99. package/dist/kernel/brepkitWasmTypes.d.ts +8 -0
  100. package/dist/kernel/brepkitWasmTypes.d.ts.map +1 -1
  101. package/dist/kernel/defaultAdapter.d.ts.map +1 -1
  102. package/dist/kernel/extendedConstructorOps.d.ts +9 -1
  103. package/dist/kernel/extendedConstructorOps.d.ts.map +1 -1
  104. package/dist/kernel/index.d.ts +1 -0
  105. package/dist/kernel/index.d.ts.map +1 -1
  106. package/dist/kernel/interfaces/boolean-ops.d.ts +25 -0
  107. package/dist/kernel/interfaces/boolean-ops.d.ts.map +1 -0
  108. package/dist/kernel/interfaces/builder-ops.d.ts +57 -0
  109. package/dist/kernel/interfaces/builder-ops.d.ts.map +1 -0
  110. package/dist/kernel/interfaces/core.d.ts +30 -0
  111. package/dist/kernel/interfaces/core.d.ts.map +1 -0
  112. package/dist/kernel/interfaces/curve-ops.d.ts +41 -0
  113. package/dist/kernel/interfaces/curve-ops.d.ts.map +1 -0
  114. package/dist/kernel/interfaces/evolution-ops.d.ts +19 -0
  115. package/dist/kernel/interfaces/evolution-ops.d.ts.map +1 -0
  116. package/dist/kernel/interfaces/index.d.ts +37 -0
  117. package/dist/kernel/interfaces/index.d.ts.map +1 -0
  118. package/dist/kernel/interfaces/io-ops.d.ts +66 -0
  119. package/dist/kernel/interfaces/io-ops.d.ts.map +1 -0
  120. package/dist/kernel/interfaces/measure-ops.d.ts +35 -0
  121. package/dist/kernel/interfaces/measure-ops.d.ts.map +1 -0
  122. package/dist/kernel/interfaces/mesh-ops.d.ts +21 -0
  123. package/dist/kernel/interfaces/mesh-ops.d.ts.map +1 -0
  124. package/dist/kernel/interfaces/modifier-ops.d.ts +22 -0
  125. package/dist/kernel/interfaces/modifier-ops.d.ts.map +1 -0
  126. package/dist/kernel/interfaces/primitive-ops.d.ts +13 -0
  127. package/dist/kernel/interfaces/primitive-ops.d.ts.map +1 -0
  128. package/dist/kernel/interfaces/repair-ops.d.ts +36 -0
  129. package/dist/kernel/interfaces/repair-ops.d.ts.map +1 -0
  130. package/dist/kernel/interfaces/surface-ops.d.ts +50 -0
  131. package/dist/kernel/interfaces/surface-ops.d.ts.map +1 -0
  132. package/dist/kernel/interfaces/sweep-ops.d.ts +49 -0
  133. package/dist/kernel/interfaces/sweep-ops.d.ts.map +1 -0
  134. package/dist/kernel/interfaces/topology-ops.d.ts +30 -0
  135. package/dist/kernel/interfaces/topology-ops.d.ts.map +1 -0
  136. package/dist/kernel/interfaces/transform-ops.d.ts +35 -0
  137. package/dist/kernel/interfaces/transform-ops.d.ts.map +1 -0
  138. package/dist/kernel/modifierOps.d.ts +2 -2
  139. package/dist/kernel/modifierOps.d.ts.map +1 -1
  140. package/dist/kernel/types.d.ts +2 -446
  141. package/dist/kernel/types.d.ts.map +1 -1
  142. package/dist/measurement/measureCache.d.ts +11 -9
  143. package/dist/measurement/measureCache.d.ts.map +1 -1
  144. package/dist/measurement/measureFns.d.ts +24 -71
  145. package/dist/measurement/measureFns.d.ts.map +1 -1
  146. package/dist/measurement/measureTypes.d.ts +30 -0
  147. package/dist/measurement/measureTypes.d.ts.map +1 -0
  148. package/dist/{measurement-D8EJ694A.js → measurement-fJWDEpz0.js} +53 -34
  149. package/dist/measurement-ph-kanQ7.cjs +154 -0
  150. package/dist/measurement.cjs +2 -1
  151. package/dist/measurement.d.ts +1 -1
  152. package/dist/measurement.d.ts.map +1 -1
  153. package/dist/measurement.js +4 -3
  154. package/dist/{meshFns-BnV0ZR8w.cjs → meshFns-B9p4EVV8.cjs} +4 -4
  155. package/dist/{meshFns-nQjK38EC.js → meshFns-D0qIoxm-.js} +3 -3
  156. package/dist/operations/compoundOpsFns.d.ts +38 -0
  157. package/dist/operations/compoundOpsFns.d.ts.map +1 -0
  158. package/dist/operations/convexHullFns.d.ts +21 -0
  159. package/dist/operations/convexHullFns.d.ts.map +1 -0
  160. package/dist/operations/extrudeFns.d.ts +2 -93
  161. package/dist/operations/extrudeFns.d.ts.map +1 -1
  162. package/dist/operations/guidedSweepFns.d.ts +3 -22
  163. package/dist/operations/guidedSweepFns.d.ts.map +1 -1
  164. package/dist/operations/multiSweepFns.d.ts +3 -29
  165. package/dist/operations/multiSweepFns.d.ts.map +1 -1
  166. package/dist/operations/roofFns.d.ts +2 -2
  167. package/dist/operations/roofFns.d.ts.map +1 -1
  168. package/dist/operations/straightSkeleton.d.ts.map +1 -1
  169. package/dist/operations/sweepFns.d.ts +121 -0
  170. package/dist/operations/sweepFns.d.ts.map +1 -0
  171. package/dist/{operations-BfbkK6DU.js → operations-DX_qy_TB.js} +29 -177
  172. package/dist/{operations-CYpmLSC4.cjs → operations-Ds4xoyxR.cjs} +6 -154
  173. package/dist/operations.cjs +6 -10
  174. package/dist/operations.d.ts +0 -2
  175. package/dist/operations.d.ts.map +1 -1
  176. package/dist/operations.js +26 -30
  177. package/dist/originTrackingFns-BOCAMfd0.js +137 -0
  178. package/dist/originTrackingFns-SPU7ly3_.cjs +136 -0
  179. package/dist/query/edgeFinder.d.ts +4 -14
  180. package/dist/query/edgeFinder.d.ts.map +1 -1
  181. package/dist/query/faceFinder.d.ts +4 -14
  182. package/dist/query/faceFinder.d.ts.map +1 -1
  183. package/dist/query/finderCore.d.ts +6 -0
  184. package/dist/query/finderCore.d.ts.map +1 -1
  185. package/dist/query/shapeFinders.d.ts +32 -0
  186. package/dist/query/shapeFinders.d.ts.map +1 -0
  187. package/dist/query/wireFinder.d.ts +4 -9
  188. package/dist/query/wireFinder.d.ts.map +1 -1
  189. package/dist/query.cjs +54 -32
  190. package/dist/query.js +56 -34
  191. package/dist/{result-BaSD1fqR.js → result-CoDaWsvc.js} +48 -90
  192. package/dist/{result-fAX0OZzI.cjs → result-DULetAht.cjs} +17 -59
  193. package/dist/result.cjs +1 -1
  194. package/dist/result.js +23 -23
  195. package/dist/shapeFns-BZ6zk7nd.js +34 -0
  196. package/dist/shapeFns-bRkrwI8R.cjs +33 -0
  197. package/dist/{shapeTypes-7xEam9Ri.cjs → shapeTypes-T0n6mRmt.cjs} +170 -137
  198. package/dist/{shapeTypes-CpSaBLDv.js → shapeTypes-dhhm-T5A.js} +205 -172
  199. package/dist/sketching/CompoundSketch.d.ts +4 -4
  200. package/dist/sketching/CompoundSketch.d.ts.map +1 -1
  201. package/dist/sketching/Sketch.d.ts +3 -3
  202. package/dist/sketching/Sketch.d.ts.map +1 -1
  203. package/dist/sketching/Sketcher.d.ts.map +1 -1
  204. package/dist/sketching/Sketches.d.ts +1 -1
  205. package/dist/sketching/Sketches.d.ts.map +1 -1
  206. package/dist/sketching/draw.d.ts +1 -20
  207. package/dist/sketching/draw.d.ts.map +1 -1
  208. package/dist/sketching/draw3d.d.ts +22 -0
  209. package/dist/sketching/draw3d.d.ts.map +1 -0
  210. package/dist/sketching/sketchFns.d.ts +3 -3
  211. package/dist/sketching/sketchFns.d.ts.map +1 -1
  212. package/dist/sketching/sketchLib.d.ts +2 -2
  213. package/dist/sketching/sketchLib.d.ts.map +1 -1
  214. package/dist/sketching.cjs +2 -2
  215. package/dist/sketching.d.ts +2 -1
  216. package/dist/sketching.d.ts.map +1 -1
  217. package/dist/sketching.js +2 -2
  218. package/dist/{solidBuilders-994_MQwB.cjs → solidBuilders-BEAoLYvr.cjs} +3 -3
  219. package/dist/{solidBuilders-DmwhTCCd.js → solidBuilders-tVmD3R7Z.js} +12 -12
  220. package/dist/{surfaceBuilders-5VA34a3_.cjs → surfaceBuilders-DYS8AMSS.cjs} +3 -3
  221. package/dist/{surfaceBuilders-nQdJ56fe.js → surfaceBuilders-Dl0ATFbO.js} +15 -15
  222. package/dist/sweepFns-BKnQs59A.js +215 -0
  223. package/dist/sweepFns-COqeYIUp.cjs +214 -0
  224. package/dist/text/textBlueprints.d.ts +4 -3
  225. package/dist/text/textBlueprints.d.ts.map +1 -1
  226. package/dist/topology/booleanFns.d.ts.map +1 -1
  227. package/dist/topology/cast.d.ts +1 -5
  228. package/dist/topology/cast.d.ts.map +1 -1
  229. package/dist/topology/compoundOpsFns.d.ts +3 -35
  230. package/dist/topology/compoundOpsFns.d.ts.map +1 -1
  231. package/dist/topology/curveFns.d.ts +1 -1
  232. package/dist/topology/curveFns.d.ts.map +1 -1
  233. package/dist/topology/index.d.ts +2 -3
  234. package/dist/topology/index.d.ts.map +1 -1
  235. package/dist/topology/{colorFns.d.ts → metadata/colorFns.d.ts} +2 -2
  236. package/dist/topology/metadata/colorFns.d.ts.map +1 -0
  237. package/dist/topology/{faceTagFns.d.ts → metadata/faceTagFns.d.ts} +2 -2
  238. package/dist/topology/metadata/faceTagFns.d.ts.map +1 -0
  239. package/dist/topology/metadata/metadataPropagation.d.ts +30 -0
  240. package/dist/topology/metadata/metadataPropagation.d.ts.map +1 -0
  241. package/dist/topology/metadata/originTrackingFns.d.ts +23 -0
  242. package/dist/topology/metadata/originTrackingFns.d.ts.map +1 -0
  243. package/dist/topology/modifierFns.d.ts.map +1 -1
  244. package/dist/topology/shapeFns.d.ts +6 -120
  245. package/dist/topology/shapeFns.d.ts.map +1 -1
  246. package/dist/topology/topologyQueryFns.d.ts +67 -0
  247. package/dist/topology/topologyQueryFns.d.ts.map +1 -0
  248. package/dist/topology/transformFns.d.ts +49 -0
  249. package/dist/topology/transformFns.d.ts.map +1 -0
  250. package/dist/topology/wrapperFns.d.ts.map +1 -1
  251. package/dist/{topology-C7x98OVn.js → topology-C1oUQXZS.js} +235 -50
  252. package/dist/{topology-ANwCzGL8.cjs → topology-xyDYbkHW.cjs} +205 -20
  253. package/dist/topology.cjs +18 -17
  254. package/dist/topology.js +97 -96
  255. package/dist/topologyQueryFns-0IptTUCo.cjs +118 -0
  256. package/dist/topologyQueryFns-Dj4Xd5kx.js +119 -0
  257. package/dist/{types-CWDdqcrq.js → types-CcKqsmd0.js} +2 -2
  258. package/dist/utils/precisionRound.d.ts +4 -0
  259. package/dist/utils/precisionRound.d.ts.map +1 -1
  260. package/dist/utils/vec2d.d.ts +5 -0
  261. package/dist/utils/vec2d.d.ts.map +1 -1
  262. package/dist/{vecOps-ZDdZWbwT.js → vecOps-LTN--A58.js} +15 -15
  263. package/dist/{vectors-Bx8wkNui.js → vectors-B8juLsQB.js} +15 -7
  264. package/dist/{vectors-D_IiZx0q.cjs → vectors-I_0zdD3O.cjs} +9 -1
  265. package/dist/vectors.cjs +1 -1
  266. package/dist/vectors.js +23 -23
  267. package/package.json +9 -9
  268. package/dist/2d/blueprints/approximations.d.ts.map +0 -1
  269. package/dist/2d/blueprints/customCorners.d.ts.map +0 -1
  270. package/dist/2d/blueprints/offset.d.ts.map +0 -1
  271. package/dist/core/definitionMaps.d.ts.map +0 -1
  272. package/dist/core/geometryHelpers.d.ts +0 -30
  273. package/dist/core/geometryHelpers.d.ts.map +0 -1
  274. package/dist/core/memory.d.ts +0 -6
  275. package/dist/core/memory.d.ts.map +0 -1
  276. package/dist/core/typeErrors.d.ts +0 -17
  277. package/dist/core/typeErrors.d.ts.map +0 -1
  278. package/dist/cornerFinder-Ckz-mPHE.js +0 -59
  279. package/dist/cornerFinder-ZmOyOOsh.cjs +0 -58
  280. package/dist/loft-Bhw-FMoL.js +0 -228
  281. package/dist/loft-hp3pc1M7.cjs +0 -227
  282. package/dist/measurement-BoNTUBAp.cjs +0 -135
  283. package/dist/operations/extrude.d.ts +0 -72
  284. package/dist/operations/extrude.d.ts.map +0 -1
  285. package/dist/operations/loft.d.ts +0 -33
  286. package/dist/operations/loft.d.ts.map +0 -1
  287. package/dist/shapeFns-C2SnNvdH.cjs +0 -468
  288. package/dist/shapeFns-FDuKkrDR.js +0 -469
  289. package/dist/topology/colorFns.d.ts.map +0 -1
  290. package/dist/topology/faceTagFns.d.ts.map +0 -1
  291. package/dist/utils/round2.d.ts +0 -3
  292. package/dist/utils/round2.d.ts.map +0 -1
  293. package/dist/utils/round5.d.ts +0 -3
  294. package/dist/utils/round5.d.ts.map +0 -1
@@ -1,468 +0,0 @@
1
- "use strict";
2
- const shapeTypes = require("./shapeTypes-7xEam9Ri.cjs");
3
- const vecOps = require("./vecOps-CjRL1jau.cjs");
4
- const faceFns = require("./faceFns-DB1Fc5gy.cjs");
5
- const result = require("./result-fAX0OZzI.cjs");
6
- function clone(shape) {
7
- return shapeTypes.castShape(result.unwrap(faceFns.downcast(shape.wrapped)));
8
- }
9
- function toBREP(shape) {
10
- return shapeTypes.getKernel().toBREP(shape.wrapped);
11
- }
12
- function getHashCode(shape) {
13
- return shapeTypes.getKernel().hashCode(shape.wrapped, vecOps.HASH_CODE_MAX);
14
- }
15
- function isEmpty(shape) {
16
- return shapeTypes.getKernel().isNull(shape.wrapped);
17
- }
18
- function isSameShape(a, b) {
19
- return shapeTypes.getKernel().isSame(a.wrapped, b.wrapped);
20
- }
21
- function isEqualShape(a, b) {
22
- return shapeTypes.getKernel().isEqual(a.wrapped, b.wrapped);
23
- }
24
- function simplify(shape) {
25
- return shapeTypes.castShape(shapeTypes.getKernel().simplify(shape.wrapped));
26
- }
27
- function collectInputFaceHashes(inputs) {
28
- const hashes = [];
29
- for (const input of inputs) {
30
- const origins = getFaceOrigins(input);
31
- if (!origins) continue;
32
- for (const hash of origins.keys()) {
33
- hashes.push(hash);
34
- }
35
- }
36
- return hashes;
37
- }
38
- function translate(shape, v) {
39
- const inputFaceHashes = collectInputFaceHashes([shape]);
40
- const { shape: resultShape, evolution } = shapeTypes.getKernel().translateWithHistory(
41
- shape.wrapped,
42
- v[0],
43
- v[1],
44
- v[2],
45
- inputFaceHashes,
46
- vecOps.HASH_CODE_MAX
47
- );
48
- const result2 = shapeTypes.castShape(resultShape);
49
- propagateOriginsFromEvolution(evolution, [shape], result2);
50
- return result2;
51
- }
52
- function rotate(shape, angle, position = [0, 0, 0], direction = [0, 0, 1]) {
53
- const inputFaceHashes = collectInputFaceHashes([shape]);
54
- const { shape: resultShape, evolution } = shapeTypes.getKernel().rotateWithHistory(
55
- shape.wrapped,
56
- angle * vecOps.DEG2RAD,
57
- inputFaceHashes,
58
- vecOps.HASH_CODE_MAX,
59
- direction,
60
- position
61
- );
62
- const result2 = shapeTypes.castShape(resultShape);
63
- propagateOriginsFromEvolution(evolution, [shape], result2);
64
- return result2;
65
- }
66
- function mirror(shape, planeNormal = [0, 1, 0], planeOrigin = [0, 0, 0]) {
67
- const inputFaceHashes = collectInputFaceHashes([shape]);
68
- const { shape: resultShape, evolution } = shapeTypes.getKernel().mirrorWithHistory(
69
- shape.wrapped,
70
- planeOrigin,
71
- planeNormal,
72
- inputFaceHashes,
73
- vecOps.HASH_CODE_MAX
74
- );
75
- const result2 = shapeTypes.castShape(resultShape);
76
- propagateOriginsFromEvolution(evolution, [shape], result2);
77
- return result2;
78
- }
79
- function scale(shape, factor, center = [0, 0, 0]) {
80
- const inputFaceHashes = collectInputFaceHashes([shape]);
81
- const { shape: resultShape, evolution } = shapeTypes.getKernel().scaleWithHistory(
82
- shape.wrapped,
83
- center,
84
- factor,
85
- inputFaceHashes,
86
- vecOps.HASH_CODE_MAX
87
- );
88
- const result2 = shapeTypes.castShape(resultShape);
89
- propagateOriginsFromEvolution(evolution, [shape], result2);
90
- return result2;
91
- }
92
- function resize(shape, dimensions, options) {
93
- const bbox = shapeTypes.getKernel().boundingBox(shape.wrapped);
94
- const size = [
95
- bbox.max[0] - bbox.min[0],
96
- bbox.max[1] - bbox.min[1],
97
- bbox.max[2] - bbox.min[2]
98
- ];
99
- const auto = options?.auto === true;
100
- function factor(dim, sz, baseFactor) {
101
- if (dim !== void 0 && sz > 1e-12) return dim / sz;
102
- if (dim === void 0 && auto) return baseFactor;
103
- return 1;
104
- }
105
- let autoFactor = 1;
106
- if (auto) {
107
- if (dimensions[0] !== void 0 && size[0] > 1e-12) autoFactor = dimensions[0] / size[0];
108
- else if (dimensions[1] !== void 0 && size[1] > 1e-12) autoFactor = dimensions[1] / size[1];
109
- else if (dimensions[2] !== void 0 && size[2] > 1e-12) autoFactor = dimensions[2] / size[2];
110
- }
111
- const factors = [
112
- factor(dimensions[0], size[0], autoFactor),
113
- factor(dimensions[1], size[1], autoFactor),
114
- factor(dimensions[2], size[2], autoFactor)
115
- ];
116
- const isUniform = Math.abs(factors[0] - factors[1]) < 1e-6 && Math.abs(factors[1] - factors[2]) < 1e-6;
117
- if (!isUniform) {
118
- throw new Error(
119
- "resize: non-uniform scaling is not supported (WASM build lacks BRepBuilderAPI_GTransform). Use auto: true to scale proportionally, or set all three dimensions to achieve uniform scaling."
120
- );
121
- }
122
- return scale(shape, factors[0]);
123
- }
124
- function parseMatrixInput(input) {
125
- if ("linear" in input) {
126
- return { linear: input.linear, translation: input.translation };
127
- }
128
- const [r0, r1, r2, r3] = input;
129
- const TOL = 1e-10;
130
- if (Math.abs(r3[0]) > TOL || Math.abs(r3[1]) > TOL || Math.abs(r3[2]) > TOL || Math.abs(r3[3] - 1) > TOL) {
131
- throw new Error(
132
- `applyMatrix: invalid bottom row [${String(r3[0])}, ${String(r3[1])}, ${String(r3[2])}, ${String(r3[3])}]. Must be [0, 0, 0, 1] for an affine transform.`
133
- );
134
- }
135
- return {
136
- linear: [r0[0], r0[1], r0[2], r1[0], r1[1], r1[2], r2[0], r2[1], r2[2]],
137
- translation: [r0[3], r1[3], r2[3]]
138
- };
139
- }
140
- function det3x3(m) {
141
- return m[0] * (m[4] * m[8] - m[5] * m[7]) - m[1] * (m[3] * m[8] - m[5] * m[6]) + m[2] * (m[3] * m[7] - m[4] * m[6]);
142
- }
143
- function isOrthogonalMatrix(m) {
144
- const TOL = 1e-8;
145
- const d00 = m[0] * m[0] + m[3] * m[3] + m[6] * m[6];
146
- const d11 = m[1] * m[1] + m[4] * m[4] + m[7] * m[7];
147
- const d22 = m[2] * m[2] + m[5] * m[5] + m[8] * m[8];
148
- const d01 = m[0] * m[1] + m[3] * m[4] + m[6] * m[7];
149
- const d02 = m[0] * m[2] + m[3] * m[5] + m[6] * m[8];
150
- const d12 = m[1] * m[2] + m[4] * m[5] + m[7] * m[8];
151
- if (Math.abs(d01) > TOL) return false;
152
- if (Math.abs(d02) > TOL) return false;
153
- if (Math.abs(d12) > TOL) return false;
154
- if (Math.abs(d00 - d11) > TOL) return false;
155
- if (Math.abs(d00 - d22) > TOL) return false;
156
- return true;
157
- }
158
- function applyMatrix(shape, matrix) {
159
- const { linear, translation } = parseMatrixInput(matrix);
160
- const d = det3x3(linear);
161
- if (Math.abs(d) < 1e-12) {
162
- throw new Error(
163
- "applyMatrix: singular matrix (determinant ≈ 0). Cannot apply a non-invertible transform."
164
- );
165
- }
166
- const orthogonal = isOrthogonalMatrix(linear);
167
- if (orthogonal) {
168
- const inputFaceHashes = collectInputFaceHashes([shape]);
169
- const { shape: resultShape2, evolution } = shapeTypes.getKernel().generalTransformWithHistory(
170
- shape.wrapped,
171
- linear,
172
- translation,
173
- true,
174
- inputFaceHashes,
175
- vecOps.HASH_CODE_MAX
176
- );
177
- const result22 = shapeTypes.castShape(resultShape2);
178
- propagateOriginsFromEvolution(evolution, [shape], result22);
179
- return result22;
180
- }
181
- const resultShape = shapeTypes.getKernel().generalTransformNonOrthogonal(shape.wrapped, linear, translation);
182
- const result2 = shapeTypes.castShape(resultShape);
183
- propagateOriginsByHash([shape], result2);
184
- return result2;
185
- }
186
- function composeTransforms(ops) {
187
- const kernelOps = ops.map((op) => {
188
- if (op.type === "translate") {
189
- return { type: "translate", x: op.v[0], y: op.v[1], z: op.v[2] };
190
- }
191
- return {
192
- type: "rotate",
193
- angle: op.angle,
194
- axis: op.axis,
195
- center: op.center
196
- };
197
- });
198
- const { handle, dispose } = shapeTypes.getKernel().composeTransform(kernelOps);
199
- return { trsf: handle, cleanup: dispose };
200
- }
201
- function transformCopy(shape, composed) {
202
- const inputFaceHashes = collectInputFaceHashes([shape]);
203
- const { shape: resultShape, evolution } = shapeTypes.getKernel().applyComposedTransformWithHistory(
204
- shape.wrapped,
205
- composed.trsf,
206
- inputFaceHashes,
207
- vecOps.HASH_CODE_MAX
208
- );
209
- const result2 = shapeTypes.castShape(resultShape);
210
- propagateOriginsFromEvolution(evolution, [shape], result2);
211
- return result2;
212
- }
213
- const topoCache = /* @__PURE__ */ new WeakMap();
214
- function getOrCreateCache(shape) {
215
- let entry = topoCache.get(shape.wrapped);
216
- if (!entry) {
217
- entry = {};
218
- topoCache.set(shape.wrapped, entry);
219
- }
220
- return entry;
221
- }
222
- function invalidateShapeCache(shape) {
223
- topoCache.delete(shape.wrapped);
224
- }
225
- function getEdges(shape) {
226
- const cache = getOrCreateCache(shape);
227
- if (cache.edges) return cache.edges;
228
- const edges = Array.from(faceFns.iterTopo(shape.wrapped, "edge")).map(
229
- (e) => shapeTypes.castShape(result.unwrap(faceFns.downcast(e)))
230
- );
231
- cache.edges = edges;
232
- return edges;
233
- }
234
- function getFaces(shape) {
235
- const cache = getOrCreateCache(shape);
236
- if (cache.faces) return cache.faces;
237
- const faces = Array.from(faceFns.iterTopo(shape.wrapped, "face")).map(
238
- (e) => shapeTypes.castShape(result.unwrap(faceFns.downcast(e)))
239
- );
240
- cache.faces = faces;
241
- return faces;
242
- }
243
- function getWires(shape) {
244
- const cache = getOrCreateCache(shape);
245
- if (cache.wires) return cache.wires;
246
- const wires = Array.from(faceFns.iterTopo(shape.wrapped, "wire")).map(
247
- (e) => shapeTypes.castShape(result.unwrap(faceFns.downcast(e)))
248
- );
249
- cache.wires = wires;
250
- return wires;
251
- }
252
- function setShapeOrigin(shape, origin) {
253
- const cache = getOrCreateCache(shape);
254
- const map = /* @__PURE__ */ new Map();
255
- for (const f of getFaces(shape)) {
256
- map.set(shapeTypes.getKernel().hashCode(f.wrapped, vecOps.HASH_CODE_MAX), origin);
257
- }
258
- cache.faceOrigins = map;
259
- }
260
- function getFaceOrigins(shape) {
261
- return topoCache.get(shape.wrapped)?.faceOrigins;
262
- }
263
- function propagateOriginsFromEvolution(evolution, inputs, result2) {
264
- const inputOrigins = /* @__PURE__ */ new Map();
265
- for (const input of inputs) {
266
- const origins = getFaceOrigins(input);
267
- if (!origins) continue;
268
- for (const [hash, origin] of origins) {
269
- inputOrigins.set(hash, origin);
270
- }
271
- }
272
- if (inputOrigins.size === 0) return;
273
- const resultMap = /* @__PURE__ */ new Map();
274
- for (const [hash, origin] of inputOrigins) {
275
- if (evolution.deleted.has(hash)) continue;
276
- const modifiedHashes = evolution.modified.get(hash);
277
- if (modifiedHashes && modifiedHashes.length > 0) {
278
- for (const modHash of modifiedHashes) {
279
- resultMap.set(modHash, origin);
280
- }
281
- } else {
282
- resultMap.set(hash, origin);
283
- }
284
- const generatedHashes = evolution.generated.get(hash);
285
- if (generatedHashes) {
286
- for (const genHash of generatedHashes) {
287
- if (!resultMap.has(genHash)) {
288
- resultMap.set(genHash, 0);
289
- }
290
- }
291
- }
292
- }
293
- if (resultMap.size > 0) {
294
- const cache = getOrCreateCache(result2);
295
- cache.faceOrigins = resultMap;
296
- }
297
- }
298
- function propagateOriginsByHash(inputs, result2) {
299
- const lookup = /* @__PURE__ */ new Map();
300
- for (const input of inputs) {
301
- const origins = getFaceOrigins(input);
302
- if (!origins) continue;
303
- for (const [hash, origin] of origins) {
304
- lookup.set(hash, origin);
305
- }
306
- }
307
- if (lookup.size === 0) return;
308
- const kernel = shapeTypes.getKernel();
309
- const resultMap = /* @__PURE__ */ new Map();
310
- const resultFaces = getFaces(result2);
311
- for (const f of resultFaces) {
312
- const hash = kernel.hashCode(f.wrapped, vecOps.HASH_CODE_MAX);
313
- const origin = lookup.get(hash);
314
- if (origin !== void 0) {
315
- resultMap.set(hash, origin);
316
- }
317
- }
318
- if (resultMap.size === 0) {
319
- const inputSigs = [];
320
- for (const input of inputs) {
321
- const origins = getFaceOrigins(input);
322
- if (!origins) continue;
323
- for (const f of getFaces(input)) {
324
- const hash = kernel.hashCode(f.wrapped, vecOps.HASH_CODE_MAX);
325
- const origin = origins.get(hash);
326
- if (origin === void 0) continue;
327
- try {
328
- const bounds = kernel.uvBounds(f.wrapped);
329
- const normal = kernel.surfaceNormal(
330
- f.wrapped,
331
- 0.5 * (bounds.uMin + bounds.uMax),
332
- 0.5 * (bounds.vMin + bounds.vMax)
333
- );
334
- const centroid = kernel.surfaceCenterOfMass(f.wrapped);
335
- inputSigs.push({ origin, normal, centroid });
336
- } catch {
337
- }
338
- }
339
- }
340
- if (inputSigs.length > 0) {
341
- for (const f of resultFaces) {
342
- const hash = kernel.hashCode(f.wrapped, vecOps.HASH_CODE_MAX);
343
- try {
344
- const outBounds = kernel.uvBounds(f.wrapped);
345
- const outNormal = kernel.surfaceNormal(
346
- f.wrapped,
347
- 0.5 * (outBounds.uMin + outBounds.uMax),
348
- 0.5 * (outBounds.vMin + outBounds.vMax)
349
- );
350
- const outCentroid = kernel.surfaceCenterOfMass(f.wrapped);
351
- let bestScore = -Infinity;
352
- let bestOrigin;
353
- for (const inp of inputSigs) {
354
- const dot = outNormal[0] * inp.normal[0] + outNormal[1] * inp.normal[1] + outNormal[2] * inp.normal[2];
355
- if (dot < 0.707) continue;
356
- const dx = outCentroid[0] - inp.centroid[0];
357
- const dy = outCentroid[1] - inp.centroid[1];
358
- const dz = outCentroid[2] - inp.centroid[2];
359
- const distSq = dx * dx + dy * dy + dz * dz;
360
- if (distSq > 100) continue;
361
- const score = dot - distSq / 100;
362
- if (score > bestScore) {
363
- bestScore = score;
364
- bestOrigin = inp.origin;
365
- }
366
- }
367
- if (bestOrigin !== void 0) {
368
- resultMap.set(hash, bestOrigin);
369
- }
370
- } catch {
371
- }
372
- }
373
- }
374
- }
375
- if (resultMap.size > 0) {
376
- const cache = getOrCreateCache(result2);
377
- cache.faceOrigins = resultMap;
378
- }
379
- }
380
- function getVertices(shape) {
381
- const cache = getOrCreateCache(shape);
382
- if (cache.vertices) return cache.vertices;
383
- const vertices = Array.from(faceFns.iterTopo(shape.wrapped, "vertex")).map(
384
- (e) => shapeTypes.castShape(result.unwrap(faceFns.downcast(e)))
385
- );
386
- cache.vertices = vertices;
387
- return vertices;
388
- }
389
- function* iterEdges(shape) {
390
- for (const e of faceFns.iterTopo(shape.wrapped, "edge")) {
391
- yield shapeTypes.castShape(result.unwrap(faceFns.downcast(e)));
392
- }
393
- }
394
- function* iterFaces(shape) {
395
- for (const f of faceFns.iterTopo(shape.wrapped, "face")) {
396
- yield shapeTypes.castShape(result.unwrap(faceFns.downcast(f)));
397
- }
398
- }
399
- function* iterWires(shape) {
400
- for (const w of faceFns.iterTopo(shape.wrapped, "wire")) {
401
- yield shapeTypes.castShape(result.unwrap(faceFns.downcast(w)));
402
- }
403
- }
404
- function* iterVertices(shape) {
405
- for (const v of faceFns.iterTopo(shape.wrapped, "vertex")) {
406
- yield shapeTypes.castShape(result.unwrap(faceFns.downcast(v)));
407
- }
408
- }
409
- function getBounds(shape) {
410
- const cache = getOrCreateCache(shape);
411
- if (cache.bounds) return cache.bounds;
412
- const { min, max } = shapeTypes.getKernel().boundingBox(shape.wrapped);
413
- const bounds = {
414
- xMin: min[0],
415
- xMax: max[0],
416
- yMin: min[1],
417
- yMax: max[1],
418
- zMin: min[2],
419
- zMax: max[2]
420
- };
421
- cache.bounds = bounds;
422
- return bounds;
423
- }
424
- function describe(shape) {
425
- return {
426
- kind: shapeTypes.getShapeKind(shape),
427
- faceCount: getFaces(shape).length,
428
- edgeCount: getEdges(shape).length,
429
- wireCount: getWires(shape).length,
430
- vertexCount: getVertices(shape).length,
431
- valid: shapeTypes.getKernel().isValid(shape.wrapped),
432
- bounds: getBounds(shape)
433
- };
434
- }
435
- function vertexPosition(vertex) {
436
- return shapeTypes.getKernel().vertexPosition(vertex.wrapped);
437
- }
438
- exports.applyMatrix = applyMatrix;
439
- exports.clone = clone;
440
- exports.composeTransforms = composeTransforms;
441
- exports.describe = describe;
442
- exports.getBounds = getBounds;
443
- exports.getEdges = getEdges;
444
- exports.getFaceOrigins = getFaceOrigins;
445
- exports.getFaces = getFaces;
446
- exports.getHashCode = getHashCode;
447
- exports.getVertices = getVertices;
448
- exports.getWires = getWires;
449
- exports.invalidateShapeCache = invalidateShapeCache;
450
- exports.isEmpty = isEmpty;
451
- exports.isEqualShape = isEqualShape;
452
- exports.isSameShape = isSameShape;
453
- exports.iterEdges = iterEdges;
454
- exports.iterFaces = iterFaces;
455
- exports.iterVertices = iterVertices;
456
- exports.iterWires = iterWires;
457
- exports.mirror = mirror;
458
- exports.propagateOriginsByHash = propagateOriginsByHash;
459
- exports.propagateOriginsFromEvolution = propagateOriginsFromEvolution;
460
- exports.resize = resize;
461
- exports.rotate = rotate;
462
- exports.scale = scale;
463
- exports.setShapeOrigin = setShapeOrigin;
464
- exports.simplify = simplify;
465
- exports.toBREP = toBREP;
466
- exports.transformCopy = transformCopy;
467
- exports.translate = translate;
468
- exports.vertexPosition = vertexPosition;