@faicad/faijs 0.29.5 → 0.31.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (722) hide show
  1. package/NOTICE +6 -5
  2. package/dist/api/align/index.d.ts +64 -0
  3. package/dist/api/align/index.d.ts.map +1 -0
  4. package/dist/api/align/index.js +101 -0
  5. package/dist/api/align/index.js.map +1 -0
  6. package/dist/api/api-namespace.d.ts +6 -5
  7. package/dist/api/api-namespace.d.ts.map +1 -1
  8. package/dist/api/api-namespace.js +89 -5
  9. package/dist/api/api-namespace.js.map +1 -1
  10. package/dist/api/appearance.d.ts +0 -2
  11. package/dist/api/appearance.d.ts.map +1 -1
  12. package/dist/api/appearance.js +0 -2
  13. package/dist/api/appearance.js.map +1 -1
  14. package/dist/api/assembly/entities.d.ts +1 -1
  15. package/dist/api/assembly/entities.js +1 -1
  16. package/dist/api/assembly/entities.js.map +1 -1
  17. package/dist/api/assembly/index.d.ts +1 -1
  18. package/dist/api/assembly/index.js +1 -1
  19. package/dist/api/assembly/index.js.map +1 -1
  20. package/dist/api/assembly/joints.d.ts +33 -15
  21. package/dist/api/assembly/joints.d.ts.map +1 -1
  22. package/dist/api/assembly/joints.js +31 -13
  23. package/dist/api/assembly/joints.js.map +1 -1
  24. package/dist/api/assembly/preview.d.ts +1 -1
  25. package/dist/api/assembly/preview.js +1 -1
  26. package/dist/api/assembly/preview.js.map +1 -1
  27. package/dist/api/assembly/solve.d.ts +1 -1
  28. package/dist/api/assembly/solve.js +1 -1
  29. package/dist/api/assembly/solve.js.map +1 -1
  30. package/dist/api/assembly/solvers/assembly-tree.d.ts +1 -1
  31. package/dist/api/assembly/solvers/assembly-tree.js +1 -1
  32. package/dist/api/assembly/solvers/assembly-tree.js.map +1 -1
  33. package/dist/api/assembly/solvers/chain-solver.d.ts +2 -2
  34. package/dist/api/assembly/solvers/chain-solver.js.map +1 -1
  35. package/dist/api/assembly/solvers/global-solver.d.ts +1 -2
  36. package/dist/api/assembly/solvers/global-solver.d.ts.map +1 -1
  37. package/dist/api/assembly/solvers/global-solver.js +3 -4
  38. package/dist/api/assembly/solvers/global-solver.js.map +1 -1
  39. package/dist/api/assembly/solvers/joints-kinematics.js +1 -1
  40. package/dist/api/assembly/solvers/joints-kinematics.js.map +1 -1
  41. package/dist/api/assembly/solvers/linalg.d.ts +2 -2
  42. package/dist/api/assembly/solvers/linalg.js +2 -2
  43. package/dist/api/assembly/solvers/linalg.js.map +1 -1
  44. package/dist/api/assembly/solvers/types.d.ts +2 -5
  45. package/dist/api/assembly/solvers/types.d.ts.map +1 -1
  46. package/dist/api/assembly/solvers/types.js +1 -4
  47. package/dist/api/assembly/solvers/types.js.map +1 -1
  48. package/dist/api/boolean-op/index.d.ts +65 -0
  49. package/dist/api/boolean-op/index.d.ts.map +1 -0
  50. package/dist/api/boolean-op/index.js +113 -0
  51. package/dist/api/boolean-op/index.js.map +1 -0
  52. package/dist/api/boolean.d.ts.map +1 -1
  53. package/dist/api/boolean.js +22 -33
  54. package/dist/api/boolean.js.map +1 -1
  55. package/dist/api/brep-mirror/booleanFns.d.ts +3 -3
  56. package/dist/api/brep-mirror/booleanFns.js +5 -5
  57. package/dist/api/brep-mirror/booleanFns.js.map +1 -1
  58. package/dist/api/brep-mirror/compoundFns.d.ts +1 -1
  59. package/dist/api/brep-mirror/compoundFns.js +4 -4
  60. package/dist/api/brep-mirror/compoundFns.js.map +1 -1
  61. package/dist/api/brep-mirror/healingFns.d.ts +4 -4
  62. package/dist/api/brep-mirror/healingFns.js +4 -4
  63. package/dist/api/brep-mirror/healingFns.js.map +1 -1
  64. package/dist/api/brep-mirror/hullFns.d.ts +2 -2
  65. package/dist/api/brep-mirror/hullFns.js +2 -2
  66. package/dist/api/brep-mirror/hullFns.js.map +1 -1
  67. package/dist/api/brep-mirror/patternFns.d.ts +5 -5
  68. package/dist/api/brep-mirror/patternFns.js +10 -10
  69. package/dist/api/brep-mirror/patternFns.js.map +1 -1
  70. package/dist/api/brep-mirror/primitiveFns.d.ts +4 -4
  71. package/dist/api/brep-mirror/primitiveFns.js +4 -4
  72. package/dist/api/brep-mirror/primitiveFns.js.map +1 -1
  73. package/dist/api/brep-mirror/roofFns.d.ts +3 -3
  74. package/dist/api/brep-mirror/roofFns.js +7 -7
  75. package/dist/api/brep-mirror/roofFns.js.map +1 -1
  76. package/dist/api/brep-mirror/sweepFns.d.ts +7 -7
  77. package/dist/api/brep-mirror/sweepFns.js +14 -14
  78. package/dist/api/brep-mirror/sweepFns.js.map +1 -1
  79. package/dist/api/brep-mirror/threadFns.d.ts +1 -1
  80. package/dist/api/brep-mirror/threadFns.js +1 -1
  81. package/dist/api/brep-mirror/threadFns.js.map +1 -1
  82. package/dist/api/brep-mirror/topologyFns.d.ts +5 -5
  83. package/dist/api/brep-mirror/topologyFns.js +8 -8
  84. package/dist/api/brep-mirror/topologyFns.js.map +1 -1
  85. package/dist/api/brep-operations/booleanFns.d.ts +40 -0
  86. package/dist/api/brep-operations/booleanFns.d.ts.map +1 -0
  87. package/dist/api/brep-operations/booleanFns.js +104 -0
  88. package/dist/api/brep-operations/booleanFns.js.map +1 -0
  89. package/dist/api/brep-operations/brepHelpers.d.ts +55 -0
  90. package/dist/api/brep-operations/brepHelpers.d.ts.map +1 -0
  91. package/dist/api/brep-operations/brepHelpers.js +131 -0
  92. package/dist/api/brep-operations/brepHelpers.js.map +1 -0
  93. package/dist/api/brep-operations/compoundFns.d.ts +46 -0
  94. package/dist/api/brep-operations/compoundFns.d.ts.map +1 -0
  95. package/dist/api/brep-operations/compoundFns.js +299 -0
  96. package/dist/api/brep-operations/compoundFns.js.map +1 -0
  97. package/dist/api/brep-operations/healingFns.d.ts +91 -0
  98. package/dist/api/brep-operations/healingFns.d.ts.map +1 -0
  99. package/dist/api/brep-operations/healingFns.js +321 -0
  100. package/dist/api/brep-operations/healingFns.js.map +1 -0
  101. package/dist/api/brep-operations/hullFns.d.ts +20 -0
  102. package/dist/api/brep-operations/hullFns.d.ts.map +1 -0
  103. package/dist/api/brep-operations/hullFns.js +46 -0
  104. package/dist/api/brep-operations/hullFns.js.map +1 -0
  105. package/dist/api/brep-operations/joinery-brep.d.ts +172 -0
  106. package/dist/api/brep-operations/joinery-brep.d.ts.map +1 -0
  107. package/dist/api/brep-operations/joinery-brep.js +463 -0
  108. package/dist/api/brep-operations/joinery-brep.js.map +1 -0
  109. package/dist/api/brep-operations/patternFns.d.ts +43 -0
  110. package/dist/api/brep-operations/patternFns.d.ts.map +1 -0
  111. package/dist/api/brep-operations/patternFns.js +178 -0
  112. package/dist/api/brep-operations/patternFns.js.map +1 -0
  113. package/dist/api/brep-operations/primitiveFns.d.ts +42 -0
  114. package/dist/api/brep-operations/primitiveFns.d.ts.map +1 -0
  115. package/dist/api/brep-operations/primitiveFns.js +104 -0
  116. package/dist/api/brep-operations/primitiveFns.js.map +1 -0
  117. package/dist/api/brep-operations/roofFns.d.ts +24 -0
  118. package/dist/api/brep-operations/roofFns.d.ts.map +1 -0
  119. package/dist/api/brep-operations/roofFns.js +229 -0
  120. package/dist/api/brep-operations/roofFns.js.map +1 -0
  121. package/dist/api/brep-operations/straightSkeleton.d.ts +36 -0
  122. package/dist/api/brep-operations/straightSkeleton.d.ts.map +1 -0
  123. package/dist/api/brep-operations/straightSkeleton.js +431 -0
  124. package/dist/api/brep-operations/straightSkeleton.js.map +1 -0
  125. package/dist/api/brep-operations/sweepFns.d.ts +60 -0
  126. package/dist/api/brep-operations/sweepFns.d.ts.map +1 -0
  127. package/dist/api/brep-operations/sweepFns.js +323 -0
  128. package/dist/api/brep-operations/sweepFns.js.map +1 -0
  129. package/dist/api/brep-operations/threadFns.d.ts +83 -0
  130. package/dist/api/brep-operations/threadFns.d.ts.map +1 -0
  131. package/dist/api/brep-operations/threadFns.js +138 -0
  132. package/dist/api/brep-operations/threadFns.js.map +1 -0
  133. package/dist/api/brep-operations/topologyFns.d.ts +111 -0
  134. package/dist/api/brep-operations/topologyFns.d.ts.map +1 -0
  135. package/dist/api/brep-operations/topologyFns.js +300 -0
  136. package/dist/api/brep-operations/topologyFns.js.map +1 -0
  137. package/dist/api/brep-topology.d.ts +1 -1
  138. package/dist/api/brep-topology.d.ts.map +1 -1
  139. package/dist/api/brep-topology.js +1 -1
  140. package/dist/api/brep-topology.js.map +1 -1
  141. package/dist/api/brepjs-compat/index.d.ts +1 -1
  142. package/dist/api/brepjs-compat/index.js +3 -3
  143. package/dist/api/brepjs-compat/index.js.map +1 -1
  144. package/dist/api/cadquery-selectors/borrow-bridge.d.ts.map +1 -1
  145. package/dist/api/cadquery-selectors/borrow-bridge.js +3 -4
  146. package/dist/api/cadquery-selectors/borrow-bridge.js.map +1 -1
  147. package/dist/api/chamfer.d.ts +5 -4
  148. package/dist/api/chamfer.d.ts.map +1 -1
  149. package/dist/api/chamfer.js +12 -11
  150. package/dist/api/chamfer.js.map +1 -1
  151. package/dist/api/curve-sketch/index.d.ts +235 -0
  152. package/dist/api/curve-sketch/index.d.ts.map +1 -0
  153. package/dist/api/curve-sketch/index.js +493 -0
  154. package/dist/api/curve-sketch/index.js.map +1 -0
  155. package/dist/api/draft.d.ts.map +1 -1
  156. package/dist/api/draft.js +1 -3
  157. package/dist/api/draft.js.map +1 -1
  158. package/dist/api/engrave.d.ts.map +1 -1
  159. package/dist/api/engrave.js +6 -15
  160. package/dist/api/engrave.js.map +1 -1
  161. package/dist/api/export-3mf.d.ts +73 -0
  162. package/dist/api/export-3mf.d.ts.map +1 -0
  163. package/dist/api/export-3mf.js +121 -0
  164. package/dist/api/export-3mf.js.map +1 -0
  165. package/dist/api/export-brep.d.ts +47 -0
  166. package/dist/api/export-brep.d.ts.map +1 -0
  167. package/dist/api/export-brep.js +67 -0
  168. package/dist/api/export-brep.js.map +1 -0
  169. package/dist/api/export-step.d.ts +67 -0
  170. package/dist/api/export-step.d.ts.map +1 -0
  171. package/dist/api/export-step.js +98 -0
  172. package/dist/api/export-step.js.map +1 -0
  173. package/dist/api/export-stl.d.ts +58 -0
  174. package/dist/api/export-stl.d.ts.map +1 -0
  175. package/dist/api/export-stl.js +114 -0
  176. package/dist/api/export-stl.js.map +1 -0
  177. package/dist/api/extrude.d.ts +8 -11
  178. package/dist/api/extrude.d.ts.map +1 -1
  179. package/dist/api/extrude.js +11 -14
  180. package/dist/api/extrude.js.map +1 -1
  181. package/dist/api/feature-repair.d.ts +1 -1
  182. package/dist/api/feature-repair.d.ts.map +1 -1
  183. package/dist/api/feature-repair.js +1 -7
  184. package/dist/api/feature-repair.js.map +1 -1
  185. package/dist/api/fillet-variable.d.ts +2 -2
  186. package/dist/api/fillet-variable.d.ts.map +1 -1
  187. package/dist/api/fillet-variable.js +2 -3
  188. package/dist/api/fillet-variable.js.map +1 -1
  189. package/dist/api/fillet.d.ts +5 -7
  190. package/dist/api/fillet.d.ts.map +1 -1
  191. package/dist/api/fillet.js +5 -8
  192. package/dist/api/fillet.js.map +1 -1
  193. package/dist/api/generated/2d.d.ts +4 -0
  194. package/dist/api/generated/2d.d.ts.map +1 -1
  195. package/dist/api/generated/2d.js +4 -0
  196. package/dist/api/generated/2d.js.map +1 -1
  197. package/dist/api/generated/core.d.ts +4 -0
  198. package/dist/api/generated/core.d.ts.map +1 -1
  199. package/dist/api/generated/core.js +4 -0
  200. package/dist/api/generated/core.js.map +1 -1
  201. package/dist/api/generated/gear.d.ts +4 -0
  202. package/dist/api/generated/gear.d.ts.map +1 -1
  203. package/dist/api/generated/gear.js +4 -0
  204. package/dist/api/generated/gear.js.map +1 -1
  205. package/dist/api/generated/io.d.ts +4 -0
  206. package/dist/api/generated/io.d.ts.map +1 -1
  207. package/dist/api/generated/io.js +4 -0
  208. package/dist/api/generated/io.js.map +1 -1
  209. package/dist/api/generated/kernel.d.ts +4 -0
  210. package/dist/api/generated/kernel.d.ts.map +1 -1
  211. package/dist/api/generated/kernel.js +4 -0
  212. package/dist/api/generated/kernel.js.map +1 -1
  213. package/dist/api/generated/measurement.d.ts +21 -21
  214. package/dist/api/generated/measurement.d.ts.map +1 -1
  215. package/dist/api/generated/measurement.js +25 -21
  216. package/dist/api/generated/measurement.js.map +1 -1
  217. package/dist/api/generated/ns.d.ts +4 -0
  218. package/dist/api/generated/ns.d.ts.map +1 -1
  219. package/dist/api/generated/ns.js +4 -0
  220. package/dist/api/generated/ns.js.map +1 -1
  221. package/dist/api/generated/operations.d.ts +32 -32
  222. package/dist/api/generated/operations.d.ts.map +1 -1
  223. package/dist/api/generated/operations.js +58 -54
  224. package/dist/api/generated/operations.js.map +1 -1
  225. package/dist/api/generated/projection.d.ts +4 -0
  226. package/dist/api/generated/projection.d.ts.map +1 -1
  227. package/dist/api/generated/projection.js +4 -0
  228. package/dist/api/generated/projection.js.map +1 -1
  229. package/dist/api/generated/query.d.ts +4 -0
  230. package/dist/api/generated/query.d.ts.map +1 -1
  231. package/dist/api/generated/query.js +4 -0
  232. package/dist/api/generated/query.js.map +1 -1
  233. package/dist/api/generated/script-face-manifest.d.ts +1 -1
  234. package/dist/api/generated/script-face-manifest.js +3 -3
  235. package/dist/api/generated/script-face-manifest.js.map +1 -1
  236. package/dist/api/generated/script-face.d.ts +1 -1
  237. package/dist/api/generated/script-face.js +1 -1
  238. package/dist/api/generated/script-face.js.map +1 -1
  239. package/dist/api/generated/sketching.d.ts +2 -2
  240. package/dist/api/generated/sketching.d.ts.map +1 -1
  241. package/dist/api/generated/sketching.js +8 -4
  242. package/dist/api/generated/sketching.js.map +1 -1
  243. package/dist/api/generated/text.d.ts +4 -0
  244. package/dist/api/generated/text.d.ts.map +1 -1
  245. package/dist/api/generated/text.js +4 -0
  246. package/dist/api/generated/text.js.map +1 -1
  247. package/dist/api/generated/topology.d.ts +45 -45
  248. package/dist/api/generated/topology.d.ts.map +1 -1
  249. package/dist/api/generated/topology.js +77 -73
  250. package/dist/api/generated/topology.js.map +1 -1
  251. package/dist/api/generated/view.d.ts +4 -0
  252. package/dist/api/generated/view.d.ts.map +1 -1
  253. package/dist/api/generated/view.js +4 -0
  254. package/dist/api/generated/view.js.map +1 -1
  255. package/dist/api/geom-types/constants.d.ts +11 -0
  256. package/dist/api/geom-types/constants.d.ts.map +1 -0
  257. package/dist/api/geom-types/constants.js +11 -0
  258. package/dist/api/geom-types/constants.js.map +1 -0
  259. package/dist/api/geom-types/index.d.ts +21 -0
  260. package/dist/api/geom-types/index.d.ts.map +1 -0
  261. package/dist/api/geom-types/index.js +22 -0
  262. package/dist/api/geom-types/index.js.map +1 -0
  263. package/dist/api/geom-types/planeOps.d.ts +98 -0
  264. package/dist/api/geom-types/planeOps.d.ts.map +1 -0
  265. package/dist/api/geom-types/planeOps.js +170 -0
  266. package/dist/api/geom-types/planeOps.js.map +1 -0
  267. package/dist/api/geom-types/planeTypes.d.ts +24 -0
  268. package/dist/api/geom-types/planeTypes.d.ts.map +1 -0
  269. package/dist/api/geom-types/planeTypes.js +8 -0
  270. package/dist/api/geom-types/planeTypes.js.map +1 -0
  271. package/dist/api/geom-types/types.d.ts +64 -0
  272. package/dist/api/geom-types/types.d.ts.map +1 -0
  273. package/dist/api/geom-types/types.js +48 -0
  274. package/dist/api/geom-types/types.js.map +1 -0
  275. package/dist/api/geom-types/vecOps.d.ts +124 -0
  276. package/dist/api/geom-types/vecOps.d.ts.map +1 -0
  277. package/dist/api/geom-types/vecOps.js +202 -0
  278. package/dist/api/geom-types/vecOps.js.map +1 -0
  279. package/dist/api/geom.d.ts.map +1 -1
  280. package/dist/api/geom.js +6 -5
  281. package/dist/api/geom.js.map +1 -1
  282. package/dist/api/half-space.d.ts +56 -0
  283. package/dist/api/half-space.d.ts.map +1 -0
  284. package/dist/api/half-space.js +82 -0
  285. package/dist/api/half-space.js.map +1 -0
  286. package/dist/api/helix.d.ts +11 -2
  287. package/dist/api/helix.d.ts.map +1 -1
  288. package/dist/api/helix.js +20 -4
  289. package/dist/api/helix.js.map +1 -1
  290. package/dist/api/index.d.ts +19 -7
  291. package/dist/api/index.d.ts.map +1 -1
  292. package/dist/api/index.js +44 -11
  293. package/dist/api/index.js.map +1 -1
  294. package/dist/api/internal/compat-op.d.ts +10 -36
  295. package/dist/api/internal/compat-op.d.ts.map +1 -1
  296. package/dist/api/internal/compat-op.js +17 -51
  297. package/dist/api/internal/compat-op.js.map +1 -1
  298. package/dist/api/internal/compat-projection.d.ts +5 -5
  299. package/dist/api/internal/compat-projection.js +5 -5
  300. package/dist/api/internal/compat-projection.js.map +1 -1
  301. package/dist/api/internal/dual-form-args.d.ts +0 -2
  302. package/dist/api/internal/dual-form-args.d.ts.map +1 -1
  303. package/dist/api/internal/dual-form-args.js +1 -3
  304. package/dist/api/internal/dual-form-args.js.map +1 -1
  305. package/dist/api/internal/export-members.d.ts +80 -0
  306. package/dist/api/internal/export-members.d.ts.map +1 -0
  307. package/dist/api/internal/export-members.js +104 -0
  308. package/dist/api/internal/export-members.js.map +1 -0
  309. package/dist/api/internal/l3-bridge.d.ts +22 -37
  310. package/dist/api/internal/l3-bridge.d.ts.map +1 -1
  311. package/dist/api/internal/l3-bridge.js +30 -77
  312. package/dist/api/internal/l3-bridge.js.map +1 -1
  313. package/dist/api/internal/profile-wire.d.ts +1 -1
  314. package/dist/api/internal/profile-wire.js +1 -1
  315. package/dist/api/internal/profile-wire.js.map +1 -1
  316. package/dist/api/internal/result-unwrap.d.ts +4 -6
  317. package/dist/api/internal/result-unwrap.d.ts.map +1 -1
  318. package/dist/api/internal/result-unwrap.js +4 -6
  319. package/dist/api/internal/result-unwrap.js.map +1 -1
  320. package/dist/api/knurl.d.ts.map +1 -1
  321. package/dist/api/knurl.js +5 -3
  322. package/dist/api/knurl.js.map +1 -1
  323. package/dist/api/loft.d.ts +2 -2
  324. package/dist/api/loft.d.ts.map +1 -1
  325. package/dist/api/loft.js +2 -2
  326. package/dist/api/loft.js.map +1 -1
  327. package/dist/api/measure-query/index.d.ts +262 -0
  328. package/dist/api/measure-query/index.d.ts.map +1 -0
  329. package/dist/api/measure-query/index.js +390 -0
  330. package/dist/api/measure-query/index.js.map +1 -0
  331. package/dist/api/measurement/index.d.ts +3 -3
  332. package/dist/api/measurement/index.js +3 -3
  333. package/dist/api/measurement/index.js.map +1 -1
  334. package/dist/api/meta.d.ts +0 -2
  335. package/dist/api/meta.d.ts.map +1 -1
  336. package/dist/api/meta.js +0 -2
  337. package/dist/api/meta.js.map +1 -1
  338. package/dist/api/offset2d.d.ts +49 -0
  339. package/dist/api/offset2d.d.ts.map +1 -0
  340. package/dist/api/offset2d.js +86 -0
  341. package/dist/api/offset2d.js.map +1 -0
  342. package/dist/api/pattern.d.ts.map +1 -1
  343. package/dist/api/pattern.js +3 -6
  344. package/dist/api/pattern.js.map +1 -1
  345. package/dist/api/primitives.d.ts +6 -6
  346. package/dist/api/primitives.d.ts.map +1 -1
  347. package/dist/api/primitives.js +19 -17
  348. package/dist/api/primitives.js.map +1 -1
  349. package/dist/api/profile.d.ts.map +1 -1
  350. package/dist/api/profile.js +0 -1
  351. package/dist/api/profile.js.map +1 -1
  352. package/dist/api/punch-hole.d.ts.map +1 -1
  353. package/dist/api/punch-hole.js +0 -1
  354. package/dist/api/punch-hole.js.map +1 -1
  355. package/dist/api/replicate.d.ts +6 -8
  356. package/dist/api/replicate.d.ts.map +1 -1
  357. package/dist/api/replicate.js +27 -65
  358. package/dist/api/replicate.js.map +1 -1
  359. package/dist/api/result.d.ts +1 -1
  360. package/dist/api/result.js +1 -1
  361. package/dist/api/result.js.map +1 -1
  362. package/dist/api/revolve.d.ts +2 -2
  363. package/dist/api/revolve.js +3 -3
  364. package/dist/api/revolve.js.map +1 -1
  365. package/dist/api/screw.d.ts +1 -1
  366. package/dist/api/screw.d.ts.map +1 -1
  367. package/dist/api/screw.js +5 -4
  368. package/dist/api/screw.js.map +1 -1
  369. package/dist/api/sdf.d.ts.map +1 -1
  370. package/dist/api/sdf.js +3 -2
  371. package/dist/api/sdf.js.map +1 -1
  372. package/dist/api/section-by-plane.d.ts.map +1 -1
  373. package/dist/api/section-by-plane.js +0 -1
  374. package/dist/api/section-by-plane.js.map +1 -1
  375. package/dist/api/shape-type/index.d.ts +141 -0
  376. package/dist/api/shape-type/index.d.ts.map +1 -0
  377. package/dist/api/shape-type/index.js +182 -0
  378. package/dist/api/shape-type/index.js.map +1 -0
  379. package/dist/api/shell.d.ts +2 -2
  380. package/dist/api/shell.d.ts.map +1 -1
  381. package/dist/api/shell.js +12 -3
  382. package/dist/api/shell.js.map +1 -1
  383. package/dist/api/sketch-on-face.d.ts +3 -3
  384. package/dist/api/sketch-on-face.d.ts.map +1 -1
  385. package/dist/api/sketch-on-face.js +6 -4
  386. package/dist/api/sketch-on-face.js.map +1 -1
  387. package/dist/api/sketch-on-plane.d.ts.map +1 -1
  388. package/dist/api/sketch-on-plane.js +0 -1
  389. package/dist/api/sketch-on-plane.js.map +1 -1
  390. package/dist/api/solid-from-faces.d.ts +45 -0
  391. package/dist/api/solid-from-faces.d.ts.map +1 -0
  392. package/dist/api/solid-from-faces.js +72 -0
  393. package/dist/api/solid-from-faces.js.map +1 -0
  394. package/dist/api/solid-offset/index.d.ts +67 -0
  395. package/dist/api/solid-offset/index.d.ts.map +1 -0
  396. package/dist/api/solid-offset/index.js +132 -0
  397. package/dist/api/solid-offset/index.js.map +1 -0
  398. package/dist/api/split-by-plane.d.ts.map +1 -1
  399. package/dist/api/split-by-plane.js +0 -1
  400. package/dist/api/split-by-plane.js.map +1 -1
  401. package/dist/api/split.d.ts +1 -1
  402. package/dist/api/split.js +1 -1
  403. package/dist/api/split.js.map +1 -1
  404. package/dist/api/surface/arg-spec.d.ts +37 -44
  405. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  406. package/dist/api/surface/arg-spec.js +224 -233
  407. package/dist/api/surface/arg-spec.js.map +1 -1
  408. package/dist/api/surface-face/index.d.ts +104 -0
  409. package/dist/api/surface-face/index.d.ts.map +1 -0
  410. package/dist/api/surface-face/index.js +217 -0
  411. package/dist/api/surface-face/index.js.map +1 -0
  412. package/dist/api/surface.d.ts +44 -0
  413. package/dist/api/surface.d.ts.map +1 -0
  414. package/dist/api/surface.js +66 -0
  415. package/dist/api/surface.js.map +1 -0
  416. package/dist/api/sweep.d.ts +71 -9
  417. package/dist/api/sweep.d.ts.map +1 -1
  418. package/dist/api/sweep.js +13 -6
  419. package/dist/api/sweep.js.map +1 -1
  420. package/dist/api/thicken.d.ts +1 -1
  421. package/dist/api/thicken.d.ts.map +1 -1
  422. package/dist/api/thicken.js +12 -3
  423. package/dist/api/thicken.js.map +1 -1
  424. package/dist/api/transform.d.ts +8 -8
  425. package/dist/api/transform.d.ts.map +1 -1
  426. package/dist/api/transform.js +58 -27
  427. package/dist/api/transform.js.map +1 -1
  428. package/dist/api/view/cameraFns.d.ts +1 -1
  429. package/dist/api/view/cameraFns.d.ts.map +1 -1
  430. package/dist/api/view/cameraFns.js +1 -1
  431. package/dist/api/view/cameraFns.js.map +1 -1
  432. package/dist/api/view/index.d.ts +0 -2
  433. package/dist/api/view/index.d.ts.map +1 -1
  434. package/dist/api/view/index.js +0 -2
  435. package/dist/api/view/index.js.map +1 -1
  436. package/dist/api/view/projectionPlanes.d.ts +1 -1
  437. package/dist/api/view/projectionPlanes.d.ts.map +1 -1
  438. package/dist/api/view/projectionPlanes.js.map +1 -1
  439. package/dist/api/view/view-camera.d.ts +7 -9
  440. package/dist/api/view/view-camera.d.ts.map +1 -1
  441. package/dist/api/view/view-camera.js +4 -6
  442. package/dist/api/view/view-camera.js.map +1 -1
  443. package/dist/api/view/view-projection.d.ts +0 -2
  444. package/dist/api/view/view-projection.d.ts.map +1 -1
  445. package/dist/api/view/view-projection.js +0 -2
  446. package/dist/api/view/view-projection.js.map +1 -1
  447. package/dist/api/view/view-sheet.d.ts +0 -2
  448. package/dist/api/view/view-sheet.d.ts.map +1 -1
  449. package/dist/api/view/view-sheet.js +0 -2
  450. package/dist/api/view/view-sheet.js.map +1 -1
  451. package/dist/api/view-export/index.d.ts +97 -0
  452. package/dist/api/view-export/index.d.ts.map +1 -0
  453. package/dist/api/view-export/index.js +118 -0
  454. package/dist/api/view-export/index.js.map +1 -0
  455. package/dist/boolean/index.d.ts +23 -0
  456. package/dist/boolean/index.d.ts.map +1 -0
  457. package/dist/boolean/index.js +27 -0
  458. package/dist/boolean/index.js.map +1 -0
  459. package/dist/brep/brep-chain.d.ts +1 -19
  460. package/dist/brep/brep-chain.d.ts.map +1 -1
  461. package/dist/brep/brep-chain.js +0 -1
  462. package/dist/brep/brep-chain.js.map +1 -1
  463. package/dist/brep/brep-ops.d.ts +93 -2
  464. package/dist/brep/brep-ops.d.ts.map +1 -1
  465. package/dist/brep/brep-ops.js +185 -15
  466. package/dist/brep/brep-ops.js.map +1 -1
  467. package/dist/brep/brep-topology.d.ts +20 -0
  468. package/dist/brep/brep-topology.d.ts.map +1 -1
  469. package/dist/brep/brep-topology.js +46 -0
  470. package/dist/brep/brep-topology.js.map +1 -1
  471. package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
  472. package/dist/brep/engine/adapters/brep-mock.js +0 -3
  473. package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
  474. package/dist/brep/engine/adapters/brepkit.d.ts +4 -3
  475. package/dist/brep/engine/adapters/brepkit.d.ts.map +1 -1
  476. package/dist/brep/engine/adapters/brepkit.js +4 -98
  477. package/dist/brep/engine/adapters/brepkit.js.map +1 -1
  478. package/dist/brep/engine/adapters/occt.d.ts +1 -1
  479. package/dist/brep/engine/adapters/occt.d.ts.map +1 -1
  480. package/dist/brep/engine/adapters/occt.js +4 -148
  481. package/dist/brep/engine/adapters/occt.js.map +1 -1
  482. package/dist/brep/engine/native-history.d.ts +27 -0
  483. package/dist/brep/engine/native-history.d.ts.map +1 -0
  484. package/dist/brep/engine/native-history.js +54 -0
  485. package/dist/brep/engine/native-history.js.map +1 -0
  486. package/dist/brep/engine/primitives.d.ts +2 -3
  487. package/dist/brep/engine/primitives.d.ts.map +1 -1
  488. package/dist/brep/engine/primitives.js +1 -2
  489. package/dist/brep/engine/primitives.js.map +1 -1
  490. package/dist/brep/engine/registry.d.ts +3 -5
  491. package/dist/brep/engine/registry.d.ts.map +1 -1
  492. package/dist/brep/engine/registry.js +2 -2
  493. package/dist/brep/engine/registry.js.map +1 -1
  494. package/dist/brep/engine/types.d.ts +35 -77
  495. package/dist/brep/engine/types.d.ts.map +1 -1
  496. package/dist/brep/engine/types.js.map +1 -1
  497. package/dist/brep/export/export-model.d.ts +21 -0
  498. package/dist/brep/export/export-model.d.ts.map +1 -1
  499. package/dist/brep/export/export-model.js +171 -73
  500. package/dist/brep/export/export-model.js.map +1 -1
  501. package/dist/brep/export/step.d.ts +17 -1
  502. package/dist/brep/export/step.d.ts.map +1 -1
  503. package/dist/brep/export/step.js +133 -0
  504. package/dist/brep/export/step.js.map +1 -1
  505. package/dist/brep/export/stl.d.ts +22 -1
  506. package/dist/brep/export/stl.d.ts.map +1 -1
  507. package/dist/brep/export/stl.js +58 -10
  508. package/dist/brep/export/stl.js.map +1 -1
  509. package/dist/brep/export/transform12.d.ts +47 -0
  510. package/dist/brep/export/transform12.d.ts.map +1 -0
  511. package/dist/brep/export/transform12.js +87 -0
  512. package/dist/brep/export/transform12.js.map +1 -0
  513. package/dist/brep/face-evolution.d.ts +53 -0
  514. package/dist/brep/face-evolution.d.ts.map +1 -1
  515. package/dist/brep/face-evolution.js +65 -0
  516. package/dist/brep/face-evolution.js.map +1 -1
  517. package/dist/brep/handle-bridge.d.ts +2 -2
  518. package/dist/brep/handle-bridge.js +2 -2
  519. package/dist/brep/handle-bridge.js.map +1 -1
  520. package/dist/brep/index.d.ts +6 -3
  521. package/dist/brep/index.d.ts.map +1 -1
  522. package/dist/brep/index.js +6 -3
  523. package/dist/brep/index.js.map +1 -1
  524. package/dist/brepkit-kernel/brepkitKernel.d.ts +1 -1
  525. package/dist/brepkit-kernel/brepkitKernel.js +2 -2
  526. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  527. package/dist/browser-host/index.d.ts +4 -1
  528. package/dist/browser-host/index.d.ts.map +1 -1
  529. package/dist/browser-host/index.js +7 -1
  530. package/dist/browser-host/index.js.map +1 -1
  531. package/dist/browser.d.ts +5 -9
  532. package/dist/browser.d.ts.map +1 -1
  533. package/dist/browser.js +5 -26
  534. package/dist/browser.js.map +1 -1
  535. package/dist/cad-runtime/admit-compat-lib.d.ts +3 -10
  536. package/dist/cad-runtime/admit-compat-lib.d.ts.map +1 -1
  537. package/dist/cad-runtime/admit-compat-lib.js +3 -9
  538. package/dist/cad-runtime/admit-compat-lib.js.map +1 -1
  539. package/dist/cad-runtime/backend-dispatch.d.ts +13 -58
  540. package/dist/cad-runtime/backend-dispatch.d.ts.map +1 -1
  541. package/dist/cad-runtime/backend-dispatch.js +34 -83
  542. package/dist/cad-runtime/backend-dispatch.js.map +1 -1
  543. package/dist/cad-runtime/content-key.d.ts +3 -3
  544. package/dist/cad-runtime/content-key.js +3 -3
  545. package/dist/cad-runtime/content-key.js.map +1 -1
  546. package/dist/cad-runtime/direct-executor.d.ts +6 -3
  547. package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
  548. package/dist/cad-runtime/direct-executor.js +31 -9
  549. package/dist/cad-runtime/direct-executor.js.map +1 -1
  550. package/dist/cad-runtime/interp/env.d.ts +1 -1
  551. package/dist/cad-runtime/interp/env.js.map +1 -1
  552. package/dist/cad-runtime/lib-id.d.ts +0 -2
  553. package/dist/cad-runtime/lib-id.d.ts.map +1 -1
  554. package/dist/cad-runtime/lib-id.js +0 -2
  555. package/dist/cad-runtime/lib-id.js.map +1 -1
  556. package/dist/cad-runtime/live-shapes.d.ts +3 -5
  557. package/dist/cad-runtime/live-shapes.d.ts.map +1 -1
  558. package/dist/cad-runtime/live-shapes.js +8 -10
  559. package/dist/cad-runtime/live-shapes.js.map +1 -1
  560. package/dist/cad-runtime/ports.d.ts +31 -3
  561. package/dist/cad-runtime/ports.d.ts.map +1 -1
  562. package/dist/cad-runtime/ports.js.map +1 -1
  563. package/dist/cad-runtime/runtime.d.ts +54 -19
  564. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  565. package/dist/cad-runtime/runtime.js +89 -54
  566. package/dist/cad-runtime/runtime.js.map +1 -1
  567. package/dist/define-op.d.ts +10 -14
  568. package/dist/define-op.d.ts.map +1 -1
  569. package/dist/define-op.js +5 -22
  570. package/dist/define-op.js.map +1 -1
  571. package/dist/env-agnostic.d.ts +2 -2
  572. package/dist/env-agnostic.d.ts.map +1 -1
  573. package/dist/env-agnostic.js +1 -1
  574. package/dist/env-agnostic.js.map +1 -1
  575. package/dist/geometry2d/bridge/plane.d.ts +1 -1
  576. package/dist/geometry2d/bridge/plane.js +1 -1
  577. package/dist/geometry2d/bridge/plane.js.map +1 -1
  578. package/dist/geometry2d/curve2d.d.ts +1 -1
  579. package/dist/geometry2d/curve2d.js +1 -1
  580. package/dist/geometry2d/curve2d.js.map +1 -1
  581. package/dist/index.d.ts +14 -65
  582. package/dist/index.d.ts.map +1 -1
  583. package/dist/index.js +18 -70
  584. package/dist/index.js.map +1 -1
  585. package/dist/io/fai-zip/container-read.d.ts +16 -0
  586. package/dist/io/fai-zip/container-read.d.ts.map +1 -1
  587. package/dist/io/fai-zip/container-read.js +22 -0
  588. package/dist/io/fai-zip/container-read.js.map +1 -1
  589. package/dist/io/fai-zip/index.d.ts +1 -1
  590. package/dist/io/fai-zip/index.d.ts.map +1 -1
  591. package/dist/io/fai-zip/index.js +1 -1
  592. package/dist/io/fai-zip/index.js.map +1 -1
  593. package/dist/lang/code-to-args.d.ts.map +1 -1
  594. package/dist/lang/code-to-args.js +10 -1
  595. package/dist/lang/code-to-args.js.map +1 -1
  596. package/dist/lang/determinism-scanner.d.ts.map +1 -1
  597. package/dist/lang/determinism-scanner.js +22 -9
  598. package/dist/lang/determinism-scanner.js.map +1 -1
  599. package/dist/lang/metadata-extractor.d.ts +27 -6
  600. package/dist/lang/metadata-extractor.d.ts.map +1 -1
  601. package/dist/lang/metadata-extractor.js +88 -8
  602. package/dist/lang/metadata-extractor.js.map +1 -1
  603. package/dist/lang/parse-error.d.ts +4 -0
  604. package/dist/lang/parse-error.d.ts.map +1 -1
  605. package/dist/lang/parse-error.js.map +1 -1
  606. package/dist/lang/security-scanner.d.ts +27 -2
  607. package/dist/lang/security-scanner.d.ts.map +1 -1
  608. package/dist/lang/security-scanner.js +29 -2
  609. package/dist/lang/security-scanner.js.map +1 -1
  610. package/dist/lang/source-edit.d.ts +2 -2
  611. package/dist/lang/source-edit.js.map +1 -1
  612. package/dist/lang/symbol-table.generated.d.ts +53 -0
  613. package/dist/lang/symbol-table.generated.d.ts.map +1 -1
  614. package/dist/lang/symbol-table.generated.js +53 -0
  615. package/dist/lang/symbol-table.generated.js.map +1 -1
  616. package/dist/mesh/import-model.d.ts +94 -0
  617. package/dist/mesh/import-model.d.ts.map +1 -0
  618. package/dist/mesh/import-model.js +15 -0
  619. package/dist/mesh/import-model.js.map +1 -0
  620. package/dist/mesh/index.d.ts +19 -63
  621. package/dist/mesh/index.d.ts.map +1 -1
  622. package/dist/mesh/index.js +19 -72
  623. package/dist/mesh/index.js.map +1 -1
  624. package/dist/mesh/io.d.ts +62 -17
  625. package/dist/mesh/io.d.ts.map +1 -1
  626. package/dist/mesh/io.js +210 -41
  627. package/dist/mesh/io.js.map +1 -1
  628. package/dist/mesh/primitives.js +1 -1
  629. package/dist/mesh/primitives.js.map +1 -1
  630. package/dist/mesh/threemf-bambu.d.ts +12 -1
  631. package/dist/mesh/threemf-bambu.d.ts.map +1 -1
  632. package/dist/mesh/threemf-bambu.js +68 -16
  633. package/dist/mesh/threemf-bambu.js.map +1 -1
  634. package/dist/mesh/threemf-loader.d.ts +52 -5
  635. package/dist/mesh/threemf-loader.d.ts.map +1 -1
  636. package/dist/mesh/threemf-loader.js +139 -41
  637. package/dist/mesh/threemf-loader.js.map +1 -1
  638. package/dist/mesh/transform.d.ts +1 -1
  639. package/dist/mesh/transform.js +1 -1
  640. package/dist/mesh/transform.js.map +1 -1
  641. package/dist/mesh/types.d.ts +35 -5
  642. package/dist/mesh/types.d.ts.map +1 -1
  643. package/dist/mesh/types.js.map +1 -1
  644. package/dist/node-host/cli.d.ts +49 -1
  645. package/dist/node-host/cli.d.ts.map +1 -1
  646. package/dist/node-host/cli.js +125 -19
  647. package/dist/node-host/cli.js.map +1 -1
  648. package/dist/node-host/execute-script.d.ts +56 -0
  649. package/dist/node-host/execute-script.d.ts.map +1 -0
  650. package/dist/node-host/execute-script.js +47 -0
  651. package/dist/node-host/execute-script.js.map +1 -0
  652. package/dist/node-host/index.d.ts +1 -0
  653. package/dist/node-host/index.d.ts.map +1 -1
  654. package/dist/node-host/index.js +4 -0
  655. package/dist/node-host/index.js.map +1 -1
  656. package/dist/node.d.ts +2 -0
  657. package/dist/node.d.ts.map +1 -1
  658. package/dist/node.js +3 -0
  659. package/dist/node.js.map +1 -1
  660. package/dist/occt-kernel/generated/occtPlatform.generated.d.ts +260 -0
  661. package/dist/occt-kernel/generated/occtPlatform.generated.d.ts.map +1 -0
  662. package/dist/occt-kernel/generated/occtPlatform.generated.js +875 -0
  663. package/dist/occt-kernel/generated/occtPlatform.generated.js.map +1 -0
  664. package/dist/occt-kernel/hullGeometry.d.ts +2 -2
  665. package/dist/occt-kernel/hullGeometry.js +2 -3
  666. package/dist/occt-kernel/hullGeometry.js.map +1 -1
  667. package/dist/occt-kernel/hullOps.d.ts +3 -3
  668. package/dist/occt-kernel/hullOps.js +4 -4
  669. package/dist/occt-kernel/hullOps.js.map +1 -1
  670. package/dist/occt-kernel/occt-primitives.d.ts.map +1 -1
  671. package/dist/occt-kernel/occt-primitives.js +31 -4
  672. package/dist/occt-kernel/occt-primitives.js.map +1 -1
  673. package/dist/occt-kernel/occtKernel.d.ts.map +1 -1
  674. package/dist/occt-kernel/occtKernel.js +18 -0
  675. package/dist/occt-kernel/occtKernel.js.map +1 -1
  676. package/dist/occt-scan/recognize.d.ts +58 -0
  677. package/dist/occt-scan/recognize.d.ts.map +1 -0
  678. package/dist/occt-scan/recognize.js +216 -0
  679. package/dist/occt-scan/recognize.js.map +1 -0
  680. package/dist/primitives/brep-primitives.js +7 -7
  681. package/dist/primitives/brep-primitives.js.map +1 -1
  682. package/dist/primitives/index.d.ts +19 -0
  683. package/dist/primitives/index.d.ts.map +1 -0
  684. package/dist/primitives/index.js +21 -0
  685. package/dist/primitives/index.js.map +1 -0
  686. package/dist/result/bug.d.ts +1 -1
  687. package/dist/result/bug.js +1 -1
  688. package/dist/result/bug.js.map +1 -1
  689. package/dist/result/errors.d.ts +2 -2
  690. package/dist/result/errors.d.ts.map +1 -1
  691. package/dist/result/errors.js +1 -1
  692. package/dist/result/errors.js.map +1 -1
  693. package/dist/result/vec3.d.ts +1 -1
  694. package/dist/result/vec3.js +1 -1
  695. package/dist/result/vec3.js.map +1 -1
  696. package/dist/runtime-state.d.ts +79 -29
  697. package/dist/runtime-state.d.ts.map +1 -1
  698. package/dist/runtime-state.js +84 -0
  699. package/dist/runtime-state.js.map +1 -1
  700. package/dist/script-globals.d.ts +24 -0
  701. package/dist/script-globals.d.ts.map +1 -0
  702. package/dist/script-globals.js +24 -0
  703. package/dist/script-globals.js.map +1 -0
  704. package/dist/sdf/index.d.ts +12 -0
  705. package/dist/sdf/index.d.ts.map +1 -0
  706. package/dist/sdf/index.js +13 -0
  707. package/dist/sdf/index.js.map +1 -0
  708. package/dist/sdk.d.ts +0 -1
  709. package/dist/sdk.d.ts.map +1 -1
  710. package/dist/sdk.js.map +1 -1
  711. package/dist/shape.d.ts +24 -0
  712. package/dist/shape.d.ts.map +1 -1
  713. package/dist/shape.js +40 -0
  714. package/dist/shape.js.map +1 -1
  715. package/dist/topology/naming/lineage.d.ts +3 -2
  716. package/dist/topology/naming/lineage.d.ts.map +1 -1
  717. package/dist/topology/naming/lineage.js.map +1 -1
  718. package/dist/weapp.d.ts +3 -3
  719. package/dist/weapp.d.ts.map +1 -1
  720. package/dist/weapp.js +2 -2
  721. package/dist/weapp.js.map +1 -1
  722. package/package.json +283 -44
@@ -0,0 +1,118 @@
1
+ /**
2
+ * api view-export — 视图与导出族(平台 op engines:['occt'],普通函数形态)
3
+ *
4
+ * @platform occt — 4 个光栅/矢量导出(`toSVG` / `toMultiviewSVG` / `toPNG` /
5
+ * `toMultiviewPNG`)直调 occt-wasm 原生同名方法(occt-wasm 5.6.0 有,见
6
+ * `dist/index.d.ts` 的 `OcctKernel`)。这些原生方法**不在** L1 契约
7
+ * `BrepEngineApi` 里(L1 只有导入/导出 STEP/STL,无 HLR→SVG / 光栅输出),因此它们
8
+ * 不能走中立路径,必须声明 `engines: ['occt']` 直调 occt(方案 §3.4.7 校正注——
9
+ * 原 S3 初稿把 toSVG/toMultiviewSVG 标为「中立(扩 projectView/projectSheet)」,
10
+ * 实测 L1 无对应成员,更正为 occt 平台 op)。
11
+ *
12
+ * 为什么不是 `defineOp`:本族返回**字符串 / Uint8Array**(非 Shape)。`defineOp` 的
13
+ * brep 包装(`define-op.ts#wrapBrepOne`)把返回值一律收养为 Shape,装不下文本/字节。
14
+ * 数据型平台 op 走普通函数,是 `api/export-brep.ts` 与 `api/shape-type` 的既定口径。
15
+ *
16
+ * 引擎身份**不能**靠 dispatchPath 门控(普通函数不走那条路)⇒ 按
17
+ * `api/internal/l3-bridge.ts#assertEngineFor` 的既定做法:函数体第一行断言当前引擎,
18
+ * 触碰内核之前报出与 D11-4 同构的 `E_BREP_UNSUPPORTED`,不补桩、不回退。
19
+ * (与 dispatchPath 的差异:`assertEngineFor` **不含** D11-3 的 `brep_mock` 豁免——
20
+ * mock 句柄不是 occt 句柄,放行只会拿到错形状,故这里如实拦截。)
21
+ *
22
+ * 注册:api/api-namespace.ts 手动 import + 进 createApiNamespace 对象;覆盖率扫描器
23
+ * scan-occt-op-coverage.ts 的 PLAN_C2_EXTRA 补 4 个方法名(普通函数不在 defineOp
24
+ * 全集口径内,collectOps 看不见)。
25
+ *
26
+ * §9.5 降级路径(记录在案):一旦 brepkit 的 wasm 面把 HLR/光栅渲染接进 L1 契约且两侧
27
+ * 适配器同时落地,这些函数删掉 assertEngineFor 并改走 `getBrepApi()`,对应方法即从 C2
28
+ * 转入 C1。
29
+ */
30
+ import { brepOf } from '../../shape.js';
31
+ import { getOcctKernel } from '../../occt-kernel/occtKernel.js';
32
+ import { assertEngineFor } from '../internal/l3-bridge.js';
33
+ /** 借出形状的内核句柄;无 BREP 槽(mesh-only)报错。 */
34
+ function occtHandleOf(shape, op) {
35
+ const h = brepOf(shape);
36
+ if (!h) {
37
+ throw new Error(`E_SHAPE_TYPE_NO_BREP: ${op} requires a BREP handle (mesh-only shape has none)`);
38
+ }
39
+ return h;
40
+ }
41
+ /**
42
+ * 将形状渲染为 SVG 字符串(HLR 隐藏线消除,单命名视图)。
43
+ * @group 视图
44
+ * @inputs 1
45
+ * @async false
46
+ * @qual ok
47
+ * @name toSVG
48
+ * @note 平台 op:仅 occt 引擎(原生 toSVG)。非 occt 引擎执行前报 E_BREP_UNSUPPORTED。
49
+ * @returns string SVG 文本(含命名视图与隐藏边虚线样式)。
50
+ * @param shape - 被渲染的形状。type:Shape required:true
51
+ * @param view - 命名视图(front/top/right/iso 等)。type:string required:false
52
+ * @param options - SVG 渲染选项。type:object required:false
53
+ * @example
54
+ * const svg = cad.toSVG(box, 'iso')
55
+ */
56
+ export function toSVG(shape, view, options) {
57
+ assertEngineFor('toSVG', ['occt']);
58
+ return getOcctKernel().toSVG(occtHandleOf(shape, 'toSVG'), view, options);
59
+ }
60
+ /**
61
+ * 将形状渲染为多视图 SVG 图纸(Front/Top/Right/Iso 默认排布,含 gnomons 与尺寸标注)。
62
+ * @group 视图
63
+ * @inputs 1
64
+ * @async false
65
+ * @qual ok
66
+ * @name toMultiviewSVG
67
+ * @note 平台 op:仅 occt 引擎(原生 toMultiviewSVG)。非 occt 引擎执行前报
68
+ * E_BREP_UNSUPPORTED。
69
+ * @returns string 多视图 SVG 文本。
70
+ * @param shape - 被渲染的形状。type:Shape required:true
71
+ * @param options - 多视图渲染选项。type:object required:false
72
+ * @example
73
+ * const sheet = cad.toMultiviewSVG(box)
74
+ */
75
+ export function toMultiviewSVG(shape, options) {
76
+ assertEngineFor('toMultiviewSVG', ['occt']);
77
+ return getOcctKernel().toMultiviewSVG(occtHandleOf(shape, 'toMultiviewSVG'), options);
78
+ }
79
+ /**
80
+ * 将形状栅格化为 PNG 字节(与 toSVG 同绘制,经 CompressionStream 压缩)。
81
+ * @group 视图
82
+ * @inputs 1
83
+ * @async true
84
+ * @qual ok
85
+ * @name toPNG
86
+ * @note 平台 op:仅 occt 引擎(原生 toPNG,返回 Promise<Uint8Array>)。非 occt 引擎
87
+ * 执行前报 E_BREP_UNSUPPORTED。
88
+ * @returns Promise<Uint8Array> PNG 字节流。
89
+ * @param shape - 被渲染的形状。type:Shape required:true
90
+ * @param view - 命名视图(front/top/right/iso 等)。type:string required:false
91
+ * @param options - PNG 渲染选项。type:object required:false
92
+ * @example
93
+ * const png = await cad.toPNG(box, 'iso')
94
+ */
95
+ export async function toPNG(shape, view, options) {
96
+ assertEngineFor('toPNG', ['occt']);
97
+ return getOcctKernel().toPNG(occtHandleOf(shape, 'toPNG'), view, options);
98
+ }
99
+ /**
100
+ * 将形状栅格化为多视图 PNG 字节(与 toMultiviewSVG 同绘制)。
101
+ * @group 视图
102
+ * @inputs 1
103
+ * @async true
104
+ * @qual ok
105
+ * @name toMultiviewPNG
106
+ * @note 平台 op:仅 occt 引擎(原生 toMultiviewPNG,返回 Promise<Uint8Array>)。非
107
+ * occt 引擎执行前报 E_BREP_UNSUPPORTED。
108
+ * @returns Promise<Uint8Array> 多视图 PNG 字节流。
109
+ * @param shape - 被渲染的形状。type:Shape required:true
110
+ * @param options - 多视图渲染选项。type:object required:false
111
+ * @example
112
+ * const sheet = await cad.toMultiviewPNG(box)
113
+ */
114
+ export async function toMultiviewPNG(shape, options) {
115
+ assertEngineFor('toMultiviewPNG', ['occt']);
116
+ return getOcctKernel().toMultiviewPNG(occtHandleOf(shape, 'toMultiviewPNG'), options);
117
+ }
118
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/view-export/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,uCAAuC;AACvC,SAAS,YAAY,CAAC,KAAY,EAAE,EAAU;IAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAuC,CAAA;IAC7D,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,yBAAyB,EAAE,oDAAoD,CAAC,CAAA;IAClG,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,KAAK,CAAC,KAAY,EAAE,IAAe,EAAE,OAAwB;IAC3E,eAAe,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAClC,OAAO,aAAa,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AAC3E,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,OAA6B;IACxE,eAAe,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAC3C,OAAO,aAAa,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAA;AACvF,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,KAAY,EAAE,IAAe,EAAE,OAAwB;IACjF,eAAe,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAClC,OAAO,aAAa,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AAC3E,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAY,EAAE,OAA6B;IAC9E,eAAe,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAC3C,OAAO,aAAa,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAA;AACvF,CAAC","sourcesContent":["/**\n * api view-export — 视图与导出族(平台 op engines:['occt'],普通函数形态)\n *\n * @platform occt — 4 个光栅/矢量导出(`toSVG` / `toMultiviewSVG` / `toPNG` /\n * `toMultiviewPNG`)直调 occt-wasm 原生同名方法(occt-wasm 5.6.0 有,见\n * `dist/index.d.ts` 的 `OcctKernel`)。这些原生方法**不在** L1 契约\n * `BrepEngineApi` 里(L1 只有导入/导出 STEP/STL,无 HLR→SVG / 光栅输出),因此它们\n * 不能走中立路径,必须声明 `engines: ['occt']` 直调 occt(方案 §3.4.7 校正注——\n * 原 S3 初稿把 toSVG/toMultiviewSVG 标为「中立(扩 projectView/projectSheet)」,\n * 实测 L1 无对应成员,更正为 occt 平台 op)。\n *\n * 为什么不是 `defineOp`:本族返回**字符串 / Uint8Array**(非 Shape)。`defineOp` 的\n * brep 包装(`define-op.ts#wrapBrepOne`)把返回值一律收养为 Shape,装不下文本/字节。\n * 数据型平台 op 走普通函数,是 `api/export-brep.ts` 与 `api/shape-type` 的既定口径。\n *\n * 引擎身份**不能**靠 dispatchPath 门控(普通函数不走那条路)⇒ 按\n * `api/internal/l3-bridge.ts#assertEngineFor` 的既定做法:函数体第一行断言当前引擎,\n * 触碰内核之前报出与 D11-4 同构的 `E_BREP_UNSUPPORTED`,不补桩、不回退。\n * (与 dispatchPath 的差异:`assertEngineFor` **不含** D11-3 的 `brep_mock` 豁免——\n * mock 句柄不是 occt 句柄,放行只会拿到错形状,故这里如实拦截。)\n *\n * 注册:api/api-namespace.ts 手动 import + 进 createApiNamespace 对象;覆盖率扫描器\n * scan-occt-op-coverage.ts 的 PLAN_C2_EXTRA 补 4 个方法名(普通函数不在 defineOp\n * 全集口径内,collectOps 看不见)。\n *\n * §9.5 降级路径(记录在案):一旦 brepkit 的 wasm 面把 HLR/光栅渲染接进 L1 契约且两侧\n * 适配器同时落地,这些函数删掉 assertEngineFor 并改走 `getBrepApi()`,对应方法即从 C2\n * 转入 C1。\n */\n\nimport type { Shape } from '../../mesh/types'\nimport type { ShapeHandle, ViewName, SvgViewOptions, PngViewOptions, MultiviewSvgOptions, MultiviewPngOptions } from 'occt-wasm'\nimport { brepOf } from '../../shape'\nimport { getOcctKernel } from '../../occt-kernel/occtKernel'\nimport { assertEngineFor } from '../internal/l3-bridge'\n\n/** 借出形状的内核句柄;无 BREP 槽(mesh-only)报错。 */\nfunction occtHandleOf(shape: Shape, op: string): ShapeHandle {\n const h = brepOf(shape) as unknown as ShapeHandle | undefined\n if (!h) {\n throw new Error(`E_SHAPE_TYPE_NO_BREP: ${op} requires a BREP handle (mesh-only shape has none)`)\n }\n return h\n}\n\n/**\n * 将形状渲染为 SVG 字符串(HLR 隐藏线消除,单命名视图)。\n * @group 视图\n * @inputs 1\n * @async false\n * @qual ok\n * @name toSVG\n * @note 平台 op:仅 occt 引擎(原生 toSVG)。非 occt 引擎执行前报 E_BREP_UNSUPPORTED。\n * @returns string SVG 文本(含命名视图与隐藏边虚线样式)。\n * @param shape - 被渲染的形状。type:Shape required:true\n * @param view - 命名视图(front/top/right/iso 等)。type:string required:false\n * @param options - SVG 渲染选项。type:object required:false\n * @example\n * const svg = cad.toSVG(box, 'iso')\n */\nexport function toSVG(shape: Shape, view?: ViewName, options?: SvgViewOptions): string {\n assertEngineFor('toSVG', ['occt'])\n return getOcctKernel().toSVG(occtHandleOf(shape, 'toSVG'), view, options)\n}\n\n/**\n * 将形状渲染为多视图 SVG 图纸(Front/Top/Right/Iso 默认排布,含 gnomons 与尺寸标注)。\n * @group 视图\n * @inputs 1\n * @async false\n * @qual ok\n * @name toMultiviewSVG\n * @note 平台 op:仅 occt 引擎(原生 toMultiviewSVG)。非 occt 引擎执行前报\n * E_BREP_UNSUPPORTED。\n * @returns string 多视图 SVG 文本。\n * @param shape - 被渲染的形状。type:Shape required:true\n * @param options - 多视图渲染选项。type:object required:false\n * @example\n * const sheet = cad.toMultiviewSVG(box)\n */\nexport function toMultiviewSVG(shape: Shape, options?: MultiviewSvgOptions): string {\n assertEngineFor('toMultiviewSVG', ['occt'])\n return getOcctKernel().toMultiviewSVG(occtHandleOf(shape, 'toMultiviewSVG'), options)\n}\n\n/**\n * 将形状栅格化为 PNG 字节(与 toSVG 同绘制,经 CompressionStream 压缩)。\n * @group 视图\n * @inputs 1\n * @async true\n * @qual ok\n * @name toPNG\n * @note 平台 op:仅 occt 引擎(原生 toPNG,返回 Promise<Uint8Array>)。非 occt 引擎\n * 执行前报 E_BREP_UNSUPPORTED。\n * @returns Promise<Uint8Array> PNG 字节流。\n * @param shape - 被渲染的形状。type:Shape required:true\n * @param view - 命名视图(front/top/right/iso 等)。type:string required:false\n * @param options - PNG 渲染选项。type:object required:false\n * @example\n * const png = await cad.toPNG(box, 'iso')\n */\nexport async function toPNG(shape: Shape, view?: ViewName, options?: PngViewOptions): Promise<Uint8Array> {\n assertEngineFor('toPNG', ['occt'])\n return getOcctKernel().toPNG(occtHandleOf(shape, 'toPNG'), view, options)\n}\n\n/**\n * 将形状栅格化为多视图 PNG 字节(与 toMultiviewSVG 同绘制)。\n * @group 视图\n * @inputs 1\n * @async true\n * @qual ok\n * @name toMultiviewPNG\n * @note 平台 op:仅 occt 引擎(原生 toMultiviewPNG,返回 Promise<Uint8Array>)。非\n * occt 引擎执行前报 E_BREP_UNSUPPORTED。\n * @returns Promise<Uint8Array> 多视图 PNG 字节流。\n * @param shape - 被渲染的形状。type:Shape required:true\n * @param options - 多视图渲染选项。type:object required:false\n * @example\n * const sheet = await cad.toMultiviewPNG(box)\n */\nexport async function toMultiviewPNG(shape: Shape, options?: MultiviewPngOptions): Promise<Uint8Array> {\n assertEngineFor('toMultiviewPNG', ['occt'])\n return getOcctKernel().toMultiviewPNG(occtHandleOf(shape, 'toMultiviewPNG'), options)\n}\n"]}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * boolean — CSG/boolean auxiliary modules (public API surface).
3
+ *
4
+ * This index.ts aggregates the public exports of boolean/ submodules so that
5
+ * the umbrella entries (index.ts / browser.ts) can `export * from './boolean.js'`
6
+ * without hand-listing individual symbols.
7
+ *
8
+ * Internal-only symbols (SimpleUnionFind, createWedge, createDowel,
9
+ * computeCrossSectionWidth, etc.) are NOT re-exported here.
10
+ */
11
+ export { computeSection, buildExtrudedProfile } from './cross-section.js';
12
+ export { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit, chainBoolean, meshToManifold, } from './csg-core.js';
13
+ export { deriveNormals } from './deriveNormals.js';
14
+ export { buildExtrudeParts, makeWorldPlane } from './extrude-helpers.js';
15
+ export type { ExtrudeParts, ExtrudeOffsetMode } from './extrude-helpers.js';
16
+ export { buildWedgeGeometry, buildDowelGeometry, buildStraightTenonGeometry, } from './joinery-shapes.js';
17
+ export type { JoineryMeshData } from './joinery-shapes.js';
18
+ export { setCsgBackend } from './csg-backend.js';
19
+ export { geoToManifoldMesh, manifoldMeshToGeo } from './geo-convert.js';
20
+ export type { ManifoldMeshData, BooleanOperation, DovetailGrooveParams, DowelSplitParams, StraightTenonSplitParams, } from './geo-convert.js';
21
+ export { previewMeshIntersect } from './manifold-preview.js';
22
+ export type { ManifoldMeshData as PreviewManifoldMeshData } from './manifold-preview.js';
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/boolean/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAGtE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACrE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAGxE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAG7C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACpE,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,eAAe,CAAA;AAGtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,YAAY,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * boolean — CSG/boolean auxiliary modules (public API surface).
3
+ *
4
+ * This index.ts aggregates the public exports of boolean/ submodules so that
5
+ * the umbrella entries (index.ts / browser.ts) can `export * from './boolean.js'`
6
+ * without hand-listing individual symbols.
7
+ *
8
+ * Internal-only symbols (SimpleUnionFind, createWedge, createDowel,
9
+ * computeCrossSectionWidth, etc.) are NOT re-exported here.
10
+ */
11
+ // cross-section
12
+ export { computeSection, buildExtrudedProfile } from './cross-section.js';
13
+ // csg-core
14
+ export { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit, chainBoolean, meshToManifold, } from './csg-core.js';
15
+ // deriveNormals
16
+ export { deriveNormals } from './deriveNormals.js';
17
+ // extrude-helpers
18
+ export { buildExtrudeParts, makeWorldPlane } from './extrude-helpers.js';
19
+ // joinery-shapes
20
+ export { buildWedgeGeometry, buildDowelGeometry, buildStraightTenonGeometry, } from './joinery-shapes.js';
21
+ // csg-backend
22
+ export { setCsgBackend } from './csg-backend.js';
23
+ // geo-convert
24
+ export { geoToManifoldMesh, manifoldMeshToGeo } from './geo-convert.js';
25
+ // manifold-preview (ManifoldMeshData aliased to avoid clash with geo-convert's)
26
+ export { previewMeshIntersect } from './manifold-preview.js';
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/boolean/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,gBAAgB;AAChB,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEtE,WAAW;AACX,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAA;AAEnB,gBAAgB;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,kBAAkB;AAClB,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGrE,iBAAiB;AACjB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAA;AAGzB,cAAc;AACd,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,cAAc;AACd,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AASpE,gFAAgF;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA","sourcesContent":["/**\r\n * boolean — CSG/boolean auxiliary modules (public API surface).\r\n *\r\n * This index.ts aggregates the public exports of boolean/ submodules so that\r\n * the umbrella entries (index.ts / browser.ts) can `export * from './boolean'`\r\n * without hand-listing individual symbols.\r\n *\r\n * Internal-only symbols (SimpleUnionFind, createWedge, createDowel,\r\n * computeCrossSectionWidth, etc.) are NOT re-exported here.\r\n */\r\n\r\n// cross-section\r\nexport { computeSection, buildExtrudedProfile } from './cross-section'\r\n\r\n// csg-core\r\nexport {\r\n manifoldToMeshData,\r\n weldPositionsWorker,\r\n dovetailBooleanSplit,\r\n dowelOrTenonBooleanSplit,\r\n chainBoolean,\r\n meshToManifold,\r\n} from './csg-core'\r\n\r\n// deriveNormals\r\nexport { deriveNormals } from './deriveNormals'\r\n\r\n// extrude-helpers\r\nexport { buildExtrudeParts, makeWorldPlane } from './extrude-helpers'\r\nexport type { ExtrudeParts, ExtrudeOffsetMode } from './extrude-helpers'\r\n\r\n// joinery-shapes\r\nexport {\r\n buildWedgeGeometry,\r\n buildDowelGeometry,\r\n buildStraightTenonGeometry,\r\n} from './joinery-shapes'\r\nexport type { JoineryMeshData } from './joinery-shapes'\r\n\r\n// csg-backend\r\nexport { setCsgBackend } from './csg-backend'\r\n\r\n// geo-convert\r\nexport { geoToManifoldMesh, manifoldMeshToGeo } from './geo-convert'\r\nexport type {\r\n ManifoldMeshData,\r\n BooleanOperation,\r\n DovetailGrooveParams,\r\n DowelSplitParams,\r\n StraightTenonSplitParams,\r\n} from './geo-convert'\r\n\r\n// manifold-preview (ManifoldMeshData aliased to avoid clash with geo-convert's)\r\nexport { previewMeshIntersect } from './manifold-preview'\r\nexport type { ManifoldMeshData as PreviewManifoldMeshData } from './manifold-preview'\r\n"]}
@@ -11,7 +11,7 @@
11
11
  * 生命周期:由 executeScript / executePart 创建,执行结束后释放所有中间句柄。
12
12
  * 终端句柄(如果有)由调用方保留用于导出。
13
13
  */
14
- import type { BrepHandle, BrepMeshResult, BrepCapabilities } from './engine/types.js';
14
+ import type { BrepHandle, BrepMeshResult } from './engine/types.js';
15
15
  import type { BrepEngineApi } from './engine/primitives.js';
16
16
  import type { PartName } from '../identity.js';
17
17
  /**
@@ -43,24 +43,6 @@ export interface BrepChainState {
43
43
  solidCache: Map<PartName, BrepHandle>;
44
44
  /** BREP 引擎实例(mesh 模式为 null —— 等价于「无 BREP 能力」)。 */
45
45
  kernel: BrepEngineApi | null;
46
- /**
47
- * 当前引擎的能力声明(§7.5;mesh 模式无引擎 → undefined)。
48
- * 供能力路由静态判定(§8.4):缺失的能力 → 依赖它的功能静态降级走 mesh。
49
- */
50
- capabilities?: BrepCapabilities;
51
- /**
52
- * 零件在世界空间中的平移偏移(来自 mesh.position / partTransforms)。
53
- *
54
- * BREP solid 在原始局部坐标系中(STEP 文件原始坐标),而用户交互
55
- * 产生的 position(如钻孔 clickPosition)是世界坐标。使用此偏移
56
- * 将世界坐标转换为局部坐标,确保 BREP 操作在正确的坐标系中执行。
57
- *
58
- * 由 executePart 从 useEngineStore.partTransforms[scopedId].position 填充。
59
- */
60
- partTransform?: {
61
- position: [number, number, number];
62
- scale?: [number, number, number];
63
- };
64
46
  /**
65
47
  * P5-2: 面演化映射缓存(statementId → FaceEvolution)。
66
48
  *
@@ -1 +1 @@
1
- {"version":3,"file":"brep-chain.d.ts","sourceRoot":"","sources":["../../src/brep/brep-chain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAW3C;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAcT;AAID;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IACrC,kDAAkD;IAClD,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAC5B;;;OAGG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAA;IAC/B;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE;QAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;IACxF;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IACzD;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACvC;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;CAC/C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAQrD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,CAWlE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAUjE"}
1
+ {"version":3,"file":"brep-chain.d.ts","sourceRoot":"","sources":["../../src/brep/brep-chain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAW3C;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAcT;AAID;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IACrC,kDAAkD;IAClD,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAC5B;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IACzD;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACvC;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;CAC/C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAQrD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,CAUlE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAUjE"}
@@ -70,7 +70,6 @@ export async function initBrepChainState() {
70
70
  return {
71
71
  solidCache: new Map(),
72
72
  kernel: engine.primitives,
73
- capabilities: engine.capabilities,
74
73
  faceEvolutionCache: new Map(),
75
74
  roleTableCache: new Map(),
76
75
  meshShapeCache: new Map(),
@@ -1 +1 @@
1
- {"version":3,"file":"brep-chain.js","sourceRoot":"","sources":["../../src/brep/brep-chain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAGhE,qBAAqB;AAErB;;;;GAIG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;AAEpD;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CACzB,IAA6B,EAC7B,QAAiB;IAEjB,sCAAsC;IACtC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE3B,kBAAkB;IAClB,MAAM,MAAM,GAAG,IAAI,CAAC,MAA4B,CAAA;IAChD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IAC9C,CAAC;IAED,sCAAsC;IACtC,MAAM,SAAS,GAAI,IAAI,CAAC,IAA2B,IAAK,IAAI,CAAC,GAA0B,IAAI,EAAE,CAAA;IAC7F,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IAC3D,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC7B,CAAC;AAmED;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,MAAM,EAAE,IAAI;QACZ,kBAAkB,EAAE,IAAI,GAAG,EAAE;QAC7B,cAAc,EAAE,IAAI,GAAG,EAAE;QACzB,cAAc,EAAE,IAAI,GAAG,EAAE;KAC1B,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,uBAAuB,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAA;IACpC,OAAO;QACL,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,MAAM,EAAE,MAAM,CAAC,UAAU;QACzB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,kBAAkB,EAAE,IAAI,GAAG,EAAE;QAC7B,cAAc,EAAE,IAAI,GAAG,EAAE;QACzB,cAAc,EAAE,IAAI,GAAG,EAAE;KAC1B,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAqB;IACzD,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,aAAa;QACf,CAAC;IACH,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;IACxB,KAAK,CAAC,cAAc,EAAE,KAAK,EAAE,CAAA;AAC/B,CAAC","sourcesContent":["/**\n * BREP 链状态管理\n *\n * 在语句重放过程中跟踪 OCCT 精确实体句柄。\n * - solidCache: statementId → ShapeHandle(OCCT 实体句柄)\n *\n * BREP 状态是「逐 part」的:一个 part 是否仍为 BREP,\n * 由 solidCache 里是否有它的句柄唯一决定。\n * 不存在全局 brepActive 标志——兄弟 part 互不污染。\n *\n * 生命周期:由 executeScript / executePart 创建,执行结束后释放所有中间句柄。\n * 终端句柄(如果有)由调用方保留用于导出。\n */\n\nimport type { BrepHandle, BrepMeshResult, BrepCapabilities } from './engine/types'\nimport type { BrepEngineApi } from './engine/primitives'\nimport { getBrepEngine } from './engine/registry'\nimport { ensureOcctDefaultEngine } from './engine/adapters/occt'\nimport type { PartName } from '../identity'\n\n// ─── CAD 格式静态判定 ───\n\n/**\n * CAD formats: files in these formats can be imported by the OCCT kernel as\n * exact solids (STEP/STP via importStep, BREP via fromBREP).\n * IGES is intentionally absent — occt-wasm does not link TKDEIGES.\n */\nconst CAD_FORMATS = new Set(['step', 'brep', 'stp'])\n\n/**\n * 静态判定 load 语句的源文件是否为 CAD 格式。\n *\n * 纯函数,按 args.format / 文件路径扩展名判定,\n * 不调用 OCCT、不 try-catch。\n *\n * @param args load 语句的参数表(key/path/url + format)\n * @param isSource buffer 是否为原始字节(可走 BREP 路径的前提)\n * @returns true 表示是 CAD 源(可走 BREP 路径)\n */\nexport function isCadFormat(\n args: Record<string, unknown>,\n isSource: boolean,\n): boolean {\n // 非 source buffer 是转换后的网格数据 → 非 CAD 源\n if (!isSource) return false\n\n // 优先用显式 format 参数\n const format = args.format as string | undefined\n if (format) {\n return CAD_FORMATS.has(format.toLowerCase())\n }\n\n // P4-1:按 path/url 的扩展名判定(fileRef 已移除)\n const pathOrUrl = (args.path as string | undefined) ?? (args.url as string | undefined) ?? ''\n const ext = pathOrUrl.split('.').pop()?.toLowerCase() ?? ''\n return CAD_FORMATS.has(ext)\n}\n\n// ─── BREP 链状态 ───\n\n/**\n * BREP 链状态:在语句重放过程中跟踪 OCCT 实体句柄。\n *\n * BREP 状态是「逐 part」的:\n * - solidCache 中存在该 part 的句柄 → 该 part 仍为 BREP\n * - solidCache 中不存在该 part 的句柄 → 该 part 已降级为 mesh\n *\n * 不再有全局 brepActive / breakReason 字段。\n * 一个 part 失去 BREP 状态,当且仅当:\n * - 它被 knurl/sdf(mesh-only op)产生(不写 solidCache),或\n * - 它的上游输入中至少有一个没有 BREP 实体。\n * 兄弟 part 之间互不污染。\n */\nexport interface BrepChainState {\n /** BREP 实体句柄缓存(PartName → BrepHandle)。存在即该 part 仍为 BREP;缺失即已降级为 mesh。 */\n solidCache: Map<PartName, BrepHandle>\n /** BREP 引擎实例(mesh 模式为 null —— 等价于「无 BREP 能力」)。 */\n kernel: BrepEngineApi | null\n /**\n * 当前引擎的能力声明(§7.5;mesh 模式无引擎 → undefined)。\n * 供能力路由静态判定(§8.4):缺失的能力 → 依赖它的功能静态降级走 mesh。\n */\n capabilities?: BrepCapabilities\n /**\n * 零件在世界空间中的平移偏移(来自 mesh.position / partTransforms)。\n *\n * BREP solid 在原始局部坐标系中(STEP 文件原始坐标),而用户交互\n * 产生的 position(如钻孔 clickPosition)是世界坐标。使用此偏移\n * 将世界坐标转换为局部坐标,确保 BREP 操作在正确的坐标系中执行。\n *\n * 由 executePart 从 useEngineStore.partTransforms[scopedId].position 填充。\n */\n partTransform?: { position: [number, number, number]; scale?: [number, number, number] }\n /**\n * P5-2: 面演化映射缓存(statementId → FaceEvolution)。\n *\n * 每个布尔/变换操作执行后,存储面 ordinal 映射(输入 ordinal → 输出 ordinal 列表)。\n * 用于面引用在确定性重放下的稳定性验证和未来的面迁移功能。\n *\n * FaceEvolution = Map<number, number[]>(inOrdinal → outOrdinal[])\n */\n faceEvolutionCache?: Map<PartName, Map<number, number[]>>\n /**\n * 拓扑命名 RoleTable 持久缓存(PartName → RoleTable,§2.3 of\n *\n * 与 faceEvolutionCache 完全同生命周期:runtime 实例级持久、按语句增量同步、\n * dispose 一并 clear。RoleTable 是执行内状态,不序列化、不进 .fai.js、不进\n * ExecutionResult.naming(宿主只拿 §3.7 的纯数据)。hash 是会话内活句柄索引,\n * 跨实例/会话重建时整体重建。\n */\n roleTableCache?: Map<PartName, unknown>\n /**\n * 三角化缓存:PartName → WasmMesh(含 faceGroups)。\n *\n * BREP op 调用 solidToShape 三角化后,把完整 WasmMesh 缓存到此 Map。\n * buildBrepTopology 复用此缓存,避免二次 meshShape 导致拓扑 mesh ≠ 显示 mesh。\n *\n * 规则 1:拓扑数据生成所使用的 mesh,必须是当前用户看到的 mesh。\n * 三角化和拓扑生成都是 faijs 的职责,宿主不参与。\n */\n meshShapeCache?: Map<PartName, BrepMeshResult>\n}\n\n/**\n * Create an empty BREP chain state with no cached solids and no kernel.\n * @returns a new empty BrepChainState.\n */\nexport function createBrepChainState(): BrepChainState {\n return {\n solidCache: new Map(),\n kernel: null,\n faceEvolutionCache: new Map(),\n roleTableCache: new Map(),\n meshShapeCache: new Map(),\n }\n}\n\n/**\n * Initialize the BREP chain state asynchronously: resolve the active BREP\n * engine from the registry and initialize its kernel.\n * OCCT is the built-in default engine: when no engine is registered it is\n * assembled first (ensureOcctDefaultEngine is idempotent).\n * @returns a Promise resolving to an initialized BrepChainState.\n */\nexport async function initBrepChainState(): Promise<BrepChainState> {\n await ensureOcctDefaultEngine()\n const engine = await getBrepEngine()\n return {\n solidCache: new Map(),\n kernel: engine.primitives,\n capabilities: engine.capabilities,\n faceEvolutionCache: new Map(),\n roleTableCache: new Map(),\n meshShapeCache: new Map(),\n }\n}\n\n/**\n * 释放 BREP 链状态中的所有句柄并清空 solidCache。\n *\n * 释放只发生在「重算顶替 / dispose」,不再需要\"保留终端、释放中间\"的选择性语义,\n * 因此 keepIds 参数已删除——调用方想保留任何 solid 时,不应再调用本函数。\n *\n * @param state BREP 链状态\n */\nexport function releaseBrepChainState(state: BrepChainState): void {\n for (const [, handle] of state.solidCache) {\n try {\n state.kernel?.release(handle)\n } catch {\n // 句柄可能已释放,忽略\n }\n }\n state.solidCache.clear()\n state.meshShapeCache?.clear()\n}\n"]}
1
+ {"version":3,"file":"brep-chain.js","sourceRoot":"","sources":["../../src/brep/brep-chain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAGhE,qBAAqB;AAErB;;;;GAIG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;AAEpD;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CACzB,IAA6B,EAC7B,QAAiB;IAEjB,sCAAsC;IACtC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE3B,kBAAkB;IAClB,MAAM,MAAM,GAAG,IAAI,CAAC,MAA4B,CAAA;IAChD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IAC9C,CAAC;IAED,sCAAsC;IACtC,MAAM,SAAS,GAAI,IAAI,CAAC,IAA2B,IAAK,IAAI,CAAC,GAA0B,IAAI,EAAE,CAAA;IAC7F,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IAC3D,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC7B,CAAC;AAoDD;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,MAAM,EAAE,IAAI;QACZ,kBAAkB,EAAE,IAAI,GAAG,EAAE;QAC7B,cAAc,EAAE,IAAI,GAAG,EAAE;QACzB,cAAc,EAAE,IAAI,GAAG,EAAE;KAC1B,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,uBAAuB,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAA;IACpC,OAAO;QACL,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,MAAM,EAAE,MAAM,CAAC,UAAU;QACzB,kBAAkB,EAAE,IAAI,GAAG,EAAE;QAC7B,cAAc,EAAE,IAAI,GAAG,EAAE;QACzB,cAAc,EAAE,IAAI,GAAG,EAAE;KAC1B,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAqB;IACzD,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,aAAa;QACf,CAAC;IACH,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;IACxB,KAAK,CAAC,cAAc,EAAE,KAAK,EAAE,CAAA;AAC/B,CAAC","sourcesContent":["/**\n * BREP 链状态管理\n *\n * 在语句重放过程中跟踪 OCCT 精确实体句柄。\n * - solidCache: statementId → ShapeHandle(OCCT 实体句柄)\n *\n * BREP 状态是「逐 part」的:一个 part 是否仍为 BREP,\n * 由 solidCache 里是否有它的句柄唯一决定。\n * 不存在全局 brepActive 标志——兄弟 part 互不污染。\n *\n * 生命周期:由 executeScript / executePart 创建,执行结束后释放所有中间句柄。\n * 终端句柄(如果有)由调用方保留用于导出。\n */\n\nimport type { BrepHandle, BrepMeshResult } from './engine/types'\nimport type { BrepEngineApi } from './engine/primitives'\nimport { getBrepEngine } from './engine/registry'\nimport { ensureOcctDefaultEngine } from './engine/adapters/occt'\nimport type { PartName } from '../identity'\n\n// ─── CAD 格式静态判定 ───\n\n/**\n * CAD formats: files in these formats can be imported by the OCCT kernel as\n * exact solids (STEP/STP via importStep, BREP via fromBREP).\n * IGES is intentionally absent — occt-wasm does not link TKDEIGES.\n */\nconst CAD_FORMATS = new Set(['step', 'brep', 'stp'])\n\n/**\n * 静态判定 load 语句的源文件是否为 CAD 格式。\n *\n * 纯函数,按 args.format / 文件路径扩展名判定,\n * 不调用 OCCT、不 try-catch。\n *\n * @param args load 语句的参数表(key/path/url + format)\n * @param isSource buffer 是否为原始字节(可走 BREP 路径的前提)\n * @returns true 表示是 CAD 源(可走 BREP 路径)\n */\nexport function isCadFormat(\n args: Record<string, unknown>,\n isSource: boolean,\n): boolean {\n // 非 source buffer 是转换后的网格数据 → 非 CAD 源\n if (!isSource) return false\n\n // 优先用显式 format 参数\n const format = args.format as string | undefined\n if (format) {\n return CAD_FORMATS.has(format.toLowerCase())\n }\n\n // P4-1:按 path/url 的扩展名判定(fileRef 已移除)\n const pathOrUrl = (args.path as string | undefined) ?? (args.url as string | undefined) ?? ''\n const ext = pathOrUrl.split('.').pop()?.toLowerCase() ?? ''\n return CAD_FORMATS.has(ext)\n}\n\n// ─── BREP 链状态 ───\n\n/**\n * BREP 链状态:在语句重放过程中跟踪 OCCT 实体句柄。\n *\n * BREP 状态是「逐 part」的:\n * - solidCache 中存在该 part 的句柄 → 该 part 仍为 BREP\n * - solidCache 中不存在该 part 的句柄 → 该 part 已降级为 mesh\n *\n * 不再有全局 brepActive / breakReason 字段。\n * 一个 part 失去 BREP 状态,当且仅当:\n * - 它被 knurl/sdf(mesh-only op)产生(不写 solidCache),或\n * - 它的上游输入中至少有一个没有 BREP 实体。\n * 兄弟 part 之间互不污染。\n */\nexport interface BrepChainState {\n /** BREP 实体句柄缓存(PartName → BrepHandle)。存在即该 part 仍为 BREP;缺失即已降级为 mesh。 */\n solidCache: Map<PartName, BrepHandle>\n /** BREP 引擎实例(mesh 模式为 null —— 等价于「无 BREP 能力」)。 */\n kernel: BrepEngineApi | null\n /**\n * P5-2: 面演化映射缓存(statementId → FaceEvolution)。\n *\n * 每个布尔/变换操作执行后,存储面 ordinal 映射(输入 ordinal → 输出 ordinal 列表)。\n * 用于面引用在确定性重放下的稳定性验证和未来的面迁移功能。\n *\n * FaceEvolution = Map<number, number[]>(inOrdinal → outOrdinal[])\n */\n faceEvolutionCache?: Map<PartName, Map<number, number[]>>\n /**\n * 拓扑命名 RoleTable 持久缓存(PartName → RoleTable,§2.3 of\n *\n * 与 faceEvolutionCache 完全同生命周期:runtime 实例级持久、按语句增量同步、\n * dispose 一并 clear。RoleTable 是执行内状态,不序列化、不进 .fai.js、不进\n * ExecutionResult.naming(宿主只拿 §3.7 的纯数据)。hash 是会话内活句柄索引,\n * 跨实例/会话重建时整体重建。\n */\n roleTableCache?: Map<PartName, unknown>\n /**\n * 三角化缓存:PartName → WasmMesh(含 faceGroups)。\n *\n * BREP op 调用 solidToShape 三角化后,把完整 WasmMesh 缓存到此 Map。\n * buildBrepTopology 复用此缓存,避免二次 meshShape 导致拓扑 mesh ≠ 显示 mesh。\n *\n * 规则 1:拓扑数据生成所使用的 mesh,必须是当前用户看到的 mesh。\n * 三角化和拓扑生成都是 faijs 的职责,宿主不参与。\n */\n meshShapeCache?: Map<PartName, BrepMeshResult>\n}\n\n/**\n * Create an empty BREP chain state with no cached solids and no kernel.\n * @returns a new empty BrepChainState.\n */\nexport function createBrepChainState(): BrepChainState {\n return {\n solidCache: new Map(),\n kernel: null,\n faceEvolutionCache: new Map(),\n roleTableCache: new Map(),\n meshShapeCache: new Map(),\n }\n}\n\n/**\n * Initialize the BREP chain state asynchronously: resolve the active BREP\n * engine from the registry and initialize its kernel.\n * OCCT is the built-in default engine: when no engine is registered it is\n * assembled first (ensureOcctDefaultEngine is idempotent).\n * @returns a Promise resolving to an initialized BrepChainState.\n */\nexport async function initBrepChainState(): Promise<BrepChainState> {\n await ensureOcctDefaultEngine()\n const engine = await getBrepEngine()\n return {\n solidCache: new Map(),\n kernel: engine.primitives,\n faceEvolutionCache: new Map(),\n roleTableCache: new Map(),\n meshShapeCache: new Map(),\n }\n}\n\n/**\n * 释放 BREP 链状态中的所有句柄并清空 solidCache。\n *\n * 释放只发生在「重算顶替 / dispose」,不再需要\"保留终端、释放中间\"的选择性语义,\n * 因此 keepIds 参数已删除——调用方想保留任何 solid 时,不应再调用本函数。\n *\n * @param state BREP 链状态\n */\nexport function releaseBrepChainState(state: BrepChainState): void {\n for (const [, handle] of state.solidCache) {\n try {\n state.kernel?.release(handle)\n } catch {\n // 句柄可能已释放,忽略\n }\n }\n state.solidCache.clear()\n state.meshShapeCache?.clear()\n}\n"]}
@@ -22,8 +22,10 @@ import * as THREE from 'three';
22
22
  import type { BrepHandle } from './engine/types.js';
23
23
  import type { BrepEngineApi } from './engine/primitives.js';
24
24
  import type { Shape, Vec3 } from '../mesh/types.js';
25
+ import type { ImportAssemblyNode } from '../mesh/import-model.js';
25
26
  import type { BrepChainState } from './brep-chain.js';
26
27
  import type { PartName } from '../identity.js';
28
+ import { type TessellationDensity } from '../runtime-state.js';
27
29
  /**
28
30
  * 将 OCCT solid 三角化为 Shape(供显示用)。
29
31
  *
@@ -36,9 +38,11 @@ import type { PartName } from '../identity.js';
36
38
  * @param segments optional tessellation segment count (affects precision).
37
39
  * @param brepChain optional - caches the BrepMeshResult when provided.
38
40
  * @param partName optional - the part this solid belongs to, paired with brepChain as the cache key.
41
+ * @param defaultDeflection optional - per-call deflection fallback when `segments` is absent
42
+ * (wins over the global tessellation knob; explicit `segments` still wins over both).
39
43
  * @returns the tessellated Shape.
40
44
  */
41
- export declare function solidToShape(kernel: BrepEngineApi, solid: BrepHandle, segments?: number, brepChain?: BrepChainState, partName?: PartName): Shape;
45
+ export declare function solidToShape(kernel: BrepEngineApi, solid: BrepHandle, segments?: number, brepChain?: BrepChainState, partName?: PartName, defaultDeflection?: TessellationDensity): Shape;
42
46
  /**
43
47
  * BREP 平移:使用 OCCT translate(精确,不损失几何精度)。
44
48
  *
@@ -62,13 +66,62 @@ export declare function translateBrep(kernel: BrepEngineApi, solid: BrepHandle,
62
66
  * @returns 新实体
63
67
  */
64
68
  export declare function rotateBrep(kernel: BrepEngineApi, solid: BrepHandle, angles: Vec3, pivot?: Vec3): BrepHandle;
69
+ /**
70
+ * 判定 3×4 行主序仿射矩阵的线性部分是否为**相似变换**(旋转/反射 × 等比缩放)——
71
+ * 即 `gp_Trsf` 能精确承载、`kernel.transform`(BRepBuilderAPI_Transform)唯一
72
+ * 正确处理的那一类。
73
+ *
74
+ * 判据必须用**相对**容差,不能像 2026-10-07 之前那样用绝对容差:
75
+ * GOTCHA(2026-10-07,openscad example023 parity)——一个 60° 刚体旋转只要按
76
+ * 7 位小数打印(`0.8660254`),行范数就是 `0.99999999645`(与 1 相差 3.6e-9)。
77
+ * 绝对容差 1e-9 会判定 `|‖row2‖ − ‖row0‖| = 3.6e-9 > 1e-9` ⇒ 把这个**纯旋转**
78
+ * 判成"非相似",从而错误地走进 `generalTransform`;而 occt 侧 `gp_GTrsf` 路径在
79
+ * **已三角化**的形状上会重复计入被平移面的 TopLoc(顶盖 z 由 5 变 10,绕过在
80
+ * `occt-kernel/occt-primitives.ts` 的 `generalTransform` 适配层,本层不感知)。
81
+ * 相对容差 1e-6 覆盖 7 位小数打印精度,同时仍能区分真正的非等比缩放
82
+ * (如 z×2.5 行范数相差 2.5 倍)。正交性同用 1e-6:7 位小数打印的旋转,行点积
83
+ * 误差上界约 2e-7。
84
+ *
85
+ * @param m12 - 3×4 行主序矩阵(12 元素:`[r00,r01,r02,tx, r10,r11,r12,ty, r20,r21,r22,tz]`)。
86
+ * @returns `true` 当且仅当线性部分可逆且为相似变换。
87
+ */
88
+ export declare function isSimilarityAffine(m12: readonly number[]): boolean;
89
+ /**
90
+ * 施加 3×4 行主序仿射矩阵,按矩阵类别选**唯一正确**的 OCCT 路径。
91
+ *
92
+ * 两条路径的差异是**正确性**而不只是性能:
93
+ * - 相似(旋转/反射 × 等比缩放)→ `kernel.transform`(BRepBuilderAPI_Transform)。
94
+ * - 其余(非等比缩放、错切)→ `kernel.generalTransform`(gp_GTrsf)。
95
+ *
96
+ * GOTCHA(2026-10-07):occt 的 `generalTransform` 在**已经三角化过**的形状上会
97
+ * 重复计入被平移面的 TopLoc(精确 z∈[0,5],网格顶盖却落在 z=10;非等比 z×2.5 时
98
+ * 12.5 vs 17.5)。该缺陷是 **occt 专属**(brepkit 的 GTrsf 路径干净),因此绕过
99
+ * **不在本层**——本层是引擎中立分派,让每个引擎都为 occt 的毛病多付一次句柄分配
100
+ * 是错的(还会扰动 brepkit 的 `cut` bbox,见 multi-engine-op-parity)。
101
+ * 绕过落在 occt 适配层:`occt-kernel/occt-primitives.ts` 的 `generalTransform`
102
+ * 先 `copy` 再变换。`kernel.transform` 无此问题,故相似矩阵不付这份深拷贝成本。
103
+ *
104
+ * 反向陷阱:把非相似矩阵交给 `kernel.transform` 是**静默错误**——OCCT 会按
105
+ * `det^(1/3)` 取等比因子近似(实测 z×2.5 被当成 1.357 倍等比缩放)。所以分类
106
+ * 判据既不能过严(把刚体旋转推给 GTrsf),也不能过宽(把非等比缩放塞给 Trsf)。
107
+ *
108
+ * @param kernel - L1 引擎句柄。
109
+ * @param solid - 输入实体(不被消费、不被释放;调用方保留其所有权)。
110
+ * @param m12 - 3×4 行主序矩阵(12 元素)。
111
+ * @returns 变换后的新实体(调用方负责释放)。
112
+ */
113
+ export declare function applyAffineBrep(kernel: BrepEngineApi, solid: BrepHandle, m12: readonly number[]): BrepHandle;
65
114
  /**
66
115
  * BREP 缩放:使用 OCCT transform(3x4 仿射矩阵)。
67
116
  *
68
117
  * 与 mesh 路径 scale(P6 §4.6)一致:
69
118
  * - factor 为 number(均匀缩放)或 Vec3 [sx, sy, sz](非均匀)
70
119
  * - center 为缩放不动点(p' = center + S·(p − center));缺省 [0,0,0](原点),
71
- * 与 vendored brepjs `scale(shape, factor, { center? })` 的默认一致。
120
+ * 与早期 brepjs `scale(shape, factor, { center? })` 的默认一致。
121
+ *
122
+ * 路径分派交给 {@link applyAffineBrep}:等比走 `transform`,非等比走
123
+ * `generalTransform`(gp_Trsf 表达不了非等比)。注意判据是**数值**相似性而非
124
+ * 因子逐分量相等——`[1, 1, 1+1e-9]` 这种数值上就是等比,归 `transform` 一侧。
72
125
  *
73
126
  * @param kernel OCCT 内核
74
127
  * @param solid 输入实体
@@ -294,6 +347,44 @@ export declare function loadBrep(kernel: BrepEngineApi, buffer: ArrayBuffer, bre
294
347
  shape: Shape;
295
348
  multiSolidCount?: number;
296
349
  };
350
+ /** 多零件 STEP 导入中的一个零件(几何 + solid 句柄 + 身份)。 */
351
+ export interface LoadBrepAssemblyPart {
352
+ /** 零件序号(0 起,DFS 声明序)。 */
353
+ index: number;
354
+ /** 零件名(XCAF label;无则回退 `imported:<index>`)。 */
355
+ name: string;
356
+ /** 显示色 sRGB 0..1,无则 null。 */
357
+ color: [number, number, number] | null;
358
+ /** 三角化显示 mesh。 */
359
+ shape: Shape;
360
+ /** OCCT solid 句柄(已烘 location;生命周期归 brepChain,调用方经 fromBrep 绑定)。 */
361
+ solid: BrepHandle;
362
+ }
363
+ /**
364
+ * BREP-native 多零件 STEP 导入(XCAF 装配树 → 逐零件 Shape + 装配层级)。
365
+ *
366
+ * 与 `loadBrep`(单零件收敛,§5.4 旧行为)对照:loadBrepAssembly 走
367
+ * `importAssemblyFromStep`(XCAF),返回**全部**叶零件(DFS 声明序)与装配树。
368
+ *
369
+ * - 装配树叶子 = 零件;合成节点(syntheticGroup:单一产品含多 MANIFOLD_SOLID_BREP)
370
+ * 如实表达为中间节点;
371
+ * - 无装配结构的单叶文件 → 1 个零件、无 assembly(行为与现状单零件一致);
372
+ * - 句柄互通(T0):`importAssemblyFromStep` 内部用 initOcctWasm() 全局单例内核,
373
+ * 与注入的 `BrepEngineApi`(createOcctPrimitives 包装同一单例)句柄数值互通——
374
+ * 探针见 test/brep/load-brep-assembly.test.ts;
375
+ * - 释放:装配节点句柄已由 walkLabel 释放,叶句柄随返回 parts 交给调用方
376
+ * (fromBrep 绑定后归 brepChain 管理,不在此释放)。
377
+ *
378
+ * @param kernel - the initialized OCCT kernel (L1 contract face).
379
+ * @param buffer - the raw STEP file bytes (text-encoded ArrayBuffer; stpz
380
+ * unzipping is the caller's job — faijs never unzips implicitly).
381
+ * @returns 全部零件 + 装配层级(多叶时)+ 叶数(>1 时)。
382
+ */
383
+ export declare function loadBrepAssembly(kernel: BrepEngineApi, buffer: ArrayBuffer): Promise<{
384
+ parts: LoadBrepAssemblyPart[];
385
+ assembly?: ImportAssemblyNode;
386
+ multiSolidCount?: number;
387
+ }>;
297
388
  /**
298
389
  * Convert a THREE.Matrix4 into the 3x4 row-major array (12 doubles) the OCCT
299
390
  * transform expects.
@@ -1 +1 @@
1
- {"version":3,"file":"brep-ops.d.ts","sourceRoot":"","sources":["../../src/brep/brep-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"brep-ops.d.ts","sourceRoot":"","sources":["../../src/brep/brep-ops.ts"],"names":[],"mappings":"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"}