@faicad/faijs 0.29.3 → 0.30.9

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 (614) hide show
  1. package/NOTICE +6 -5
  2. package/dist/api/api-namespace.d.ts +1 -1
  3. package/dist/api/api-namespace.d.ts.map +1 -1
  4. package/dist/api/api-namespace.js +53 -1
  5. package/dist/api/api-namespace.js.map +1 -1
  6. package/dist/api/appearance.d.ts +136 -0
  7. package/dist/api/appearance.d.ts.map +1 -0
  8. package/dist/api/appearance.js +228 -0
  9. package/dist/api/appearance.js.map +1 -0
  10. package/dist/api/assembly/entities.d.ts +1 -1
  11. package/dist/api/assembly/entities.js +1 -1
  12. package/dist/api/assembly/entities.js.map +1 -1
  13. package/dist/api/assembly/index.d.ts +1 -1
  14. package/dist/api/assembly/index.js +1 -1
  15. package/dist/api/assembly/index.js.map +1 -1
  16. package/dist/api/assembly/joints.d.ts +33 -15
  17. package/dist/api/assembly/joints.d.ts.map +1 -1
  18. package/dist/api/assembly/joints.js +31 -13
  19. package/dist/api/assembly/joints.js.map +1 -1
  20. package/dist/api/assembly/preview.d.ts +1 -1
  21. package/dist/api/assembly/preview.js +1 -1
  22. package/dist/api/assembly/preview.js.map +1 -1
  23. package/dist/api/assembly/solve.d.ts +1 -1
  24. package/dist/api/assembly/solve.js +1 -1
  25. package/dist/api/assembly/solve.js.map +1 -1
  26. package/dist/api/assembly/solvers/assembly-tree.d.ts +1 -1
  27. package/dist/api/assembly/solvers/assembly-tree.js +1 -1
  28. package/dist/api/assembly/solvers/assembly-tree.js.map +1 -1
  29. package/dist/api/assembly/solvers/chain-solver.d.ts +2 -2
  30. package/dist/api/assembly/solvers/chain-solver.js.map +1 -1
  31. package/dist/api/assembly/solvers/global-solver.d.ts +1 -2
  32. package/dist/api/assembly/solvers/global-solver.d.ts.map +1 -1
  33. package/dist/api/assembly/solvers/global-solver.js +3 -4
  34. package/dist/api/assembly/solvers/global-solver.js.map +1 -1
  35. package/dist/api/assembly/solvers/joints-kinematics.js +1 -1
  36. package/dist/api/assembly/solvers/joints-kinematics.js.map +1 -1
  37. package/dist/api/assembly/solvers/linalg.d.ts +2 -2
  38. package/dist/api/assembly/solvers/linalg.js +2 -2
  39. package/dist/api/assembly/solvers/linalg.js.map +1 -1
  40. package/dist/api/assembly/solvers/types.d.ts +2 -5
  41. package/dist/api/assembly/solvers/types.d.ts.map +1 -1
  42. package/dist/api/assembly/solvers/types.js +1 -4
  43. package/dist/api/assembly/solvers/types.js.map +1 -1
  44. package/dist/api/boolean.d.ts.map +1 -1
  45. package/dist/api/boolean.js +7 -6
  46. package/dist/api/boolean.js.map +1 -1
  47. package/dist/api/brep-mirror/booleanFns.d.ts +3 -3
  48. package/dist/api/brep-mirror/booleanFns.js +5 -5
  49. package/dist/api/brep-mirror/booleanFns.js.map +1 -1
  50. package/dist/api/brep-mirror/compoundFns.d.ts +1 -1
  51. package/dist/api/brep-mirror/compoundFns.js +4 -4
  52. package/dist/api/brep-mirror/compoundFns.js.map +1 -1
  53. package/dist/api/brep-mirror/healingFns.d.ts +4 -4
  54. package/dist/api/brep-mirror/healingFns.js +4 -4
  55. package/dist/api/brep-mirror/healingFns.js.map +1 -1
  56. package/dist/api/brep-mirror/hullFns.d.ts +2 -2
  57. package/dist/api/brep-mirror/hullFns.js +2 -2
  58. package/dist/api/brep-mirror/hullFns.js.map +1 -1
  59. package/dist/api/brep-mirror/patternFns.d.ts +5 -5
  60. package/dist/api/brep-mirror/patternFns.js +10 -10
  61. package/dist/api/brep-mirror/patternFns.js.map +1 -1
  62. package/dist/api/brep-mirror/primitiveFns.d.ts +4 -4
  63. package/dist/api/brep-mirror/primitiveFns.js +4 -4
  64. package/dist/api/brep-mirror/primitiveFns.js.map +1 -1
  65. package/dist/api/brep-mirror/roofFns.d.ts +3 -3
  66. package/dist/api/brep-mirror/roofFns.js +7 -7
  67. package/dist/api/brep-mirror/roofFns.js.map +1 -1
  68. package/dist/api/brep-mirror/sweepFns.d.ts +7 -7
  69. package/dist/api/brep-mirror/sweepFns.js +14 -14
  70. package/dist/api/brep-mirror/sweepFns.js.map +1 -1
  71. package/dist/api/brep-mirror/threadFns.d.ts +1 -1
  72. package/dist/api/brep-mirror/threadFns.js +1 -1
  73. package/dist/api/brep-mirror/threadFns.js.map +1 -1
  74. package/dist/api/brep-mirror/topologyFns.d.ts +5 -5
  75. package/dist/api/brep-mirror/topologyFns.js +8 -8
  76. package/dist/api/brep-mirror/topologyFns.js.map +1 -1
  77. package/dist/api/brep-operations/booleanFns.d.ts +40 -0
  78. package/dist/api/brep-operations/booleanFns.d.ts.map +1 -0
  79. package/dist/api/brep-operations/booleanFns.js +104 -0
  80. package/dist/api/brep-operations/booleanFns.js.map +1 -0
  81. package/dist/api/brep-operations/brepHelpers.d.ts +55 -0
  82. package/dist/api/brep-operations/brepHelpers.d.ts.map +1 -0
  83. package/dist/api/brep-operations/brepHelpers.js +131 -0
  84. package/dist/api/brep-operations/brepHelpers.js.map +1 -0
  85. package/dist/api/brep-operations/compoundFns.d.ts +46 -0
  86. package/dist/api/brep-operations/compoundFns.d.ts.map +1 -0
  87. package/dist/api/brep-operations/compoundFns.js +299 -0
  88. package/dist/api/brep-operations/compoundFns.js.map +1 -0
  89. package/dist/api/brep-operations/healingFns.d.ts +78 -0
  90. package/dist/api/brep-operations/healingFns.d.ts.map +1 -0
  91. package/dist/api/brep-operations/healingFns.js +294 -0
  92. package/dist/api/brep-operations/healingFns.js.map +1 -0
  93. package/dist/api/brep-operations/hullFns.d.ts +20 -0
  94. package/dist/api/brep-operations/hullFns.d.ts.map +1 -0
  95. package/dist/api/brep-operations/hullFns.js +46 -0
  96. package/dist/api/brep-operations/hullFns.js.map +1 -0
  97. package/dist/api/brep-operations/joinery-brep.d.ts +172 -0
  98. package/dist/api/brep-operations/joinery-brep.d.ts.map +1 -0
  99. package/dist/api/brep-operations/joinery-brep.js +463 -0
  100. package/dist/api/brep-operations/joinery-brep.js.map +1 -0
  101. package/dist/api/brep-operations/patternFns.d.ts +43 -0
  102. package/dist/api/brep-operations/patternFns.d.ts.map +1 -0
  103. package/dist/api/brep-operations/patternFns.js +178 -0
  104. package/dist/api/brep-operations/patternFns.js.map +1 -0
  105. package/dist/api/brep-operations/primitiveFns.d.ts +42 -0
  106. package/dist/api/brep-operations/primitiveFns.d.ts.map +1 -0
  107. package/dist/api/brep-operations/primitiveFns.js +104 -0
  108. package/dist/api/brep-operations/primitiveFns.js.map +1 -0
  109. package/dist/api/brep-operations/roofFns.d.ts +24 -0
  110. package/dist/api/brep-operations/roofFns.d.ts.map +1 -0
  111. package/dist/api/brep-operations/roofFns.js +229 -0
  112. package/dist/api/brep-operations/roofFns.js.map +1 -0
  113. package/dist/api/brep-operations/straightSkeleton.d.ts +36 -0
  114. package/dist/api/brep-operations/straightSkeleton.d.ts.map +1 -0
  115. package/dist/api/brep-operations/straightSkeleton.js +431 -0
  116. package/dist/api/brep-operations/straightSkeleton.js.map +1 -0
  117. package/dist/api/brep-operations/sweepFns.d.ts +60 -0
  118. package/dist/api/brep-operations/sweepFns.d.ts.map +1 -0
  119. package/dist/api/brep-operations/sweepFns.js +323 -0
  120. package/dist/api/brep-operations/sweepFns.js.map +1 -0
  121. package/dist/api/brep-operations/threadFns.d.ts +83 -0
  122. package/dist/api/brep-operations/threadFns.d.ts.map +1 -0
  123. package/dist/api/brep-operations/threadFns.js +138 -0
  124. package/dist/api/brep-operations/threadFns.js.map +1 -0
  125. package/dist/api/brep-operations/topologyFns.d.ts +90 -0
  126. package/dist/api/brep-operations/topologyFns.d.ts.map +1 -0
  127. package/dist/api/brep-operations/topologyFns.js +276 -0
  128. package/dist/api/brep-operations/topologyFns.js.map +1 -0
  129. package/dist/api/brep-topology.d.ts +1 -1
  130. package/dist/api/brep-topology.d.ts.map +1 -1
  131. package/dist/api/brep-topology.js +1 -1
  132. package/dist/api/brep-topology.js.map +1 -1
  133. package/dist/api/brepjs-compat/index.d.ts +1 -1
  134. package/dist/api/brepjs-compat/index.js +3 -3
  135. package/dist/api/brepjs-compat/index.js.map +1 -1
  136. package/dist/api/cadquery-selectors/borrow-bridge.d.ts.map +1 -1
  137. package/dist/api/cadquery-selectors/borrow-bridge.js +3 -4
  138. package/dist/api/cadquery-selectors/borrow-bridge.js.map +1 -1
  139. package/dist/api/curve-sketch/index.d.ts +235 -0
  140. package/dist/api/curve-sketch/index.d.ts.map +1 -0
  141. package/dist/api/curve-sketch/index.js +487 -0
  142. package/dist/api/curve-sketch/index.js.map +1 -0
  143. package/dist/api/engrave.d.ts.map +1 -1
  144. package/dist/api/engrave.js +3 -2
  145. package/dist/api/engrave.js.map +1 -1
  146. package/dist/api/export-brep.d.ts +41 -0
  147. package/dist/api/export-brep.d.ts.map +1 -0
  148. package/dist/api/export-brep.js +58 -0
  149. package/dist/api/export-brep.js.map +1 -0
  150. package/dist/api/export-stl.d.ts +50 -0
  151. package/dist/api/export-stl.d.ts.map +1 -0
  152. package/dist/api/export-stl.js +99 -0
  153. package/dist/api/export-stl.js.map +1 -0
  154. package/dist/api/extrude.d.ts +8 -11
  155. package/dist/api/extrude.d.ts.map +1 -1
  156. package/dist/api/extrude.js +11 -14
  157. package/dist/api/extrude.js.map +1 -1
  158. package/dist/api/fillet-variable.d.ts +2 -2
  159. package/dist/api/fillet-variable.js +2 -2
  160. package/dist/api/fillet-variable.js.map +1 -1
  161. package/dist/api/fillet.d.ts +2 -4
  162. package/dist/api/fillet.d.ts.map +1 -1
  163. package/dist/api/fillet.js +2 -4
  164. package/dist/api/fillet.js.map +1 -1
  165. package/dist/api/generated/2d.d.ts +4 -0
  166. package/dist/api/generated/2d.d.ts.map +1 -1
  167. package/dist/api/generated/2d.js +4 -0
  168. package/dist/api/generated/2d.js.map +1 -1
  169. package/dist/api/generated/core.d.ts +4 -0
  170. package/dist/api/generated/core.d.ts.map +1 -1
  171. package/dist/api/generated/core.js +4 -0
  172. package/dist/api/generated/core.js.map +1 -1
  173. package/dist/api/generated/gear.d.ts +4 -0
  174. package/dist/api/generated/gear.d.ts.map +1 -1
  175. package/dist/api/generated/gear.js +4 -0
  176. package/dist/api/generated/gear.js.map +1 -1
  177. package/dist/api/generated/io.d.ts +4 -0
  178. package/dist/api/generated/io.d.ts.map +1 -1
  179. package/dist/api/generated/io.js +4 -0
  180. package/dist/api/generated/io.js.map +1 -1
  181. package/dist/api/generated/kernel.d.ts +4 -0
  182. package/dist/api/generated/kernel.d.ts.map +1 -1
  183. package/dist/api/generated/kernel.js +4 -0
  184. package/dist/api/generated/kernel.js.map +1 -1
  185. package/dist/api/generated/measurement.d.ts +21 -21
  186. package/dist/api/generated/measurement.d.ts.map +1 -1
  187. package/dist/api/generated/measurement.js +25 -21
  188. package/dist/api/generated/measurement.js.map +1 -1
  189. package/dist/api/generated/ns.d.ts +4 -0
  190. package/dist/api/generated/ns.d.ts.map +1 -1
  191. package/dist/api/generated/ns.js +4 -0
  192. package/dist/api/generated/ns.js.map +1 -1
  193. package/dist/api/generated/operations.d.ts +32 -32
  194. package/dist/api/generated/operations.d.ts.map +1 -1
  195. package/dist/api/generated/operations.js +52 -48
  196. package/dist/api/generated/operations.js.map +1 -1
  197. package/dist/api/generated/projection.d.ts +4 -0
  198. package/dist/api/generated/projection.d.ts.map +1 -1
  199. package/dist/api/generated/projection.js +4 -0
  200. package/dist/api/generated/projection.js.map +1 -1
  201. package/dist/api/generated/query.d.ts +4 -0
  202. package/dist/api/generated/query.d.ts.map +1 -1
  203. package/dist/api/generated/query.js +4 -0
  204. package/dist/api/generated/query.js.map +1 -1
  205. package/dist/api/generated/sketching.d.ts +2 -2
  206. package/dist/api/generated/sketching.d.ts.map +1 -1
  207. package/dist/api/generated/sketching.js +7 -3
  208. package/dist/api/generated/sketching.js.map +1 -1
  209. package/dist/api/generated/text.d.ts +4 -0
  210. package/dist/api/generated/text.d.ts.map +1 -1
  211. package/dist/api/generated/text.js +4 -0
  212. package/dist/api/generated/text.js.map +1 -1
  213. package/dist/api/generated/topology.d.ts +45 -45
  214. package/dist/api/generated/topology.d.ts.map +1 -1
  215. package/dist/api/generated/topology.js +67 -63
  216. package/dist/api/generated/topology.js.map +1 -1
  217. package/dist/api/generated/view.d.ts +4 -0
  218. package/dist/api/generated/view.d.ts.map +1 -1
  219. package/dist/api/generated/view.js +4 -0
  220. package/dist/api/generated/view.js.map +1 -1
  221. package/dist/api/geom-types/constants.d.ts +11 -0
  222. package/dist/api/geom-types/constants.d.ts.map +1 -0
  223. package/dist/api/geom-types/constants.js +11 -0
  224. package/dist/api/geom-types/constants.js.map +1 -0
  225. package/dist/api/geom-types/index.d.ts +21 -0
  226. package/dist/api/geom-types/index.d.ts.map +1 -0
  227. package/dist/api/geom-types/index.js +22 -0
  228. package/dist/api/geom-types/index.js.map +1 -0
  229. package/dist/api/geom-types/planeOps.d.ts +98 -0
  230. package/dist/api/geom-types/planeOps.d.ts.map +1 -0
  231. package/dist/api/geom-types/planeOps.js +170 -0
  232. package/dist/api/geom-types/planeOps.js.map +1 -0
  233. package/dist/api/geom-types/planeTypes.d.ts +24 -0
  234. package/dist/api/geom-types/planeTypes.d.ts.map +1 -0
  235. package/dist/api/geom-types/planeTypes.js +8 -0
  236. package/dist/api/geom-types/planeTypes.js.map +1 -0
  237. package/dist/api/geom-types/types.d.ts +64 -0
  238. package/dist/api/geom-types/types.d.ts.map +1 -0
  239. package/dist/api/geom-types/types.js +48 -0
  240. package/dist/api/geom-types/types.js.map +1 -0
  241. package/dist/api/geom-types/vecOps.d.ts +124 -0
  242. package/dist/api/geom-types/vecOps.d.ts.map +1 -0
  243. package/dist/api/geom-types/vecOps.js +202 -0
  244. package/dist/api/geom-types/vecOps.js.map +1 -0
  245. package/dist/api/geom.d.ts.map +1 -1
  246. package/dist/api/geom.js +6 -5
  247. package/dist/api/geom.js.map +1 -1
  248. package/dist/api/half-space.d.ts +56 -0
  249. package/dist/api/half-space.d.ts.map +1 -0
  250. package/dist/api/half-space.js +82 -0
  251. package/dist/api/half-space.js.map +1 -0
  252. package/dist/api/helix.d.ts +10 -1
  253. package/dist/api/helix.d.ts.map +1 -1
  254. package/dist/api/helix.js +19 -3
  255. package/dist/api/helix.js.map +1 -1
  256. package/dist/api/import-step.d.ts.map +1 -1
  257. package/dist/api/import-step.js +28 -0
  258. package/dist/api/import-step.js.map +1 -1
  259. package/dist/api/index.d.ts +19 -6
  260. package/dist/api/index.d.ts.map +1 -1
  261. package/dist/api/index.js +31 -8
  262. package/dist/api/index.js.map +1 -1
  263. package/dist/api/internal/compat-op.d.ts +4 -30
  264. package/dist/api/internal/compat-op.d.ts.map +1 -1
  265. package/dist/api/internal/compat-op.js +10 -42
  266. package/dist/api/internal/compat-op.js.map +1 -1
  267. package/dist/api/internal/compat-projection.d.ts +5 -5
  268. package/dist/api/internal/compat-projection.js +5 -5
  269. package/dist/api/internal/compat-projection.js.map +1 -1
  270. package/dist/api/internal/dual-form-args.d.ts +0 -2
  271. package/dist/api/internal/dual-form-args.d.ts.map +1 -1
  272. package/dist/api/internal/dual-form-args.js +1 -3
  273. package/dist/api/internal/dual-form-args.js.map +1 -1
  274. package/dist/api/internal/l3-bridge.d.ts +5 -37
  275. package/dist/api/internal/l3-bridge.d.ts.map +1 -1
  276. package/dist/api/internal/l3-bridge.js +7 -76
  277. package/dist/api/internal/l3-bridge.js.map +1 -1
  278. package/dist/api/internal/profile-wire.d.ts +1 -1
  279. package/dist/api/internal/profile-wire.js +1 -1
  280. package/dist/api/internal/profile-wire.js.map +1 -1
  281. package/dist/api/internal/result-unwrap.d.ts +4 -6
  282. package/dist/api/internal/result-unwrap.d.ts.map +1 -1
  283. package/dist/api/internal/result-unwrap.js +4 -6
  284. package/dist/api/internal/result-unwrap.js.map +1 -1
  285. package/dist/api/knurl.d.ts.map +1 -1
  286. package/dist/api/knurl.js +5 -3
  287. package/dist/api/knurl.js.map +1 -1
  288. package/dist/api/loft.d.ts +2 -2
  289. package/dist/api/loft.d.ts.map +1 -1
  290. package/dist/api/loft.js +2 -2
  291. package/dist/api/loft.js.map +1 -1
  292. package/dist/api/measurement/index.d.ts +3 -3
  293. package/dist/api/measurement/index.js +3 -3
  294. package/dist/api/measurement/index.js.map +1 -1
  295. package/dist/api/meta.d.ts +91 -0
  296. package/dist/api/meta.d.ts.map +1 -0
  297. package/dist/api/meta.js +97 -0
  298. package/dist/api/meta.js.map +1 -0
  299. package/dist/api/offset2d.d.ts +49 -0
  300. package/dist/api/offset2d.d.ts.map +1 -0
  301. package/dist/api/offset2d.js +86 -0
  302. package/dist/api/offset2d.js.map +1 -0
  303. package/dist/api/pattern.js +3 -3
  304. package/dist/api/pattern.js.map +1 -1
  305. package/dist/api/primitives.d.ts.map +1 -1
  306. package/dist/api/primitives.js +124 -8
  307. package/dist/api/primitives.js.map +1 -1
  308. package/dist/api/replicate.d.ts +2 -2
  309. package/dist/api/replicate.d.ts.map +1 -1
  310. package/dist/api/replicate.js +12 -12
  311. package/dist/api/replicate.js.map +1 -1
  312. package/dist/api/result.d.ts +1 -1
  313. package/dist/api/result.js +1 -1
  314. package/dist/api/result.js.map +1 -1
  315. package/dist/api/revolve.d.ts +2 -2
  316. package/dist/api/revolve.js +3 -3
  317. package/dist/api/revolve.js.map +1 -1
  318. package/dist/api/screw.d.ts +1 -1
  319. package/dist/api/screw.d.ts.map +1 -1
  320. package/dist/api/screw.js +5 -4
  321. package/dist/api/screw.js.map +1 -1
  322. package/dist/api/sdf.d.ts.map +1 -1
  323. package/dist/api/sdf.js +3 -2
  324. package/dist/api/sdf.js.map +1 -1
  325. package/dist/api/shape-type/index.d.ts +141 -0
  326. package/dist/api/shape-type/index.d.ts.map +1 -0
  327. package/dist/api/shape-type/index.js +182 -0
  328. package/dist/api/shape-type/index.js.map +1 -0
  329. package/dist/api/shell.d.ts +2 -2
  330. package/dist/api/shell.js +2 -2
  331. package/dist/api/shell.js.map +1 -1
  332. package/dist/api/solid-from-faces.d.ts +45 -0
  333. package/dist/api/solid-from-faces.d.ts.map +1 -0
  334. package/dist/api/solid-from-faces.js +72 -0
  335. package/dist/api/solid-from-faces.js.map +1 -0
  336. package/dist/api/solid-offset/index.d.ts +67 -0
  337. package/dist/api/solid-offset/index.d.ts.map +1 -0
  338. package/dist/api/solid-offset/index.js +132 -0
  339. package/dist/api/solid-offset/index.js.map +1 -0
  340. package/dist/api/surface/arg-spec.d.ts +35 -33
  341. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  342. package/dist/api/surface/arg-spec.js +222 -224
  343. package/dist/api/surface/arg-spec.js.map +1 -1
  344. package/dist/api/surface-face/index.d.ts +104 -0
  345. package/dist/api/surface-face/index.d.ts.map +1 -0
  346. package/dist/api/surface-face/index.js +217 -0
  347. package/dist/api/surface-face/index.js.map +1 -0
  348. package/dist/api/surface.d.ts +44 -0
  349. package/dist/api/surface.d.ts.map +1 -0
  350. package/dist/api/surface.js +66 -0
  351. package/dist/api/surface.js.map +1 -0
  352. package/dist/api/sweep.d.ts +59 -9
  353. package/dist/api/sweep.d.ts.map +1 -1
  354. package/dist/api/sweep.js +11 -6
  355. package/dist/api/sweep.js.map +1 -1
  356. package/dist/api/thicken.d.ts +1 -1
  357. package/dist/api/thicken.js +1 -1
  358. package/dist/api/thicken.js.map +1 -1
  359. package/dist/api/transform.d.ts +5 -5
  360. package/dist/api/transform.d.ts.map +1 -1
  361. package/dist/api/transform.js +11 -10
  362. package/dist/api/transform.js.map +1 -1
  363. package/dist/api/view/cameraFns.d.ts +1 -1
  364. package/dist/api/view/cameraFns.d.ts.map +1 -1
  365. package/dist/api/view/cameraFns.js +1 -1
  366. package/dist/api/view/cameraFns.js.map +1 -1
  367. package/dist/api/view/index.d.ts +0 -2
  368. package/dist/api/view/index.d.ts.map +1 -1
  369. package/dist/api/view/index.js +0 -2
  370. package/dist/api/view/index.js.map +1 -1
  371. package/dist/api/view/projectionPlanes.d.ts +1 -1
  372. package/dist/api/view/projectionPlanes.d.ts.map +1 -1
  373. package/dist/api/view/projectionPlanes.js.map +1 -1
  374. package/dist/api/view/view-camera.d.ts +7 -9
  375. package/dist/api/view/view-camera.d.ts.map +1 -1
  376. package/dist/api/view/view-camera.js +4 -6
  377. package/dist/api/view/view-camera.js.map +1 -1
  378. package/dist/api/view/view-projection.d.ts +0 -2
  379. package/dist/api/view/view-projection.d.ts.map +1 -1
  380. package/dist/api/view/view-projection.js +0 -2
  381. package/dist/api/view/view-projection.js.map +1 -1
  382. package/dist/api/view/view-sheet.d.ts +0 -2
  383. package/dist/api/view/view-sheet.d.ts.map +1 -1
  384. package/dist/api/view/view-sheet.js +0 -2
  385. package/dist/api/view/view-sheet.js.map +1 -1
  386. package/dist/api/view-export/index.d.ts +97 -0
  387. package/dist/api/view-export/index.d.ts.map +1 -0
  388. package/dist/api/view-export/index.js +118 -0
  389. package/dist/api/view-export/index.js.map +1 -0
  390. package/dist/brep/brep-ops.d.ts +89 -1
  391. package/dist/brep/brep-ops.d.ts.map +1 -1
  392. package/dist/brep/brep-ops.js +204 -13
  393. package/dist/brep/brep-ops.js.map +1 -1
  394. package/dist/brep/brep-topology.d.ts +20 -0
  395. package/dist/brep/brep-topology.d.ts.map +1 -1
  396. package/dist/brep/brep-topology.js +46 -0
  397. package/dist/brep/brep-topology.js.map +1 -1
  398. package/dist/brep/engine/adapters/occt.d.ts +1 -1
  399. package/dist/brep/engine/adapters/occt.js +8 -8
  400. package/dist/brep/engine/adapters/occt.js.map +1 -1
  401. package/dist/brep/engine/primitives.d.ts +2 -3
  402. package/dist/brep/engine/primitives.d.ts.map +1 -1
  403. package/dist/brep/engine/primitives.js +1 -2
  404. package/dist/brep/engine/primitives.js.map +1 -1
  405. package/dist/brep/engine/registry.d.ts +1 -1
  406. package/dist/brep/engine/registry.js +1 -1
  407. package/dist/brep/engine/registry.js.map +1 -1
  408. package/dist/brep/engine/types.d.ts +2 -2
  409. package/dist/brep/engine/types.js.map +1 -1
  410. package/dist/brep/export/export-model.d.ts +40 -0
  411. package/dist/brep/export/export-model.d.ts.map +1 -1
  412. package/dist/brep/export/export-model.js +268 -25
  413. package/dist/brep/export/export-model.js.map +1 -1
  414. package/dist/brep/export/step-meta-header.d.ts +102 -0
  415. package/dist/brep/export/step-meta-header.d.ts.map +1 -0
  416. package/dist/brep/export/step-meta-header.js +225 -0
  417. package/dist/brep/export/step-meta-header.js.map +1 -0
  418. package/dist/brep/export/step.d.ts +5 -1
  419. package/dist/brep/export/step.d.ts.map +1 -1
  420. package/dist/brep/export/step.js +11 -2
  421. package/dist/brep/export/step.js.map +1 -1
  422. package/dist/brep/handle-bridge.d.ts +2 -2
  423. package/dist/brep/handle-bridge.js +2 -2
  424. package/dist/brep/handle-bridge.js.map +1 -1
  425. package/dist/brep/index.d.ts +6 -3
  426. package/dist/brep/index.d.ts.map +1 -1
  427. package/dist/brep/index.js +6 -3
  428. package/dist/brep/index.js.map +1 -1
  429. package/dist/brepkit-kernel/brepkitKernel.d.ts +1 -1
  430. package/dist/brepkit-kernel/brepkitKernel.js +2 -2
  431. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  432. package/dist/browser.d.ts +2 -2
  433. package/dist/browser.d.ts.map +1 -1
  434. package/dist/browser.js +5 -4
  435. package/dist/browser.js.map +1 -1
  436. package/dist/cad-runtime/admit-compat-lib.d.ts +3 -10
  437. package/dist/cad-runtime/admit-compat-lib.d.ts.map +1 -1
  438. package/dist/cad-runtime/admit-compat-lib.js +3 -9
  439. package/dist/cad-runtime/admit-compat-lib.js.map +1 -1
  440. package/dist/cad-runtime/backend-dispatch.js +12 -3
  441. package/dist/cad-runtime/backend-dispatch.js.map +1 -1
  442. package/dist/cad-runtime/direct-executor.d.ts +6 -3
  443. package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
  444. package/dist/cad-runtime/direct-executor.js +31 -9
  445. package/dist/cad-runtime/direct-executor.js.map +1 -1
  446. package/dist/cad-runtime/interp/env.d.ts +1 -1
  447. package/dist/cad-runtime/interp/env.js.map +1 -1
  448. package/dist/cad-runtime/lib-id.d.ts +0 -2
  449. package/dist/cad-runtime/lib-id.d.ts.map +1 -1
  450. package/dist/cad-runtime/lib-id.js +0 -2
  451. package/dist/cad-runtime/lib-id.js.map +1 -1
  452. package/dist/cad-runtime/live-shapes.d.ts +3 -5
  453. package/dist/cad-runtime/live-shapes.d.ts.map +1 -1
  454. package/dist/cad-runtime/live-shapes.js +8 -10
  455. package/dist/cad-runtime/live-shapes.js.map +1 -1
  456. package/dist/cad-runtime/ports.d.ts +3 -3
  457. package/dist/cad-runtime/ports.js.map +1 -1
  458. package/dist/cad-runtime/runtime.d.ts +21 -7
  459. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  460. package/dist/cad-runtime/runtime.js +45 -6
  461. package/dist/cad-runtime/runtime.js.map +1 -1
  462. package/dist/define-op.d.ts +4 -3
  463. package/dist/define-op.d.ts.map +1 -1
  464. package/dist/define-op.js +65 -3
  465. package/dist/define-op.js.map +1 -1
  466. package/dist/geometry2d/bridge/plane.d.ts +1 -1
  467. package/dist/geometry2d/bridge/plane.js +1 -1
  468. package/dist/geometry2d/bridge/plane.js.map +1 -1
  469. package/dist/geometry2d/curve2d.d.ts +1 -1
  470. package/dist/geometry2d/curve2d.js +1 -1
  471. package/dist/geometry2d/curve2d.js.map +1 -1
  472. package/dist/index.d.ts +1 -1
  473. package/dist/index.d.ts.map +1 -1
  474. package/dist/index.js +10 -4
  475. package/dist/index.js.map +1 -1
  476. package/dist/io/fai-zip/container-read.d.ts +16 -0
  477. package/dist/io/fai-zip/container-read.d.ts.map +1 -1
  478. package/dist/io/fai-zip/container-read.js +22 -0
  479. package/dist/io/fai-zip/container-read.js.map +1 -1
  480. package/dist/io/fai-zip/index.d.ts +1 -1
  481. package/dist/io/fai-zip/index.d.ts.map +1 -1
  482. package/dist/io/fai-zip/index.js +1 -1
  483. package/dist/io/fai-zip/index.js.map +1 -1
  484. package/dist/lang/code-to-args.d.ts.map +1 -1
  485. package/dist/lang/code-to-args.js +10 -1
  486. package/dist/lang/code-to-args.js.map +1 -1
  487. package/dist/lang/determinism-scanner.d.ts.map +1 -1
  488. package/dist/lang/determinism-scanner.js +22 -9
  489. package/dist/lang/determinism-scanner.js.map +1 -1
  490. package/dist/lang/metadata-extractor.d.ts +27 -6
  491. package/dist/lang/metadata-extractor.d.ts.map +1 -1
  492. package/dist/lang/metadata-extractor.js +90 -29
  493. package/dist/lang/metadata-extractor.js.map +1 -1
  494. package/dist/lang/parse-error.d.ts +4 -0
  495. package/dist/lang/parse-error.d.ts.map +1 -1
  496. package/dist/lang/parse-error.js.map +1 -1
  497. package/dist/lang/security-scanner.d.ts +27 -2
  498. package/dist/lang/security-scanner.d.ts.map +1 -1
  499. package/dist/lang/security-scanner.js +29 -2
  500. package/dist/lang/security-scanner.js.map +1 -1
  501. package/dist/lang/source-edit.d.ts +2 -2
  502. package/dist/lang/source-edit.js.map +1 -1
  503. package/dist/lang/symbol-table.generated.d.ts +36 -0
  504. package/dist/lang/symbol-table.generated.d.ts.map +1 -1
  505. package/dist/lang/symbol-table.generated.js +36 -0
  506. package/dist/lang/symbol-table.generated.js.map +1 -1
  507. package/dist/lang/types.d.ts +5 -6
  508. package/dist/lang/types.d.ts.map +1 -1
  509. package/dist/lang/types.js.map +1 -1
  510. package/dist/mesh/import-model.d.ts +94 -0
  511. package/dist/mesh/import-model.d.ts.map +1 -0
  512. package/dist/mesh/import-model.js +15 -0
  513. package/dist/mesh/import-model.js.map +1 -0
  514. package/dist/mesh/index.d.ts +19 -58
  515. package/dist/mesh/index.d.ts.map +1 -1
  516. package/dist/mesh/index.js +19 -70
  517. package/dist/mesh/index.js.map +1 -1
  518. package/dist/mesh/io.d.ts +39 -16
  519. package/dist/mesh/io.d.ts.map +1 -1
  520. package/dist/mesh/io.js +151 -22
  521. package/dist/mesh/io.js.map +1 -1
  522. package/dist/mesh/primitives.d.ts.map +1 -1
  523. package/dist/mesh/primitives.js +42 -7
  524. package/dist/mesh/primitives.js.map +1 -1
  525. package/dist/mesh/threemf-bambu.d.ts +12 -1
  526. package/dist/mesh/threemf-bambu.d.ts.map +1 -1
  527. package/dist/mesh/threemf-bambu.js +68 -16
  528. package/dist/mesh/threemf-bambu.js.map +1 -1
  529. package/dist/mesh/threemf-loader.d.ts +37 -1
  530. package/dist/mesh/threemf-loader.d.ts.map +1 -1
  531. package/dist/mesh/threemf-loader.js +205 -14
  532. package/dist/mesh/threemf-loader.js.map +1 -1
  533. package/dist/mesh/transform.d.ts +1 -1
  534. package/dist/mesh/transform.js +1 -1
  535. package/dist/mesh/transform.js.map +1 -1
  536. package/dist/mesh/types.d.ts +43 -5
  537. package/dist/mesh/types.d.ts.map +1 -1
  538. package/dist/mesh/types.js.map +1 -1
  539. package/dist/node-host/cli.d.ts +49 -1
  540. package/dist/node-host/cli.d.ts.map +1 -1
  541. package/dist/node-host/cli.js +125 -19
  542. package/dist/node-host/cli.js.map +1 -1
  543. package/dist/node-host/execute-script.d.ts +55 -0
  544. package/dist/node-host/execute-script.d.ts.map +1 -0
  545. package/dist/node-host/execute-script.js +46 -0
  546. package/dist/node-host/execute-script.js.map +1 -0
  547. package/dist/node.d.ts +2 -0
  548. package/dist/node.d.ts.map +1 -1
  549. package/dist/node.js +3 -0
  550. package/dist/node.js.map +1 -1
  551. package/dist/occt-kernel/generated/occtPlatform.generated.d.ts +260 -0
  552. package/dist/occt-kernel/generated/occtPlatform.generated.d.ts.map +1 -0
  553. package/dist/occt-kernel/generated/occtPlatform.generated.js +875 -0
  554. package/dist/occt-kernel/generated/occtPlatform.generated.js.map +1 -0
  555. package/dist/occt-kernel/highLevelApi.d.ts +4 -1
  556. package/dist/occt-kernel/highLevelApi.d.ts.map +1 -1
  557. package/dist/occt-kernel/highLevelApi.js +4 -2
  558. package/dist/occt-kernel/highLevelApi.js.map +1 -1
  559. package/dist/occt-kernel/hullGeometry.d.ts +2 -2
  560. package/dist/occt-kernel/hullGeometry.js +2 -3
  561. package/dist/occt-kernel/hullGeometry.js.map +1 -1
  562. package/dist/occt-kernel/hullOps.d.ts +3 -3
  563. package/dist/occt-kernel/hullOps.js +4 -4
  564. package/dist/occt-kernel/hullOps.js.map +1 -1
  565. package/dist/occt-kernel/occt-primitives.d.ts.map +1 -1
  566. package/dist/occt-kernel/occt-primitives.js +32 -5
  567. package/dist/occt-kernel/occt-primitives.js.map +1 -1
  568. package/dist/occt-kernel/occtKernel.d.ts +1 -1
  569. package/dist/occt-kernel/occtKernel.d.ts.map +1 -1
  570. package/dist/occt-kernel/occtKernel.js +19 -1
  571. package/dist/occt-kernel/occtKernel.js.map +1 -1
  572. package/dist/occt-kernel/stepMetaParser.d.ts +44 -0
  573. package/dist/occt-kernel/stepMetaParser.d.ts.map +1 -0
  574. package/dist/occt-kernel/stepMetaParser.js +166 -0
  575. package/dist/occt-kernel/stepMetaParser.js.map +1 -0
  576. package/dist/occt-scan/recognize.d.ts +58 -0
  577. package/dist/occt-scan/recognize.d.ts.map +1 -0
  578. package/dist/occt-scan/recognize.js +216 -0
  579. package/dist/occt-scan/recognize.js.map +1 -0
  580. package/dist/primitives/brep-primitives.js +7 -7
  581. package/dist/primitives/brep-primitives.js.map +1 -1
  582. package/dist/result/bug.d.ts +1 -1
  583. package/dist/result/bug.js +1 -1
  584. package/dist/result/bug.js.map +1 -1
  585. package/dist/result/errors.d.ts +2 -2
  586. package/dist/result/errors.d.ts.map +1 -1
  587. package/dist/result/errors.js +1 -1
  588. package/dist/result/errors.js.map +1 -1
  589. package/dist/result/vec3.d.ts +1 -1
  590. package/dist/result/vec3.js +1 -1
  591. package/dist/result/vec3.js.map +1 -1
  592. package/dist/runtime-state.d.ts +16 -0
  593. package/dist/runtime-state.d.ts.map +1 -1
  594. package/dist/runtime-state.js +27 -0
  595. package/dist/runtime-state.js.map +1 -1
  596. package/dist/script-globals.d.ts +24 -0
  597. package/dist/script-globals.d.ts.map +1 -0
  598. package/dist/script-globals.js +24 -0
  599. package/dist/script-globals.js.map +1 -0
  600. package/dist/shape.d.ts +35 -3
  601. package/dist/shape.d.ts.map +1 -1
  602. package/dist/shape.js +44 -2
  603. package/dist/shape.js.map +1 -1
  604. package/dist/step/stepMetaParser.d.ts +55 -0
  605. package/dist/step/stepMetaParser.d.ts.map +1 -0
  606. package/dist/step/stepMetaParser.js +177 -0
  607. package/dist/step/stepMetaParser.js.map +1 -0
  608. package/dist/topology/naming/lineage.d.ts +3 -2
  609. package/dist/topology/naming/lineage.d.ts.map +1 -1
  610. package/dist/topology/naming/lineage.js.map +1 -1
  611. package/dist/weapp.d.ts +1 -1
  612. package/dist/weapp.js +1 -1
  613. package/dist/weapp.js.map +1 -1
  614. package/package.json +9 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"occtPlatform.generated.js","sourceRoot":"","sources":["../../../src/occt-kernel/generated/occtPlatform.generated.ts"],"names":[],"mappings":"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","sourcesContent":["// GENERATED FILE — DO NOT EDIT MANUALLY\n// Source: occt-wasm/dist/index.d.ts\n// occt-wasm version: 5.6.0\n// upstream d.ts hash: 056391ba46f1d6af\n// Generator: packages/core/scripts/gen-occt-platform.ts\n//\n// L2 平台直通面(OcctPlatformApi):occt 专属、1:1 覆盖、生成式。\n// 每个薄封装统一 checkpoint() → 调用 → releaseSince(mark),中间句柄不泄漏,\n// 返回的 ShapeHandle 交调用方 release。\n//\n// 生成器从 index.d.ts 直接产出,「全部能力可用」是结构性保证——\n// 上游加方法 → 生成器产出 → 类型系统可见,不存在「人忘了接」的环节。\n// 扫描器(scan-occt-wasm-surface.ts)只做兜底校验。\n\nimport type { OcctKernel } from 'occt-wasm'\nexport { BooleanOp, BooleanGlue, JoinType, SweepMode, SweepLaw, SweepContact, TransitionMode, OcctErrorCode } from 'occt-wasm'\nimport type { ShapeHandle, Vec3, Mesh, EdgeData, BoundingBox, TessellateOptions, WireframeOptions, SurfaceKind, CurveKind, UVBounds, EvolutionData, NurbsCurveData, CurvatureData, MeshBatchData, ShapeQueryResult, ProjectionData, BooleanOpOptions, SweepFullOptions, SweepAdvancedOptions, SweepOrientedOptions, AlignAnchor, ViewName, PngViewOptions, MultiviewPngOptions, ShapeType, ShapeOrientation, PointClassification, XCAFDocument, MultiviewSvgOptions, SvgViewOptions, BooleanOp, JoinType, SweepMode, TransitionMode } from 'occt-wasm'\nexport type { ShapeHandle, Vec3, Mesh, EdgeData, BoundingBox, TessellateOptions, WireframeOptions, SurfaceKind, CurveKind, UVBounds, EvolutionData, NurbsCurveData, CurvatureData, MeshBatchData, ShapeQueryResult, ProjectionData, BooleanOpOptions, SweepFullOptions, SweepAdvancedOptions, SweepOrientedOptions, AlignAnchor, ViewName, PngViewOptions, MultiviewPngOptions, ShapeType, ShapeOrientation, PointClassification, XCAFDocument, MultiviewSvgOptions, SvgViewOptions } from 'occt-wasm'\n\n/**\n * OcctPlatformApi — occt 专属 1:1 平台直通面。\n *\n * 覆盖 OcctKernel 全部公开方法(豁免条目除外),每方法签名与上游一致。\n * 薄封装统一做 checkpoint/releaseSince 句柄清理:中间产生的临时句柄\n * 自动释放,返回的 ShapeHandle 由调用方负责 release。\n *\n * 这一层是「能力可用」的结构性保证——不等于「已被 op 层集成」。\n * op 层是否使用某方法由 scan-occt-wasm-surface 的 integrated 维统计。\n */\nexport interface OcctPlatformApi {\n makeBox(dx: number, dy: number, dz: number): ShapeHandle\n makeBoxFromCorners(corner1: Vec3, corner2: Vec3): ShapeHandle\n makeCylinder(radius: number, height: number): ShapeHandle\n makeSphere(radius: number): ShapeHandle\n makeCone(r1: number, r2: number, height: number): ShapeHandle\n makeTorus(majorRadius: number, minorRadius: number): ShapeHandle\n halfSpace(origin: Vec3, normal: Vec3): ShapeHandle\n makeEllipsoid(rx: number, ry: number, rz: number): ShapeHandle\n makeRectangle(width: number, height: number): ShapeHandle\n fuse(a: ShapeHandle, b: ShapeHandle): ShapeHandle\n cut(a: ShapeHandle, b: ShapeHandle): ShapeHandle\n common(a: ShapeHandle, b: ShapeHandle): ShapeHandle\n intersect(a: ShapeHandle, b: ShapeHandle): ShapeHandle\n section(a: ShapeHandle, b: ShapeHandle): ShapeHandle\n sectionPlane(shape: ShapeHandle, origin: Vec3, normal: Vec3): ShapeHandle\n fuseAll(shapes: ShapeHandle[]): ShapeHandle\n cutAll(shape: ShapeHandle, tools: ShapeHandle[]): ShapeHandle\n split(shape: ShapeHandle, tools: ShapeHandle[]): ShapeHandle\n intersectionCells(shapes: ShapeHandle[]): ShapeHandle\n extrude(shape: ShapeHandle, dx: number, dy: number, dz: number): ShapeHandle\n revolve(shape: ShapeHandle, axis: {\n point: Vec3;\n direction: Vec3;\n }, angleRad: number): ShapeHandle\n fillet(solid: ShapeHandle, edges: ShapeHandle[], radius: number): ShapeHandle\n chamfer(solid: ShapeHandle, edges: ShapeHandle[], distance: number): ShapeHandle\n chamferDistAngle(solid: ShapeHandle, edges: ShapeHandle[], distance: number, angleDeg: number): ShapeHandle\n chamferAsymmetric(solid: ShapeHandle, edge: ShapeHandle, distance1: number, distance2: number, referenceFace?: ShapeHandle): ShapeHandle\n shell(solid: ShapeHandle, facesToRemove: ShapeHandle[], thickness: number, tolerance: number, joinType?: JoinType.Arc | JoinType.Intersection): ShapeHandle\n offset(solid: ShapeHandle, distance: number, tolerance: number, joinType?: JoinType.Arc | JoinType.Intersection): ShapeHandle\n draft(shape: ShapeHandle, face: ShapeHandle, angleRad: number, direction: Vec3): ShapeHandle\n pipe(profile: ShapeHandle, spine: ShapeHandle): ShapeHandle\n simplePipe(profile: ShapeHandle, spine: ShapeHandle): ShapeHandle\n loft(wires: ShapeHandle[], isSolid: boolean, ruled: boolean): ShapeHandle\n loftWithVertices(wires: ShapeHandle[], isSolid: boolean, ruled: boolean, startVertex: ShapeHandle, endVertex: ShapeHandle): ShapeHandle\n sweep(wire: ShapeHandle, spine: ShapeHandle, transitionMode?: TransitionMode): ShapeHandle\n sweepPipeShell(profile: ShapeHandle, spine: ShapeHandle, freenet?: boolean, smooth?: boolean): ShapeHandle\n sweepOriented(profile: ShapeHandle, spine: ShapeHandle, mode?: SweepMode, up?: Vec3, auxSpine?: ShapeHandle, options?: SweepOrientedOptions): ShapeHandle\n sweepAdvanced(profile: ShapeHandle, spine: ShapeHandle, options?: SweepAdvancedOptions): ShapeHandle\n sweepFull(profile: ShapeHandle, spine: ShapeHandle, options?: SweepFullOptions): ShapeHandle\n draftPrism(shape: ShapeHandle, dx: number, dy: number, dz: number, angleDeg: number): ShapeHandle\n makeVertex(x: number, y: number, z: number): ShapeHandle\n makeEdge(v1: ShapeHandle, v2: ShapeHandle): ShapeHandle\n makeLineEdge(start: Vec3, end: Vec3): ShapeHandle\n makeCircleEdge(center: Vec3, normal: Vec3, radius: number): ShapeHandle\n makeCircleArc(center: Vec3, normal: Vec3, radius: number, startAngle: number, endAngle: number): ShapeHandle\n makeArcEdge(start: Vec3, mid: Vec3, end: Vec3): ShapeHandle\n makeEllipseEdge(center: Vec3, normal: Vec3, majorRadius: number, minorRadius: number): ShapeHandle\n makeEllipseArc(center: Vec3, normal: Vec3, majorRadius: number, minorRadius: number, startAngle: number, endAngle: number): ShapeHandle\n makeBezierEdge(controlPoints: Vec3[]): ShapeHandle\n makeBSplineEdge(poles: number[], weights: number[], knots: number[], multiplicities: number[], degree: number, periodic?: boolean): ShapeHandle\n makeTangentArc(start: Vec3, tangent: Vec3, end: Vec3): ShapeHandle\n makeHelixWire(origin: Vec3, axis: Vec3, pitch: number, height: number, radius: number): ShapeHandle\n makeHelixWireHanded(origin: Vec3, axis: Vec3, pitch: number, height: number, radius: number, leftHanded?: boolean): ShapeHandle\n makeWire(edges: ShapeHandle[]): ShapeHandle\n makeFace(wire: ShapeHandle): ShapeHandle\n makeNonPlanarFace(wire: ShapeHandle): ShapeHandle\n addHolesInFace(face: ShapeHandle, holeWires: ShapeHandle[]): ShapeHandle\n removeHolesFromFace(face: ShapeHandle, holeIndices: number[]): ShapeHandle\n makeSolid(shell: ShapeHandle): ShapeHandle\n sew(shapes: ShapeHandle[], tolerance?: number): ShapeHandle\n sewAndSolidify(faces: ShapeHandle[], tolerance?: number): ShapeHandle\n buildSolidFromFaces(faces: ShapeHandle[], tolerance?: number): ShapeHandle\n makeCompound(shapes: ShapeHandle[]): ShapeHandle\n buildTriFace(a: Vec3, b: Vec3, c: Vec3): ShapeHandle\n makeFaceOnSurface(face: ShapeHandle, wire: ShapeHandle): ShapeHandle\n makeNullShape(): ShapeHandle\n translate(shape: ShapeHandle, dx: number, dy: number, dz: number): ShapeHandle\n alignX(shape: ShapeHandle, target?: number, anchor?: AlignAnchor): ShapeHandle\n alignY(shape: ShapeHandle, target?: number, anchor?: AlignAnchor): ShapeHandle\n alignZ(shape: ShapeHandle, target?: number, anchor?: AlignAnchor): ShapeHandle\n rotate(shape: ShapeHandle, axis: {\n point: Vec3;\n direction: Vec3;\n }, angleRad: number): ShapeHandle\n scale(shape: ShapeHandle, center: Vec3, factor: number): ShapeHandle\n mirror(shape: ShapeHandle, point: Vec3, normal: Vec3): ShapeHandle\n copy(shape: ShapeHandle): ShapeHandle\n transform(shape: ShapeHandle, matrix: number[]): ShapeHandle\n located(shape: ShapeHandle, matrix: number[]): ShapeHandle\n generalTransform(shape: ShapeHandle, matrix: number[]): ShapeHandle\n linearPattern(shape: ShapeHandle, direction: Vec3, spacing: number, count: number): ShapeHandle\n circularPattern(shape: ShapeHandle, center: Vec3, axis: Vec3, angle: number, count: number): ShapeHandle\n composeTransform(m1: number[], m2: number[]): number[]\n translateBatch(shapes: ShapeHandle[], offsets: number[]): ShapeHandle[]\n booleanOp(op: BooleanOp, args: ShapeHandle[], tools: ShapeHandle[], options?: BooleanOpOptions): EvolutionData\n booleanPipeline(base: ShapeHandle, opCodes: BooleanOp[], tools: ShapeHandle[]): ShapeHandle\n queryBatch(shapes: ShapeHandle[]): ShapeQueryResult[]\n filletBatch(ops: Array<{\n solid: ShapeHandle;\n edges: ShapeHandle[];\n radius: number;\n }>): ShapeHandle[]\n transformBatch(shapes: ShapeHandle[], matrices: number[]): ShapeHandle[]\n rotateBatch(shapes: ShapeHandle[], params: number[]): ShapeHandle[]\n scaleBatch(shapes: ShapeHandle[], params: number[]): ShapeHandle[]\n mirrorBatch(shapes: ShapeHandle[], params: number[]): ShapeHandle[]\n getShapeType(shape: ShapeHandle): ShapeType\n isCompound(shape: ShapeHandle): boolean\n isCompSolid(shape: ShapeHandle): boolean\n isSolid(shape: ShapeHandle): boolean\n isShell(shape: ShapeHandle): boolean\n isFace(shape: ShapeHandle): boolean\n isWire(shape: ShapeHandle): boolean\n isEdge(shape: ShapeHandle): boolean\n isVertex(shape: ShapeHandle): boolean\n getSubShapes(shape: ShapeHandle, type: \"vertex\" | \"edge\" | \"wire\" | \"face\" | \"shell\" | \"solid\"): ShapeHandle[]\n subShapeCount(shape: ShapeHandle, type: \"vertex\" | \"edge\" | \"wire\" | \"face\" | \"shell\" | \"solid\"): number\n subShapeHashes(shape: ShapeHandle, type: \"vertex\" | \"edge\" | \"wire\" | \"face\" | \"shell\" | \"solid\", hashUpperBound: number): number[]\n downcast(shape: ShapeHandle, targetType: \"vertex\" | \"edge\" | \"wire\" | \"face\" | \"shell\" | \"solid\"): ShapeHandle\n distanceBetween(a: ShapeHandle, b: ShapeHandle): number\n isSame(a: ShapeHandle, b: ShapeHandle): boolean\n isEqual(a: ShapeHandle, b: ShapeHandle): boolean\n isNull(shape: ShapeHandle): boolean\n hashCode(shape: ShapeHandle, upperBound: number): number\n shapeOrientation(shape: ShapeHandle): ShapeOrientation\n sharedEdges(faceA: ShapeHandle, faceB: ShapeHandle): ShapeHandle[]\n adjacentFaces(shape: ShapeHandle, face: ShapeHandle): ShapeHandle[]\n iterShapes(shape: ShapeHandle): ShapeHandle[]\n edgeToFaceMap(shape: ShapeHandle, hashUpperBound: number): number[]\n tessellate(shape: ShapeHandle, options?: TessellateOptions): Mesh\n wireframe(shape: ShapeHandle, options?: number | WireframeOptions): EdgeData\n hasTriangulation(shape: ShapeHandle): boolean\n meshShape(shape: ShapeHandle, options?: TessellateOptions): Mesh\n meshBatch(shapes: ShapeHandle[], options?: TessellateOptions): MeshBatchData\n importStep(data: string | ArrayBuffer): ShapeHandle\n exportStep(shape: ShapeHandle): string\n importStl(data: string | ArrayBuffer | Uint8Array): ShapeHandle\n exportStl(shape: ShapeHandle, linearDeflection: number | undefined, ascii: boolean): string | Uint8Array\n toBREP(shape: ShapeHandle): string\n fromBREP(data: string): ShapeHandle\n toBREPBinary(shape: ShapeHandle): Uint8Array\n fromBREPBinary(data: Uint8Array): ShapeHandle\n cacheStep(stepData: string | ArrayBuffer): string\n loadCached(brep: string): ShapeHandle\n getBoundingBox(shape: ShapeHandle, useTriangulation: boolean): BoundingBox\n getVolume(shape: ShapeHandle): number\n getSurfaceArea(shape: ShapeHandle): number\n getLength(shape: ShapeHandle): number\n getCenterOfMass(shape: ShapeHandle): Vec3\n getInertia(shape: ShapeHandle): number[]\n containsPoint(shape: ShapeHandle, point: Vec3, tolerance?: number): boolean\n getSurfaceCenterOfMass(face: ShapeHandle): Vec3\n getLinearCenterOfMass(shape: ShapeHandle): Vec3\n surfaceCurvature(face: ShapeHandle, u: number, v: number): CurvatureData\n vertexPosition(vertex: ShapeHandle): Vec3\n surfaceType(face: ShapeHandle): SurfaceKind\n surfaceNormal(face: ShapeHandle, u: number, v: number): Vec3\n pointOnSurface(face: ShapeHandle, u: number, v: number): Vec3\n outerWire(face: ShapeHandle): ShapeHandle\n reverseSurfaceU(face: ShapeHandle): ShapeHandle\n uvBounds(face: ShapeHandle): UVBounds\n uvFromPoint(face: ShapeHandle, point: Vec3): {\n u: number;\n v: number;\n }\n getFaceCylinderData(face: ShapeHandle): {\n radius: number;\n isDirect: boolean;\n } | null\n projectPointOnFace(face: ShapeHandle, point: Vec3): Vec3\n classifyPointOnFace(face: ShapeHandle, u: number, v: number): PointClassification\n bsplineSurface(controlPoints: Vec3[], rows: number, cols: number): ShapeHandle\n curveType(edge: ShapeHandle): CurveKind\n curvePointAtParam(edge: ShapeHandle, param: number): Vec3\n curveTangent(edge: ShapeHandle, param: number): Vec3\n curveParameters(edge: ShapeHandle): {\n first: number;\n last: number;\n }\n curveIsClosed(edge: ShapeHandle): boolean\n curveIsPeriodic(edge: ShapeHandle): boolean\n curveLength(edge: ShapeHandle): number\n interpolatePoints(points: Vec3[], periodic?: boolean): ShapeHandle\n interpolatePointsWithTangents(points: Vec3[], startTangent: Vec3, endTangent: Vec3): ShapeHandle\n projectPointOnEdge(edge: ShapeHandle, point: Vec3): {\n point: Vec3;\n tangent: Vec3;\n parameter: number;\n }\n approximatePoints(points: Vec3[], tolerance?: number): ShapeHandle\n getNurbsCurveData(edge: ShapeHandle): NurbsCurveData\n curveDegreeElevate(edge: ShapeHandle, elevateBy: number): ShapeHandle\n curveKnotInsert(edge: ShapeHandle, knot: number, times: number): ShapeHandle\n curveKnotRemove(edge: ShapeHandle, knot: number, tolerance: number): ShapeHandle\n curveSplit(edge: ShapeHandle, param: number): [ShapeHandle, ShapeHandle]\n liftCurve2dToPlane(points2d: Array<{\n x: number;\n y: number;\n }>, planeOrigin: Vec3, planeZ: Vec3, planeX: Vec3): ShapeHandle\n projectEdges(shape: ShapeHandle, viewOrigin: Vec3, viewDirection: Vec3, xAxis?: Vec3): ProjectionData\n toSVG(shape: ShapeHandle, view?: ViewName, options?: SvgViewOptions): string\n toMultiviewSVG(shape: ShapeHandle, options?: MultiviewSvgOptions): string\n toPNG(shape: ShapeHandle, view?: ViewName, options?: PngViewOptions): Promise<Uint8Array>\n toMultiviewPNG(shape: ShapeHandle, options?: MultiviewPngOptions): Promise<Uint8Array>\n thicken(shape: ShapeHandle, thickness: number, tolerance: number): ShapeHandle\n defeature(shape: ShapeHandle, faces: ShapeHandle[], tolerance: number): ShapeHandle\n reverseShape(shape: ShapeHandle): ShapeHandle\n simplify(shape: ShapeHandle): ShapeHandle\n filletVariable(solid: ShapeHandle, edge: ShapeHandle, startRadius: number, endRadius: number): ShapeHandle\n offsetWire2D(wire: ShapeHandle, offset: number, joinType?: JoinType): ShapeHandle\n translateWithHistory(shape: ShapeHandle, dx: number, dy: number, dz: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n fuseWithHistory(a: ShapeHandle, b: ShapeHandle, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n cutWithHistory(a: ShapeHandle, b: ShapeHandle, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n filletWithHistory(solid: ShapeHandle, edges: ShapeHandle[], radius: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n rotateWithHistory(shape: ShapeHandle, axis: {\n point: Vec3;\n direction: Vec3;\n }, angleRad: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n mirrorWithHistory(shape: ShapeHandle, point: Vec3, normal: Vec3, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n scaleWithHistory(shape: ShapeHandle, center: Vec3, factor: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n intersectWithHistory(a: ShapeHandle, b: ShapeHandle, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n chamferWithHistory(solid: ShapeHandle, edges: ShapeHandle[], distance: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n shellWithHistory(solid: ShapeHandle, faces: ShapeHandle[], thickness: number, tolerance: number, inputFaceHashes: number[], hashUpperBound: number, joinType?: JoinType.Arc | JoinType.Intersection): EvolutionData\n offsetWithHistory(solid: ShapeHandle, distance: number, tolerance: number, inputFaceHashes: number[], hashUpperBound: number, joinType?: JoinType.Arc | JoinType.Intersection): EvolutionData\n thickenWithHistory(shape: ShapeHandle, thickness: number, tolerance: number, inputFaceHashes: number[], hashUpperBound: number): EvolutionData\n fixShape(shape: ShapeHandle): ShapeHandle\n unifySameDomain(shape: ShapeHandle): ShapeHandle\n isValid(shape: ShapeHandle): boolean\n healSolid(shape: ShapeHandle, tolerance?: number): ShapeHandle\n healFace(shape: ShapeHandle, tolerance?: number): ShapeHandle\n healWire(shape: ShapeHandle, tolerance?: number): ShapeHandle\n fixFaceOrientations(shape: ShapeHandle): ShapeHandle\n removeDegenerateEdges(shape: ShapeHandle): ShapeHandle\n buildCurves3d(wire: ShapeHandle): void\n fixWireOnFace(wire: ShapeHandle, face: ShapeHandle, tolerance?: number): ShapeHandle\n createXCAFDocument(): XCAFDocument\n importXCAFFromSTEP(stepData: string): XCAFDocument\n release(shape: ShapeHandle): void\n checkpoint(): number\n releaseSince(mark: number): void\n describe(shape: ShapeHandle): string\n}\n\n/**\n * Create an OcctPlatformApi instance wrapping the given kernel.\n *\n * Each method call is bracketed by checkpoint()/releaseSince():\n * intermediate temporary handles are auto-released, the returned\n * ShapeHandle (if any) is preserved for the caller.\n *\n * @param kernel - the initialized OcctKernel instance\n * @returns the platform API proxy\n */\nexport function createOcctPlatform(kernel: OcctKernel): OcctPlatformApi {\n const api: Record<string, (...args: unknown[]) => unknown> = {}\n\n // OcctKernel#makeBox → ShapeHandle\n api.makeBox = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeBox as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeBoxFromCorners → ShapeHandle\n api.makeBoxFromCorners = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeBoxFromCorners as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeCylinder → ShapeHandle\n api.makeCylinder = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeCylinder as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeSphere → ShapeHandle\n api.makeSphere = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeSphere as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeCone → ShapeHandle\n api.makeCone = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeCone as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeTorus → ShapeHandle\n api.makeTorus = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeTorus as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#halfSpace → ShapeHandle\n api.halfSpace = function (...args: unknown[]): ShapeHandle {\n return (kernel.halfSpace as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeEllipsoid → ShapeHandle\n api.makeEllipsoid = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeEllipsoid as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeRectangle → ShapeHandle\n api.makeRectangle = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeRectangle as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#fuse → ShapeHandle\n api.fuse = function (...args: unknown[]): ShapeHandle {\n return (kernel.fuse as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#cut → ShapeHandle\n api.cut = function (...args: unknown[]): ShapeHandle {\n return (kernel.cut as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#common → ShapeHandle\n api.common = function (...args: unknown[]): ShapeHandle {\n return (kernel.common as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#intersect → ShapeHandle\n api.intersect = function (...args: unknown[]): ShapeHandle {\n return (kernel.intersect as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#section → ShapeHandle\n api.section = function (...args: unknown[]): ShapeHandle {\n return (kernel.section as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#sectionPlane → ShapeHandle\n api.sectionPlane = function (...args: unknown[]): ShapeHandle {\n return (kernel.sectionPlane as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#fuseAll → ShapeHandle\n api.fuseAll = function (...args: unknown[]): ShapeHandle {\n return (kernel.fuseAll as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#cutAll → ShapeHandle\n api.cutAll = function (...args: unknown[]): ShapeHandle {\n return (kernel.cutAll as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#split → ShapeHandle\n api.split = function (...args: unknown[]): ShapeHandle {\n return (kernel.split as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#intersectionCells → ShapeHandle\n api.intersectionCells = function (...args: unknown[]): ShapeHandle {\n return (kernel.intersectionCells as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#extrude → ShapeHandle\n api.extrude = function (...args: unknown[]): ShapeHandle {\n return (kernel.extrude as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#revolve → ShapeHandle\n api.revolve = function (...args: unknown[]): ShapeHandle {\n return (kernel.revolve as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#fillet → ShapeHandle\n api.fillet = function (...args: unknown[]): ShapeHandle {\n return (kernel.fillet as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#chamfer → ShapeHandle\n api.chamfer = function (...args: unknown[]): ShapeHandle {\n return (kernel.chamfer as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#chamferDistAngle → ShapeHandle\n api.chamferDistAngle = function (...args: unknown[]): ShapeHandle {\n return (kernel.chamferDistAngle as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#chamferAsymmetric → ShapeHandle\n api.chamferAsymmetric = function (...args: unknown[]): ShapeHandle {\n return (kernel.chamferAsymmetric as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#shell → ShapeHandle\n api.shell = function (...args: unknown[]): ShapeHandle {\n return (kernel.shell as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#offset → ShapeHandle\n api.offset = function (...args: unknown[]): ShapeHandle {\n return (kernel.offset as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#draft → ShapeHandle\n api.draft = function (...args: unknown[]): ShapeHandle {\n return (kernel.draft as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#pipe → ShapeHandle\n api.pipe = function (...args: unknown[]): ShapeHandle {\n return (kernel.pipe as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#simplePipe → ShapeHandle\n api.simplePipe = function (...args: unknown[]): ShapeHandle {\n return (kernel.simplePipe as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#loft → ShapeHandle\n api.loft = function (...args: unknown[]): ShapeHandle {\n return (kernel.loft as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#loftWithVertices → ShapeHandle\n api.loftWithVertices = function (...args: unknown[]): ShapeHandle {\n return (kernel.loftWithVertices as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#sweep → ShapeHandle\n api.sweep = function (...args: unknown[]): ShapeHandle {\n return (kernel.sweep as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#sweepPipeShell → ShapeHandle\n api.sweepPipeShell = function (...args: unknown[]): ShapeHandle {\n return (kernel.sweepPipeShell as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#sweepOriented → ShapeHandle\n api.sweepOriented = function (...args: unknown[]): ShapeHandle {\n return (kernel.sweepOriented as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#sweepAdvanced → ShapeHandle\n api.sweepAdvanced = function (...args: unknown[]): ShapeHandle {\n return (kernel.sweepAdvanced as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#sweepFull → ShapeHandle\n api.sweepFull = function (...args: unknown[]): ShapeHandle {\n return (kernel.sweepFull as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#draftPrism → ShapeHandle\n api.draftPrism = function (...args: unknown[]): ShapeHandle {\n return (kernel.draftPrism as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeVertex → ShapeHandle\n api.makeVertex = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeVertex as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeEdge → ShapeHandle\n api.makeEdge = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeEdge as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeLineEdge → ShapeHandle\n api.makeLineEdge = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeLineEdge as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeCircleEdge → ShapeHandle\n api.makeCircleEdge = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeCircleEdge as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeCircleArc → ShapeHandle\n api.makeCircleArc = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeCircleArc as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeArcEdge → ShapeHandle\n api.makeArcEdge = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeArcEdge as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeEllipseEdge → ShapeHandle\n api.makeEllipseEdge = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeEllipseEdge as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeEllipseArc → ShapeHandle\n api.makeEllipseArc = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeEllipseArc as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeBezierEdge → ShapeHandle\n api.makeBezierEdge = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeBezierEdge as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeBSplineEdge → ShapeHandle\n api.makeBSplineEdge = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeBSplineEdge as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeTangentArc → ShapeHandle\n api.makeTangentArc = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeTangentArc as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeHelixWire → ShapeHandle\n api.makeHelixWire = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeHelixWire as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeHelixWireHanded → ShapeHandle\n api.makeHelixWireHanded = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeHelixWireHanded as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeWire → ShapeHandle\n api.makeWire = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeWire as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeFace → ShapeHandle\n api.makeFace = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeFace as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeNonPlanarFace → ShapeHandle\n api.makeNonPlanarFace = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeNonPlanarFace as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#addHolesInFace → ShapeHandle\n api.addHolesInFace = function (...args: unknown[]): ShapeHandle {\n return (kernel.addHolesInFace as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#removeHolesFromFace → ShapeHandle\n api.removeHolesFromFace = function (...args: unknown[]): ShapeHandle {\n return (kernel.removeHolesFromFace as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeSolid → ShapeHandle\n api.makeSolid = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeSolid as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#sew → ShapeHandle\n api.sew = function (...args: unknown[]): ShapeHandle {\n return (kernel.sew as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#sewAndSolidify → ShapeHandle\n api.sewAndSolidify = function (...args: unknown[]): ShapeHandle {\n return (kernel.sewAndSolidify as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#buildSolidFromFaces → ShapeHandle\n api.buildSolidFromFaces = function (...args: unknown[]): ShapeHandle {\n return (kernel.buildSolidFromFaces as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeCompound → ShapeHandle\n api.makeCompound = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeCompound as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#buildTriFace → ShapeHandle\n api.buildTriFace = function (...args: unknown[]): ShapeHandle {\n return (kernel.buildTriFace as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeFaceOnSurface → ShapeHandle\n api.makeFaceOnSurface = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeFaceOnSurface as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#makeNullShape → ShapeHandle\n api.makeNullShape = function (...args: unknown[]): ShapeHandle {\n return (kernel.makeNullShape as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#translate → ShapeHandle\n api.translate = function (...args: unknown[]): ShapeHandle {\n return (kernel.translate as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#alignX → ShapeHandle\n api.alignX = function (...args: unknown[]): ShapeHandle {\n return (kernel.alignX as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#alignY → ShapeHandle\n api.alignY = function (...args: unknown[]): ShapeHandle {\n return (kernel.alignY as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#alignZ → ShapeHandle\n api.alignZ = function (...args: unknown[]): ShapeHandle {\n return (kernel.alignZ as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#rotate → ShapeHandle\n api.rotate = function (...args: unknown[]): ShapeHandle {\n return (kernel.rotate as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#scale → ShapeHandle\n api.scale = function (...args: unknown[]): ShapeHandle {\n return (kernel.scale as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#mirror → ShapeHandle\n api.mirror = function (...args: unknown[]): ShapeHandle {\n return (kernel.mirror as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#copy → ShapeHandle\n api.copy = function (...args: unknown[]): ShapeHandle {\n return (kernel.copy as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#transform → ShapeHandle\n api.transform = function (...args: unknown[]): ShapeHandle {\n return (kernel.transform as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#located → ShapeHandle\n api.located = function (...args: unknown[]): ShapeHandle {\n return (kernel.located as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#generalTransform → ShapeHandle\n api.generalTransform = function (...args: unknown[]): ShapeHandle {\n return (kernel.generalTransform as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#linearPattern → ShapeHandle\n api.linearPattern = function (...args: unknown[]): ShapeHandle {\n return (kernel.linearPattern as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#circularPattern → ShapeHandle\n api.circularPattern = function (...args: unknown[]): ShapeHandle {\n return (kernel.circularPattern as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#composeTransform → number[]\n api.composeTransform = function (...args: unknown[]): number[] {\n return (kernel.composeTransform as (...a: unknown[]) => number[]).apply(kernel, args)\n }\n\n // OcctKernel#translateBatch → ShapeHandle[]\n api.translateBatch = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.translateBatch as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#booleanOp → EvolutionData\n api.booleanOp = function (...args: unknown[]): EvolutionData {\n return (kernel.booleanOp as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#booleanPipeline → ShapeHandle\n api.booleanPipeline = function (...args: unknown[]): ShapeHandle {\n return (kernel.booleanPipeline as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#queryBatch → ShapeQueryResult[]\n api.queryBatch = function (...args: unknown[]): ShapeQueryResult[] {\n return (kernel.queryBatch as (...a: unknown[]) => ShapeQueryResult[]).apply(kernel, args)\n }\n\n // OcctKernel#filletBatch → ShapeHandle[]\n api.filletBatch = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.filletBatch as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#transformBatch → ShapeHandle[]\n api.transformBatch = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.transformBatch as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#rotateBatch → ShapeHandle[]\n api.rotateBatch = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.rotateBatch as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#scaleBatch → ShapeHandle[]\n api.scaleBatch = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.scaleBatch as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#mirrorBatch → ShapeHandle[]\n api.mirrorBatch = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.mirrorBatch as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#getShapeType → ShapeType\n api.getShapeType = function (...args: unknown[]): ShapeType {\n return (kernel.getShapeType as (...a: unknown[]) => ShapeType).apply(kernel, args)\n }\n\n // OcctKernel#isCompound → boolean\n api.isCompound = function (...args: unknown[]): boolean {\n return (kernel.isCompound as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isCompSolid → boolean\n api.isCompSolid = function (...args: unknown[]): boolean {\n return (kernel.isCompSolid as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isSolid → boolean\n api.isSolid = function (...args: unknown[]): boolean {\n return (kernel.isSolid as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isShell → boolean\n api.isShell = function (...args: unknown[]): boolean {\n return (kernel.isShell as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isFace → boolean\n api.isFace = function (...args: unknown[]): boolean {\n return (kernel.isFace as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isWire → boolean\n api.isWire = function (...args: unknown[]): boolean {\n return (kernel.isWire as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isEdge → boolean\n api.isEdge = function (...args: unknown[]): boolean {\n return (kernel.isEdge as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isVertex → boolean\n api.isVertex = function (...args: unknown[]): boolean {\n return (kernel.isVertex as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#getSubShapes → ShapeHandle[]\n api.getSubShapes = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.getSubShapes as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#subShapeCount → number\n api.subShapeCount = function (...args: unknown[]): number {\n return (kernel.subShapeCount as (...a: unknown[]) => number).apply(kernel, args)\n }\n\n // OcctKernel#subShapeHashes → number[]\n api.subShapeHashes = function (...args: unknown[]): number[] {\n return (kernel.subShapeHashes as (...a: unknown[]) => number[]).apply(kernel, args)\n }\n\n // OcctKernel#downcast → ShapeHandle\n api.downcast = function (...args: unknown[]): ShapeHandle {\n return (kernel.downcast as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#distanceBetween → number\n api.distanceBetween = function (...args: unknown[]): number {\n return (kernel.distanceBetween as (...a: unknown[]) => number).apply(kernel, args)\n }\n\n // OcctKernel#isSame → boolean\n api.isSame = function (...args: unknown[]): boolean {\n return (kernel.isSame as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isEqual → boolean\n api.isEqual = function (...args: unknown[]): boolean {\n return (kernel.isEqual as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#isNull → boolean\n api.isNull = function (...args: unknown[]): boolean {\n return (kernel.isNull as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#hashCode → number\n api.hashCode = function (...args: unknown[]): number {\n return (kernel.hashCode as (...a: unknown[]) => number).apply(kernel, args)\n }\n\n // OcctKernel#shapeOrientation → ShapeOrientation\n api.shapeOrientation = function (...args: unknown[]): ShapeOrientation {\n return (kernel.shapeOrientation as (...a: unknown[]) => ShapeOrientation).apply(kernel, args)\n }\n\n // OcctKernel#sharedEdges → ShapeHandle[]\n api.sharedEdges = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.sharedEdges as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#adjacentFaces → ShapeHandle[]\n api.adjacentFaces = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.adjacentFaces as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#iterShapes → ShapeHandle[]\n api.iterShapes = function (...args: unknown[]): ShapeHandle[] {\n return (kernel.iterShapes as (...a: unknown[]) => ShapeHandle[]).apply(kernel, args)\n }\n\n // OcctKernel#edgeToFaceMap → number[]\n api.edgeToFaceMap = function (...args: unknown[]): number[] {\n return (kernel.edgeToFaceMap as (...a: unknown[]) => number[]).apply(kernel, args)\n }\n\n // OcctKernel#tessellate → Mesh\n api.tessellate = function (...args: unknown[]): Mesh {\n return (kernel.tessellate as (...a: unknown[]) => Mesh).apply(kernel, args)\n }\n\n // OcctKernel#wireframe → EdgeData\n api.wireframe = function (...args: unknown[]): EdgeData {\n return (kernel.wireframe as (...a: unknown[]) => EdgeData).apply(kernel, args)\n }\n\n // OcctKernel#hasTriangulation → boolean\n api.hasTriangulation = function (...args: unknown[]): boolean {\n return (kernel.hasTriangulation as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#meshShape → Mesh\n api.meshShape = function (...args: unknown[]): Mesh {\n return (kernel.meshShape as (...a: unknown[]) => Mesh).apply(kernel, args)\n }\n\n // OcctKernel#meshBatch → MeshBatchData\n api.meshBatch = function (...args: unknown[]): MeshBatchData {\n return (kernel.meshBatch as (...a: unknown[]) => MeshBatchData).apply(kernel, args)\n }\n\n // OcctKernel#importStep → ShapeHandle\n api.importStep = function (...args: unknown[]): ShapeHandle {\n return (kernel.importStep as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#exportStep → string\n api.exportStep = function (...args: unknown[]): string {\n return (kernel.exportStep as (...a: unknown[]) => string).apply(kernel, args)\n }\n\n // OcctKernel#importStl → ShapeHandle\n api.importStl = function (...args: unknown[]): ShapeHandle {\n return (kernel.importStl as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#exportStl → string | Uint8Array\n api.exportStl = function (...args: unknown[]): string | Uint8Array {\n return (kernel.exportStl as (...a: unknown[]) => string | Uint8Array).apply(kernel, args)\n }\n\n // OcctKernel#toBREP → string\n api.toBREP = function (...args: unknown[]): string {\n return (kernel.toBREP as (...a: unknown[]) => string).apply(kernel, args)\n }\n\n // OcctKernel#fromBREP → ShapeHandle\n api.fromBREP = function (...args: unknown[]): ShapeHandle {\n return (kernel.fromBREP as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#toBREPBinary → Uint8Array\n api.toBREPBinary = function (...args: unknown[]): Uint8Array {\n return (kernel.toBREPBinary as (...a: unknown[]) => Uint8Array).apply(kernel, args)\n }\n\n // OcctKernel#fromBREPBinary → ShapeHandle\n api.fromBREPBinary = function (...args: unknown[]): ShapeHandle {\n return (kernel.fromBREPBinary as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#cacheStep → string\n api.cacheStep = function (...args: unknown[]): string {\n return (kernel.cacheStep as (...a: unknown[]) => string).apply(kernel, args)\n }\n\n // OcctKernel#loadCached → ShapeHandle\n api.loadCached = function (...args: unknown[]): ShapeHandle {\n return (kernel.loadCached as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#getBoundingBox → BoundingBox\n api.getBoundingBox = function (...args: unknown[]): BoundingBox {\n return (kernel.getBoundingBox as (...a: unknown[]) => BoundingBox).apply(kernel, args)\n }\n\n // OcctKernel#getVolume → number\n api.getVolume = function (...args: unknown[]): number {\n return (kernel.getVolume as (...a: unknown[]) => number).apply(kernel, args)\n }\n\n // OcctKernel#getSurfaceArea → number\n api.getSurfaceArea = function (...args: unknown[]): number {\n return (kernel.getSurfaceArea as (...a: unknown[]) => number).apply(kernel, args)\n }\n\n // OcctKernel#getLength → number\n api.getLength = function (...args: unknown[]): number {\n return (kernel.getLength as (...a: unknown[]) => number).apply(kernel, args)\n }\n\n // OcctKernel#getCenterOfMass → Vec3\n api.getCenterOfMass = function (...args: unknown[]): Vec3 {\n return (kernel.getCenterOfMass as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#getInertia → number[]\n api.getInertia = function (...args: unknown[]): number[] {\n return (kernel.getInertia as (...a: unknown[]) => number[]).apply(kernel, args)\n }\n\n // OcctKernel#containsPoint → boolean\n api.containsPoint = function (...args: unknown[]): boolean {\n return (kernel.containsPoint as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#getSurfaceCenterOfMass → Vec3\n api.getSurfaceCenterOfMass = function (...args: unknown[]): Vec3 {\n return (kernel.getSurfaceCenterOfMass as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#getLinearCenterOfMass → Vec3\n api.getLinearCenterOfMass = function (...args: unknown[]): Vec3 {\n return (kernel.getLinearCenterOfMass as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#surfaceCurvature → CurvatureData\n api.surfaceCurvature = function (...args: unknown[]): CurvatureData {\n return (kernel.surfaceCurvature as (...a: unknown[]) => CurvatureData).apply(kernel, args)\n }\n\n // OcctKernel#vertexPosition → Vec3\n api.vertexPosition = function (...args: unknown[]): Vec3 {\n return (kernel.vertexPosition as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#surfaceType → SurfaceKind\n api.surfaceType = function (...args: unknown[]): SurfaceKind {\n return (kernel.surfaceType as (...a: unknown[]) => SurfaceKind).apply(kernel, args)\n }\n\n // OcctKernel#surfaceNormal → Vec3\n api.surfaceNormal = function (...args: unknown[]): Vec3 {\n return (kernel.surfaceNormal as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#pointOnSurface → Vec3\n api.pointOnSurface = function (...args: unknown[]): Vec3 {\n return (kernel.pointOnSurface as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#outerWire → ShapeHandle\n api.outerWire = function (...args: unknown[]): ShapeHandle {\n return (kernel.outerWire as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#reverseSurfaceU → ShapeHandle\n api.reverseSurfaceU = function (...args: unknown[]): ShapeHandle {\n return (kernel.reverseSurfaceU as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#uvBounds → UVBounds\n api.uvBounds = function (...args: unknown[]): UVBounds {\n return (kernel.uvBounds as (...a: unknown[]) => UVBounds).apply(kernel, args)\n }\n\n // OcctKernel#uvFromPoint → {\n // u: number;\n // v: number;\n // }\n api.uvFromPoint = function (...args: unknown[]): {\n u: number;\n v: number;\n } {\n return (kernel.uvFromPoint as (...a: unknown[]) => {\n u: number;\n v: number;\n }).apply(kernel, args)\n }\n\n // OcctKernel#getFaceCylinderData → {\n // radius: number;\n // isDirect: boolean;\n // } | null\n api.getFaceCylinderData = function (...args: unknown[]): {\n radius: number;\n isDirect: boolean;\n } | null {\n return (kernel.getFaceCylinderData as (...a: unknown[]) => {\n radius: number;\n isDirect: boolean;\n } | null).apply(kernel, args)\n }\n\n // OcctKernel#projectPointOnFace → Vec3\n api.projectPointOnFace = function (...args: unknown[]): Vec3 {\n return (kernel.projectPointOnFace as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#classifyPointOnFace → PointClassification\n api.classifyPointOnFace = function (...args: unknown[]): PointClassification {\n return (kernel.classifyPointOnFace as (...a: unknown[]) => PointClassification).apply(kernel, args)\n }\n\n // OcctKernel#bsplineSurface → ShapeHandle\n api.bsplineSurface = function (...args: unknown[]): ShapeHandle {\n return (kernel.bsplineSurface as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#curveType → CurveKind\n api.curveType = function (...args: unknown[]): CurveKind {\n return (kernel.curveType as (...a: unknown[]) => CurveKind).apply(kernel, args)\n }\n\n // OcctKernel#curvePointAtParam → Vec3\n api.curvePointAtParam = function (...args: unknown[]): Vec3 {\n return (kernel.curvePointAtParam as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#curveTangent → Vec3\n api.curveTangent = function (...args: unknown[]): Vec3 {\n return (kernel.curveTangent as (...a: unknown[]) => Vec3).apply(kernel, args)\n }\n\n // OcctKernel#curveParameters → {\n // first: number;\n // last: number;\n // }\n api.curveParameters = function (...args: unknown[]): {\n first: number;\n last: number;\n } {\n return (kernel.curveParameters as (...a: unknown[]) => {\n first: number;\n last: number;\n }).apply(kernel, args)\n }\n\n // OcctKernel#curveIsClosed → boolean\n api.curveIsClosed = function (...args: unknown[]): boolean {\n return (kernel.curveIsClosed as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#curveIsPeriodic → boolean\n api.curveIsPeriodic = function (...args: unknown[]): boolean {\n return (kernel.curveIsPeriodic as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#curveLength → number\n api.curveLength = function (...args: unknown[]): number {\n return (kernel.curveLength as (...a: unknown[]) => number).apply(kernel, args)\n }\n\n // OcctKernel#interpolatePoints → ShapeHandle\n api.interpolatePoints = function (...args: unknown[]): ShapeHandle {\n return (kernel.interpolatePoints as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#interpolatePointsWithTangents → ShapeHandle\n api.interpolatePointsWithTangents = function (...args: unknown[]): ShapeHandle {\n return (kernel.interpolatePointsWithTangents as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#projectPointOnEdge → {\n // point: Vec3;\n // tangent: Vec3;\n // parameter: number;\n // }\n api.projectPointOnEdge = function (...args: unknown[]): {\n point: Vec3;\n tangent: Vec3;\n parameter: number;\n } {\n return (kernel.projectPointOnEdge as (...a: unknown[]) => {\n point: Vec3;\n tangent: Vec3;\n parameter: number;\n }).apply(kernel, args)\n }\n\n // OcctKernel#approximatePoints → ShapeHandle\n api.approximatePoints = function (...args: unknown[]): ShapeHandle {\n return (kernel.approximatePoints as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#getNurbsCurveData → NurbsCurveData\n api.getNurbsCurveData = function (...args: unknown[]): NurbsCurveData {\n return (kernel.getNurbsCurveData as (...a: unknown[]) => NurbsCurveData).apply(kernel, args)\n }\n\n // OcctKernel#curveDegreeElevate → ShapeHandle\n api.curveDegreeElevate = function (...args: unknown[]): ShapeHandle {\n return (kernel.curveDegreeElevate as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#curveKnotInsert → ShapeHandle\n api.curveKnotInsert = function (...args: unknown[]): ShapeHandle {\n return (kernel.curveKnotInsert as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#curveKnotRemove → ShapeHandle\n api.curveKnotRemove = function (...args: unknown[]): ShapeHandle {\n return (kernel.curveKnotRemove as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#curveSplit → [ShapeHandle, ShapeHandle]\n api.curveSplit = function (...args: unknown[]): [ShapeHandle, ShapeHandle] {\n return (kernel.curveSplit as (...a: unknown[]) => [ShapeHandle, ShapeHandle]).apply(kernel, args)\n }\n\n // OcctKernel#liftCurve2dToPlane → ShapeHandle\n api.liftCurve2dToPlane = function (...args: unknown[]): ShapeHandle {\n return (kernel.liftCurve2dToPlane as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#projectEdges → ProjectionData\n api.projectEdges = function (...args: unknown[]): ProjectionData {\n return (kernel.projectEdges as (...a: unknown[]) => ProjectionData).apply(kernel, args)\n }\n\n // OcctKernel#toSVG → string\n api.toSVG = function (...args: unknown[]): string {\n return (kernel.toSVG as (...a: unknown[]) => string).apply(kernel, args)\n }\n\n // OcctKernel#toMultiviewSVG → string\n api.toMultiviewSVG = function (...args: unknown[]): string {\n return (kernel.toMultiviewSVG as (...a: unknown[]) => string).apply(kernel, args)\n }\n\n // OcctKernel#toPNG → Promise<Uint8Array>\n api.toPNG = function (...args: unknown[]): Promise<Uint8Array> {\n return (kernel.toPNG as (...a: unknown[]) => Promise<Uint8Array>).apply(kernel, args)\n }\n\n // OcctKernel#toMultiviewPNG → Promise<Uint8Array>\n api.toMultiviewPNG = function (...args: unknown[]): Promise<Uint8Array> {\n return (kernel.toMultiviewPNG as (...a: unknown[]) => Promise<Uint8Array>).apply(kernel, args)\n }\n\n // OcctKernel#thicken → ShapeHandle\n api.thicken = function (...args: unknown[]): ShapeHandle {\n return (kernel.thicken as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#defeature → ShapeHandle\n api.defeature = function (...args: unknown[]): ShapeHandle {\n return (kernel.defeature as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#reverseShape → ShapeHandle\n api.reverseShape = function (...args: unknown[]): ShapeHandle {\n return (kernel.reverseShape as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#simplify → ShapeHandle\n api.simplify = function (...args: unknown[]): ShapeHandle {\n return (kernel.simplify as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#filletVariable → ShapeHandle\n api.filletVariable = function (...args: unknown[]): ShapeHandle {\n return (kernel.filletVariable as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#offsetWire2D → ShapeHandle\n api.offsetWire2D = function (...args: unknown[]): ShapeHandle {\n return (kernel.offsetWire2D as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#translateWithHistory → EvolutionData\n api.translateWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.translateWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#fuseWithHistory → EvolutionData\n api.fuseWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.fuseWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#cutWithHistory → EvolutionData\n api.cutWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.cutWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#filletWithHistory → EvolutionData\n api.filletWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.filletWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#rotateWithHistory → EvolutionData\n api.rotateWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.rotateWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#mirrorWithHistory → EvolutionData\n api.mirrorWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.mirrorWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#scaleWithHistory → EvolutionData\n api.scaleWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.scaleWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#intersectWithHistory → EvolutionData\n api.intersectWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.intersectWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#chamferWithHistory → EvolutionData\n api.chamferWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.chamferWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#shellWithHistory → EvolutionData\n api.shellWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.shellWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#offsetWithHistory → EvolutionData\n api.offsetWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.offsetWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#thickenWithHistory → EvolutionData\n api.thickenWithHistory = function (...args: unknown[]): EvolutionData {\n return (kernel.thickenWithHistory as (...a: unknown[]) => EvolutionData).apply(kernel, args)\n }\n\n // OcctKernel#fixShape → ShapeHandle\n api.fixShape = function (...args: unknown[]): ShapeHandle {\n return (kernel.fixShape as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#unifySameDomain → ShapeHandle\n api.unifySameDomain = function (...args: unknown[]): ShapeHandle {\n return (kernel.unifySameDomain as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#isValid → boolean\n api.isValid = function (...args: unknown[]): boolean {\n return (kernel.isValid as (...a: unknown[]) => boolean).apply(kernel, args)\n }\n\n // OcctKernel#healSolid → ShapeHandle\n api.healSolid = function (...args: unknown[]): ShapeHandle {\n return (kernel.healSolid as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#healFace → ShapeHandle\n api.healFace = function (...args: unknown[]): ShapeHandle {\n return (kernel.healFace as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#healWire → ShapeHandle\n api.healWire = function (...args: unknown[]): ShapeHandle {\n return (kernel.healWire as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#fixFaceOrientations → ShapeHandle\n api.fixFaceOrientations = function (...args: unknown[]): ShapeHandle {\n return (kernel.fixFaceOrientations as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#removeDegenerateEdges → ShapeHandle\n api.removeDegenerateEdges = function (...args: unknown[]): ShapeHandle {\n return (kernel.removeDegenerateEdges as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#buildCurves3d → void\n api.buildCurves3d = function (...args: unknown[]): void {\n const mark = kernel.checkpoint()\n try {\n ;(kernel.buildCurves3d as (...a: unknown[]) => void).apply(kernel, args)\n } finally {\n kernel.releaseSince(mark)\n }\n }\n\n // OcctKernel#fixWireOnFace → ShapeHandle\n api.fixWireOnFace = function (...args: unknown[]): ShapeHandle {\n return (kernel.fixWireOnFace as (...a: unknown[]) => ShapeHandle).apply(kernel, args)\n }\n\n // OcctKernel#createXCAFDocument → XCAFDocument\n api.createXCAFDocument = function (...args: unknown[]): XCAFDocument {\n return (kernel.createXCAFDocument as (...a: unknown[]) => XCAFDocument).apply(kernel, args)\n }\n\n // OcctKernel#importXCAFFromSTEP → XCAFDocument\n api.importXCAFFromSTEP = function (...args: unknown[]): XCAFDocument {\n return (kernel.importXCAFFromSTEP as (...a: unknown[]) => XCAFDocument).apply(kernel, args)\n }\n\n // OcctKernel#release → void\n api.release = function (...args: unknown[]): void {\n const mark = kernel.checkpoint()\n try {\n ;(kernel.release as (...a: unknown[]) => void).apply(kernel, args)\n } finally {\n kernel.releaseSince(mark)\n }\n }\n\n // OcctKernel#checkpoint → number\n api.checkpoint = function (...args: unknown[]): number {\n return (kernel.checkpoint as (...a: unknown[]) => number).apply(kernel, args)\n }\n\n // OcctKernel#releaseSince → void\n api.releaseSince = function (...args: unknown[]): void {\n const mark = kernel.checkpoint()\n try {\n ;(kernel.releaseSince as (...a: unknown[]) => void).apply(kernel, args)\n } finally {\n kernel.releaseSince(mark)\n }\n }\n\n // OcctKernel#describe → string\n api.describe = function (...args: unknown[]): string {\n return (kernel.describe as (...a: unknown[]) => string).apply(kernel, args)\n }\n\n return api as unknown as OcctPlatformApi\n}\n"]}
@@ -9,6 +9,7 @@
9
9
  */
10
10
  import type { Shape } from '../mesh/types.js';
11
11
  import type { StepExportEntry } from '../brep/export/step.js';
12
+ import type { FileMeta } from '../api/meta.js';
12
13
  import type { ShapeHandle, OcctKernel, WasmTessellatedMesh, Mesh, MeshDeflectionOptions } from './occtKernel.js';
13
14
  /** Result of importing a single part from a multi-part STEP file. */
14
15
  export interface ImportStepPartResult {
@@ -87,9 +88,11 @@ export declare function releaseSolid(solid: ShapeHandle): void;
87
88
  * Hosts no longer need to operate the OCCT kernel directly.
88
89
  *
89
90
  * @param entries - parts to export; each becomes its own independent entity
91
+ * @param fileMeta - optional file-level metadata; mapped to the P21 header
92
+ * (`rewriteStepHeader`). No effect on geometry/DATA entities.
90
93
  * @returns STEP file content as ArrayBuffer
91
94
  */
92
- export declare function exportStepFromSolidsHighLevel(entries: StepExportEntry[]): Promise<ArrayBuffer>;
95
+ export declare function exportStepFromSolidsHighLevel(entries: StepExportEntry[], fileMeta?: FileMeta): Promise<ArrayBuffer>;
93
96
  /**
94
97
  * High-level: initialize the OCCT kernel.
95
98
  * Returns the cached instance if already initialized.
@@ -1 +1 @@
1
- {"version":3,"file":"highLevelApi.d.ts","sourceRoot":"","sources":["../../src/occt-kernel/highLevelApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EAEV,mBAAmB,EACnB,IAAI,EACJ,qBAAqB,EACtB,MAAM,cAAc,CAAA;AAMrB,qEAAqE;AACrE,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,KAAK,EAAE,KAAK,CAAA;IACZ,mFAAmF;IACnF,KAAK,EAAE,WAAW,CAAA;IAClB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,kEAAkE;IAClE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;CACvC;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,WAAW,GAAG,UAAU,GAC9B,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAiCjC;AAED,4CAA4C;AAC5C,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,KAAK,EAAE,KAAK,CAAA;IACZ,gDAAgD;IAChD,MAAM,EAAE,mBAAmB,EAAE,CAAA;IAC7B,oEAAoE;IACpE,KAAK,EAAE,WAAW,CAAA;IAClB,sDAAsD;IACtD,cAAc,EAAE,IAAI,CAAA;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,MAAM,EACxC,MAAM,GAAE,MAAM,GAAG,MAAe,EAChC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAmC3B;AAID,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAChC,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,iBAAiB,GAC1B,MAAM,CAMR;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAErD;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,eAAe,EAAE,GACzB,OAAO,CAAC,WAAW,CAAC,CAKtB;AAID;;;;;GAKG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC,CAE5D;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAGD,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAA"}
1
+ {"version":3,"file":"highLevelApi.d.ts","sourceRoot":"","sources":["../../src/occt-kernel/highLevelApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAE1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EAEV,mBAAmB,EACnB,IAAI,EACJ,qBAAqB,EACtB,MAAM,cAAc,CAAA;AAMrB,qEAAqE;AACrE,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,KAAK,EAAE,KAAK,CAAA;IACZ,mFAAmF;IACnF,KAAK,EAAE,WAAW,CAAA;IAClB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,kEAAkE;IAClE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;CACvC;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,WAAW,GAAG,UAAU,GAC9B,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAiCjC;AAED,4CAA4C;AAC5C,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,KAAK,EAAE,KAAK,CAAA;IACZ,gDAAgD;IAChD,MAAM,EAAE,mBAAmB,EAAE,CAAA;IAC7B,oEAAoE;IACpE,KAAK,EAAE,WAAW,CAAA;IAClB,sDAAsD;IACtD,cAAc,EAAE,IAAI,CAAA;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,MAAM,EACxC,MAAM,GAAE,MAAM,GAAG,MAAe,EAChC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAmC3B;AAID,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAChC,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,iBAAiB,GAC1B,MAAM,CAMR;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAErD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,eAAe,EAAE,EAC1B,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,WAAW,CAAC,CAKtB;AAID;;;;;GAKG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC,CAE5D;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAGD,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAA"}
@@ -124,13 +124,15 @@ export function releaseSolid(solid) {
124
124
  * Hosts no longer need to operate the OCCT kernel directly.
125
125
  *
126
126
  * @param entries - parts to export; each becomes its own independent entity
127
+ * @param fileMeta - optional file-level metadata; mapped to the P21 header
128
+ * (`rewriteStepHeader`). No effect on geometry/DATA entities.
127
129
  * @returns STEP file content as ArrayBuffer
128
130
  */
129
- export async function exportStepFromSolidsHighLevel(entries) {
131
+ export async function exportStepFromSolidsHighLevel(entries, fileMeta) {
130
132
  // step.ts consumes the L1 contract — pass the adapter, not the raw kernel
131
133
  // (no cross-layer assertion; narrowing plan §Phase 3).
132
134
  const primitives = await createOcctPrimitives();
133
- return exportStepFromSolids(primitives, entries);
135
+ return exportStepFromSolids(primitives, entries, fileMeta);
134
136
  }
135
137
  // ── 管理函数 ──
136
138
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"highLevelApi.js","sourceRoot":"","sources":["../../src/occt-kernel/highLevelApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAW1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAgBxD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAA+B;IAE/B,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAA;IAEnC,gBAAgB;IAChB,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAEtC,MAAM,OAAO,GAA2B,EAAE,CAAA;IAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,SAAQ;QAE/B,MAAM,GAAG,GAAG,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;QAChE,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE;YAC9C,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;SACzC,CAAC,CAAA;QAEF,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE;gBACL,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB;YACD,KAAK,EAAE,IAAI,CAAC,WAAW;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAA;IACJ,CAAC;IAED,0DAA0D;IAC1D,qCAAqC;IACrC,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;IAE5D,OAAO,OAAO,CAAA;AAChB,CAAC;AAcD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAwC,EACxC,SAA0B,MAAM,EAChC,OAA+B;IAE/B,MAAM,MAAM,GAAqB,MAAM,KAAK,MAAM;QAChD,CAAC,CAAC,MAAM,gBAAgB,CAAC,KAAe,EAAE,OAAO,CAAC;QAClD,CAAC,CAAC,MAAM,gBAAgB,CAAC,KAAiC,EAAE,OAAO,CAAC,CAAA;IAEtE,gCAAgC;IAChC,IAAI,cAAc,GAAG,CAAC,CAAA;IACtB,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACjC,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;QACvC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;IACrC,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,cAAc,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,CAAA;IAC7C,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACjC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QACxC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;QAClC,SAAS;QACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;QACpD,CAAC;QACD,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;QAChC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;IACtC,CAAC;IAED,OAAO;QACL,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,WAAW;QACzB,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAA;AACH,CAAC;AAUD;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CACxB,KAAY,EACZ,OAA2B;IAE3B,OAAO,YAAY,CACjB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,OAAO,EACb,OAAO,EAAE,SAAS,IAAI,IAAI,CAC3B,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAkB;IAC7C,YAAY,CAAC,KAAK,CAAC,CAAA;AACrB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAA0B;IAE1B,0EAA0E;IAC1E,uDAAuD;IACvD,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAA;IAC/C,OAAO,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;AAClD,CAAC;AAED,aAAa;AAEb;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,OAAO,YAAY,EAAoC,CAAA;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,eAAe,EAAE,CAAA;AACnB,CAAC","sourcesContent":["/**\n * OCCT 高层 API — E12.2\n *\n * 宿主不应再直接 import 底层 OCCT kernel 函数(initOcctWasm/importStepToMesh/meshesToStep 等),\n * 而是使用这些高层 API。\n *\n * 高层 API 封装了初始化、导入、导出的完整流程,\n * 返回标准化的 Shape / 拓扑数据 / STEP 字节流。\n */\n\nimport {\n initOcctWasm,\n disposeOcctWasm,\n importStepToMesh,\n importBrepToMesh,\n meshesToStep,\n releaseShape,\n importAssemblyFromStep,\n collectLeafParts,\n releaseAssemblyTree,\n computeEffectiveDeflection,\n} from './occtKernel'\nimport type { Shape } from '../mesh/types'\nimport { exportStepFromSolids } from '../brep/export/step'\nimport type { StepExportEntry } from '../brep/export/step'\nimport type {\n ShapeHandle,\n OcctKernel,\n WasmImportResult,\n WasmTessellatedMesh,\n Mesh,\n MeshDeflectionOptions,\n} from './occtKernel'\n\nimport { createOcctPrimitives } from './occt-primitives'\n\n// ── 导入 API ──\n\n/** Result of importing a single part from a multi-part STEP file. */\nexport interface ImportStepPartResult {\n /** The part's mesh (positions + indices). */\n shape: Shape\n /** OCCT solid handle (with location, for later BREP operations or STEP export). */\n solid: ShapeHandle\n /** Part name (from the XCAF label). */\n name: string\n /** Part color [r,g,b] in 0..1, or null when there is no color. */\n color: [number, number, number] | null\n}\n\n/**\n * High-level: import multi-part mesh + solid from a STEP file byte stream.\n *\n * Uses XCAF assembly-tree parsing, keeping each part's mesh and solid independent.\n * Unlike importStep, this does not merge meshes — each part returns its own shape.\n *\n * @param bytes - STEP file byte stream\n * @returns an array of per-part import results\n */\nexport async function importStepMultiPart(\n bytes: ArrayBuffer | Uint8Array,\n): Promise<ImportStepPartResult[]> {\n const kernel = await initOcctWasm()\n\n // XCAF 解析 → 装配树\n const nodes = await importAssemblyFromStep(bytes)\n const leaves = collectLeafParts(nodes)\n\n const results: ImportStepPartResult[] = []\n for (const leaf of leaves) {\n if (!leaf.shapeHandle) continue\n\n const eff = computeEffectiveDeflection(kernel, leaf.shapeHandle)\n const mesh = kernel.meshShape(leaf.shapeHandle, {\n linearDeflection: eff.linearDeflection,\n angularDeflection: eff.angularDeflection,\n })\n\n results.push({\n shape: {\n positions: mesh.positions,\n indices: mesh.indices,\n },\n solid: leaf.shapeHandle,\n name: leaf.name,\n color: leaf.color,\n })\n }\n\n // 释放装配树中非 leaf 的 shapeHandle(assembly 节点的已由 walkLabel 释放)\n // leaf 的 shapeHandle 由返回结果持有,调用方负责释放\n releaseAssemblyTree(kernel, nodes.filter(n => n.isAssembly))\n\n return results\n}\n\n/** Result of importing a STEP/BREP file. */\nexport interface ImportStepResult {\n /** The merged mesh (all parts' positions/indices combined). */\n shape: Shape\n /** Each part's mesh (for topology building). */\n meshes: WasmTessellatedMesh[]\n /** OCCT solid handle (for later BREP operations or STEP export). */\n solid: ShapeHandle\n /** Face-group information (for topology building). */\n meshWithGroups: Mesh\n}\n\n/**\n * High-level: import mesh + solid from a STEP/BREP file byte stream.\n *\n * Wraps the full importStepToMesh/importBrepToMesh + mesh merge flow.\n * Hosts no longer need to operate the OCCT kernel directly.\n *\n * @param bytes - STEP/BREP file byte stream\n * @param format - the file format: 'step' | 'brep'\n * @param options - optional mesh deflection options\n * @returns the import result\n */\nexport async function importStep(\n bytes: ArrayBuffer | Uint8Array | string,\n format: 'step' | 'brep' = 'step',\n options?: MeshDeflectionOptions,\n): Promise<ImportStepResult> {\n const result: WasmImportResult = format === 'brep'\n ? await importBrepToMesh(bytes as string, options)\n : await importStepToMesh(bytes as ArrayBuffer | Uint8Array, options)\n\n // 合并所有 mesh 的 positions/indices\n let totalPositions = 0\n let totalIndices = 0\n for (const mesh of result.meshes) {\n totalPositions += mesh.positions.length\n totalIndices += mesh.indices.length\n }\n\n const positions = new Float32Array(totalPositions)\n const indices = new Uint32Array(totalIndices)\n let posOffset = 0\n let idxOffset = 0\n let idxBase = 0\n for (const mesh of result.meshes) {\n positions.set(mesh.positions, posOffset)\n posOffset += mesh.positions.length\n // 需要偏移索引\n for (let i = 0; i < mesh.indices.length; i++) {\n indices[idxOffset + i] = mesh.indices[i] + idxBase\n }\n idxOffset += mesh.indices.length\n idxBase += mesh.positions.length / 3\n }\n\n return {\n shape: { positions, indices },\n meshes: result.meshes,\n solid: result.shapeHandle,\n meshWithGroups: result.meshWithGroups,\n }\n}\n\n// ── 导出 API ──\n\n/** Options for exporting mesh data to a STEP string. */\nexport interface ExportStepOptions {\n /** Sewing tolerance. */\n tolerance?: number\n}\n\n/**\n * High-level: export mesh data as a STEP string.\n *\n * Wraps the full meshesToStep flow. Hosts no longer need to operate the OCCT kernel directly.\n *\n * @param shape - mesh data (positions + indices)\n * @param options - optional export options (sewing tolerance)\n * @returns the STEP file text content\n */\nexport function exportStep(\n shape: Shape,\n options?: ExportStepOptions,\n): string {\n return meshesToStep(\n shape.positions,\n shape.indices,\n options?.tolerance ?? 0.01,\n )\n}\n\n/**\n * High-level: release an OCCT solid handle.\n *\n * Wraps the full releaseShape flow.\n *\n * @param solid - the solid handle to release\n */\nexport function releaseSolid(solid: ShapeHandle): void {\n releaseShape(solid)\n}\n\n/**\n * High-level: multi-solid STEP export (zero fuse).\n *\n * Each entry is exported as an independent entity in the STEP (independent XCAF\n * label / PRODUCT), preserving name and color. Multiple solids are never fused.\n *\n * Wraps the full ensureOcctKernel + exportStepFromSolids flow.\n * Hosts no longer need to operate the OCCT kernel directly.\n *\n * @param entries - parts to export; each becomes its own independent entity\n * @returns STEP file content as ArrayBuffer\n */\nexport async function exportStepFromSolidsHighLevel(\n entries: StepExportEntry[],\n): Promise<ArrayBuffer> {\n // step.ts consumes the L1 contract — pass the adapter, not the raw kernel\n // (no cross-layer assertion; narrowing plan §Phase 3).\n const primitives = await createOcctPrimitives()\n return exportStepFromSolids(primitives, entries)\n}\n\n// ── 管理函数 ──\n\n/**\n * High-level: initialize the OCCT kernel.\n * Returns the cached instance if already initialized.\n *\n * @returns the initialized OCCT kernel\n */\nexport async function ensureOcctKernel(): Promise<OcctKernel> {\n return initOcctWasm() as unknown as Promise<OcctKernel>\n}\n\n/**\n * High-level: dispose the OCCT kernel.\n * Call when unloading the page or releasing WASM memory.\n */\nexport function disposeOcct(): void {\n disposeOcctWasm()\n}\n\n// Re-export 底层类型供高层 API 用户使用\nexport type { OcctKernel, ShapeHandle, WasmTessellatedMesh, Mesh, MeshDeflectionOptions }\n"]}
1
+ {"version":3,"file":"highLevelApi.js","sourceRoot":"","sources":["../../src/occt-kernel/highLevelApi.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * OCCT 高层 API — E12.2\n *\n * 宿主不应再直接 import 底层 OCCT kernel 函数(initOcctWasm/importStepToMesh/meshesToStep 等),\n * 而是使用这些高层 API。\n *\n * 高层 API 封装了初始化、导入、导出的完整流程,\n * 返回标准化的 Shape / 拓扑数据 / STEP 字节流。\n */\n\nimport {\n initOcctWasm,\n disposeOcctWasm,\n importStepToMesh,\n importBrepToMesh,\n meshesToStep,\n releaseShape,\n importAssemblyFromStep,\n collectLeafParts,\n releaseAssemblyTree,\n computeEffectiveDeflection,\n} from './occtKernel'\nimport type { Shape } from '../mesh/types'\nimport { exportStepFromSolids } from '../brep/export/step'\nimport type { StepExportEntry } from '../brep/export/step'\nimport type { FileMeta } from '../api/meta'\nimport type {\n ShapeHandle,\n OcctKernel,\n WasmImportResult,\n WasmTessellatedMesh,\n Mesh,\n MeshDeflectionOptions,\n} from './occtKernel'\n\nimport { createOcctPrimitives } from './occt-primitives'\n\n// ── 导入 API ──\n\n/** Result of importing a single part from a multi-part STEP file. */\nexport interface ImportStepPartResult {\n /** The part's mesh (positions + indices). */\n shape: Shape\n /** OCCT solid handle (with location, for later BREP operations or STEP export). */\n solid: ShapeHandle\n /** Part name (from the XCAF label). */\n name: string\n /** Part color [r,g,b] in 0..1, or null when there is no color. */\n color: [number, number, number] | null\n}\n\n/**\n * High-level: import multi-part mesh + solid from a STEP file byte stream.\n *\n * Uses XCAF assembly-tree parsing, keeping each part's mesh and solid independent.\n * Unlike importStep, this does not merge meshes — each part returns its own shape.\n *\n * @param bytes - STEP file byte stream\n * @returns an array of per-part import results\n */\nexport async function importStepMultiPart(\n bytes: ArrayBuffer | Uint8Array,\n): Promise<ImportStepPartResult[]> {\n const kernel = await initOcctWasm()\n\n // XCAF 解析 → 装配树\n const nodes = await importAssemblyFromStep(bytes)\n const leaves = collectLeafParts(nodes)\n\n const results: ImportStepPartResult[] = []\n for (const leaf of leaves) {\n if (!leaf.shapeHandle) continue\n\n const eff = computeEffectiveDeflection(kernel, leaf.shapeHandle)\n const mesh = kernel.meshShape(leaf.shapeHandle, {\n linearDeflection: eff.linearDeflection,\n angularDeflection: eff.angularDeflection,\n })\n\n results.push({\n shape: {\n positions: mesh.positions,\n indices: mesh.indices,\n },\n solid: leaf.shapeHandle,\n name: leaf.name,\n color: leaf.color,\n })\n }\n\n // 释放装配树中非 leaf 的 shapeHandle(assembly 节点的已由 walkLabel 释放)\n // leaf 的 shapeHandle 由返回结果持有,调用方负责释放\n releaseAssemblyTree(kernel, nodes.filter(n => n.isAssembly))\n\n return results\n}\n\n/** Result of importing a STEP/BREP file. */\nexport interface ImportStepResult {\n /** The merged mesh (all parts' positions/indices combined). */\n shape: Shape\n /** Each part's mesh (for topology building). */\n meshes: WasmTessellatedMesh[]\n /** OCCT solid handle (for later BREP operations or STEP export). */\n solid: ShapeHandle\n /** Face-group information (for topology building). */\n meshWithGroups: Mesh\n}\n\n/**\n * High-level: import mesh + solid from a STEP/BREP file byte stream.\n *\n * Wraps the full importStepToMesh/importBrepToMesh + mesh merge flow.\n * Hosts no longer need to operate the OCCT kernel directly.\n *\n * @param bytes - STEP/BREP file byte stream\n * @param format - the file format: 'step' | 'brep'\n * @param options - optional mesh deflection options\n * @returns the import result\n */\nexport async function importStep(\n bytes: ArrayBuffer | Uint8Array | string,\n format: 'step' | 'brep' = 'step',\n options?: MeshDeflectionOptions,\n): Promise<ImportStepResult> {\n const result: WasmImportResult = format === 'brep'\n ? await importBrepToMesh(bytes as string, options)\n : await importStepToMesh(bytes as ArrayBuffer | Uint8Array, options)\n\n // 合并所有 mesh 的 positions/indices\n let totalPositions = 0\n let totalIndices = 0\n for (const mesh of result.meshes) {\n totalPositions += mesh.positions.length\n totalIndices += mesh.indices.length\n }\n\n const positions = new Float32Array(totalPositions)\n const indices = new Uint32Array(totalIndices)\n let posOffset = 0\n let idxOffset = 0\n let idxBase = 0\n for (const mesh of result.meshes) {\n positions.set(mesh.positions, posOffset)\n posOffset += mesh.positions.length\n // 需要偏移索引\n for (let i = 0; i < mesh.indices.length; i++) {\n indices[idxOffset + i] = mesh.indices[i] + idxBase\n }\n idxOffset += mesh.indices.length\n idxBase += mesh.positions.length / 3\n }\n\n return {\n shape: { positions, indices },\n meshes: result.meshes,\n solid: result.shapeHandle,\n meshWithGroups: result.meshWithGroups,\n }\n}\n\n// ── 导出 API ──\n\n/** Options for exporting mesh data to a STEP string. */\nexport interface ExportStepOptions {\n /** Sewing tolerance. */\n tolerance?: number\n}\n\n/**\n * High-level: export mesh data as a STEP string.\n *\n * Wraps the full meshesToStep flow. Hosts no longer need to operate the OCCT kernel directly.\n *\n * @param shape - mesh data (positions + indices)\n * @param options - optional export options (sewing tolerance)\n * @returns the STEP file text content\n */\nexport function exportStep(\n shape: Shape,\n options?: ExportStepOptions,\n): string {\n return meshesToStep(\n shape.positions,\n shape.indices,\n options?.tolerance ?? 0.01,\n )\n}\n\n/**\n * High-level: release an OCCT solid handle.\n *\n * Wraps the full releaseShape flow.\n *\n * @param solid - the solid handle to release\n */\nexport function releaseSolid(solid: ShapeHandle): void {\n releaseShape(solid)\n}\n\n/**\n * High-level: multi-solid STEP export (zero fuse).\n *\n * Each entry is exported as an independent entity in the STEP (independent XCAF\n * label / PRODUCT), preserving name and color. Multiple solids are never fused.\n *\n * Wraps the full ensureOcctKernel + exportStepFromSolids flow.\n * Hosts no longer need to operate the OCCT kernel directly.\n *\n * @param entries - parts to export; each becomes its own independent entity\n * @param fileMeta - optional file-level metadata; mapped to the P21 header\n * (`rewriteStepHeader`). No effect on geometry/DATA entities.\n * @returns STEP file content as ArrayBuffer\n */\nexport async function exportStepFromSolidsHighLevel(\n entries: StepExportEntry[],\n fileMeta?: FileMeta,\n): Promise<ArrayBuffer> {\n // step.ts consumes the L1 contract — pass the adapter, not the raw kernel\n // (no cross-layer assertion; narrowing plan §Phase 3).\n const primitives = await createOcctPrimitives()\n return exportStepFromSolids(primitives, entries, fileMeta)\n}\n\n// ── 管理函数 ──\n\n/**\n * High-level: initialize the OCCT kernel.\n * Returns the cached instance if already initialized.\n *\n * @returns the initialized OCCT kernel\n */\nexport async function ensureOcctKernel(): Promise<OcctKernel> {\n return initOcctWasm() as unknown as Promise<OcctKernel>\n}\n\n/**\n * High-level: dispose the OCCT kernel.\n * Call when unloading the page or releasing WASM memory.\n */\nexport function disposeOcct(): void {\n disposeOcctWasm()\n}\n\n// Re-export 底层类型供高层 API 用户使用\nexport type { OcctKernel, ShapeHandle, WasmTessellatedMesh, Mesh, MeshDeflectionOptions }\n"]}
@@ -2,8 +2,8 @@
2
2
  * Pure-TS 3D convex hull (QuickHull).
3
3
  *
4
4
  * 第一方模块(2026-09-25 core-decouple Phase 2 §5.1):复制自 brepjs
5
- * `src/kernel/hullGeometry.ts`(同源复制,签名不变;brepjs 包 Phase 5 删除后
6
- * 仍由本文件承担)。
5
+ * `src/kernel/hullGeometry.ts`(同源复制,签名不变;已内化为第一方代码,
6
+ * 由本文件承担)。
7
7
  *
8
8
  * Kernel-agnostic: operates on plain {x,y,z} points and returns triangle
9
9
  * indices. Shared by the occt and occt-wasm adapters, which supply their own
@@ -2,8 +2,8 @@
2
2
  * Pure-TS 3D convex hull (QuickHull).
3
3
  *
4
4
  * 第一方模块(2026-09-25 core-decouple Phase 2 §5.1):复制自 brepjs
5
- * `src/kernel/hullGeometry.ts`(同源复制,签名不变;brepjs 包 Phase 5 删除后
6
- * 仍由本文件承担)。
5
+ * `src/kernel/hullGeometry.ts`(同源复制,签名不变;已内化为第一方代码,
6
+ * 由本文件承担)。
7
7
  *
8
8
  * Kernel-agnostic: operates on plain {x,y,z} points and returns triangle
9
9
  * indices. Shared by the occt and occt-wasm adapters, which supply their own
@@ -166,7 +166,6 @@ function findInitialTetrahedron(points) {
166
166
  * @returns The hull faces (triangle indices) and deduplicated points.
167
167
  * @throws if fewer than 4 non-coincident, non-coplanar points are supplied.
168
168
  */
169
- // brepjs-patterns-disable: max-function-lines -- cohesive QuickHull main loop; splitting hurts readability
170
169
  export function quickHull(inputPoints, tolerance) {
171
170
  const points = deduplicatePoints(inputPoints, tolerance);
172
171
  if (points.length < 4) {
@@ -1 +1 @@
1
- {"version":3,"file":"hullGeometry.js","sourceRoot":"","sources":["../../src/occt-kernel/hullGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Pure-TS 3D convex hull (QuickHull).\n *\n * 第一方模块(2026-09-25 core-decouple Phase 2 §5.1):复制自 brepjs\n * `src/kernel/hullGeometry.ts`(同源复制,签名不变;brepjs 包 Phase 5 删除后\n * 仍由本文件承担)。\n *\n * Kernel-agnostic: operates on plain {x,y,z} points and returns triangle\n * indices. Shared by the occt and occt-wasm adapters, which supply their own\n * vertex extraction and BREP reconstruction around it.\n */\n\nexport interface Vec3 {\n readonly x: number;\n readonly y: number;\n readonly z: number;\n}\n\n/** Result of a QuickHull computation: hull triangle indices and deduplicated points. */\nexport interface HullResult {\n readonly faces: ReadonlyArray<readonly [number, number, number]>;\n readonly points: readonly Vec3[];\n}\n\n// ---------------------------------------------------------------------------\n// Vector math helpers\n// ---------------------------------------------------------------------------\n\nfunction sub(a: Vec3, b: Vec3): Vec3 {\n return { x: a.x - b.x, y: a.y - b.y, z: a.z - b.z };\n}\n\nfunction cross(a: Vec3, b: Vec3): Vec3 {\n return {\n x: a.y * b.z - a.z * b.y,\n y: a.z * b.x - a.x * b.z,\n z: a.x * b.y - a.y * b.x,\n };\n}\n\nfunction dot(a: Vec3, b: Vec3): number {\n return a.x * b.x + a.y * b.y + a.z * b.z;\n}\n\nfunction lengthVec(v: Vec3): number {\n return Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z);\n}\n\nfunction distSq(a: Vec3, b: Vec3): number {\n const dx = a.x - b.x;\n const dy = a.y - b.y;\n const dz = a.z - b.z;\n return dx * dx + dy * dy + dz * dz;\n}\n\n/** Safe array access — throws on out-of-bounds instead of returning undefined. */\nfunction at(arr: readonly Vec3[], i: number): Vec3 {\n const v = arr[i];\n if (v === undefined) throw new Error(`Index ${i} out of bounds`);\n return v;\n}\n\n/** Safe number array access. */\nfunction atN(arr: readonly number[], i: number): number {\n const v = arr[i];\n if (v === undefined) throw new Error(`Index ${i} out of bounds`);\n return v;\n}\n\n// ---------------------------------------------------------------------------\n// QuickHull face\n// ---------------------------------------------------------------------------\n\ninterface HullFace {\n readonly a: number; // indices into points array\n readonly b: number;\n readonly c: number;\n readonly normal: Vec3;\n readonly offset: number; // dot(normal, points[a])\n alive: boolean;\n outsidePoints: number[];\n}\n\nfunction makeFace(points: readonly Vec3[], a: number, b: number, c: number): HullFace {\n const normal = cross(sub(at(points, b), at(points, a)), sub(at(points, c), at(points, a)));\n const len = lengthVec(normal);\n const n = len > 1e-14 ? { x: normal.x / len, y: normal.y / len, z: normal.z / len } : normal;\n return {\n a,\n b,\n c,\n normal: n,\n offset: dot(n, at(points, a)),\n alive: true,\n outsidePoints: [],\n };\n}\n\nfunction signedDist(face: HullFace, point: Vec3): number {\n return dot(face.normal, point) - face.offset;\n}\n\n// ---------------------------------------------------------------------------\n// Deduplication\n// ---------------------------------------------------------------------------\n\nfunction deduplicatePoints(points: Vec3[], tolerance: number): Vec3[] {\n const tolSq = tolerance * tolerance;\n const result: Vec3[] = [];\n for (const p of points) {\n let isDuplicate = false;\n for (const q of result) {\n if (distSq(p, q) < tolSq) {\n isDuplicate = true;\n break;\n }\n }\n if (!isDuplicate) result.push(p);\n }\n return result;\n}\n\n// ---------------------------------------------------------------------------\n// Initial tetrahedron\n// ---------------------------------------------------------------------------\n\nfunction findInitialTetrahedron(points: readonly Vec3[]): [number, number, number, number] | null {\n const n = points.length;\n if (n < 4) return null;\n\n // Find two most distant points along each axis, pick the pair with max distance\n let i0 = 0;\n let i1 = 1;\n let maxDist = distSq(at(points, 0), at(points, 1));\n\n for (let i = 0; i < n; i++) {\n for (let j = i + 1; j < n; j++) {\n const d = distSq(at(points, i), at(points, j));\n if (d > maxDist) {\n maxDist = d;\n i0 = i;\n i1 = j;\n }\n }\n }\n\n if (maxDist < 1e-20) return null;\n\n // Find point most distant from line i0-i1\n const lineDir = sub(at(points, i1), at(points, i0));\n let i2 = -1;\n let maxLineDist = -1;\n\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1) continue;\n const v = sub(at(points, i), at(points, i0));\n const c = cross(lineDir, v);\n const d = dot(c, c);\n if (d > maxLineDist) {\n maxLineDist = d;\n i2 = i;\n }\n }\n\n if (i2 === -1 || maxLineDist < 1e-20) return null;\n\n // Find point most distant from plane i0-i1-i2\n const planeNormal = cross(\n sub(at(points, i1), at(points, i0)),\n sub(at(points, i2), at(points, i0))\n );\n const planeLen = lengthVec(planeNormal);\n if (planeLen < 1e-14) return null;\n\n const pn = {\n x: planeNormal.x / planeLen,\n y: planeNormal.y / planeLen,\n z: planeNormal.z / planeLen,\n };\n const planeOffset = dot(pn, at(points, i0));\n\n let i3 = -1;\n let maxPlaneDist = -1;\n\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1 || i === i2) continue;\n const d = Math.abs(dot(pn, at(points, i)) - planeOffset);\n if (d > maxPlaneDist) {\n maxPlaneDist = d;\n i3 = i;\n }\n }\n\n if (i3 === -1 || maxPlaneDist < 1e-14) return null;\n\n // Orient tetrahedron so that i3 is \"above\" the base triangle\n const sd = dot(pn, at(points, i3)) - planeOffset;\n if (sd > 0) {\n return [i0, i2, i1, i3]; // flip base winding\n }\n return [i0, i1, i2, i3];\n}\n\n// ---------------------------------------------------------------------------\n// QuickHull\n// ---------------------------------------------------------------------------\n\n/**\n * Compute the 3D convex hull of a point set.\n *\n * @param inputPoints - Input points to build the hull from.\n * @param tolerance - Coincidence tolerance for point deduplication.\n * @returns The hull faces (triangle indices) and deduplicated points.\n * @throws if fewer than 4 non-coincident, non-coplanar points are supplied.\n */\n// brepjs-patterns-disable: max-function-lines -- cohesive QuickHull main loop; splitting hurts readability\nexport function quickHull(inputPoints: Vec3[], tolerance: number): HullResult {\n const points = deduplicatePoints(inputPoints, tolerance);\n\n if (points.length < 4) {\n throw new Error(\n points.length === 0\n ? 'No points provided for convex hull'\n : 'Fewer than 4 non-coincident points; cannot form a 3D convex hull'\n );\n }\n\n const tet = findInitialTetrahedron(points);\n if (tet === null) {\n throw new Error('All points are coplanar; cannot form a 3D convex hull');\n }\n\n const [t0, t1, t2, t3] = tet;\n\n // Centroid of initial tetrahedron for ensuring outward normals\n const centroid: Vec3 = {\n x: (at(points, t0).x + at(points, t1).x + at(points, t2).x + at(points, t3).x) / 4,\n y: (at(points, t0).y + at(points, t1).y + at(points, t2).y + at(points, t3).y) / 4,\n z: (at(points, t0).z + at(points, t1).z + at(points, t2).z + at(points, t3).z) / 4,\n };\n\n // Build initial 4 faces of tetrahedron, ensuring outward normals\n function makeOutwardFace(a: number, b: number, c: number): HullFace {\n const face = makeFace(points, a, b, c);\n // If normal points toward centroid, flip the winding\n const faceCenter: Vec3 = {\n x: (at(points, a).x + at(points, b).x + at(points, c).x) / 3,\n y: (at(points, a).y + at(points, b).y + at(points, c).y) / 3,\n z: (at(points, a).z + at(points, b).z + at(points, c).z) / 3,\n };\n const toCentroid = sub(centroid, faceCenter);\n if (dot(face.normal, toCentroid) > 0) {\n // Normal points inward, flip\n return makeFace(points, a, c, b);\n }\n return face;\n }\n\n const faces: HullFace[] = [\n makeOutwardFace(t0, t1, t2),\n makeOutwardFace(t0, t2, t3),\n makeOutwardFace(t0, t3, t1),\n makeOutwardFace(t1, t3, t2),\n ];\n\n const tetSet = new Set([t0, t1, t2, t3]);\n\n // Use a small geometric epsilon for \"outside\" tests, independent of mesh tolerance.\n // Mesh tolerance controls deduplication; hull geometry uses a much tighter epsilon.\n const epsilon = 1e-10;\n\n // Assign each non-tet point to the first visible face\n for (let i = 0; i < points.length; i++) {\n if (tetSet.has(i)) continue;\n for (const face of faces) {\n if (signedDist(face, at(points, i)) > epsilon) {\n face.outsidePoints.push(i);\n break;\n }\n }\n }\n\n for (let iteration = 0; iteration < points.length * 4; iteration++) {\n // Find a face with outside points\n let currentFace: HullFace | null = null;\n for (const face of faces) {\n if (face.alive && face.outsidePoints.length > 0) {\n currentFace = face;\n break;\n }\n }\n if (currentFace === null) break;\n\n // Find the furthest point from this face\n let furthestIdx = atN(currentFace.outsidePoints, 0);\n let furthestDist = signedDist(currentFace, at(points, furthestIdx));\n for (let i = 1; i < currentFace.outsidePoints.length; i++) {\n const idx = atN(currentFace.outsidePoints, i);\n const d = signedDist(currentFace, at(points, idx));\n if (d > furthestDist) {\n furthestDist = d;\n furthestIdx = idx;\n }\n }\n\n // Find all visible faces from this point\n const visibleFaces: HullFace[] = [];\n for (const face of faces) {\n if (face.alive && signedDist(face, at(points, furthestIdx)) > epsilon) {\n visibleFaces.push(face);\n }\n }\n\n // Find horizon edges (edges shared by exactly one visible face)\n const edgeCount = new Map<string, { a: number; b: number; count: number }>();\n for (const face of visibleFaces) {\n const edges: [number, number][] = [\n [face.a, face.b],\n [face.b, face.c],\n [face.c, face.a],\n ];\n for (const [ea, eb] of edges) {\n const key = ea < eb ? `${ea}-${eb}` : `${eb}-${ea}`;\n const entry = edgeCount.get(key);\n if (entry) {\n entry.count++;\n } else {\n // Store in the order from the visible face\n edgeCount.set(key, { a: ea, b: eb, count: 1 });\n }\n }\n }\n\n const horizonEdges: Array<{ a: number; b: number }> = [];\n for (const entry of edgeCount.values()) {\n if (entry.count === 1) {\n // Keep edge in same direction as the visible face; makeFace with apex\n // produces outward normal by winding convention\n horizonEdges.push({ a: entry.a, b: entry.b });\n }\n }\n\n // Collect orphaned outside points from visible faces\n const orphanedPoints: number[] = [];\n for (const face of visibleFaces) {\n for (const idx of face.outsidePoints) {\n if (idx !== furthestIdx) {\n orphanedPoints.push(idx);\n }\n }\n face.alive = false;\n face.outsidePoints = [];\n }\n\n // Create new faces from horizon edges to the furthest point\n const newFaces: HullFace[] = [];\n for (const edge of horizonEdges) {\n const newFaceObj = makeFace(points, edge.a, edge.b, furthestIdx);\n newFaces.push(newFaceObj);\n faces.push(newFaceObj);\n }\n\n // Reassign orphaned points to new faces\n for (const idx of orphanedPoints) {\n for (const face of newFaces) {\n if (signedDist(face, at(points, idx)) > epsilon) {\n face.outsidePoints.push(idx);\n break;\n }\n }\n }\n }\n\n // Collect alive faces\n const resultFaces: Array<readonly [number, number, number]> = [];\n for (const face of faces) {\n if (face.alive) {\n resultFaces.push([face.a, face.b, face.c] as const);\n }\n }\n\n return { faces: resultFaces, points };\n}\n"]}
1
+ {"version":3,"file":"hullGeometry.js","sourceRoot":"","sources":["../../src/occt-kernel/hullGeometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,SAAS,GAAG,CAAC,CAAO,EAAE,CAAO;IAC3B,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,KAAK,CAAC,CAAO,EAAE,CAAO;IAC7B,OAAO;QACL,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,GAAG,CAAC,CAAO,EAAE,CAAO;IAC3B,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,SAAS,CAAC,CAAO;IACxB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,MAAM,CAAC,CAAO,EAAE,CAAO;IAC9B,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC,CAAC;AAED,kFAAkF;AAClF,SAAS,EAAE,CAAC,GAAoB,EAAE,CAAS;IACzC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACjB,IAAI,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gCAAgC;AAChC,SAAS,GAAG,CAAC,GAAsB,EAAE,CAAS;IAC5C,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACjB,IAAI,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjE,OAAO,CAAC,CAAC;AACX,CAAC;AAgBD,SAAS,QAAQ,CAAC,MAAuB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IACxE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7F,OAAO;QACL,CAAC;QACD,CAAC;QACD,CAAC;QACD,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7B,KAAK,EAAE,IAAI;QACX,aAAa,EAAE,EAAE;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAc,EAAE,KAAW;IAC7C,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,SAAS,iBAAiB,CAAC,MAAc,EAAE,SAAiB;IAC1D,MAAM,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;IACpC,MAAM,MAAM,GAAW,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC;gBACzB,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,WAAW;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,SAAS,sBAAsB,CAAC,MAAuB;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvB,gFAAgF;IAChF,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;gBAChB,OAAO,GAAG,CAAC,CAAC;gBACZ,EAAE,GAAG,CAAC,CAAC;gBACP,EAAE,GAAG,CAAC,CAAC;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,KAAK;QAAE,OAAO,IAAI,CAAC;IAEjC,0CAA0C;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACZ,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YAAE,SAAS;QACnC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC;YACpB,WAAW,GAAG,CAAC,CAAC;YAChB,EAAE,GAAG,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IAED,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,WAAW,GAAG,KAAK;QAAE,OAAO,IAAI,CAAC;IAElD,8CAA8C;IAC9C,MAAM,WAAW,GAAG,KAAK,CACvB,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EACnC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CACpC,CAAC;IACF,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,IAAI,QAAQ,GAAG,KAAK;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,EAAE,GAAG;QACT,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,QAAQ;QAC3B,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,QAAQ;QAC3B,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,QAAQ;KAC5B,CAAC;IACF,MAAM,WAAW,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAE5C,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACZ,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YAAE,SAAS;QAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC;YACrB,YAAY,GAAG,CAAC,CAAC;YACjB,EAAE,GAAG,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IAED,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,YAAY,GAAG,KAAK;QAAE,OAAO,IAAI,CAAC;IAEnD,6DAA6D;IAC7D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC;IACjD,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB;IAC/C,CAAC;IACD,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;;;;;GAOG;AAEH,MAAM,UAAU,SAAS,CAAC,WAAmB,EAAE,SAAiB;IAC9D,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEzD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,MAAM,CAAC,MAAM,KAAK,CAAC;YACjB,CAAC,CAAC,oCAAoC;YACtC,CAAC,CAAC,kEAAkE,CACvE,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;IAE7B,+DAA+D;IAC/D,MAAM,QAAQ,GAAS;QACrB,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAClF,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAClF,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;KACnF,CAAC;IAEF,iEAAiE;IACjE,SAAS,eAAe,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,qDAAqD;QACrD,MAAM,UAAU,GAAS;YACvB,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5D,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5D,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;SAC7D,CAAC;QACF,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,6BAA6B;YAC7B,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAe;QACxB,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3B,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3B,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC3B,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;KAC5B,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAEzC,oFAAoF;IACpF,oFAAoF;IACpF,MAAM,OAAO,GAAG,KAAK,CAAC;IAEtB,sDAAsD;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;gBAC9C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;QACnE,kCAAkC;QAClC,IAAI,WAAW,GAAoB,IAAI,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,WAAW,KAAK,IAAI;YAAE,MAAM;QAEhC,yCAAyC;QACzC,IAAI,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;QACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1D,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC;gBACrB,YAAY,GAAG,CAAC,CAAC;gBACjB,WAAW,GAAG,GAAG,CAAC;YACpB,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,MAAM,YAAY,GAAe,EAAE,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;gBACtE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAmD,CAAC;QAC7E,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,KAAK,GAAuB;gBAChC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAChB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAChB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;aACjB,CAAC;YACF,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;gBACpD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,2CAA2C;oBAC3C,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAoC,EAAE,CAAC;QACzD,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;gBACtB,sEAAsE;gBACtE,gDAAgD;gBAChD,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,qDAAqD;QACrD,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;oBACxB,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAC1B,CAAC;QAED,4DAA4D;QAC5D,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YACjE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;QAED,wCAAwC;QACxC,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;oBAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7B,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,WAAW,GAA6C,EAAE,CAAC;IACjE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAU,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC","sourcesContent":["/**\n * Pure-TS 3D convex hull (QuickHull).\n *\n * 第一方模块(2026-09-25 core-decouple Phase 2 §5.1):复制自 brepjs\n * `src/kernel/hullGeometry.ts`(同源复制,签名不变;已内化为第一方代码,\n * 由本文件承担)。\n *\n * Kernel-agnostic: operates on plain {x,y,z} points and returns triangle\n * indices. Shared by the occt and occt-wasm adapters, which supply their own\n * vertex extraction and BREP reconstruction around it.\n */\n\nexport interface Vec3 {\n readonly x: number;\n readonly y: number;\n readonly z: number;\n}\n\n/** Result of a QuickHull computation: hull triangle indices and deduplicated points. */\nexport interface HullResult {\n readonly faces: ReadonlyArray<readonly [number, number, number]>;\n readonly points: readonly Vec3[];\n}\n\n// ---------------------------------------------------------------------------\n// Vector math helpers\n// ---------------------------------------------------------------------------\n\nfunction sub(a: Vec3, b: Vec3): Vec3 {\n return { x: a.x - b.x, y: a.y - b.y, z: a.z - b.z };\n}\n\nfunction cross(a: Vec3, b: Vec3): Vec3 {\n return {\n x: a.y * b.z - a.z * b.y,\n y: a.z * b.x - a.x * b.z,\n z: a.x * b.y - a.y * b.x,\n };\n}\n\nfunction dot(a: Vec3, b: Vec3): number {\n return a.x * b.x + a.y * b.y + a.z * b.z;\n}\n\nfunction lengthVec(v: Vec3): number {\n return Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z);\n}\n\nfunction distSq(a: Vec3, b: Vec3): number {\n const dx = a.x - b.x;\n const dy = a.y - b.y;\n const dz = a.z - b.z;\n return dx * dx + dy * dy + dz * dz;\n}\n\n/** Safe array access — throws on out-of-bounds instead of returning undefined. */\nfunction at(arr: readonly Vec3[], i: number): Vec3 {\n const v = arr[i];\n if (v === undefined) throw new Error(`Index ${i} out of bounds`);\n return v;\n}\n\n/** Safe number array access. */\nfunction atN(arr: readonly number[], i: number): number {\n const v = arr[i];\n if (v === undefined) throw new Error(`Index ${i} out of bounds`);\n return v;\n}\n\n// ---------------------------------------------------------------------------\n// QuickHull face\n// ---------------------------------------------------------------------------\n\ninterface HullFace {\n readonly a: number; // indices into points array\n readonly b: number;\n readonly c: number;\n readonly normal: Vec3;\n readonly offset: number; // dot(normal, points[a])\n alive: boolean;\n outsidePoints: number[];\n}\n\nfunction makeFace(points: readonly Vec3[], a: number, b: number, c: number): HullFace {\n const normal = cross(sub(at(points, b), at(points, a)), sub(at(points, c), at(points, a)));\n const len = lengthVec(normal);\n const n = len > 1e-14 ? { x: normal.x / len, y: normal.y / len, z: normal.z / len } : normal;\n return {\n a,\n b,\n c,\n normal: n,\n offset: dot(n, at(points, a)),\n alive: true,\n outsidePoints: [],\n };\n}\n\nfunction signedDist(face: HullFace, point: Vec3): number {\n return dot(face.normal, point) - face.offset;\n}\n\n// ---------------------------------------------------------------------------\n// Deduplication\n// ---------------------------------------------------------------------------\n\nfunction deduplicatePoints(points: Vec3[], tolerance: number): Vec3[] {\n const tolSq = tolerance * tolerance;\n const result: Vec3[] = [];\n for (const p of points) {\n let isDuplicate = false;\n for (const q of result) {\n if (distSq(p, q) < tolSq) {\n isDuplicate = true;\n break;\n }\n }\n if (!isDuplicate) result.push(p);\n }\n return result;\n}\n\n// ---------------------------------------------------------------------------\n// Initial tetrahedron\n// ---------------------------------------------------------------------------\n\nfunction findInitialTetrahedron(points: readonly Vec3[]): [number, number, number, number] | null {\n const n = points.length;\n if (n < 4) return null;\n\n // Find two most distant points along each axis, pick the pair with max distance\n let i0 = 0;\n let i1 = 1;\n let maxDist = distSq(at(points, 0), at(points, 1));\n\n for (let i = 0; i < n; i++) {\n for (let j = i + 1; j < n; j++) {\n const d = distSq(at(points, i), at(points, j));\n if (d > maxDist) {\n maxDist = d;\n i0 = i;\n i1 = j;\n }\n }\n }\n\n if (maxDist < 1e-20) return null;\n\n // Find point most distant from line i0-i1\n const lineDir = sub(at(points, i1), at(points, i0));\n let i2 = -1;\n let maxLineDist = -1;\n\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1) continue;\n const v = sub(at(points, i), at(points, i0));\n const c = cross(lineDir, v);\n const d = dot(c, c);\n if (d > maxLineDist) {\n maxLineDist = d;\n i2 = i;\n }\n }\n\n if (i2 === -1 || maxLineDist < 1e-20) return null;\n\n // Find point most distant from plane i0-i1-i2\n const planeNormal = cross(\n sub(at(points, i1), at(points, i0)),\n sub(at(points, i2), at(points, i0))\n );\n const planeLen = lengthVec(planeNormal);\n if (planeLen < 1e-14) return null;\n\n const pn = {\n x: planeNormal.x / planeLen,\n y: planeNormal.y / planeLen,\n z: planeNormal.z / planeLen,\n };\n const planeOffset = dot(pn, at(points, i0));\n\n let i3 = -1;\n let maxPlaneDist = -1;\n\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1 || i === i2) continue;\n const d = Math.abs(dot(pn, at(points, i)) - planeOffset);\n if (d > maxPlaneDist) {\n maxPlaneDist = d;\n i3 = i;\n }\n }\n\n if (i3 === -1 || maxPlaneDist < 1e-14) return null;\n\n // Orient tetrahedron so that i3 is \"above\" the base triangle\n const sd = dot(pn, at(points, i3)) - planeOffset;\n if (sd > 0) {\n return [i0, i2, i1, i3]; // flip base winding\n }\n return [i0, i1, i2, i3];\n}\n\n// ---------------------------------------------------------------------------\n// QuickHull\n// ---------------------------------------------------------------------------\n\n/**\n * Compute the 3D convex hull of a point set.\n *\n * @param inputPoints - Input points to build the hull from.\n * @param tolerance - Coincidence tolerance for point deduplication.\n * @returns The hull faces (triangle indices) and deduplicated points.\n * @throws if fewer than 4 non-coincident, non-coplanar points are supplied.\n */\n\nexport function quickHull(inputPoints: Vec3[], tolerance: number): HullResult {\n const points = deduplicatePoints(inputPoints, tolerance);\n\n if (points.length < 4) {\n throw new Error(\n points.length === 0\n ? 'No points provided for convex hull'\n : 'Fewer than 4 non-coincident points; cannot form a 3D convex hull'\n );\n }\n\n const tet = findInitialTetrahedron(points);\n if (tet === null) {\n throw new Error('All points are coplanar; cannot form a 3D convex hull');\n }\n\n const [t0, t1, t2, t3] = tet;\n\n // Centroid of initial tetrahedron for ensuring outward normals\n const centroid: Vec3 = {\n x: (at(points, t0).x + at(points, t1).x + at(points, t2).x + at(points, t3).x) / 4,\n y: (at(points, t0).y + at(points, t1).y + at(points, t2).y + at(points, t3).y) / 4,\n z: (at(points, t0).z + at(points, t1).z + at(points, t2).z + at(points, t3).z) / 4,\n };\n\n // Build initial 4 faces of tetrahedron, ensuring outward normals\n function makeOutwardFace(a: number, b: number, c: number): HullFace {\n const face = makeFace(points, a, b, c);\n // If normal points toward centroid, flip the winding\n const faceCenter: Vec3 = {\n x: (at(points, a).x + at(points, b).x + at(points, c).x) / 3,\n y: (at(points, a).y + at(points, b).y + at(points, c).y) / 3,\n z: (at(points, a).z + at(points, b).z + at(points, c).z) / 3,\n };\n const toCentroid = sub(centroid, faceCenter);\n if (dot(face.normal, toCentroid) > 0) {\n // Normal points inward, flip\n return makeFace(points, a, c, b);\n }\n return face;\n }\n\n const faces: HullFace[] = [\n makeOutwardFace(t0, t1, t2),\n makeOutwardFace(t0, t2, t3),\n makeOutwardFace(t0, t3, t1),\n makeOutwardFace(t1, t3, t2),\n ];\n\n const tetSet = new Set([t0, t1, t2, t3]);\n\n // Use a small geometric epsilon for \"outside\" tests, independent of mesh tolerance.\n // Mesh tolerance controls deduplication; hull geometry uses a much tighter epsilon.\n const epsilon = 1e-10;\n\n // Assign each non-tet point to the first visible face\n for (let i = 0; i < points.length; i++) {\n if (tetSet.has(i)) continue;\n for (const face of faces) {\n if (signedDist(face, at(points, i)) > epsilon) {\n face.outsidePoints.push(i);\n break;\n }\n }\n }\n\n for (let iteration = 0; iteration < points.length * 4; iteration++) {\n // Find a face with outside points\n let currentFace: HullFace | null = null;\n for (const face of faces) {\n if (face.alive && face.outsidePoints.length > 0) {\n currentFace = face;\n break;\n }\n }\n if (currentFace === null) break;\n\n // Find the furthest point from this face\n let furthestIdx = atN(currentFace.outsidePoints, 0);\n let furthestDist = signedDist(currentFace, at(points, furthestIdx));\n for (let i = 1; i < currentFace.outsidePoints.length; i++) {\n const idx = atN(currentFace.outsidePoints, i);\n const d = signedDist(currentFace, at(points, idx));\n if (d > furthestDist) {\n furthestDist = d;\n furthestIdx = idx;\n }\n }\n\n // Find all visible faces from this point\n const visibleFaces: HullFace[] = [];\n for (const face of faces) {\n if (face.alive && signedDist(face, at(points, furthestIdx)) > epsilon) {\n visibleFaces.push(face);\n }\n }\n\n // Find horizon edges (edges shared by exactly one visible face)\n const edgeCount = new Map<string, { a: number; b: number; count: number }>();\n for (const face of visibleFaces) {\n const edges: [number, number][] = [\n [face.a, face.b],\n [face.b, face.c],\n [face.c, face.a],\n ];\n for (const [ea, eb] of edges) {\n const key = ea < eb ? `${ea}-${eb}` : `${eb}-${ea}`;\n const entry = edgeCount.get(key);\n if (entry) {\n entry.count++;\n } else {\n // Store in the order from the visible face\n edgeCount.set(key, { a: ea, b: eb, count: 1 });\n }\n }\n }\n\n const horizonEdges: Array<{ a: number; b: number }> = [];\n for (const entry of edgeCount.values()) {\n if (entry.count === 1) {\n // Keep edge in same direction as the visible face; makeFace with apex\n // produces outward normal by winding convention\n horizonEdges.push({ a: entry.a, b: entry.b });\n }\n }\n\n // Collect orphaned outside points from visible faces\n const orphanedPoints: number[] = [];\n for (const face of visibleFaces) {\n for (const idx of face.outsidePoints) {\n if (idx !== furthestIdx) {\n orphanedPoints.push(idx);\n }\n }\n face.alive = false;\n face.outsidePoints = [];\n }\n\n // Create new faces from horizon edges to the furthest point\n const newFaces: HullFace[] = [];\n for (const edge of horizonEdges) {\n const newFaceObj = makeFace(points, edge.a, edge.b, furthestIdx);\n newFaces.push(newFaceObj);\n faces.push(newFaceObj);\n }\n\n // Reassign orphaned points to new faces\n for (const idx of orphanedPoints) {\n for (const face of newFaces) {\n if (signedDist(face, at(points, idx)) > epsilon) {\n face.outsidePoints.push(idx);\n break;\n }\n }\n }\n }\n\n // Collect alive faces\n const resultFaces: Array<readonly [number, number, number]> = [];\n for (const face of faces) {\n if (face.alive) {\n resultFaces.push([face.a, face.b, face.c] as const);\n }\n }\n\n return { faces: resultFaces, points };\n}\n"]}
@@ -5,20 +5,20 @@
5
5
  * `src/kernel/occtWasm/hullOps.ts` + `src/kernel/occtWasm/constructionOps.ts#buildSolidFromFaces`,
6
6
  * BREP 重建改为 core 的 occt-wasm 原生直调(`buildTriFace` / `sewAndSolidify` /
7
7
  * `fixFaceOrientations` / `release`,occt-wasm index.d.ts 形态——ShapeHandle[]、
8
- * Vec3 对象),**不 import brepjs**。occt-wasm 无原生 hull(Phase 0 实证),
8
+ * Vec3 对象),**不依赖外部 brepjs 包**。occt-wasm 无原生 hull(Phase 0 实证),
9
9
  * 故不直调原生 hull;QuickHull 由 `./hullGeometry` 承担。
10
10
  */
11
11
  import type { OcctKernel } from 'occt-wasm';
12
12
  import type { BrepHandle } from '../brep/engine/types.js';
13
13
  import { type Vec3 } from './hullGeometry.js';
14
14
  /**
15
- * 由点集构造凸包实体(brepjs 原语义:quickHull → 三角面 → 缝合 → 修复朝向 → solid)。
15
+ * 由点集构造凸包实体(原 brepjs 语义:quickHull → 三角面 → 缝合 → 修复朝向 → solid)。
16
16
  *
17
17
  * @param k - OCCT kernel used for BREP reconstruction.
18
18
  * @param points - Input points to build the hull from.
19
19
  * @param tolerance - Point coincidence tolerance for QuickHull.
20
20
  * @returns The constructed hull solid handle.
21
- * @throws 点数不足 4 或退化(面 < 4)——与 brepjs 原实现一致。
21
+ * @throws 点数不足 4 或退化(面 < 4)——与原 brepjs 实现一致。
22
22
  */
23
23
  export declare function hullFromPoints(k: OcctKernel, points: Vec3[], tolerance: number): BrepHandle;
24
24
  //# sourceMappingURL=hullOps.d.ts.map
@@ -5,18 +5,18 @@
5
5
  * `src/kernel/occtWasm/hullOps.ts` + `src/kernel/occtWasm/constructionOps.ts#buildSolidFromFaces`,
6
6
  * BREP 重建改为 core 的 occt-wasm 原生直调(`buildTriFace` / `sewAndSolidify` /
7
7
  * `fixFaceOrientations` / `release`,occt-wasm index.d.ts 形态——ShapeHandle[]、
8
- * Vec3 对象),**不 import brepjs**。occt-wasm 无原生 hull(Phase 0 实证),
8
+ * Vec3 对象),**不依赖外部 brepjs 包**。occt-wasm 无原生 hull(Phase 0 实证),
9
9
  * 故不直调原生 hull;QuickHull 由 `./hullGeometry` 承担。
10
10
  */
11
11
  import { quickHull } from './hullGeometry.js';
12
12
  /**
13
- * 由点集构造凸包实体(brepjs 原语义:quickHull → 三角面 → 缝合 → 修复朝向 → solid)。
13
+ * 由点集构造凸包实体(原 brepjs 语义:quickHull → 三角面 → 缝合 → 修复朝向 → solid)。
14
14
  *
15
15
  * @param k - OCCT kernel used for BREP reconstruction.
16
16
  * @param points - Input points to build the hull from.
17
17
  * @param tolerance - Point coincidence tolerance for QuickHull.
18
18
  * @returns The constructed hull solid handle.
19
- * @throws 点数不足 4 或退化(面 < 4)——与 brepjs 原实现一致。
19
+ * @throws 点数不足 4 或退化(面 < 4)——与原 brepjs 实现一致。
20
20
  */
21
21
  export function hullFromPoints(k, points, tolerance) {
22
22
  if (points.length < 4)
@@ -24,7 +24,7 @@ export function hullFromPoints(k, points, tolerance) {
24
24
  const { points: hullPoints, faces } = quickHull(points, tolerance);
25
25
  if (faces.length < 4)
26
26
  throw new Error('hullFromPoints: degenerate hull (fewer than 4 faces)');
27
- // Build triangle faces, sew them, and solidify(brepjs buildSolidFromFaces 原逻辑)。
27
+ // Build triangle faces, sew them, and solidify(原 brepjs buildSolidFromFaces 逻辑)。
28
28
  const faceIds = [];
29
29
  for (const [i0, i1, i2] of faces) {
30
30
  const p0 = hullPoints[i0];
@@ -1 +1 @@
1
- {"version":3,"file":"hullOps.js","sourceRoot":"","sources":["../../src/occt-kernel/hullOps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,SAAS,EAAa,MAAM,gBAAgB,CAAA;AAErD;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,CAAa,EACb,MAAc,EACd,SAAiB;IAEjB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAChF,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAClE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IAE7F,gFAAgF;IAChF,MAAM,OAAO,GAAkB,EAAE,CAAA;IACjC,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;QACzB,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;QACzB,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;QACzB,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE;YAAE,SAAQ;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC;IACD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAClD,MAAM,IAAI,GAAG,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;QACzC,8EAA8E;QAC9E,IAAI,IAAI,KAAK,KAAK;YAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACpC,OAAO,IAA6B,CAAA;IACtC,CAAC;YAAS,CAAC;QACT,uEAAuE;QACvE,yEAAyE;QACzE,KAAK,MAAM,EAAE,IAAI,OAAO;YAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACzC,CAAC;AACH,CAAC","sourcesContent":["/**\n * Convex hull operations for the faijs occt kernel(第一方模块)。\n *\n * 2026-09-25 core-decouple Phase 2 §5.1:最小闭包移植——算法复制自 brepjs\n * `src/kernel/occtWasm/hullOps.ts` + `src/kernel/occtWasm/constructionOps.ts#buildSolidFromFaces`,\n * BREP 重建改为 core 的 occt-wasm 原生直调(`buildTriFace` / `sewAndSolidify` /\n * `fixFaceOrientations` / `release`,occt-wasm index.d.ts 形态——ShapeHandle[]、\n * Vec3 对象),**不 import brepjs**。occt-wasm 无原生 hull(Phase 0 实证),\n * 故不直调原生 hull;QuickHull 由 `./hullGeometry` 承担。\n */\n\nimport type { OcctKernel, ShapeHandle } from 'occt-wasm'\nimport type { BrepHandle } from '../brep/engine/types'\nimport { quickHull, type Vec3 } from './hullGeometry'\n\n/**\n * 由点集构造凸包实体(brepjs 原语义:quickHull → 三角面 → 缝合 → 修复朝向 → solid)。\n *\n * @param k - OCCT kernel used for BREP reconstruction.\n * @param points - Input points to build the hull from.\n * @param tolerance - Point coincidence tolerance for QuickHull.\n * @returns The constructed hull solid handle.\n * @throws 点数不足 4 或退化(面 < 4)——与 brepjs 原实现一致。\n */\nexport function hullFromPoints(\n k: OcctKernel,\n points: Vec3[],\n tolerance: number,\n): BrepHandle {\n if (points.length < 4) throw new Error('hullFromPoints: need at least 4 points')\n const { points: hullPoints, faces } = quickHull(points, tolerance)\n if (faces.length < 4) throw new Error('hullFromPoints: degenerate hull (fewer than 4 faces)')\n\n // Build triangle faces, sew them, and solidify(brepjs buildSolidFromFaces 原逻辑)。\n const faceIds: ShapeHandle[] = []\n for (const [i0, i1, i2] of faces) {\n const p0 = hullPoints[i0]\n const p1 = hullPoints[i1]\n const p2 = hullPoints[i2]\n if (!p0 || !p1 || !p2) continue\n faceIds.push(k.buildTriFace(p0, p1, p2))\n }\n try {\n const sewn0 = k.sewAndSolidify(faceIds, tolerance)\n const sewn = k.fixFaceOrientations(sewn0)\n // fixFaceOrientations returns a fresh slot; release the pre-fix intermediate.\n if (sewn !== sewn0) k.release(sewn0)\n return sewn as unknown as BrepHandle\n } finally {\n // Each buildTriFace is a fresh arena slot consumed into the sewn solid\n // (shared refcounted TShape); release the triangles once sewing is done.\n for (const id of faceIds) k.release(id)\n }\n}\n"]}
1
+ {"version":3,"file":"hullOps.js","sourceRoot":"","sources":["../../src/occt-kernel/hullOps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,SAAS,EAAa,MAAM,gBAAgB,CAAA;AAErD;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,CAAa,EACb,MAAc,EACd,SAAiB;IAEjB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAChF,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAClE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IAE7F,iFAAiF;IACjF,MAAM,OAAO,GAAkB,EAAE,CAAA;IACjC,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;QACzB,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;QACzB,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;QACzB,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE;YAAE,SAAQ;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC;IACD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAClD,MAAM,IAAI,GAAG,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;QACzC,8EAA8E;QAC9E,IAAI,IAAI,KAAK,KAAK;YAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACpC,OAAO,IAA6B,CAAA;IACtC,CAAC;YAAS,CAAC;QACT,uEAAuE;QACvE,yEAAyE;QACzE,KAAK,MAAM,EAAE,IAAI,OAAO;YAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACzC,CAAC;AACH,CAAC","sourcesContent":["/**\n * Convex hull operations for the faijs occt kernel(第一方模块)。\n *\n * 2026-09-25 core-decouple Phase 2 §5.1:最小闭包移植——算法复制自 brepjs\n * `src/kernel/occtWasm/hullOps.ts` + `src/kernel/occtWasm/constructionOps.ts#buildSolidFromFaces`,\n * BREP 重建改为 core 的 occt-wasm 原生直调(`buildTriFace` / `sewAndSolidify` /\n * `fixFaceOrientations` / `release`,occt-wasm index.d.ts 形态——ShapeHandle[]、\n * Vec3 对象),**不依赖外部 brepjs 包**。occt-wasm 无原生 hull(Phase 0 实证),\n * 故不直调原生 hull;QuickHull 由 `./hullGeometry` 承担。\n */\n\nimport type { OcctKernel, ShapeHandle } from 'occt-wasm'\nimport type { BrepHandle } from '../brep/engine/types'\nimport { quickHull, type Vec3 } from './hullGeometry'\n\n/**\n * 由点集构造凸包实体(原 brepjs 语义:quickHull → 三角面 → 缝合 → 修复朝向 → solid)。\n *\n * @param k - OCCT kernel used for BREP reconstruction.\n * @param points - Input points to build the hull from.\n * @param tolerance - Point coincidence tolerance for QuickHull.\n * @returns The constructed hull solid handle.\n * @throws 点数不足 4 或退化(面 < 4)——与原 brepjs 实现一致。\n */\nexport function hullFromPoints(\n k: OcctKernel,\n points: Vec3[],\n tolerance: number,\n): BrepHandle {\n if (points.length < 4) throw new Error('hullFromPoints: need at least 4 points')\n const { points: hullPoints, faces } = quickHull(points, tolerance)\n if (faces.length < 4) throw new Error('hullFromPoints: degenerate hull (fewer than 4 faces)')\n\n // Build triangle faces, sew them, and solidify(原 brepjs buildSolidFromFaces 逻辑)。\n const faceIds: ShapeHandle[] = []\n for (const [i0, i1, i2] of faces) {\n const p0 = hullPoints[i0]\n const p1 = hullPoints[i1]\n const p2 = hullPoints[i2]\n if (!p0 || !p1 || !p2) continue\n faceIds.push(k.buildTriFace(p0, p1, p2))\n }\n try {\n const sewn0 = k.sewAndSolidify(faceIds, tolerance)\n const sewn = k.fixFaceOrientations(sewn0)\n // fixFaceOrientations returns a fresh slot; release the pre-fix intermediate.\n if (sewn !== sewn0) k.release(sewn0)\n return sewn as unknown as BrepHandle\n } finally {\n // Each buildTriFace is a fresh arena slot consumed into the sewn solid\n // (shared refcounted TShape); release the triangles once sewing is done.\n for (const id of faceIds) k.release(id)\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"occt-primitives.d.ts","sourceRoot":"","sources":["../../src/occt-kernel/occt-primitives.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAqE5F;;;;;;GAMG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,aAAa,CAAC,CAkWnE;AAED,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAA;AAI7E,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG,4BAA4B,CAAC,cAAc,CAAC,CAAA"}
1
+ {"version":3,"file":"occt-primitives.d.ts","sourceRoot":"","sources":["../../src/occt-kernel/occt-primitives.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAqE5F;;;;;;GAMG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,aAAa,CAAC,CA4XnE;AAED,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAA;AAI7E,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG,4BAA4B,CAAC,cAAc,CAAC,CAAA"}