@faicad/faijs 0.29.5 → 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 (582) 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 +0 -2
  7. package/dist/api/appearance.d.ts.map +1 -1
  8. package/dist/api/appearance.js +0 -2
  9. package/dist/api/appearance.js.map +1 -1
  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/index.d.ts +15 -6
  257. package/dist/api/index.d.ts.map +1 -1
  258. package/dist/api/index.js +29 -8
  259. package/dist/api/index.js.map +1 -1
  260. package/dist/api/internal/compat-op.d.ts +4 -30
  261. package/dist/api/internal/compat-op.d.ts.map +1 -1
  262. package/dist/api/internal/compat-op.js +10 -42
  263. package/dist/api/internal/compat-op.js.map +1 -1
  264. package/dist/api/internal/compat-projection.d.ts +5 -5
  265. package/dist/api/internal/compat-projection.js +5 -5
  266. package/dist/api/internal/compat-projection.js.map +1 -1
  267. package/dist/api/internal/dual-form-args.d.ts +0 -2
  268. package/dist/api/internal/dual-form-args.d.ts.map +1 -1
  269. package/dist/api/internal/dual-form-args.js +1 -3
  270. package/dist/api/internal/dual-form-args.js.map +1 -1
  271. package/dist/api/internal/l3-bridge.d.ts +5 -37
  272. package/dist/api/internal/l3-bridge.d.ts.map +1 -1
  273. package/dist/api/internal/l3-bridge.js +7 -76
  274. package/dist/api/internal/l3-bridge.js.map +1 -1
  275. package/dist/api/internal/profile-wire.d.ts +1 -1
  276. package/dist/api/internal/profile-wire.js +1 -1
  277. package/dist/api/internal/profile-wire.js.map +1 -1
  278. package/dist/api/internal/result-unwrap.d.ts +4 -6
  279. package/dist/api/internal/result-unwrap.d.ts.map +1 -1
  280. package/dist/api/internal/result-unwrap.js +4 -6
  281. package/dist/api/internal/result-unwrap.js.map +1 -1
  282. package/dist/api/knurl.d.ts.map +1 -1
  283. package/dist/api/knurl.js +5 -3
  284. package/dist/api/knurl.js.map +1 -1
  285. package/dist/api/loft.d.ts +2 -2
  286. package/dist/api/loft.d.ts.map +1 -1
  287. package/dist/api/loft.js +2 -2
  288. package/dist/api/loft.js.map +1 -1
  289. package/dist/api/measurement/index.d.ts +3 -3
  290. package/dist/api/measurement/index.js +3 -3
  291. package/dist/api/measurement/index.js.map +1 -1
  292. package/dist/api/meta.d.ts +0 -2
  293. package/dist/api/meta.d.ts.map +1 -1
  294. package/dist/api/meta.js +0 -2
  295. package/dist/api/meta.js.map +1 -1
  296. package/dist/api/offset2d.d.ts +49 -0
  297. package/dist/api/offset2d.d.ts.map +1 -0
  298. package/dist/api/offset2d.js +86 -0
  299. package/dist/api/offset2d.js.map +1 -0
  300. package/dist/api/pattern.js +3 -3
  301. package/dist/api/pattern.js.map +1 -1
  302. package/dist/api/primitives.d.ts.map +1 -1
  303. package/dist/api/primitives.js +7 -6
  304. package/dist/api/primitives.js.map +1 -1
  305. package/dist/api/replicate.d.ts +2 -2
  306. package/dist/api/replicate.d.ts.map +1 -1
  307. package/dist/api/replicate.js +12 -12
  308. package/dist/api/replicate.js.map +1 -1
  309. package/dist/api/result.d.ts +1 -1
  310. package/dist/api/result.js +1 -1
  311. package/dist/api/result.js.map +1 -1
  312. package/dist/api/revolve.d.ts +2 -2
  313. package/dist/api/revolve.js +3 -3
  314. package/dist/api/revolve.js.map +1 -1
  315. package/dist/api/screw.d.ts +1 -1
  316. package/dist/api/screw.d.ts.map +1 -1
  317. package/dist/api/screw.js +5 -4
  318. package/dist/api/screw.js.map +1 -1
  319. package/dist/api/sdf.d.ts.map +1 -1
  320. package/dist/api/sdf.js +3 -2
  321. package/dist/api/sdf.js.map +1 -1
  322. package/dist/api/shape-type/index.d.ts +141 -0
  323. package/dist/api/shape-type/index.d.ts.map +1 -0
  324. package/dist/api/shape-type/index.js +182 -0
  325. package/dist/api/shape-type/index.js.map +1 -0
  326. package/dist/api/shell.d.ts +2 -2
  327. package/dist/api/shell.js +2 -2
  328. package/dist/api/shell.js.map +1 -1
  329. package/dist/api/solid-from-faces.d.ts +45 -0
  330. package/dist/api/solid-from-faces.d.ts.map +1 -0
  331. package/dist/api/solid-from-faces.js +72 -0
  332. package/dist/api/solid-from-faces.js.map +1 -0
  333. package/dist/api/solid-offset/index.d.ts +67 -0
  334. package/dist/api/solid-offset/index.d.ts.map +1 -0
  335. package/dist/api/solid-offset/index.js +132 -0
  336. package/dist/api/solid-offset/index.js.map +1 -0
  337. package/dist/api/surface/arg-spec.d.ts +35 -33
  338. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  339. package/dist/api/surface/arg-spec.js +222 -224
  340. package/dist/api/surface/arg-spec.js.map +1 -1
  341. package/dist/api/surface-face/index.d.ts +104 -0
  342. package/dist/api/surface-face/index.d.ts.map +1 -0
  343. package/dist/api/surface-face/index.js +217 -0
  344. package/dist/api/surface-face/index.js.map +1 -0
  345. package/dist/api/surface.d.ts +44 -0
  346. package/dist/api/surface.d.ts.map +1 -0
  347. package/dist/api/surface.js +66 -0
  348. package/dist/api/surface.js.map +1 -0
  349. package/dist/api/sweep.d.ts +59 -9
  350. package/dist/api/sweep.d.ts.map +1 -1
  351. package/dist/api/sweep.js +11 -6
  352. package/dist/api/sweep.js.map +1 -1
  353. package/dist/api/thicken.d.ts +1 -1
  354. package/dist/api/thicken.js +1 -1
  355. package/dist/api/thicken.js.map +1 -1
  356. package/dist/api/transform.d.ts +5 -5
  357. package/dist/api/transform.d.ts.map +1 -1
  358. package/dist/api/transform.js +11 -10
  359. package/dist/api/transform.js.map +1 -1
  360. package/dist/api/view/cameraFns.d.ts +1 -1
  361. package/dist/api/view/cameraFns.d.ts.map +1 -1
  362. package/dist/api/view/cameraFns.js +1 -1
  363. package/dist/api/view/cameraFns.js.map +1 -1
  364. package/dist/api/view/index.d.ts +0 -2
  365. package/dist/api/view/index.d.ts.map +1 -1
  366. package/dist/api/view/index.js +0 -2
  367. package/dist/api/view/index.js.map +1 -1
  368. package/dist/api/view/projectionPlanes.d.ts +1 -1
  369. package/dist/api/view/projectionPlanes.d.ts.map +1 -1
  370. package/dist/api/view/projectionPlanes.js.map +1 -1
  371. package/dist/api/view/view-camera.d.ts +7 -9
  372. package/dist/api/view/view-camera.d.ts.map +1 -1
  373. package/dist/api/view/view-camera.js +4 -6
  374. package/dist/api/view/view-camera.js.map +1 -1
  375. package/dist/api/view/view-projection.d.ts +0 -2
  376. package/dist/api/view/view-projection.d.ts.map +1 -1
  377. package/dist/api/view/view-projection.js +0 -2
  378. package/dist/api/view/view-projection.js.map +1 -1
  379. package/dist/api/view/view-sheet.d.ts +0 -2
  380. package/dist/api/view/view-sheet.d.ts.map +1 -1
  381. package/dist/api/view/view-sheet.js +0 -2
  382. package/dist/api/view/view-sheet.js.map +1 -1
  383. package/dist/api/view-export/index.d.ts +97 -0
  384. package/dist/api/view-export/index.d.ts.map +1 -0
  385. package/dist/api/view-export/index.js +118 -0
  386. package/dist/api/view-export/index.js.map +1 -0
  387. package/dist/brep/brep-ops.d.ts +89 -1
  388. package/dist/brep/brep-ops.d.ts.map +1 -1
  389. package/dist/brep/brep-ops.js +176 -10
  390. package/dist/brep/brep-ops.js.map +1 -1
  391. package/dist/brep/brep-topology.d.ts +20 -0
  392. package/dist/brep/brep-topology.d.ts.map +1 -1
  393. package/dist/brep/brep-topology.js +46 -0
  394. package/dist/brep/brep-topology.js.map +1 -1
  395. package/dist/brep/engine/adapters/occt.d.ts +1 -1
  396. package/dist/brep/engine/adapters/occt.js +7 -7
  397. package/dist/brep/engine/adapters/occt.js.map +1 -1
  398. package/dist/brep/engine/primitives.d.ts +2 -3
  399. package/dist/brep/engine/primitives.d.ts.map +1 -1
  400. package/dist/brep/engine/primitives.js +1 -2
  401. package/dist/brep/engine/primitives.js.map +1 -1
  402. package/dist/brep/engine/registry.d.ts +1 -1
  403. package/dist/brep/engine/registry.js +1 -1
  404. package/dist/brep/engine/registry.js.map +1 -1
  405. package/dist/brep/engine/types.d.ts +2 -2
  406. package/dist/brep/engine/types.js.map +1 -1
  407. package/dist/brep/handle-bridge.d.ts +2 -2
  408. package/dist/brep/handle-bridge.js +2 -2
  409. package/dist/brep/handle-bridge.js.map +1 -1
  410. package/dist/brep/index.d.ts +6 -3
  411. package/dist/brep/index.d.ts.map +1 -1
  412. package/dist/brep/index.js +6 -3
  413. package/dist/brep/index.js.map +1 -1
  414. package/dist/brepkit-kernel/brepkitKernel.d.ts +1 -1
  415. package/dist/brepkit-kernel/brepkitKernel.js +2 -2
  416. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  417. package/dist/browser.d.ts +2 -2
  418. package/dist/browser.d.ts.map +1 -1
  419. package/dist/browser.js +5 -4
  420. package/dist/browser.js.map +1 -1
  421. package/dist/cad-runtime/admit-compat-lib.d.ts +3 -10
  422. package/dist/cad-runtime/admit-compat-lib.d.ts.map +1 -1
  423. package/dist/cad-runtime/admit-compat-lib.js +3 -9
  424. package/dist/cad-runtime/admit-compat-lib.js.map +1 -1
  425. package/dist/cad-runtime/backend-dispatch.js +12 -3
  426. package/dist/cad-runtime/backend-dispatch.js.map +1 -1
  427. package/dist/cad-runtime/direct-executor.d.ts +6 -3
  428. package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
  429. package/dist/cad-runtime/direct-executor.js +31 -9
  430. package/dist/cad-runtime/direct-executor.js.map +1 -1
  431. package/dist/cad-runtime/interp/env.d.ts +1 -1
  432. package/dist/cad-runtime/interp/env.js.map +1 -1
  433. package/dist/cad-runtime/lib-id.d.ts +0 -2
  434. package/dist/cad-runtime/lib-id.d.ts.map +1 -1
  435. package/dist/cad-runtime/lib-id.js +0 -2
  436. package/dist/cad-runtime/lib-id.js.map +1 -1
  437. package/dist/cad-runtime/live-shapes.d.ts +3 -5
  438. package/dist/cad-runtime/live-shapes.d.ts.map +1 -1
  439. package/dist/cad-runtime/live-shapes.js +8 -10
  440. package/dist/cad-runtime/live-shapes.js.map +1 -1
  441. package/dist/cad-runtime/ports.d.ts +3 -3
  442. package/dist/cad-runtime/ports.js.map +1 -1
  443. package/dist/cad-runtime/runtime.d.ts +21 -7
  444. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  445. package/dist/cad-runtime/runtime.js +45 -6
  446. package/dist/cad-runtime/runtime.js.map +1 -1
  447. package/dist/define-op.d.ts +4 -3
  448. package/dist/define-op.d.ts.map +1 -1
  449. package/dist/define-op.js +2 -2
  450. package/dist/define-op.js.map +1 -1
  451. package/dist/geometry2d/bridge/plane.d.ts +1 -1
  452. package/dist/geometry2d/bridge/plane.js +1 -1
  453. package/dist/geometry2d/bridge/plane.js.map +1 -1
  454. package/dist/geometry2d/curve2d.d.ts +1 -1
  455. package/dist/geometry2d/curve2d.js +1 -1
  456. package/dist/geometry2d/curve2d.js.map +1 -1
  457. package/dist/index.d.ts +1 -1
  458. package/dist/index.d.ts.map +1 -1
  459. package/dist/index.js +10 -4
  460. package/dist/index.js.map +1 -1
  461. package/dist/io/fai-zip/container-read.d.ts +16 -0
  462. package/dist/io/fai-zip/container-read.d.ts.map +1 -1
  463. package/dist/io/fai-zip/container-read.js +22 -0
  464. package/dist/io/fai-zip/container-read.js.map +1 -1
  465. package/dist/io/fai-zip/index.d.ts +1 -1
  466. package/dist/io/fai-zip/index.d.ts.map +1 -1
  467. package/dist/io/fai-zip/index.js +1 -1
  468. package/dist/io/fai-zip/index.js.map +1 -1
  469. package/dist/lang/code-to-args.d.ts.map +1 -1
  470. package/dist/lang/code-to-args.js +10 -1
  471. package/dist/lang/code-to-args.js.map +1 -1
  472. package/dist/lang/determinism-scanner.d.ts.map +1 -1
  473. package/dist/lang/determinism-scanner.js +22 -9
  474. package/dist/lang/determinism-scanner.js.map +1 -1
  475. package/dist/lang/metadata-extractor.d.ts +27 -6
  476. package/dist/lang/metadata-extractor.d.ts.map +1 -1
  477. package/dist/lang/metadata-extractor.js +88 -8
  478. package/dist/lang/metadata-extractor.js.map +1 -1
  479. package/dist/lang/parse-error.d.ts +4 -0
  480. package/dist/lang/parse-error.d.ts.map +1 -1
  481. package/dist/lang/parse-error.js.map +1 -1
  482. package/dist/lang/security-scanner.d.ts +27 -2
  483. package/dist/lang/security-scanner.d.ts.map +1 -1
  484. package/dist/lang/security-scanner.js +29 -2
  485. package/dist/lang/security-scanner.js.map +1 -1
  486. package/dist/lang/source-edit.d.ts +2 -2
  487. package/dist/lang/source-edit.js.map +1 -1
  488. package/dist/lang/symbol-table.generated.d.ts +36 -0
  489. package/dist/lang/symbol-table.generated.d.ts.map +1 -1
  490. package/dist/lang/symbol-table.generated.js +36 -0
  491. package/dist/lang/symbol-table.generated.js.map +1 -1
  492. package/dist/mesh/import-model.d.ts +94 -0
  493. package/dist/mesh/import-model.d.ts.map +1 -0
  494. package/dist/mesh/import-model.js +15 -0
  495. package/dist/mesh/import-model.js.map +1 -0
  496. package/dist/mesh/index.d.ts +19 -58
  497. package/dist/mesh/index.d.ts.map +1 -1
  498. package/dist/mesh/index.js +19 -70
  499. package/dist/mesh/index.js.map +1 -1
  500. package/dist/mesh/io.d.ts +33 -16
  501. package/dist/mesh/io.d.ts.map +1 -1
  502. package/dist/mesh/io.js +144 -39
  503. package/dist/mesh/io.js.map +1 -1
  504. package/dist/mesh/primitives.js +1 -1
  505. package/dist/mesh/primitives.js.map +1 -1
  506. package/dist/mesh/threemf-bambu.d.ts +12 -1
  507. package/dist/mesh/threemf-bambu.d.ts.map +1 -1
  508. package/dist/mesh/threemf-bambu.js +68 -16
  509. package/dist/mesh/threemf-bambu.js.map +1 -1
  510. package/dist/mesh/threemf-loader.d.ts +14 -1
  511. package/dist/mesh/threemf-loader.d.ts.map +1 -1
  512. package/dist/mesh/threemf-loader.js +24 -7
  513. package/dist/mesh/threemf-loader.js.map +1 -1
  514. package/dist/mesh/transform.d.ts +1 -1
  515. package/dist/mesh/transform.js +1 -1
  516. package/dist/mesh/transform.js.map +1 -1
  517. package/dist/mesh/types.d.ts +5 -5
  518. package/dist/mesh/types.d.ts.map +1 -1
  519. package/dist/mesh/types.js.map +1 -1
  520. package/dist/node-host/cli.d.ts +49 -1
  521. package/dist/node-host/cli.d.ts.map +1 -1
  522. package/dist/node-host/cli.js +125 -19
  523. package/dist/node-host/cli.js.map +1 -1
  524. package/dist/node-host/execute-script.d.ts +55 -0
  525. package/dist/node-host/execute-script.d.ts.map +1 -0
  526. package/dist/node-host/execute-script.js +46 -0
  527. package/dist/node-host/execute-script.js.map +1 -0
  528. package/dist/node.d.ts +2 -0
  529. package/dist/node.d.ts.map +1 -1
  530. package/dist/node.js +3 -0
  531. package/dist/node.js.map +1 -1
  532. package/dist/occt-kernel/generated/occtPlatform.generated.d.ts +260 -0
  533. package/dist/occt-kernel/generated/occtPlatform.generated.d.ts.map +1 -0
  534. package/dist/occt-kernel/generated/occtPlatform.generated.js +875 -0
  535. package/dist/occt-kernel/generated/occtPlatform.generated.js.map +1 -0
  536. package/dist/occt-kernel/hullGeometry.d.ts +2 -2
  537. package/dist/occt-kernel/hullGeometry.js +2 -3
  538. package/dist/occt-kernel/hullGeometry.js.map +1 -1
  539. package/dist/occt-kernel/hullOps.d.ts +3 -3
  540. package/dist/occt-kernel/hullOps.js +4 -4
  541. package/dist/occt-kernel/hullOps.js.map +1 -1
  542. package/dist/occt-kernel/occt-primitives.d.ts.map +1 -1
  543. package/dist/occt-kernel/occt-primitives.js +31 -4
  544. package/dist/occt-kernel/occt-primitives.js.map +1 -1
  545. package/dist/occt-kernel/occtKernel.d.ts.map +1 -1
  546. package/dist/occt-kernel/occtKernel.js +18 -0
  547. package/dist/occt-kernel/occtKernel.js.map +1 -1
  548. package/dist/occt-scan/recognize.d.ts +58 -0
  549. package/dist/occt-scan/recognize.d.ts.map +1 -0
  550. package/dist/occt-scan/recognize.js +216 -0
  551. package/dist/occt-scan/recognize.js.map +1 -0
  552. package/dist/primitives/brep-primitives.js +7 -7
  553. package/dist/primitives/brep-primitives.js.map +1 -1
  554. package/dist/result/bug.d.ts +1 -1
  555. package/dist/result/bug.js +1 -1
  556. package/dist/result/bug.js.map +1 -1
  557. package/dist/result/errors.d.ts +2 -2
  558. package/dist/result/errors.d.ts.map +1 -1
  559. package/dist/result/errors.js +1 -1
  560. package/dist/result/errors.js.map +1 -1
  561. package/dist/result/vec3.d.ts +1 -1
  562. package/dist/result/vec3.js +1 -1
  563. package/dist/result/vec3.js.map +1 -1
  564. package/dist/runtime-state.d.ts +16 -0
  565. package/dist/runtime-state.d.ts.map +1 -1
  566. package/dist/runtime-state.js +27 -0
  567. package/dist/runtime-state.js.map +1 -1
  568. package/dist/script-globals.d.ts +24 -0
  569. package/dist/script-globals.d.ts.map +1 -0
  570. package/dist/script-globals.js +24 -0
  571. package/dist/script-globals.js.map +1 -0
  572. package/dist/shape.d.ts +24 -0
  573. package/dist/shape.d.ts.map +1 -1
  574. package/dist/shape.js +40 -0
  575. package/dist/shape.js.map +1 -1
  576. package/dist/topology/naming/lineage.d.ts +3 -2
  577. package/dist/topology/naming/lineage.d.ts.map +1 -1
  578. package/dist/topology/naming/lineage.js.map +1 -1
  579. package/dist/weapp.d.ts +1 -1
  580. package/dist/weapp.js +1 -1
  581. package/dist/weapp.js.map +1 -1
  582. package/package.json +8 -10
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/api/shell.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * api shell — 抽壳:按面移除生成等厚薄壁(手写中立 op,Phase 5)\n *\n * 中立 op:L1 `shell(solid, facesToRemove, thickness, tolerance)` 在 occt 与\n * brepkit 两侧均有真实现(engine-method-map 实测 `dialect`)⇒ 走 `getBrepApi()`\n * (D12),不声明 engines(中立 op:实现只经 L1 契约面)。相对现状是\n * 能力升级——vendored 版是 occt 平台 op(arg-spec `engines:['occt']`,skip)。\n *\n * 选面口径(设计原则 4):`openFaces: FaceTopoRef[]`(`cad.faceRef` 产物),\n * 与 `fillet` 的 `EdgeTopoRef[]` / `extrude` 的 `upTo` 同族;不复刻 vendored 的\n * `Face[]` 句柄入参。解析在 op 内一处完成(`buildEdgeResolutionContext` 现场枚举\n * + `resolveTopoRef`)。\n *\n * 网格链(方案 2026-10-01 §4 Phase 4 / B3 批):`mesh:` 实现走网格后端,面按\n * **序号或 FaceTopoRef** 解析(近似拓扑没有 role 层),产物是新的网格零件。\n */\n\nimport type { Shape } from '../mesh/types'\nimport type { BrepHandle } from '../brep/engine/types'\nimport { solidToShape } from '../brep/brep-ops'\nimport { getBrepApi } from '../brep/handle-bridge'\nimport { brepOf, fromBrep } from '../shape'\nimport { defineOp } from '../sdk'\nimport type { FaceTopoRef } from '../topology/naming'\nimport { resolveTopoRef, TopoRefError } from '../topology/naming'\nimport type { Provenance } from '../topology/naming/lineage'\nimport { buildEdgeResolutionContext } from './topo-resolve'\nimport { meshKernelFailure, meshSolidBasicEntry, meshSolidProduct, resolveMeshFaces } from './internal/mesh-solid-op'\n\n/** 抽壳时移除的面选择器:精度链用 `FaceTopoRef`;网格链也可用 1 起序号。 */\nexport type ShellFaceSelector = number | FaceTopoRef\n\n/** `cad.shell` 参数。 */\nexport interface ShellParams {\n /** 抽壳时移除的面(FaceTopoRef[],`cad.faceRef` 产物;空数组 = 全封闭薄壁)。 */\n openFaces: ShellFaceSelector[]\n /** 壁厚(mm,>0,向内偏置)。 */\n thickness: number\n /** 容差(mm,可选;默认走内核约定值)。 */\n tolerance?: number\n}\n\n/** 参数共校验(两条路径共用;`openFaces` 为空数组合法 = 全封闭薄壁)。 */\nfunction assertShellParams(params: ShellParams): void {\n const { openFaces, thickness } = params ?? ({} as ShellParams)\n if (!Array.isArray(openFaces)) {\n throw new Error('E_SHELL_BAD_OPEN_FACES: shell.openFaces must be an array of FaceTopoRef or ordinals')\n }\n if (typeof thickness !== 'number' || !Number.isFinite(thickness) || thickness <= 0) {\n throw new Error('E_SHELL_BAD_THICKNESS: shell.thickness must be a positive number')\n }\n}\n\n/** BREP 路径:解析面引用 → L1 shell → 收养。 */\nfunction shellBrep(input: Shape, params: ShellParams): Shape {\n const { openFaces, thickness, tolerance } = params\n assertShellParams(params)\n const kernel = getBrepApi()\n const solid = brepOf(input) as BrepHandle | undefined\n if (!solid) throw new Error('E_SHELL_NO_BREP: shell input is not BREP')\n\n const ctx = buildEdgeResolutionContext(kernel, input as object)\n if (!ctx) throw new TopoRefError('E_TOPO_NOT_FOUND', 'face', 'shell: input has no BREP naming context')\n const faceHandles = openFaces.map((ref) => {\n // 精度链不开序号口子:BREP 的面身份是 `(origin, role)`,序号只是本次枚举序。\n if (typeof ref === 'number') {\n throw new Error(\n 'E_SHELL_BAD_OPEN_FACES: an ordinal face selector is only available on the mesh chain — ' +\n 'a precision-chain face is identified by its role line (cad.faceRef)',\n )\n }\n if (!ref || (ref as { kind?: unknown }).kind !== 'face') {\n throw new Error('E_SHELL_BAD_OPEN_FACES: every openFaces entry must be a FaceTopoRef (cad.faceRef)')\n }\n const r = resolveTopoRef(ref, ctx)\n if (r.handle === undefined) {\n throw new TopoRefError('E_TOPO_NOT_FOUND', 'face', `shell: face resolved without handle (${ref.origin}/${ref.role})`)\n }\n return r.handle as BrepHandle\n })\n\n const result = kernel.shell(solid, faceHandles, thickness, tolerance ?? 1e-6)\n return fromBrep(solidToShape(kernel, result), { solid: result })\n}\n\n/**\n * 网格实体路径:按序号或几何选出要开口的面,交网格后端抽壳。\n *\n * 与 BREP 路径同一条 L1 契约面(`shell(solid, faces, thickness, tolerance)`),\n * 差别只在选面方式:近似拓扑没有 role 层,面靠**序号**(拓扑 `faces` 数组下标 + 1)\n * 或 `FaceTopoRef` 的几何匹配(法向/中心/面积)指认。产物是新网格零件,\n * 近似拓扑由 `meshSolidProduct` 重建。\n *\n * @param input - the mesh-solid input.\n * @param params - the shell parameters.\n * @returns the shelled mesh solid as a new mesh part.\n */\nfunction shellMeshSolid(input: Shape, params: ShellParams): Shape {\n const { openFaces, thickness, tolerance } = params\n assertShellParams(params)\n const entry = meshSolidBasicEntry(input, 'shell')\n const faceHandles = resolveMeshFaces(entry.kernel, input, openFaces, 'shell')\n\n let result: BrepHandle\n try {\n result = entry.kernel.shell(entry.solid, faceHandles, thickness, tolerance ?? 1e-6)\n } catch (cause) {\n throw meshKernelFailure(\n 'shell',\n 'E_SHELL_FAILED',\n `shell(thickness=${thickness}) removing ${faceHandles.length} face(s)`,\n cause,\n )\n }\n return meshSolidProduct(entry, result)\n}\n\n/**\n * 抽壳:移除指定面并把余下面偏置成等厚薄壁。\n * @group 特征\n * @inputs 1\n * @async true\n * @qual ok\n * @name shell\n * @note 中立 op:L1 shell 两引擎同实现。`openFaces` 为空数组时生成全封闭薄壁。\n * 精度链按 role 线路选面(`cad.faceRef`);网格链按序号或几何选面——网格零件\n * 没有 role 层,序号是唯一无歧义的指认方式。\n * @returns Shape 抽壳后的薄壁体。\n * @param input - 目标几何。type:Shape required:true\n * @param params.openFaces - 要移除的面(FaceTopoRef[],cad.faceRef 产物;网格链可用 1 起序号)。type:FaceTopoRef[] required:true\n * @param params.thickness - 壁厚(mm,>0)。type:number required:true\n * @param params.tolerance - 容差(mm)。type:number required:false\n * @example\n * const sh = await cad.shell(part0, { openFaces: [cad.faceRef(part0, 1)], thickness: 2 })\n * const sm = await cad.shell(meshPart, { openFaces: [4], thickness: 2 })\n */\nexport const shell = defineOp({\n capabilities: ['directEdit'],\n meshEngines: ['brepkit'],\n mesh(input: Shape, params: ShellParams) {\n return shellMeshSolid(input, params)\n },\n brep(input: Shape, params: ShellParams) {\n return shellBrep(input, params)\n },\n naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } } as Provenance,\n})\n"]}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/api/shell.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * api shell — 抽壳:按面移除生成等厚薄壁(手写中立 op,Phase 5)\n *\n * 中立 op:L1 `shell(solid, facesToRemove, thickness, tolerance)` 在 occt 与\n * brepkit 两侧均有真实现(engine-method-map 实测 `dialect`)⇒ 走 `getBrepApi()`\n * (D12),不声明 engines(中立 op:实现只经 L1 契约面)。相对现状是\n * 能力升级——旧版是 occt 平台 op(arg-spec `engines:['occt']`,skip)。\n *\n * 选面口径(设计原则 4):`openFaces: FaceTopoRef[]`(`cad.faceRef` 产物),\n * 与 `fillet` 的 `EdgeTopoRef[]` / `extrude` 的 `upTo` 同族;不复刻旧\n * `Face[]` 句柄入参。解析在 op 内一处完成(`buildEdgeResolutionContext` 现场枚举\n * + `resolveTopoRef`)。\n *\n * 网格链(方案 2026-10-01 §4 Phase 4 / B3 批):`mesh:` 实现走网格后端,面按\n * **序号或 FaceTopoRef** 解析(近似拓扑没有 role 层),产物是新的网格零件。\n */\n\nimport type { Shape } from '../mesh/types'\nimport type { BrepHandle } from '../brep/engine/types'\nimport { solidToShape } from '../brep/brep-ops'\nimport { getBrepApi } from '../brep/handle-bridge'\nimport { brepOf, fromBrep } from '../shape'\nimport { defineOp } from '../sdk'\nimport type { FaceTopoRef } from '../topology/naming'\nimport { resolveTopoRef, TopoRefError } from '../topology/naming'\nimport type { Provenance } from '../topology/naming/lineage'\nimport { buildEdgeResolutionContext } from './topo-resolve'\nimport { meshKernelFailure, meshSolidBasicEntry, meshSolidProduct, resolveMeshFaces } from './internal/mesh-solid-op'\n\n/** 抽壳时移除的面选择器:精度链用 `FaceTopoRef`;网格链也可用 1 起序号。 */\nexport type ShellFaceSelector = number | FaceTopoRef\n\n/** `cad.shell` 参数。 */\nexport interface ShellParams {\n /** 抽壳时移除的面(FaceTopoRef[],`cad.faceRef` 产物;空数组 = 全封闭薄壁)。 */\n openFaces: ShellFaceSelector[]\n /** 壁厚(mm,>0,向内偏置)。 */\n thickness: number\n /** 容差(mm,可选;默认走内核约定值)。 */\n tolerance?: number\n}\n\n/** 参数共校验(两条路径共用;`openFaces` 为空数组合法 = 全封闭薄壁)。 */\nfunction assertShellParams(params: ShellParams): void {\n const { openFaces, thickness } = params ?? ({} as ShellParams)\n if (!Array.isArray(openFaces)) {\n throw new Error('E_SHELL_BAD_OPEN_FACES: shell.openFaces must be an array of FaceTopoRef or ordinals')\n }\n if (typeof thickness !== 'number' || !Number.isFinite(thickness) || thickness <= 0) {\n throw new Error('E_SHELL_BAD_THICKNESS: shell.thickness must be a positive number')\n }\n}\n\n/** BREP 路径:解析面引用 → L1 shell → 收养。 */\nfunction shellBrep(input: Shape, params: ShellParams): Shape {\n const { openFaces, thickness, tolerance } = params\n assertShellParams(params)\n const kernel = getBrepApi()\n const solid = brepOf(input) as BrepHandle | undefined\n if (!solid) throw new Error('E_SHELL_NO_BREP: shell input is not BREP')\n\n const ctx = buildEdgeResolutionContext(kernel, input as object)\n if (!ctx) throw new TopoRefError('E_TOPO_NOT_FOUND', 'face', 'shell: input has no BREP naming context')\n const faceHandles = openFaces.map((ref) => {\n // 精度链不开序号口子:BREP 的面身份是 `(origin, role)`,序号只是本次枚举序。\n if (typeof ref === 'number') {\n throw new Error(\n 'E_SHELL_BAD_OPEN_FACES: an ordinal face selector is only available on the mesh chain — ' +\n 'a precision-chain face is identified by its role line (cad.faceRef)',\n )\n }\n if (!ref || (ref as { kind?: unknown }).kind !== 'face') {\n throw new Error('E_SHELL_BAD_OPEN_FACES: every openFaces entry must be a FaceTopoRef (cad.faceRef)')\n }\n const r = resolveTopoRef(ref, ctx)\n if (r.handle === undefined) {\n throw new TopoRefError('E_TOPO_NOT_FOUND', 'face', `shell: face resolved without handle (${ref.origin}/${ref.role})`)\n }\n return r.handle as BrepHandle\n })\n\n const result = kernel.shell(solid, faceHandles, thickness, tolerance ?? 1e-6)\n return fromBrep(solidToShape(kernel, result), { solid: result })\n}\n\n/**\n * 网格实体路径:按序号或几何选出要开口的面,交网格后端抽壳。\n *\n * 与 BREP 路径同一条 L1 契约面(`shell(solid, faces, thickness, tolerance)`),\n * 差别只在选面方式:近似拓扑没有 role 层,面靠**序号**(拓扑 `faces` 数组下标 + 1)\n * 或 `FaceTopoRef` 的几何匹配(法向/中心/面积)指认。产物是新网格零件,\n * 近似拓扑由 `meshSolidProduct` 重建。\n *\n * @param input - the mesh-solid input.\n * @param params - the shell parameters.\n * @returns the shelled mesh solid as a new mesh part.\n */\nfunction shellMeshSolid(input: Shape, params: ShellParams): Shape {\n const { openFaces, thickness, tolerance } = params\n assertShellParams(params)\n const entry = meshSolidBasicEntry(input, 'shell')\n const faceHandles = resolveMeshFaces(entry.kernel, input, openFaces, 'shell')\n\n let result: BrepHandle\n try {\n result = entry.kernel.shell(entry.solid, faceHandles, thickness, tolerance ?? 1e-6)\n } catch (cause) {\n throw meshKernelFailure(\n 'shell',\n 'E_SHELL_FAILED',\n `shell(thickness=${thickness}) removing ${faceHandles.length} face(s)`,\n cause,\n )\n }\n return meshSolidProduct(entry, result)\n}\n\n/**\n * 抽壳:移除指定面并把余下面偏置成等厚薄壁。\n * @group 特征\n * @inputs 1\n * @async true\n * @qual ok\n * @name shell\n * @note 中立 op:L1 shell 两引擎同实现。`openFaces` 为空数组时生成全封闭薄壁。\n * 精度链按 role 线路选面(`cad.faceRef`);网格链按序号或几何选面——网格零件\n * 没有 role 层,序号是唯一无歧义的指认方式。\n * @returns Shape 抽壳后的薄壁体。\n * @param input - 目标几何。type:Shape required:true\n * @param params.openFaces - 要移除的面(FaceTopoRef[],cad.faceRef 产物;网格链可用 1 起序号)。type:FaceTopoRef[] required:true\n * @param params.thickness - 壁厚(mm,>0)。type:number required:true\n * @param params.tolerance - 容差(mm)。type:number required:false\n * @example\n * const sh = await cad.shell(part0, { openFaces: [cad.faceRef(part0, 1)], thickness: 2 })\n * const sm = await cad.shell(meshPart, { openFaces: [4], thickness: 2 })\n */\nexport const shell = defineOp({\n capabilities: ['directEdit'],\n meshEngines: ['brepkit'],\n mesh(input: Shape, params: ShellParams) {\n return shellMeshSolid(input, params)\n },\n brep(input: Shape, params: ShellParams) {\n return shellBrep(input, params)\n },\n naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } } as Provenance,\n})\n"]}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * api solidFromFaces — 面集一次成型为实体(手写平台 op engines:['occt'])
3
+ *
4
+ * @platform occt — 本文件 import occt-kernel(`getOcctKernel().buildSolidFromFaces`):
5
+ * 该原生方法在 L1 契约 `brep/engine/primitives.ts` 里**没有对应成员**(L1 只有
6
+ * `sewAndSolidify`),故 op 声明 `engines: ['occt']`(D11)。守卫 ① 要求平台
7
+ * import 自证身份(本头注);调用方 op 声明 `engines` 由守卫 ② 校验。
8
+ *
9
+ * 与 `sewAndSolidify` / `sew` 的分工(方案 §4.5 去重表):
10
+ * - `sewAndSolidify(faces, {tolerance})` — **中立** op,走 L1 契约的
11
+ * 「面 → 缝合 → 固化」两步链,两引擎(occt / brepkit)同实现;
12
+ * - `solidFromFaces(faces, {tolerance})` — **平台** op,直调 occt 原生一次性
13
+ * 构造器 `buildSolidFromFaces`(`BRepBuilderAPI_*` 单次成型,自带缝合容差)。
14
+ *
15
+ * 二者并存不是双轨:一个是引擎中立的可切换路径,一个是 occt 原生的一次成型
16
+ * 入口(真值来源是 occt-wasm 的两个不同内核方法)。新增 op 前已对照 §4.5 表。
17
+ *
18
+ * 产物形态:实体(solid),经 `fromBrep` 收养;面演化由内核给出 ⇒
19
+ * `naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } }`(同 sew 族口径)。
20
+ */
21
+ import type { Shape } from '../mesh/types.js';
22
+ /** `cad.solidFromFaces` 参数。 */
23
+ export interface SolidFromFacesParams {
24
+ /** 缝合容差(mm,可选;缺省 = occt 原生默认 1e-6)。 */
25
+ tolerance?: number;
26
+ }
27
+ /**
28
+ * 面集一次成型为实体:把一组共享边界的面缝合成一个实体(occt 原生一次构造)。
29
+ * @group 特征
30
+ * @inputs 1
31
+ * @async true
32
+ * @qual ok
33
+ * @name solidFromFaces
34
+ * @note 平台 op:仅 occt 引擎(原生 buildSolidFromFaces,L1 契约无对应成员)。
35
+ * 非 occt 引擎执行前报错;brep_mock 不拦截。中立路径见 `sewAndSolidify`。
36
+ * @returns Shape 缝合固化后的实体。
37
+ * @param faces - 面集合(共享边界、构成闭合壳)。type:Shape[] required:true
38
+ * @param params.tolerance - 缝合容差(mm,默认 occt 1e-6)。type:number required:false
39
+ * @example
40
+ * const solid = await cad.solidFromFaces([f0, f1, f2, f3, f4, f5])
41
+ */
42
+ export declare const solidFromFaces: ((faces: Shape[], params?: SolidFromFacesParams | undefined) => Promise<Shape>) & {
43
+ __faijs__dualOp?: import("../define-op.js").DualOpMeta;
44
+ };
45
+ //# sourceMappingURL=solid-from-faces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-from-faces.d.ts","sourceRoot":"","sources":["../../src/api/solid-from-faces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAS1C,+BAA+B;AAC/B,MAAM,WAAW,oBAAoB;IACnC,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA0BD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc;;CAQzB,CAAA"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * api solidFromFaces — 面集一次成型为实体(手写平台 op engines:['occt'])
3
+ *
4
+ * @platform occt — 本文件 import occt-kernel(`getOcctKernel().buildSolidFromFaces`):
5
+ * 该原生方法在 L1 契约 `brep/engine/primitives.ts` 里**没有对应成员**(L1 只有
6
+ * `sewAndSolidify`),故 op 声明 `engines: ['occt']`(D11)。守卫 ① 要求平台
7
+ * import 自证身份(本头注);调用方 op 声明 `engines` 由守卫 ② 校验。
8
+ *
9
+ * 与 `sewAndSolidify` / `sew` 的分工(方案 §4.5 去重表):
10
+ * - `sewAndSolidify(faces, {tolerance})` — **中立** op,走 L1 契约的
11
+ * 「面 → 缝合 → 固化」两步链,两引擎(occt / brepkit)同实现;
12
+ * - `solidFromFaces(faces, {tolerance})` — **平台** op,直调 occt 原生一次性
13
+ * 构造器 `buildSolidFromFaces`(`BRepBuilderAPI_*` 单次成型,自带缝合容差)。
14
+ *
15
+ * 二者并存不是双轨:一个是引擎中立的可切换路径,一个是 occt 原生的一次成型
16
+ * 入口(真值来源是 occt-wasm 的两个不同内核方法)。新增 op 前已对照 §4.5 表。
17
+ *
18
+ * 产物形态:实体(solid),经 `fromBrep` 收养;面演化由内核给出 ⇒
19
+ * `naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } }`(同 sew 族口径)。
20
+ */
21
+ import { solidToShape } from '../brep/brep-ops.js';
22
+ import { getBrepApi } from '../brep/handle-bridge.js';
23
+ import { brepOf, fromBrep } from '../shape.js';
24
+ import { defineOp } from '../sdk.js';
25
+ import { getOcctKernel } from '../occt-kernel/occtKernel.js';
26
+ /** BREP 路径:借入面句柄 → occt 原生 buildSolidFromFaces(一次成型)→ fromBrep 收养。 */
27
+ function solidFromFacesBrep(faces, params) {
28
+ if (!Array.isArray(faces) || faces.length === 0) {
29
+ throw new Error('E_SOLID_FROM_FACES_NO_FACES: solidFromFaces requires a non-empty array of faces');
30
+ }
31
+ const tolerance = params?.tolerance;
32
+ if (tolerance !== undefined && (typeof tolerance !== 'number' || !(tolerance > 0))) {
33
+ throw new Error('E_SOLID_FROM_FACES_BAD_TOLERANCE: tolerance must be a positive number');
34
+ }
35
+ const handles = faces.map((s) => {
36
+ const h = brepOf(s);
37
+ if (!h)
38
+ throw new Error('E_SOLID_FROM_FACES_NO_BREP: solidFromFaces input shape is not BREP');
39
+ return h;
40
+ });
41
+ const kernel = getBrepApi();
42
+ const occt = getOcctKernel();
43
+ const handle = (tolerance === undefined
44
+ ? occt.buildSolidFromFaces(handles)
45
+ : occt.buildSolidFromFaces(handles, tolerance));
46
+ return fromBrep(solidToShape(kernel, handle), { solid: handle });
47
+ }
48
+ /**
49
+ * 面集一次成型为实体:把一组共享边界的面缝合成一个实体(occt 原生一次构造)。
50
+ * @group 特征
51
+ * @inputs 1
52
+ * @async true
53
+ * @qual ok
54
+ * @name solidFromFaces
55
+ * @note 平台 op:仅 occt 引擎(原生 buildSolidFromFaces,L1 契约无对应成员)。
56
+ * 非 occt 引擎执行前报错;brep_mock 不拦截。中立路径见 `sewAndSolidify`。
57
+ * @returns Shape 缝合固化后的实体。
58
+ * @param faces - 面集合(共享边界、构成闭合壳)。type:Shape[] required:true
59
+ * @param params.tolerance - 缝合容差(mm,默认 occt 1e-6)。type:number required:false
60
+ * @example
61
+ * const solid = await cad.solidFromFaces([f0, f1, f2, f3, f4, f5])
62
+ */
63
+ export const solidFromFaces = defineOp({
64
+ name: 'solidFromFaces',
65
+ paramDims: { 'params.tolerance': 'length' },
66
+ brep(faces, params) {
67
+ return solidFromFacesBrep(faces, params);
68
+ },
69
+ engines: ['occt'],
70
+ naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } },
71
+ });
72
+ //# sourceMappingURL=solid-from-faces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solid-from-faces.js","sourceRoot":"","sources":["../../src/api/solid-from-faces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAQzD,sEAAsE;AACtE,SAAS,kBAAkB,CAAC,KAAc,EAAE,MAA6B;IACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAA;IACpG,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAA;IACnC,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;IAC1F,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAA2B,CAAA;QAC7C,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;QAC7F,OAAO,CAAC,CAAA;IACV,CAAC,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,MAAM,IAAI,GAAG,aAAa,EAAE,CAAA;IAC5B,MAAM,MAAM,GAAG,CACb,SAAS,KAAK,SAAS;QACrB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAgB,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAgB,EAAE,SAAS,CAAC,CACjC,CAAA;IAC1B,OAAO,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;AAClE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;IACrC,IAAI,EAAE,gBAAgB;IACtB,SAAS,EAAE,EAAE,kBAAkB,EAAE,QAAQ,EAAE;IAC3C,IAAI,CAAC,KAAc,EAAE,MAA6B;QAChD,OAAO,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,EAAgB;CAC3E,CAAC,CAAA","sourcesContent":["/**\n * api solidFromFaces — 面集一次成型为实体(手写平台 op engines:['occt'])\n *\n * @platform occt — 本文件 import occt-kernel(`getOcctKernel().buildSolidFromFaces`):\n * 该原生方法在 L1 契约 `brep/engine/primitives.ts` 里**没有对应成员**(L1 只有\n * `sewAndSolidify`),故 op 声明 `engines: ['occt']`(D11)。守卫 ① 要求平台\n * import 自证身份(本头注);调用方 op 声明 `engines` 由守卫 ② 校验。\n *\n * 与 `sewAndSolidify` / `sew` 的分工(方案 §4.5 去重表):\n * - `sewAndSolidify(faces, {tolerance})` — **中立** op,走 L1 契约的\n * 「面 → 缝合 → 固化」两步链,两引擎(occt / brepkit)同实现;\n * - `solidFromFaces(faces, {tolerance})` — **平台** op,直调 occt 原生一次性\n * 构造器 `buildSolidFromFaces`(`BRepBuilderAPI_*` 单次成型,自带缝合容差)。\n *\n * 二者并存不是双轨:一个是引擎中立的可切换路径,一个是 occt 原生的一次成型\n * 入口(真值来源是 occt-wasm 的两个不同内核方法)。新增 op 前已对照 §4.5 表。\n *\n * 产物形态:实体(solid),经 `fromBrep` 收养;面演化由内核给出 ⇒\n * `naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } }`(同 sew 族口径)。\n */\n\nimport type { Shape } from '../mesh/types'\nimport type { BrepHandle } from '../brep/engine/types'\nimport { solidToShape } from '../brep/brep-ops'\nimport { getBrepApi } from '../brep/handle-bridge'\nimport { brepOf, fromBrep } from '../shape'\nimport { defineOp } from '../sdk'\nimport type { Provenance } from '../topology/naming/lineage'\nimport { getOcctKernel } from '../occt-kernel/occtKernel'\n\n/** `cad.solidFromFaces` 参数。 */\nexport interface SolidFromFacesParams {\n /** 缝合容差(mm,可选;缺省 = occt 原生默认 1e-6)。 */\n tolerance?: number\n}\n\n/** BREP 路径:借入面句柄 → occt 原生 buildSolidFromFaces(一次成型)→ fromBrep 收养。 */\nfunction solidFromFacesBrep(faces: Shape[], params?: SolidFromFacesParams): Shape {\n if (!Array.isArray(faces) || faces.length === 0) {\n throw new Error('E_SOLID_FROM_FACES_NO_FACES: solidFromFaces requires a non-empty array of faces')\n }\n const tolerance = params?.tolerance\n if (tolerance !== undefined && (typeof tolerance !== 'number' || !(tolerance > 0))) {\n throw new Error('E_SOLID_FROM_FACES_BAD_TOLERANCE: tolerance must be a positive number')\n }\n const handles = faces.map((s) => {\n const h = brepOf(s) as BrepHandle | undefined\n if (!h) throw new Error('E_SOLID_FROM_FACES_NO_BREP: solidFromFaces input shape is not BREP')\n return h\n })\n const kernel = getBrepApi()\n const occt = getOcctKernel()\n const handle = (\n tolerance === undefined\n ? occt.buildSolidFromFaces(handles as never)\n : occt.buildSolidFromFaces(handles as never, tolerance)\n ) as unknown as BrepHandle\n return fromBrep(solidToShape(kernel, handle), { solid: handle })\n}\n\n/**\n * 面集一次成型为实体:把一组共享边界的面缝合成一个实体(occt 原生一次构造)。\n * @group 特征\n * @inputs 1\n * @async true\n * @qual ok\n * @name solidFromFaces\n * @note 平台 op:仅 occt 引擎(原生 buildSolidFromFaces,L1 契约无对应成员)。\n * 非 occt 引擎执行前报错;brep_mock 不拦截。中立路径见 `sewAndSolidify`。\n * @returns Shape 缝合固化后的实体。\n * @param faces - 面集合(共享边界、构成闭合壳)。type:Shape[] required:true\n * @param params.tolerance - 缝合容差(mm,默认 occt 1e-6)。type:number required:false\n * @example\n * const solid = await cad.solidFromFaces([f0, f1, f2, f3, f4, f5])\n */\nexport const solidFromFaces = defineOp({\n name: 'solidFromFaces',\n paramDims: { 'params.tolerance': 'length' },\n brep(faces: Shape[], params?: SolidFromFacesParams) {\n return solidFromFacesBrep(faces, params)\n },\n engines: ['occt'],\n naming: { kind: 'kernel', newFaces: { via: 'byAdjacency' } } as Provenance,\n})\n"]}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * api solid-offset — 实体与偏置族(S4 剩余:draftPrism / pipe,平台 op engines:['occt'])
3
+ *
4
+ * @platform occt — 本目录 import occt-kernel:`draftPrism`(拔模棱柱)与 `pipe`
5
+ * (沿脊柱的管)直调 occt 原生(occt-wasm 原生有)。这两个原生方法**不在** L1 契约
6
+ * `BrepEngineApi` 里(L1 只有 `offset` / `sweepPipeShell` 等,见
7
+ * brep/engine/primitives.ts)⇒ 平台 op:defineOp 声明 `engines: ['occt']`(D11)。
8
+ *
9
+ * 方案落点:docs/plans/2026-10-07-occt-wasm-op-enablement-plan.md §3.4.4
10
+ * (该族 5 项中 `offsetWire2d` / `buildSolidFromFaces` / `halfSpace` 已由 S3 落地)。
11
+ * 与既有 op 的边界(§4.5 去重表):
12
+ * - `pipe` vs `sweep`:pipe = `BRepOffsetAPI_MakePipe`(沿脊柱的管,单截面裸管线);
13
+ * sweep = `sweepPipeShell` / `simplePipe`(截面扫掠,带 Frenet/平滑选项);
14
+ * - `draftPrism` vs `extrude`:前者带拔模角(上下截面渐变),后者平行拔出;
15
+ * - `draftPrism` vs `draft`:draft 对已有实体面加拔模斜度;draftPrism 是拔模挤出。
16
+ *
17
+ * 角度约定(实测钉住,见 test/api/occt-s4-solid-offset.test.ts):occt 原生
18
+ * `draftPrism` 的形参名即 `angleDeg`(**度**,facade 内部自行换算弧度)——脚本面
19
+ * 直传度,不做二次换算。
20
+ */
21
+ import type { Shape } from '../../mesh/types.js';
22
+ type Vec3 = [number, number, number];
23
+ /**
24
+ * 拔模棱柱:把平面基底(face 或 wire)沿方向挤出,并施加拔模角(上下截面渐变)。
25
+ * @group 创建
26
+ * @inputs 0
27
+ * @async false
28
+ * @qual ok
29
+ * @name draftPrism
30
+ * @note 平台 op:仅 occt 引擎(原生 draftPrism,形参即 angleDeg——角度单位是**度**,
31
+ * 原生内部换算)。角度为 0 时等价普通挤出。
32
+ * @returns Shape 拔模挤出体。
33
+ * @param base - 平面基底(face 或闭合 wire)。type:Shape required:true
34
+ * @param direction - 挤出方向 [dx,dy,dz](非零;长度即挤出距离)。type:Vec3 required:true
35
+ * @param angleDeg - 拔模角(度)。type:number required:true
36
+ * @example
37
+ * const s = cad.draftPrism(squareFace, [0, 0, 10], 5)
38
+ */
39
+ export declare const draftPrism: ((base: Shape, direction: Vec3, angleDeg: number) => Promise<Shape>) & {
40
+ __faijs__dualOp?: import("../../define-op.js").DualOpMeta;
41
+ };
42
+ /**
43
+ * 沿脊柱扫出管:把截面沿脊柱 wire 扫掠(`BRepOffsetAPI_MakePipe` 裸管线;
44
+ * 带过渡/方向控制的扫掠见 `sweep`)。
45
+ *
46
+ * 产物类型随截面类型(实测钉住,test/api/occt-s4-solid-offset.test.ts A3/A4):
47
+ * **截面 face → 实体;截面 wire/edge → 壳(管面,体积无意义)**。要实体管,
48
+ * 喂面截面(如 `cad.profile` 的圆盘轮廓)。
49
+ * @group 创建
50
+ * @inputs 2
51
+ * @async false
52
+ * @qual ok
53
+ * @name pipe
54
+ * @note 平台 op:仅 occt 引擎(原生 pipe,L1 契约无对应成员)。脊柱须为 wire。
55
+ * 非 occt 引擎执行前报错;brep_mock 不拦截。
56
+ * @returns Shape 扫出的管(截面 face → 实体;wire/edge → 壳)。
57
+ * @param profile - 截面(face → 实体;wire/edge → 壳)。
58
+ * type:Shape required:true
59
+ * @param spine - 脊柱 wire。type:Shape required:true
60
+ * @example
61
+ * const tube = cad.pipe(diskFace, spineWire)
62
+ */
63
+ export declare const pipe: ((profile: Shape, spine: Shape) => Promise<Shape>) & {
64
+ __faijs__dualOp?: import("../../define-op.js").DualOpMeta;
65
+ };
66
+ export {};
67
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/solid-offset/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAS7C,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAsCpC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,UAAU;;CAWrB,CAAA;AAuBF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,IAAI;;CAUf,CAAA"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * api solid-offset — 实体与偏置族(S4 剩余:draftPrism / pipe,平台 op engines:['occt'])
3
+ *
4
+ * @platform occt — 本目录 import occt-kernel:`draftPrism`(拔模棱柱)与 `pipe`
5
+ * (沿脊柱的管)直调 occt 原生(occt-wasm 原生有)。这两个原生方法**不在** L1 契约
6
+ * `BrepEngineApi` 里(L1 只有 `offset` / `sweepPipeShell` 等,见
7
+ * brep/engine/primitives.ts)⇒ 平台 op:defineOp 声明 `engines: ['occt']`(D11)。
8
+ *
9
+ * 方案落点:docs/plans/2026-10-07-occt-wasm-op-enablement-plan.md §3.4.4
10
+ * (该族 5 项中 `offsetWire2d` / `buildSolidFromFaces` / `halfSpace` 已由 S3 落地)。
11
+ * 与既有 op 的边界(§4.5 去重表):
12
+ * - `pipe` vs `sweep`:pipe = `BRepOffsetAPI_MakePipe`(沿脊柱的管,单截面裸管线);
13
+ * sweep = `sweepPipeShell` / `simplePipe`(截面扫掠,带 Frenet/平滑选项);
14
+ * - `draftPrism` vs `extrude`:前者带拔模角(上下截面渐变),后者平行拔出;
15
+ * - `draftPrism` vs `draft`:draft 对已有实体面加拔模斜度;draftPrism 是拔模挤出。
16
+ *
17
+ * 角度约定(实测钉住,见 test/api/occt-s4-solid-offset.test.ts):occt 原生
18
+ * `draftPrism` 的形参名即 `angleDeg`(**度**,facade 内部自行换算弧度)——脚本面
19
+ * 直传度,不做二次换算。
20
+ */
21
+ import { solidToShape } from '../../brep/brep-ops.js';
22
+ import { getBrepApi } from '../../brep/handle-bridge.js';
23
+ import { brepOf, fromBrep } from '../../shape.js';
24
+ import { defineOp } from '../../sdk.js';
25
+ import { getOcctKernel } from '../../occt-kernel/occtKernel.js';
26
+ /** 输入 Shape → 内核句柄(无 BREP 槁报错)。 */
27
+ function handleOf(shape, op, which) {
28
+ const h = brepOf(shape);
29
+ if (!h) {
30
+ throw new Error(`E_${op.toUpperCase()}_NO_BREP: ${op} requires a BREP handle for ${which} (mesh-only shape has none)`);
31
+ }
32
+ return h;
33
+ }
34
+ // ─────────────────────────────────────────────────────────────────────────────
35
+ // draftPrism — 拔模棱柱(带角度挤出)
36
+ // ─────────────────────────────────────────────────────────────────────────────
37
+ /** BREP 路径:occt 原生 draftPrism(angleDeg 度,原生内部换算弧度)。 */
38
+ function draftPrismBrep(base, direction, angleDeg) {
39
+ if (!base) {
40
+ throw new Error('E_DRAFTPRISM_NO_BASE: draftPrism requires a planar base (face or wire)');
41
+ }
42
+ if (!Array.isArray(direction) ||
43
+ direction.length !== 3 ||
44
+ direction.some((n) => typeof n !== 'number' || !Number.isFinite(n)) ||
45
+ (direction[0] === 0 && direction[1] === 0 && direction[2] === 0)) {
46
+ throw new Error('E_DRAFTPRISM_BAD_DIRECTION: direction must be a non-zero [dx,dy,dz]');
47
+ }
48
+ if (typeof angleDeg !== 'number' || !Number.isFinite(angleDeg)) {
49
+ throw new Error('E_DRAFTPRISM_BAD_ANGLE: angleDeg must be a finite number (degrees)');
50
+ }
51
+ const bh = handleOf(base, 'draftPrism', 'base shape');
52
+ const handle = getOcctKernel().draftPrism(bh, direction[0], direction[1], direction[2], angleDeg);
53
+ return fromBrep(solidToShape(getBrepApi(), handle), { solid: handle });
54
+ }
55
+ /**
56
+ * 拔模棱柱:把平面基底(face 或 wire)沿方向挤出,并施加拔模角(上下截面渐变)。
57
+ * @group 创建
58
+ * @inputs 0
59
+ * @async false
60
+ * @qual ok
61
+ * @name draftPrism
62
+ * @note 平台 op:仅 occt 引擎(原生 draftPrism,形参即 angleDeg——角度单位是**度**,
63
+ * 原生内部换算)。角度为 0 时等价普通挤出。
64
+ * @returns Shape 拔模挤出体。
65
+ * @param base - 平面基底(face 或闭合 wire)。type:Shape required:true
66
+ * @param direction - 挤出方向 [dx,dy,dz](非零;长度即挤出距离)。type:Vec3 required:true
67
+ * @param angleDeg - 拔模角(度)。type:number required:true
68
+ * @example
69
+ * const s = cad.draftPrism(squareFace, [0, 0, 10], 5)
70
+ */
71
+ export const draftPrism = defineOp({
72
+ name: 'draftPrism',
73
+ paramDims: { direction: 'length', angleDeg: 'angle' },
74
+ brep(base, direction, angleDeg) {
75
+ return draftPrismBrep(base, direction, angleDeg);
76
+ },
77
+ engines: ['occt'],
78
+ naming: {
79
+ kind: 'unmodeled',
80
+ reason: 'tapered prism face vocabulary not defined',
81
+ },
82
+ });
83
+ // ─────────────────────────────────────────────────────────────────────────────
84
+ // pipe — 沿脊柱的管(BRepOffsetAPI_MakePipe)
85
+ // ─────────────────────────────────────────────────────────────────────────────
86
+ /** BREP 路径:occt 原生 pipe。脊柱须 wire(原生 TopoDS::Wire 转换);截面原样透传
87
+ * ——**face 截面产实体,wire/edge 截面产壳**(BRepOffsetAPI_MakePipe 语义,
88
+ * 实测钉在 test/api/occt-s4-solid-offset.test.ts A3/A4),故不做面→外环适配
89
+ * (那会把实体口径降级成壳)。 */
90
+ function pipeBrep(profile, spine) {
91
+ if (!profile || !spine) {
92
+ throw new Error('E_PIPE_MISSING_ARG: pipe requires a profile and a spine (wire)');
93
+ }
94
+ const profileHandle = handleOf(profile, 'pipe', 'profile');
95
+ const spineHandle = handleOf(spine, 'pipe', 'spine wire');
96
+ const kernel = getBrepApi();
97
+ const handle = getOcctKernel().pipe(profileHandle, spineHandle);
98
+ return fromBrep(solidToShape(kernel, handle), { solid: handle });
99
+ }
100
+ /**
101
+ * 沿脊柱扫出管:把截面沿脊柱 wire 扫掠(`BRepOffsetAPI_MakePipe` 裸管线;
102
+ * 带过渡/方向控制的扫掠见 `sweep`)。
103
+ *
104
+ * 产物类型随截面类型(实测钉住,test/api/occt-s4-solid-offset.test.ts A3/A4):
105
+ * **截面 face → 实体;截面 wire/edge → 壳(管面,体积无意义)**。要实体管,
106
+ * 喂面截面(如 `cad.profile` 的圆盘轮廓)。
107
+ * @group 创建
108
+ * @inputs 2
109
+ * @async false
110
+ * @qual ok
111
+ * @name pipe
112
+ * @note 平台 op:仅 occt 引擎(原生 pipe,L1 契约无对应成员)。脊柱须为 wire。
113
+ * 非 occt 引擎执行前报错;brep_mock 不拦截。
114
+ * @returns Shape 扫出的管(截面 face → 实体;wire/edge → 壳)。
115
+ * @param profile - 截面(face → 实体;wire/edge → 壳)。
116
+ * type:Shape required:true
117
+ * @param spine - 脊柱 wire。type:Shape required:true
118
+ * @example
119
+ * const tube = cad.pipe(diskFace, spineWire)
120
+ */
121
+ export const pipe = defineOp({
122
+ name: 'pipe',
123
+ brep(profile, spine) {
124
+ return pipeBrep(profile, spine);
125
+ },
126
+ engines: ['occt'],
127
+ naming: {
128
+ kind: 'unmodeled',
129
+ reason: 'pipe face vocabulary not defined',
130
+ },
131
+ });
132
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/solid-offset/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAI5D,mCAAmC;AACnC,SAAS,QAAQ,CAAC,KAAY,EAAE,EAAU,EAAE,KAAa;IACvD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAA2B,CAAA;IACjD,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,+BAA+B,KAAK,6BAA6B,CAAC,CAAA;IACxH,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF,uDAAuD;AACvD,SAAS,cAAc,CAAC,IAAW,EAAE,SAAe,EAAE,QAAgB;IACpE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;IAC3F,CAAC;IACD,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QACzB,SAAS,CAAC,MAAM,KAAK,CAAC;QACtB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAChE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAA;IACxF,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;IACvF,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;IACrD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC,UAAU,CACvC,EAAW,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,CACvC,CAAA;IAC1B,OAAO,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;AACxE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;IACjC,IAAI,EAAE,YAAY;IAClB,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE;IACrD,IAAI,CAAC,IAAW,EAAE,SAAe,EAAE,QAAgB;QACjD,OAAO,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,MAAM,EAAE;QACN,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,2CAA2C;KACtC;CAChB,CAAC,CAAA;AAEF,gFAAgF;AAChF,uCAAuC;AACvC,gFAAgF;AAEhF;;;qBAGqB;AACrB,SAAS,QAAQ,CAAC,OAAc,EAAE,KAAY;IAC5C,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;IACnF,CAAC;IACD,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;IAC1D,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAA;IACzD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC,IAAI,CACjC,aAAsB,EAAE,WAAoB,CACpB,CAAA;IAC1B,OAAO,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;AAClE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC;IAC3B,IAAI,EAAE,MAAM;IACZ,IAAI,CAAC,OAAc,EAAE,KAAY;QAC/B,OAAO,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACjC,CAAC;IACD,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,MAAM,EAAE;QACN,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,kCAAkC;KAC7B;CAChB,CAAC,CAAA","sourcesContent":["/**\n * api solid-offset — 实体与偏置族(S4 剩余:draftPrism / pipe,平台 op engines:['occt'])\n *\n * @platform occt — 本目录 import occt-kernel:`draftPrism`(拔模棱柱)与 `pipe`\n * (沿脊柱的管)直调 occt 原生(occt-wasm 原生有)。这两个原生方法**不在** L1 契约\n * `BrepEngineApi` 里(L1 只有 `offset` / `sweepPipeShell` 等,见\n * brep/engine/primitives.ts)⇒ 平台 op:defineOp 声明 `engines: ['occt']`(D11)。\n *\n * 方案落点:docs/plans/2026-10-07-occt-wasm-op-enablement-plan.md §3.4.4\n * (该族 5 项中 `offsetWire2d` / `buildSolidFromFaces` / `halfSpace` 已由 S3 落地)。\n * 与既有 op 的边界(§4.5 去重表):\n * - `pipe` vs `sweep`:pipe = `BRepOffsetAPI_MakePipe`(沿脊柱的管,单截面裸管线);\n * sweep = `sweepPipeShell` / `simplePipe`(截面扫掠,带 Frenet/平滑选项);\n * - `draftPrism` vs `extrude`:前者带拔模角(上下截面渐变),后者平行拔出;\n * - `draftPrism` vs `draft`:draft 对已有实体面加拔模斜度;draftPrism 是拔模挤出。\n *\n * 角度约定(实测钉住,见 test/api/occt-s4-solid-offset.test.ts):occt 原生\n * `draftPrism` 的形参名即 `angleDeg`(**度**,facade 内部自行换算弧度)——脚本面\n * 直传度,不做二次换算。\n */\n\nimport type { Shape } from '../../mesh/types'\nimport type { BrepHandle } from '../../brep/engine/types'\nimport { solidToShape } from '../../brep/brep-ops'\nimport { getBrepApi } from '../../brep/handle-bridge'\nimport { brepOf, fromBrep } from '../../shape'\nimport { defineOp } from '../../sdk'\nimport type { Provenance } from '../../topology/naming/lineage'\nimport { getOcctKernel } from '../../occt-kernel/occtKernel'\n\ntype Vec3 = [number, number, number]\n\n/** 输入 Shape → 内核句柄(无 BREP 槁报错)。 */\nfunction handleOf(shape: Shape, op: string, which: string): BrepHandle {\n const h = brepOf(shape) as BrepHandle | undefined\n if (!h) {\n throw new Error(`E_${op.toUpperCase()}_NO_BREP: ${op} requires a BREP handle for ${which} (mesh-only shape has none)`)\n }\n return h\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// draftPrism — 拔模棱柱(带角度挤出)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** BREP 路径:occt 原生 draftPrism(angleDeg 度,原生内部换算弧度)。 */\nfunction draftPrismBrep(base: Shape, direction: Vec3, angleDeg: number): Shape {\n if (!base) {\n throw new Error('E_DRAFTPRISM_NO_BASE: draftPrism requires a planar base (face or wire)')\n }\n if (\n !Array.isArray(direction) ||\n direction.length !== 3 ||\n direction.some((n) => typeof n !== 'number' || !Number.isFinite(n)) ||\n (direction[0] === 0 && direction[1] === 0 && direction[2] === 0)\n ) {\n throw new Error('E_DRAFTPRISM_BAD_DIRECTION: direction must be a non-zero [dx,dy,dz]')\n }\n if (typeof angleDeg !== 'number' || !Number.isFinite(angleDeg)) {\n throw new Error('E_DRAFTPRISM_BAD_ANGLE: angleDeg must be a finite number (degrees)')\n }\n const bh = handleOf(base, 'draftPrism', 'base shape')\n const handle = getOcctKernel().draftPrism(\n bh as never, direction[0], direction[1], direction[2], angleDeg,\n ) as unknown as BrepHandle\n return fromBrep(solidToShape(getBrepApi(), handle), { solid: handle })\n}\n\n/**\n * 拔模棱柱:把平面基底(face 或 wire)沿方向挤出,并施加拔模角(上下截面渐变)。\n * @group 创建\n * @inputs 0\n * @async false\n * @qual ok\n * @name draftPrism\n * @note 平台 op:仅 occt 引擎(原生 draftPrism,形参即 angleDeg——角度单位是**度**,\n * 原生内部换算)。角度为 0 时等价普通挤出。\n * @returns Shape 拔模挤出体。\n * @param base - 平面基底(face 或闭合 wire)。type:Shape required:true\n * @param direction - 挤出方向 [dx,dy,dz](非零;长度即挤出距离)。type:Vec3 required:true\n * @param angleDeg - 拔模角(度)。type:number required:true\n * @example\n * const s = cad.draftPrism(squareFace, [0, 0, 10], 5)\n */\nexport const draftPrism = defineOp({\n name: 'draftPrism',\n paramDims: { direction: 'length', angleDeg: 'angle' },\n brep(base: Shape, direction: Vec3, angleDeg: number) {\n return draftPrismBrep(base, direction, angleDeg)\n },\n engines: ['occt'],\n naming: {\n kind: 'unmodeled',\n reason: 'tapered prism face vocabulary not defined',\n } as Provenance,\n})\n\n// ─────────────────────────────────────────────────────────────────────────────\n// pipe — 沿脊柱的管(BRepOffsetAPI_MakePipe)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** BREP 路径:occt 原生 pipe。脊柱须 wire(原生 TopoDS::Wire 转换);截面原样透传\n * ——**face 截面产实体,wire/edge 截面产壳**(BRepOffsetAPI_MakePipe 语义,\n * 实测钉在 test/api/occt-s4-solid-offset.test.ts A3/A4),故不做面→外环适配\n * (那会把实体口径降级成壳)。 */\nfunction pipeBrep(profile: Shape, spine: Shape): Shape {\n if (!profile || !spine) {\n throw new Error('E_PIPE_MISSING_ARG: pipe requires a profile and a spine (wire)')\n }\n const profileHandle = handleOf(profile, 'pipe', 'profile')\n const spineHandle = handleOf(spine, 'pipe', 'spine wire')\n const kernel = getBrepApi()\n const handle = getOcctKernel().pipe(\n profileHandle as never, spineHandle as never,\n ) as unknown as BrepHandle\n return fromBrep(solidToShape(kernel, handle), { solid: handle })\n}\n\n/**\n * 沿脊柱扫出管:把截面沿脊柱 wire 扫掠(`BRepOffsetAPI_MakePipe` 裸管线;\n * 带过渡/方向控制的扫掠见 `sweep`)。\n *\n * 产物类型随截面类型(实测钉住,test/api/occt-s4-solid-offset.test.ts A3/A4):\n * **截面 face → 实体;截面 wire/edge → 壳(管面,体积无意义)**。要实体管,\n * 喂面截面(如 `cad.profile` 的圆盘轮廓)。\n * @group 创建\n * @inputs 2\n * @async false\n * @qual ok\n * @name pipe\n * @note 平台 op:仅 occt 引擎(原生 pipe,L1 契约无对应成员)。脊柱须为 wire。\n * 非 occt 引擎执行前报错;brep_mock 不拦截。\n * @returns Shape 扫出的管(截面 face → 实体;wire/edge → 壳)。\n * @param profile - 截面(face → 实体;wire/edge → 壳)。\n * type:Shape required:true\n * @param spine - 脊柱 wire。type:Shape required:true\n * @example\n * const tube = cad.pipe(diskFace, spineWire)\n */\nexport const pipe = defineOp({\n name: 'pipe',\n brep(profile: Shape, spine: Shape) {\n return pipeBrep(profile, spine)\n },\n engines: ['occt'],\n naming: {\n kind: 'unmodeled',\n reason: 'pipe face vocabulary not defined',\n } as Provenance,\n})\n"]}
@@ -1,22 +1,23 @@
1
1
  /**
2
2
  * arg-spec — L3 投影签名适配表(E5 唯一人工维护点)
3
3
  *
4
- * 设计文档:docs/plans/2026-09-02-faijs-api-surface-completion.md §E5 / §5.2
5
- *
6
- * 输入:brepjs `src/index.ts`(upstream-surface.json 已按 §2.6 排除)。
7
4
  * 作用:为每个保留符号声明「faijs 面投影方式」。生成器
8
- * `scripts/gen-l3-surface.ts` 读取本表 + surface 清单,产出
9
- * `api/generated/<module>.ts`(E5:不手写 699 个;本表之外符号按默认规则推导)。
5
+ * `packages/core/scripts/gen-l3-surface.ts` 读取本表,按
6
+ * PROJECTED_MODULES 分片产出 `api/generated/<module>.ts`;未列入本表的符号不进生成。
7
+ *
8
+ * 产出类别(生成器按此判别;完整定义见 gen-l3-surface.ts 头部):
9
+ * brep-op : defineOp({ brep: __own_* }) —— Solid 进出,直连 core 自有实现(api/brep-operations/)
10
+ * query : 普通导出函数(getBrepApi().* 直连引擎,返回纯数据,不进 defineOp——先例 api/geom.ts)
11
+ * faijs : re-export 自手写 api/ 模块
12
+ * skip : 仅登记不生成(divergence:语义 faijs 面无法表达 / 已由既有 op 覆盖),带 reason
13
+ * (历史 kind 'type' / 'pure' 已无条目,出现即抛错)
10
14
  *
11
- * 产出类别(对齐 §5.2 / E5 分类表;生成器按本类判别产出):
12
- * brep-op : defineOp({ brep }) —— Solid 进出(构造/变换/布尔/修饰)
13
- * query : 普通导出函数(输入 Shape 借入 brepjs handle → 调 vendored → 返回纯数据;
14
- * 返回非 Shape,不进 defineOp——先例 api/geom.ts,generated/topology.ts getBounds)
15
- * pure : 无 Shape 参数的纯函数 → 直接 re-export(不进 defineOp,不是 op)
16
- * type : `export type { … } from '<vendored>'` re-export
17
- * skip : 登记跳过(divergence:语义 faijs 面无法表达 / 已由 faijs 既有 op 覆盖),带 reason
15
+ * A6(2026-10-06)口径指认:本表 + 生成的 generated/*.ts 是 L3 投影面的
16
+ * **增量**清单;cad 脚本面的**全集**清单权威来源是 generated/script-face.ts
17
+ * (scriptFace: true 条目)与 lang/symbol-table.generated.ts(95 op)。两个清单
18
+ * 回答不同问题、互不为超集——禁止互相反推。
18
19
  *
19
- * 双形态(E2):同名符号由生成器注入 `normalizeArgs` 判别器(faijs 对象形态 ↔ brepjs
20
+ * 双形态(E2):同名符号由生成器注入 `normalizeArgs` 判别器(faijs 对象形态 ↔
20
21
  * 位置形态),适配表给 faijs 形参映射;本文件首批样本聚焦「faijs 无同名」的纯新增符号,
21
22
  * 双形态条目随 §5.1 同名处置逐批加入(P14 分批)。
22
23
  *
@@ -41,7 +42,7 @@ export interface QueryParam {
41
42
  name: string;
42
43
  /** 非几何位的类型(如 `number`);几何位由生成器覆写为 `Shape`。 */
43
44
  type: string;
44
- /** 是否为可选参数(faijs 面签名 `?`),函数缺省值由 vendored 承担。 */
45
+ /** 是否为可选参数(faijs 面签名 `?`),函数缺省值由来源实现承担。 */
45
46
  optional?: boolean;
46
47
  /** JSDoc 补充说明。 */
47
48
  docs?: string;
@@ -50,15 +51,15 @@ export interface QueryParam {
50
51
  * D11 参数双形态分类。
51
52
  *
52
53
  * - A : 单名双形态(位置形态首参非 plain object,判别式有效,如 box/fuse/torus)。
53
- * - B1 : 单名单形态(brepjs options 对象即唯一对象形态,无需拆名,如 thread)。
54
- * - B2 : 双名(brepjs 形态占正名,faijs 对象形态加描述性后缀,如 rotate_euler)。
54
+ * - B1 : 单名单形态(来源 options 对象即唯一对象形态,无需拆名,如 thread)。
55
+ * - B2 : 双名(来源形态占正名,faijs 对象形态加描述性后缀,如 rotate_euler)。
55
56
  */
56
57
  export type FormClass = 'A' | 'B1' | 'B2';
57
58
  /**
58
59
  * 单条投影适配。
59
60
  *
60
- * - `name` faijs 面导出名(= brepjs 符号名;同名冲突已在 §5.1 处置后,寻表登记双形态或改名)。
61
- * - `source` vendored 树内的来源符号,`<相对 vendored 根的模块路径>#<导出名>`(默认同名)。
61
+ * - `name` faijs 面导出名(= 来源符号名;同名冲突已在 §5.1 处置后,寻表登记双形态或改名)。
62
+ * - `source` 来源树内的来源符号,`<相对 api/ 的模块路径>#<导出名>`(默认同名)。
62
63
  * - `kind` 投影类别(见文件头)。
63
64
  * - `module` 分片归属(缺省 'topology',P13 兼容;P14 起逐模块登记)。
64
65
  * - `args` brep-op/query:调用约定描述,供生成器产出 JSDoc 与 normalizeArgs 占位;
@@ -79,20 +80,19 @@ export interface ArgSpecEntry {
79
80
  /**
80
81
  * Machine bridge hints (P13a mechanism sample).
81
82
  * For 'brep-op'/'query': which positional parameters are geometry inputs
82
- * (0-based indices into the brepjs positional-arg list) that the generated
83
- * code must borrow via `borrowBrepjsShape`. Non-listed params pass through
84
- * untouched (numbers / option objects are value params).
83
+ * (0-based indices into the positional-arg list). Non-listed params pass
84
+ * through untouched (numbers / option objects are value params).
85
85
  */
86
86
  geometryArgs?: number[];
87
87
  /**
88
- * P14: 几何数组位(query)——该索引是 Shape 数组形参,逐元素借入 brepjs handle。
88
+ * P14: 几何数组位(query)——该索引是 Shape 数组形参;query 函数体内经 brepOf 逐元素直读内核句柄。
89
89
  */
90
90
  geometryCollectionArgs?: number[];
91
91
  /** For brep-op/query: whether a bool `Result` must be unwrapped (err → throw). Default true for ops/query. */
92
92
  returnsResult?: boolean;
93
93
  /** P14: query 侧 faijs 面形参列表(without the case for pure/type;brep-op 保持位置透传 `...args`)。 */
94
94
  queryParams?: QueryParam[];
95
- /** For query only: the vendored return type name (re-exportable from the entry's module) so the generated function can annotate its return type (the export-JSDoc gate requires an explicit annotation + @returns). */
95
+ /** For query only: the source module's return type name (re-exportable from the entry's module) so the generated function can annotate its return type (the export-JSDoc gate requires an explicit annotation + @returns). */
96
96
  returnType?: string;
97
97
  /** P20: 机器参数名表(按位置顺序),供 dual-form-args resolveArgs 映射对象形态→位置数组。 */
98
98
  params?: string[];
@@ -105,7 +105,7 @@ export interface ArgSpecEntry {
105
105
  capabilities?: BrepCapabilityName[];
106
106
  /**
107
107
  * Phase 5(narrowing plan D11):平台身份声明——该 brep-op 只在列出的引擎上
108
- * 实现(如 vendored op 调 occt-only 方法 isNull/section/loft → ['occt'])。
108
+ * 实现(如 compat op 调 occt-only 方法 isNull/section/loft → ['occt'])。
109
109
  * 缺省 = 全平台中立。可与 capabilities 并存(2026-09-24 撤销 D11-7 互斥):
110
110
  * engines 是引擎白名单,capabilities 是能力依赖,判定 engines 在先(D11-2)。
111
111
  * 生成器透传给 compatOp → defineOp engines,并写进 script-face-manifest。
@@ -127,13 +127,6 @@ export interface ArgSpecEntry {
127
127
  * `import type` from lineage.ts — pure type, no runtime circular dep.
128
128
  */
129
129
  naming?: Provenance;
130
- /**
131
- * Phase 3(core-decouple plan §5.4):core 自有实现标记——source 指向
132
- * pi/brep-mirror/<file>.ts#<fn>(core 第一方实现),生成器走 selfhost 分支
133
- * (defineOp({ brep: __own_<fn>, … }),无 vendored import、无 compatOp/
134
- * projectBrepOp 桥;D11 归一在自有实现内部完成)。
135
- */
136
- selfhost?: boolean;
137
130
  /** Named multi-product outputs(defineOp 的 outputs 选项,分片 op 用)。 */
138
131
  outputs?: string[];
139
132
  /** L3 schema per named parameter(G1 codegen + UI panel)。 */
@@ -148,10 +141,19 @@ export interface ArgSpecEntry {
148
141
  paramDims?: Record<string, import('../../units.js').DimName>;
149
142
  /** P26 (unit-system D8): 返回值量纲声明(函数调用结果携带的量纲)。 */
150
143
  retDim?: import('../../units.js').DimName;
144
+ /**
145
+ * B1:手册直达注解——`scripts/gen-ops-api-inventory.ts` 会把这句话原样渲染成
146
+ * 派生章节里的一条注解。
147
+ *
148
+ * 生成 op 的 JSDoc 由本文件生成(`api/generated/*.ts` 禁手改),`reason` 又只
149
+ * 解释「为什么这样投影」;于是**读者最容易误判的语义**(如 `applyMatrix` 的
150
+ * 矩阵序约定)在手册里无处安放。需要时写这里,别写进生成文件。
151
+ */
152
+ manualNote?: string;
151
153
  }
152
154
  /**
153
- * 首批机制验证样本(P13a)。每个样本都选了 faijs 无同名、brepjs 有完整实现的符号,
154
- * 生成产物可立即 typecheck 并桥接 vendored 跑通(E5 模板:句柄借入 → 调 vendored →
155
+ * 首批机制验证样本(P13a)。每个样本都选了 faijs 无同名、来源有完整实现的符号,
156
+ * 生成产物可立即 typecheck 并桥接来源实现跑通(E5 模板:输入原样直传 → 调来源实现 →
155
157
  * Result 翻转 → fromBrep 所有权转入)。
156
158
  */
157
159
  export declare const ARG_SPEC: ArgSpecEntry[];
@@ -1 +1 @@
1
- {"version":3,"file":"arg-spec.d.ts","sourceRoot":"","sources":["../../../src/api/surface/arg-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,kBAAkB;AAClB,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAErF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAE5E,YAAY,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAE/D,uDAAuD;AAEvD;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kBAAkB;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAA;AAEzC;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,cAAc,CAAA;IACpB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC,8GAA8G;IAC9G,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,yFAAyF;IACzF,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;IAC1B,uNAAuN;IACvN,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACnC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,SAAS,YAAY,EAAE,CAAA;IACjC,iDAAiD;IACjD,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,mCAAmC,EAAE,OAAO,CAAA;IAC7D;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,aAAa,EAAE,OAAO,CAAC,CAAA;IACzD,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,aAAa,EAAE,OAAO,CAAA;CACvC;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,YAAY,EA+zHlC,CAAA"}
1
+ {"version":3,"file":"arg-spec.d.ts","sourceRoot":"","sources":["../../../src/api/surface/arg-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,kBAAkB;AAClB,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAErF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAE5E,YAAY,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAE/D,uDAAuD;AAEvD;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kBAAkB;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAA;AAEzC;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,cAAc,CAAA;IACpB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;IACjC,8GAA8G;IAC9G,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,yFAAyF;IACzF,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;IAC1B,8NAA8N;IAC9N,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACnC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,SAAS,YAAY,EAAE,CAAA;IACjC,iDAAiD;IACjD,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,UAAU,CAAA;IAEnB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,mCAAmC,EAAE,OAAO,CAAA;IAC7D;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,aAAa,EAAE,OAAO,CAAC,CAAA;IACzD,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,aAAa,EAAE,OAAO,CAAA;IACtC;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,YAAY,EA4zHlC,CAAA"}