@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.
- package/NOTICE +6 -5
- package/dist/api/align/index.d.ts +64 -0
- package/dist/api/align/index.d.ts.map +1 -0
- package/dist/api/align/index.js +101 -0
- package/dist/api/align/index.js.map +1 -0
- package/dist/api/api-namespace.d.ts +6 -5
- package/dist/api/api-namespace.d.ts.map +1 -1
- package/dist/api/api-namespace.js +89 -5
- package/dist/api/api-namespace.js.map +1 -1
- package/dist/api/appearance.d.ts +0 -2
- package/dist/api/appearance.d.ts.map +1 -1
- package/dist/api/appearance.js +0 -2
- package/dist/api/appearance.js.map +1 -1
- package/dist/api/assembly/entities.d.ts +1 -1
- package/dist/api/assembly/entities.js +1 -1
- package/dist/api/assembly/entities.js.map +1 -1
- package/dist/api/assembly/index.d.ts +1 -1
- package/dist/api/assembly/index.js +1 -1
- package/dist/api/assembly/index.js.map +1 -1
- package/dist/api/assembly/joints.d.ts +33 -15
- package/dist/api/assembly/joints.d.ts.map +1 -1
- package/dist/api/assembly/joints.js +31 -13
- package/dist/api/assembly/joints.js.map +1 -1
- package/dist/api/assembly/preview.d.ts +1 -1
- package/dist/api/assembly/preview.js +1 -1
- package/dist/api/assembly/preview.js.map +1 -1
- package/dist/api/assembly/solve.d.ts +1 -1
- package/dist/api/assembly/solve.js +1 -1
- package/dist/api/assembly/solve.js.map +1 -1
- package/dist/api/assembly/solvers/assembly-tree.d.ts +1 -1
- package/dist/api/assembly/solvers/assembly-tree.js +1 -1
- package/dist/api/assembly/solvers/assembly-tree.js.map +1 -1
- package/dist/api/assembly/solvers/chain-solver.d.ts +2 -2
- package/dist/api/assembly/solvers/chain-solver.js.map +1 -1
- package/dist/api/assembly/solvers/global-solver.d.ts +1 -2
- package/dist/api/assembly/solvers/global-solver.d.ts.map +1 -1
- package/dist/api/assembly/solvers/global-solver.js +3 -4
- package/dist/api/assembly/solvers/global-solver.js.map +1 -1
- package/dist/api/assembly/solvers/joints-kinematics.js +1 -1
- package/dist/api/assembly/solvers/joints-kinematics.js.map +1 -1
- package/dist/api/assembly/solvers/linalg.d.ts +2 -2
- package/dist/api/assembly/solvers/linalg.js +2 -2
- package/dist/api/assembly/solvers/linalg.js.map +1 -1
- package/dist/api/assembly/solvers/types.d.ts +2 -5
- package/dist/api/assembly/solvers/types.d.ts.map +1 -1
- package/dist/api/assembly/solvers/types.js +1 -4
- package/dist/api/assembly/solvers/types.js.map +1 -1
- package/dist/api/boolean-op/index.d.ts +65 -0
- package/dist/api/boolean-op/index.d.ts.map +1 -0
- package/dist/api/boolean-op/index.js +113 -0
- package/dist/api/boolean-op/index.js.map +1 -0
- package/dist/api/boolean.d.ts.map +1 -1
- package/dist/api/boolean.js +22 -33
- package/dist/api/boolean.js.map +1 -1
- package/dist/api/brep-mirror/booleanFns.d.ts +3 -3
- package/dist/api/brep-mirror/booleanFns.js +5 -5
- package/dist/api/brep-mirror/booleanFns.js.map +1 -1
- package/dist/api/brep-mirror/compoundFns.d.ts +1 -1
- package/dist/api/brep-mirror/compoundFns.js +4 -4
- package/dist/api/brep-mirror/compoundFns.js.map +1 -1
- package/dist/api/brep-mirror/healingFns.d.ts +4 -4
- package/dist/api/brep-mirror/healingFns.js +4 -4
- package/dist/api/brep-mirror/healingFns.js.map +1 -1
- package/dist/api/brep-mirror/hullFns.d.ts +2 -2
- package/dist/api/brep-mirror/hullFns.js +2 -2
- package/dist/api/brep-mirror/hullFns.js.map +1 -1
- package/dist/api/brep-mirror/patternFns.d.ts +5 -5
- package/dist/api/brep-mirror/patternFns.js +10 -10
- package/dist/api/brep-mirror/patternFns.js.map +1 -1
- package/dist/api/brep-mirror/primitiveFns.d.ts +4 -4
- package/dist/api/brep-mirror/primitiveFns.js +4 -4
- package/dist/api/brep-mirror/primitiveFns.js.map +1 -1
- package/dist/api/brep-mirror/roofFns.d.ts +3 -3
- package/dist/api/brep-mirror/roofFns.js +7 -7
- package/dist/api/brep-mirror/roofFns.js.map +1 -1
- package/dist/api/brep-mirror/sweepFns.d.ts +7 -7
- package/dist/api/brep-mirror/sweepFns.js +14 -14
- package/dist/api/brep-mirror/sweepFns.js.map +1 -1
- package/dist/api/brep-mirror/threadFns.d.ts +1 -1
- package/dist/api/brep-mirror/threadFns.js +1 -1
- package/dist/api/brep-mirror/threadFns.js.map +1 -1
- package/dist/api/brep-mirror/topologyFns.d.ts +5 -5
- package/dist/api/brep-mirror/topologyFns.js +8 -8
- package/dist/api/brep-mirror/topologyFns.js.map +1 -1
- package/dist/api/brep-operations/booleanFns.d.ts +40 -0
- package/dist/api/brep-operations/booleanFns.d.ts.map +1 -0
- package/dist/api/brep-operations/booleanFns.js +104 -0
- package/dist/api/brep-operations/booleanFns.js.map +1 -0
- package/dist/api/brep-operations/brepHelpers.d.ts +55 -0
- package/dist/api/brep-operations/brepHelpers.d.ts.map +1 -0
- package/dist/api/brep-operations/brepHelpers.js +131 -0
- package/dist/api/brep-operations/brepHelpers.js.map +1 -0
- package/dist/api/brep-operations/compoundFns.d.ts +46 -0
- package/dist/api/brep-operations/compoundFns.d.ts.map +1 -0
- package/dist/api/brep-operations/compoundFns.js +299 -0
- package/dist/api/brep-operations/compoundFns.js.map +1 -0
- package/dist/api/brep-operations/healingFns.d.ts +91 -0
- package/dist/api/brep-operations/healingFns.d.ts.map +1 -0
- package/dist/api/brep-operations/healingFns.js +321 -0
- package/dist/api/brep-operations/healingFns.js.map +1 -0
- package/dist/api/brep-operations/hullFns.d.ts +20 -0
- package/dist/api/brep-operations/hullFns.d.ts.map +1 -0
- package/dist/api/brep-operations/hullFns.js +46 -0
- package/dist/api/brep-operations/hullFns.js.map +1 -0
- package/dist/api/brep-operations/joinery-brep.d.ts +172 -0
- package/dist/api/brep-operations/joinery-brep.d.ts.map +1 -0
- package/dist/api/brep-operations/joinery-brep.js +463 -0
- package/dist/api/brep-operations/joinery-brep.js.map +1 -0
- package/dist/api/brep-operations/patternFns.d.ts +43 -0
- package/dist/api/brep-operations/patternFns.d.ts.map +1 -0
- package/dist/api/brep-operations/patternFns.js +178 -0
- package/dist/api/brep-operations/patternFns.js.map +1 -0
- package/dist/api/brep-operations/primitiveFns.d.ts +42 -0
- package/dist/api/brep-operations/primitiveFns.d.ts.map +1 -0
- package/dist/api/brep-operations/primitiveFns.js +104 -0
- package/dist/api/brep-operations/primitiveFns.js.map +1 -0
- package/dist/api/brep-operations/roofFns.d.ts +24 -0
- package/dist/api/brep-operations/roofFns.d.ts.map +1 -0
- package/dist/api/brep-operations/roofFns.js +229 -0
- package/dist/api/brep-operations/roofFns.js.map +1 -0
- package/dist/api/brep-operations/straightSkeleton.d.ts +36 -0
- package/dist/api/brep-operations/straightSkeleton.d.ts.map +1 -0
- package/dist/api/brep-operations/straightSkeleton.js +431 -0
- package/dist/api/brep-operations/straightSkeleton.js.map +1 -0
- package/dist/api/brep-operations/sweepFns.d.ts +60 -0
- package/dist/api/brep-operations/sweepFns.d.ts.map +1 -0
- package/dist/api/brep-operations/sweepFns.js +323 -0
- package/dist/api/brep-operations/sweepFns.js.map +1 -0
- package/dist/api/brep-operations/threadFns.d.ts +83 -0
- package/dist/api/brep-operations/threadFns.d.ts.map +1 -0
- package/dist/api/brep-operations/threadFns.js +138 -0
- package/dist/api/brep-operations/threadFns.js.map +1 -0
- package/dist/api/brep-operations/topologyFns.d.ts +111 -0
- package/dist/api/brep-operations/topologyFns.d.ts.map +1 -0
- package/dist/api/brep-operations/topologyFns.js +300 -0
- package/dist/api/brep-operations/topologyFns.js.map +1 -0
- package/dist/api/brep-topology.d.ts +1 -1
- package/dist/api/brep-topology.d.ts.map +1 -1
- package/dist/api/brep-topology.js +1 -1
- package/dist/api/brep-topology.js.map +1 -1
- package/dist/api/brepjs-compat/index.d.ts +1 -1
- package/dist/api/brepjs-compat/index.js +3 -3
- package/dist/api/brepjs-compat/index.js.map +1 -1
- package/dist/api/cadquery-selectors/borrow-bridge.d.ts.map +1 -1
- package/dist/api/cadquery-selectors/borrow-bridge.js +3 -4
- package/dist/api/cadquery-selectors/borrow-bridge.js.map +1 -1
- package/dist/api/chamfer.d.ts +5 -4
- package/dist/api/chamfer.d.ts.map +1 -1
- package/dist/api/chamfer.js +12 -11
- package/dist/api/chamfer.js.map +1 -1
- package/dist/api/curve-sketch/index.d.ts +235 -0
- package/dist/api/curve-sketch/index.d.ts.map +1 -0
- package/dist/api/curve-sketch/index.js +493 -0
- package/dist/api/curve-sketch/index.js.map +1 -0
- package/dist/api/draft.d.ts.map +1 -1
- package/dist/api/draft.js +1 -3
- package/dist/api/draft.js.map +1 -1
- package/dist/api/engrave.d.ts.map +1 -1
- package/dist/api/engrave.js +6 -15
- package/dist/api/engrave.js.map +1 -1
- package/dist/api/export-3mf.d.ts +73 -0
- package/dist/api/export-3mf.d.ts.map +1 -0
- package/dist/api/export-3mf.js +121 -0
- package/dist/api/export-3mf.js.map +1 -0
- package/dist/api/export-brep.d.ts +47 -0
- package/dist/api/export-brep.d.ts.map +1 -0
- package/dist/api/export-brep.js +67 -0
- package/dist/api/export-brep.js.map +1 -0
- package/dist/api/export-step.d.ts +67 -0
- package/dist/api/export-step.d.ts.map +1 -0
- package/dist/api/export-step.js +98 -0
- package/dist/api/export-step.js.map +1 -0
- package/dist/api/export-stl.d.ts +58 -0
- package/dist/api/export-stl.d.ts.map +1 -0
- package/dist/api/export-stl.js +114 -0
- package/dist/api/export-stl.js.map +1 -0
- package/dist/api/extrude.d.ts +8 -11
- package/dist/api/extrude.d.ts.map +1 -1
- package/dist/api/extrude.js +11 -14
- package/dist/api/extrude.js.map +1 -1
- package/dist/api/feature-repair.d.ts +1 -1
- package/dist/api/feature-repair.d.ts.map +1 -1
- package/dist/api/feature-repair.js +1 -7
- package/dist/api/feature-repair.js.map +1 -1
- package/dist/api/fillet-variable.d.ts +2 -2
- package/dist/api/fillet-variable.d.ts.map +1 -1
- package/dist/api/fillet-variable.js +2 -3
- package/dist/api/fillet-variable.js.map +1 -1
- package/dist/api/fillet.d.ts +5 -7
- package/dist/api/fillet.d.ts.map +1 -1
- package/dist/api/fillet.js +5 -8
- package/dist/api/fillet.js.map +1 -1
- package/dist/api/generated/2d.d.ts +4 -0
- package/dist/api/generated/2d.d.ts.map +1 -1
- package/dist/api/generated/2d.js +4 -0
- package/dist/api/generated/2d.js.map +1 -1
- package/dist/api/generated/core.d.ts +4 -0
- package/dist/api/generated/core.d.ts.map +1 -1
- package/dist/api/generated/core.js +4 -0
- package/dist/api/generated/core.js.map +1 -1
- package/dist/api/generated/gear.d.ts +4 -0
- package/dist/api/generated/gear.d.ts.map +1 -1
- package/dist/api/generated/gear.js +4 -0
- package/dist/api/generated/gear.js.map +1 -1
- package/dist/api/generated/io.d.ts +4 -0
- package/dist/api/generated/io.d.ts.map +1 -1
- package/dist/api/generated/io.js +4 -0
- package/dist/api/generated/io.js.map +1 -1
- package/dist/api/generated/kernel.d.ts +4 -0
- package/dist/api/generated/kernel.d.ts.map +1 -1
- package/dist/api/generated/kernel.js +4 -0
- package/dist/api/generated/kernel.js.map +1 -1
- package/dist/api/generated/measurement.d.ts +21 -21
- package/dist/api/generated/measurement.d.ts.map +1 -1
- package/dist/api/generated/measurement.js +25 -21
- package/dist/api/generated/measurement.js.map +1 -1
- package/dist/api/generated/ns.d.ts +4 -0
- package/dist/api/generated/ns.d.ts.map +1 -1
- package/dist/api/generated/ns.js +4 -0
- package/dist/api/generated/ns.js.map +1 -1
- package/dist/api/generated/operations.d.ts +32 -32
- package/dist/api/generated/operations.d.ts.map +1 -1
- package/dist/api/generated/operations.js +58 -54
- package/dist/api/generated/operations.js.map +1 -1
- package/dist/api/generated/projection.d.ts +4 -0
- package/dist/api/generated/projection.d.ts.map +1 -1
- package/dist/api/generated/projection.js +4 -0
- package/dist/api/generated/projection.js.map +1 -1
- package/dist/api/generated/query.d.ts +4 -0
- package/dist/api/generated/query.d.ts.map +1 -1
- package/dist/api/generated/query.js +4 -0
- package/dist/api/generated/query.js.map +1 -1
- package/dist/api/generated/script-face-manifest.d.ts +1 -1
- package/dist/api/generated/script-face-manifest.js +3 -3
- package/dist/api/generated/script-face-manifest.js.map +1 -1
- package/dist/api/generated/script-face.d.ts +1 -1
- package/dist/api/generated/script-face.js +1 -1
- package/dist/api/generated/script-face.js.map +1 -1
- package/dist/api/generated/sketching.d.ts +2 -2
- package/dist/api/generated/sketching.d.ts.map +1 -1
- package/dist/api/generated/sketching.js +8 -4
- package/dist/api/generated/sketching.js.map +1 -1
- package/dist/api/generated/text.d.ts +4 -0
- package/dist/api/generated/text.d.ts.map +1 -1
- package/dist/api/generated/text.js +4 -0
- package/dist/api/generated/text.js.map +1 -1
- package/dist/api/generated/topology.d.ts +45 -45
- package/dist/api/generated/topology.d.ts.map +1 -1
- package/dist/api/generated/topology.js +77 -73
- package/dist/api/generated/topology.js.map +1 -1
- package/dist/api/generated/view.d.ts +4 -0
- package/dist/api/generated/view.d.ts.map +1 -1
- package/dist/api/generated/view.js +4 -0
- package/dist/api/generated/view.js.map +1 -1
- package/dist/api/geom-types/constants.d.ts +11 -0
- package/dist/api/geom-types/constants.d.ts.map +1 -0
- package/dist/api/geom-types/constants.js +11 -0
- package/dist/api/geom-types/constants.js.map +1 -0
- package/dist/api/geom-types/index.d.ts +21 -0
- package/dist/api/geom-types/index.d.ts.map +1 -0
- package/dist/api/geom-types/index.js +22 -0
- package/dist/api/geom-types/index.js.map +1 -0
- package/dist/api/geom-types/planeOps.d.ts +98 -0
- package/dist/api/geom-types/planeOps.d.ts.map +1 -0
- package/dist/api/geom-types/planeOps.js +170 -0
- package/dist/api/geom-types/planeOps.js.map +1 -0
- package/dist/api/geom-types/planeTypes.d.ts +24 -0
- package/dist/api/geom-types/planeTypes.d.ts.map +1 -0
- package/dist/api/geom-types/planeTypes.js +8 -0
- package/dist/api/geom-types/planeTypes.js.map +1 -0
- package/dist/api/geom-types/types.d.ts +64 -0
- package/dist/api/geom-types/types.d.ts.map +1 -0
- package/dist/api/geom-types/types.js +48 -0
- package/dist/api/geom-types/types.js.map +1 -0
- package/dist/api/geom-types/vecOps.d.ts +124 -0
- package/dist/api/geom-types/vecOps.d.ts.map +1 -0
- package/dist/api/geom-types/vecOps.js +202 -0
- package/dist/api/geom-types/vecOps.js.map +1 -0
- package/dist/api/geom.d.ts.map +1 -1
- package/dist/api/geom.js +6 -5
- package/dist/api/geom.js.map +1 -1
- package/dist/api/half-space.d.ts +56 -0
- package/dist/api/half-space.d.ts.map +1 -0
- package/dist/api/half-space.js +82 -0
- package/dist/api/half-space.js.map +1 -0
- package/dist/api/helix.d.ts +11 -2
- package/dist/api/helix.d.ts.map +1 -1
- package/dist/api/helix.js +20 -4
- package/dist/api/helix.js.map +1 -1
- package/dist/api/index.d.ts +19 -7
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +44 -11
- package/dist/api/index.js.map +1 -1
- package/dist/api/internal/compat-op.d.ts +10 -36
- package/dist/api/internal/compat-op.d.ts.map +1 -1
- package/dist/api/internal/compat-op.js +17 -51
- package/dist/api/internal/compat-op.js.map +1 -1
- package/dist/api/internal/compat-projection.d.ts +5 -5
- package/dist/api/internal/compat-projection.js +5 -5
- package/dist/api/internal/compat-projection.js.map +1 -1
- package/dist/api/internal/dual-form-args.d.ts +0 -2
- package/dist/api/internal/dual-form-args.d.ts.map +1 -1
- package/dist/api/internal/dual-form-args.js +1 -3
- package/dist/api/internal/dual-form-args.js.map +1 -1
- package/dist/api/internal/export-members.d.ts +80 -0
- package/dist/api/internal/export-members.d.ts.map +1 -0
- package/dist/api/internal/export-members.js +104 -0
- package/dist/api/internal/export-members.js.map +1 -0
- package/dist/api/internal/l3-bridge.d.ts +22 -37
- package/dist/api/internal/l3-bridge.d.ts.map +1 -1
- package/dist/api/internal/l3-bridge.js +30 -77
- package/dist/api/internal/l3-bridge.js.map +1 -1
- package/dist/api/internal/profile-wire.d.ts +1 -1
- package/dist/api/internal/profile-wire.js +1 -1
- package/dist/api/internal/profile-wire.js.map +1 -1
- package/dist/api/internal/result-unwrap.d.ts +4 -6
- package/dist/api/internal/result-unwrap.d.ts.map +1 -1
- package/dist/api/internal/result-unwrap.js +4 -6
- package/dist/api/internal/result-unwrap.js.map +1 -1
- package/dist/api/knurl.d.ts.map +1 -1
- package/dist/api/knurl.js +5 -3
- package/dist/api/knurl.js.map +1 -1
- package/dist/api/loft.d.ts +2 -2
- package/dist/api/loft.d.ts.map +1 -1
- package/dist/api/loft.js +2 -2
- package/dist/api/loft.js.map +1 -1
- package/dist/api/measure-query/index.d.ts +262 -0
- package/dist/api/measure-query/index.d.ts.map +1 -0
- package/dist/api/measure-query/index.js +390 -0
- package/dist/api/measure-query/index.js.map +1 -0
- package/dist/api/measurement/index.d.ts +3 -3
- package/dist/api/measurement/index.js +3 -3
- package/dist/api/measurement/index.js.map +1 -1
- package/dist/api/meta.d.ts +0 -2
- package/dist/api/meta.d.ts.map +1 -1
- package/dist/api/meta.js +0 -2
- package/dist/api/meta.js.map +1 -1
- package/dist/api/offset2d.d.ts +49 -0
- package/dist/api/offset2d.d.ts.map +1 -0
- package/dist/api/offset2d.js +86 -0
- package/dist/api/offset2d.js.map +1 -0
- package/dist/api/pattern.d.ts.map +1 -1
- package/dist/api/pattern.js +3 -6
- package/dist/api/pattern.js.map +1 -1
- package/dist/api/primitives.d.ts +6 -6
- package/dist/api/primitives.d.ts.map +1 -1
- package/dist/api/primitives.js +19 -17
- package/dist/api/primitives.js.map +1 -1
- package/dist/api/profile.d.ts.map +1 -1
- package/dist/api/profile.js +0 -1
- package/dist/api/profile.js.map +1 -1
- package/dist/api/punch-hole.d.ts.map +1 -1
- package/dist/api/punch-hole.js +0 -1
- package/dist/api/punch-hole.js.map +1 -1
- package/dist/api/replicate.d.ts +6 -8
- package/dist/api/replicate.d.ts.map +1 -1
- package/dist/api/replicate.js +27 -65
- package/dist/api/replicate.js.map +1 -1
- package/dist/api/result.d.ts +1 -1
- package/dist/api/result.js +1 -1
- package/dist/api/result.js.map +1 -1
- package/dist/api/revolve.d.ts +2 -2
- package/dist/api/revolve.js +3 -3
- package/dist/api/revolve.js.map +1 -1
- package/dist/api/screw.d.ts +1 -1
- package/dist/api/screw.d.ts.map +1 -1
- package/dist/api/screw.js +5 -4
- package/dist/api/screw.js.map +1 -1
- package/dist/api/sdf.d.ts.map +1 -1
- package/dist/api/sdf.js +3 -2
- package/dist/api/sdf.js.map +1 -1
- package/dist/api/section-by-plane.d.ts.map +1 -1
- package/dist/api/section-by-plane.js +0 -1
- package/dist/api/section-by-plane.js.map +1 -1
- package/dist/api/shape-type/index.d.ts +141 -0
- package/dist/api/shape-type/index.d.ts.map +1 -0
- package/dist/api/shape-type/index.js +182 -0
- package/dist/api/shape-type/index.js.map +1 -0
- package/dist/api/shell.d.ts +2 -2
- package/dist/api/shell.d.ts.map +1 -1
- package/dist/api/shell.js +12 -3
- package/dist/api/shell.js.map +1 -1
- package/dist/api/sketch-on-face.d.ts +3 -3
- package/dist/api/sketch-on-face.d.ts.map +1 -1
- package/dist/api/sketch-on-face.js +6 -4
- package/dist/api/sketch-on-face.js.map +1 -1
- package/dist/api/sketch-on-plane.d.ts.map +1 -1
- package/dist/api/sketch-on-plane.js +0 -1
- package/dist/api/sketch-on-plane.js.map +1 -1
- package/dist/api/solid-from-faces.d.ts +45 -0
- package/dist/api/solid-from-faces.d.ts.map +1 -0
- package/dist/api/solid-from-faces.js +72 -0
- package/dist/api/solid-from-faces.js.map +1 -0
- package/dist/api/solid-offset/index.d.ts +67 -0
- package/dist/api/solid-offset/index.d.ts.map +1 -0
- package/dist/api/solid-offset/index.js +132 -0
- package/dist/api/solid-offset/index.js.map +1 -0
- package/dist/api/split-by-plane.d.ts.map +1 -1
- package/dist/api/split-by-plane.js +0 -1
- package/dist/api/split-by-plane.js.map +1 -1
- package/dist/api/split.d.ts +1 -1
- package/dist/api/split.js +1 -1
- package/dist/api/split.js.map +1 -1
- package/dist/api/surface/arg-spec.d.ts +37 -44
- package/dist/api/surface/arg-spec.d.ts.map +1 -1
- package/dist/api/surface/arg-spec.js +224 -233
- package/dist/api/surface/arg-spec.js.map +1 -1
- package/dist/api/surface-face/index.d.ts +104 -0
- package/dist/api/surface-face/index.d.ts.map +1 -0
- package/dist/api/surface-face/index.js +217 -0
- package/dist/api/surface-face/index.js.map +1 -0
- package/dist/api/surface.d.ts +44 -0
- package/dist/api/surface.d.ts.map +1 -0
- package/dist/api/surface.js +66 -0
- package/dist/api/surface.js.map +1 -0
- package/dist/api/sweep.d.ts +71 -9
- package/dist/api/sweep.d.ts.map +1 -1
- package/dist/api/sweep.js +13 -6
- package/dist/api/sweep.js.map +1 -1
- package/dist/api/thicken.d.ts +1 -1
- package/dist/api/thicken.d.ts.map +1 -1
- package/dist/api/thicken.js +12 -3
- package/dist/api/thicken.js.map +1 -1
- package/dist/api/transform.d.ts +8 -8
- package/dist/api/transform.d.ts.map +1 -1
- package/dist/api/transform.js +58 -27
- package/dist/api/transform.js.map +1 -1
- package/dist/api/view/cameraFns.d.ts +1 -1
- package/dist/api/view/cameraFns.d.ts.map +1 -1
- package/dist/api/view/cameraFns.js +1 -1
- package/dist/api/view/cameraFns.js.map +1 -1
- package/dist/api/view/index.d.ts +0 -2
- package/dist/api/view/index.d.ts.map +1 -1
- package/dist/api/view/index.js +0 -2
- package/dist/api/view/index.js.map +1 -1
- package/dist/api/view/projectionPlanes.d.ts +1 -1
- package/dist/api/view/projectionPlanes.d.ts.map +1 -1
- package/dist/api/view/projectionPlanes.js.map +1 -1
- package/dist/api/view/view-camera.d.ts +7 -9
- package/dist/api/view/view-camera.d.ts.map +1 -1
- package/dist/api/view/view-camera.js +4 -6
- package/dist/api/view/view-camera.js.map +1 -1
- package/dist/api/view/view-projection.d.ts +0 -2
- package/dist/api/view/view-projection.d.ts.map +1 -1
- package/dist/api/view/view-projection.js +0 -2
- package/dist/api/view/view-projection.js.map +1 -1
- package/dist/api/view/view-sheet.d.ts +0 -2
- package/dist/api/view/view-sheet.d.ts.map +1 -1
- package/dist/api/view/view-sheet.js +0 -2
- package/dist/api/view/view-sheet.js.map +1 -1
- package/dist/api/view-export/index.d.ts +97 -0
- package/dist/api/view-export/index.d.ts.map +1 -0
- package/dist/api/view-export/index.js +118 -0
- package/dist/api/view-export/index.js.map +1 -0
- package/dist/boolean/index.d.ts +23 -0
- package/dist/boolean/index.d.ts.map +1 -0
- package/dist/boolean/index.js +27 -0
- package/dist/boolean/index.js.map +1 -0
- package/dist/brep/brep-chain.d.ts +1 -19
- package/dist/brep/brep-chain.d.ts.map +1 -1
- package/dist/brep/brep-chain.js +0 -1
- package/dist/brep/brep-chain.js.map +1 -1
- package/dist/brep/brep-ops.d.ts +93 -2
- package/dist/brep/brep-ops.d.ts.map +1 -1
- package/dist/brep/brep-ops.js +185 -15
- package/dist/brep/brep-ops.js.map +1 -1
- package/dist/brep/brep-topology.d.ts +20 -0
- package/dist/brep/brep-topology.d.ts.map +1 -1
- package/dist/brep/brep-topology.js +46 -0
- package/dist/brep/brep-topology.js.map +1 -1
- package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
- package/dist/brep/engine/adapters/brep-mock.js +0 -3
- package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
- package/dist/brep/engine/adapters/brepkit.d.ts +4 -3
- package/dist/brep/engine/adapters/brepkit.d.ts.map +1 -1
- package/dist/brep/engine/adapters/brepkit.js +4 -98
- package/dist/brep/engine/adapters/brepkit.js.map +1 -1
- package/dist/brep/engine/adapters/occt.d.ts +1 -1
- package/dist/brep/engine/adapters/occt.d.ts.map +1 -1
- package/dist/brep/engine/adapters/occt.js +4 -148
- package/dist/brep/engine/adapters/occt.js.map +1 -1
- package/dist/brep/engine/native-history.d.ts +27 -0
- package/dist/brep/engine/native-history.d.ts.map +1 -0
- package/dist/brep/engine/native-history.js +54 -0
- package/dist/brep/engine/native-history.js.map +1 -0
- package/dist/brep/engine/primitives.d.ts +2 -3
- package/dist/brep/engine/primitives.d.ts.map +1 -1
- package/dist/brep/engine/primitives.js +1 -2
- package/dist/brep/engine/primitives.js.map +1 -1
- package/dist/brep/engine/registry.d.ts +3 -5
- package/dist/brep/engine/registry.d.ts.map +1 -1
- package/dist/brep/engine/registry.js +2 -2
- package/dist/brep/engine/registry.js.map +1 -1
- package/dist/brep/engine/types.d.ts +35 -77
- package/dist/brep/engine/types.d.ts.map +1 -1
- package/dist/brep/engine/types.js.map +1 -1
- package/dist/brep/export/export-model.d.ts +21 -0
- package/dist/brep/export/export-model.d.ts.map +1 -1
- package/dist/brep/export/export-model.js +171 -73
- package/dist/brep/export/export-model.js.map +1 -1
- package/dist/brep/export/step.d.ts +17 -1
- package/dist/brep/export/step.d.ts.map +1 -1
- package/dist/brep/export/step.js +133 -0
- package/dist/brep/export/step.js.map +1 -1
- package/dist/brep/export/stl.d.ts +22 -1
- package/dist/brep/export/stl.d.ts.map +1 -1
- package/dist/brep/export/stl.js +58 -10
- package/dist/brep/export/stl.js.map +1 -1
- package/dist/brep/export/transform12.d.ts +47 -0
- package/dist/brep/export/transform12.d.ts.map +1 -0
- package/dist/brep/export/transform12.js +87 -0
- package/dist/brep/export/transform12.js.map +1 -0
- package/dist/brep/face-evolution.d.ts +53 -0
- package/dist/brep/face-evolution.d.ts.map +1 -1
- package/dist/brep/face-evolution.js +65 -0
- package/dist/brep/face-evolution.js.map +1 -1
- package/dist/brep/handle-bridge.d.ts +2 -2
- package/dist/brep/handle-bridge.js +2 -2
- package/dist/brep/handle-bridge.js.map +1 -1
- package/dist/brep/index.d.ts +6 -3
- package/dist/brep/index.d.ts.map +1 -1
- package/dist/brep/index.js +6 -3
- package/dist/brep/index.js.map +1 -1
- package/dist/brepkit-kernel/brepkitKernel.d.ts +1 -1
- package/dist/brepkit-kernel/brepkitKernel.js +2 -2
- package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
- package/dist/browser-host/index.d.ts +4 -1
- package/dist/browser-host/index.d.ts.map +1 -1
- package/dist/browser-host/index.js +7 -1
- package/dist/browser-host/index.js.map +1 -1
- package/dist/browser.d.ts +5 -9
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +5 -26
- package/dist/browser.js.map +1 -1
- package/dist/cad-runtime/admit-compat-lib.d.ts +3 -10
- package/dist/cad-runtime/admit-compat-lib.d.ts.map +1 -1
- package/dist/cad-runtime/admit-compat-lib.js +3 -9
- package/dist/cad-runtime/admit-compat-lib.js.map +1 -1
- package/dist/cad-runtime/backend-dispatch.d.ts +13 -58
- package/dist/cad-runtime/backend-dispatch.d.ts.map +1 -1
- package/dist/cad-runtime/backend-dispatch.js +34 -83
- package/dist/cad-runtime/backend-dispatch.js.map +1 -1
- package/dist/cad-runtime/content-key.d.ts +3 -3
- package/dist/cad-runtime/content-key.js +3 -3
- package/dist/cad-runtime/content-key.js.map +1 -1
- package/dist/cad-runtime/direct-executor.d.ts +6 -3
- package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
- package/dist/cad-runtime/direct-executor.js +31 -9
- package/dist/cad-runtime/direct-executor.js.map +1 -1
- package/dist/cad-runtime/interp/env.d.ts +1 -1
- package/dist/cad-runtime/interp/env.js.map +1 -1
- package/dist/cad-runtime/lib-id.d.ts +0 -2
- package/dist/cad-runtime/lib-id.d.ts.map +1 -1
- package/dist/cad-runtime/lib-id.js +0 -2
- package/dist/cad-runtime/lib-id.js.map +1 -1
- package/dist/cad-runtime/live-shapes.d.ts +3 -5
- package/dist/cad-runtime/live-shapes.d.ts.map +1 -1
- package/dist/cad-runtime/live-shapes.js +8 -10
- package/dist/cad-runtime/live-shapes.js.map +1 -1
- package/dist/cad-runtime/ports.d.ts +31 -3
- package/dist/cad-runtime/ports.d.ts.map +1 -1
- package/dist/cad-runtime/ports.js.map +1 -1
- package/dist/cad-runtime/runtime.d.ts +54 -19
- package/dist/cad-runtime/runtime.d.ts.map +1 -1
- package/dist/cad-runtime/runtime.js +89 -54
- package/dist/cad-runtime/runtime.js.map +1 -1
- package/dist/define-op.d.ts +10 -14
- package/dist/define-op.d.ts.map +1 -1
- package/dist/define-op.js +5 -22
- package/dist/define-op.js.map +1 -1
- package/dist/env-agnostic.d.ts +2 -2
- package/dist/env-agnostic.d.ts.map +1 -1
- package/dist/env-agnostic.js +1 -1
- package/dist/env-agnostic.js.map +1 -1
- package/dist/geometry2d/bridge/plane.d.ts +1 -1
- package/dist/geometry2d/bridge/plane.js +1 -1
- package/dist/geometry2d/bridge/plane.js.map +1 -1
- package/dist/geometry2d/curve2d.d.ts +1 -1
- package/dist/geometry2d/curve2d.js +1 -1
- package/dist/geometry2d/curve2d.js.map +1 -1
- package/dist/index.d.ts +14 -65
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -70
- package/dist/index.js.map +1 -1
- package/dist/io/fai-zip/container-read.d.ts +16 -0
- package/dist/io/fai-zip/container-read.d.ts.map +1 -1
- package/dist/io/fai-zip/container-read.js +22 -0
- package/dist/io/fai-zip/container-read.js.map +1 -1
- package/dist/io/fai-zip/index.d.ts +1 -1
- package/dist/io/fai-zip/index.d.ts.map +1 -1
- package/dist/io/fai-zip/index.js +1 -1
- package/dist/io/fai-zip/index.js.map +1 -1
- package/dist/lang/code-to-args.d.ts.map +1 -1
- package/dist/lang/code-to-args.js +10 -1
- package/dist/lang/code-to-args.js.map +1 -1
- package/dist/lang/determinism-scanner.d.ts.map +1 -1
- package/dist/lang/determinism-scanner.js +22 -9
- package/dist/lang/determinism-scanner.js.map +1 -1
- package/dist/lang/metadata-extractor.d.ts +27 -6
- package/dist/lang/metadata-extractor.d.ts.map +1 -1
- package/dist/lang/metadata-extractor.js +88 -8
- package/dist/lang/metadata-extractor.js.map +1 -1
- package/dist/lang/parse-error.d.ts +4 -0
- package/dist/lang/parse-error.d.ts.map +1 -1
- package/dist/lang/parse-error.js.map +1 -1
- package/dist/lang/security-scanner.d.ts +27 -2
- package/dist/lang/security-scanner.d.ts.map +1 -1
- package/dist/lang/security-scanner.js +29 -2
- package/dist/lang/security-scanner.js.map +1 -1
- package/dist/lang/source-edit.d.ts +2 -2
- package/dist/lang/source-edit.js.map +1 -1
- package/dist/lang/symbol-table.generated.d.ts +53 -0
- package/dist/lang/symbol-table.generated.d.ts.map +1 -1
- package/dist/lang/symbol-table.generated.js +53 -0
- package/dist/lang/symbol-table.generated.js.map +1 -1
- package/dist/mesh/import-model.d.ts +94 -0
- package/dist/mesh/import-model.d.ts.map +1 -0
- package/dist/mesh/import-model.js +15 -0
- package/dist/mesh/import-model.js.map +1 -0
- package/dist/mesh/index.d.ts +19 -63
- package/dist/mesh/index.d.ts.map +1 -1
- package/dist/mesh/index.js +19 -72
- package/dist/mesh/index.js.map +1 -1
- package/dist/mesh/io.d.ts +62 -17
- package/dist/mesh/io.d.ts.map +1 -1
- package/dist/mesh/io.js +210 -41
- package/dist/mesh/io.js.map +1 -1
- package/dist/mesh/primitives.js +1 -1
- package/dist/mesh/primitives.js.map +1 -1
- package/dist/mesh/threemf-bambu.d.ts +12 -1
- package/dist/mesh/threemf-bambu.d.ts.map +1 -1
- package/dist/mesh/threemf-bambu.js +68 -16
- package/dist/mesh/threemf-bambu.js.map +1 -1
- package/dist/mesh/threemf-loader.d.ts +52 -5
- package/dist/mesh/threemf-loader.d.ts.map +1 -1
- package/dist/mesh/threemf-loader.js +139 -41
- package/dist/mesh/threemf-loader.js.map +1 -1
- package/dist/mesh/transform.d.ts +1 -1
- package/dist/mesh/transform.js +1 -1
- package/dist/mesh/transform.js.map +1 -1
- package/dist/mesh/types.d.ts +35 -5
- package/dist/mesh/types.d.ts.map +1 -1
- package/dist/mesh/types.js.map +1 -1
- package/dist/node-host/cli.d.ts +49 -1
- package/dist/node-host/cli.d.ts.map +1 -1
- package/dist/node-host/cli.js +125 -19
- package/dist/node-host/cli.js.map +1 -1
- package/dist/node-host/execute-script.d.ts +56 -0
- package/dist/node-host/execute-script.d.ts.map +1 -0
- package/dist/node-host/execute-script.js +47 -0
- package/dist/node-host/execute-script.js.map +1 -0
- package/dist/node-host/index.d.ts +1 -0
- package/dist/node-host/index.d.ts.map +1 -1
- package/dist/node-host/index.js +4 -0
- package/dist/node-host/index.js.map +1 -1
- package/dist/node.d.ts +2 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +3 -0
- package/dist/node.js.map +1 -1
- package/dist/occt-kernel/generated/occtPlatform.generated.d.ts +260 -0
- package/dist/occt-kernel/generated/occtPlatform.generated.d.ts.map +1 -0
- package/dist/occt-kernel/generated/occtPlatform.generated.js +875 -0
- package/dist/occt-kernel/generated/occtPlatform.generated.js.map +1 -0
- package/dist/occt-kernel/hullGeometry.d.ts +2 -2
- package/dist/occt-kernel/hullGeometry.js +2 -3
- package/dist/occt-kernel/hullGeometry.js.map +1 -1
- package/dist/occt-kernel/hullOps.d.ts +3 -3
- package/dist/occt-kernel/hullOps.js +4 -4
- package/dist/occt-kernel/hullOps.js.map +1 -1
- package/dist/occt-kernel/occt-primitives.d.ts.map +1 -1
- package/dist/occt-kernel/occt-primitives.js +31 -4
- package/dist/occt-kernel/occt-primitives.js.map +1 -1
- package/dist/occt-kernel/occtKernel.d.ts.map +1 -1
- package/dist/occt-kernel/occtKernel.js +18 -0
- package/dist/occt-kernel/occtKernel.js.map +1 -1
- package/dist/occt-scan/recognize.d.ts +58 -0
- package/dist/occt-scan/recognize.d.ts.map +1 -0
- package/dist/occt-scan/recognize.js +216 -0
- package/dist/occt-scan/recognize.js.map +1 -0
- package/dist/primitives/brep-primitives.js +7 -7
- package/dist/primitives/brep-primitives.js.map +1 -1
- package/dist/primitives/index.d.ts +19 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +21 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/result/bug.d.ts +1 -1
- package/dist/result/bug.js +1 -1
- package/dist/result/bug.js.map +1 -1
- package/dist/result/errors.d.ts +2 -2
- package/dist/result/errors.d.ts.map +1 -1
- package/dist/result/errors.js +1 -1
- package/dist/result/errors.js.map +1 -1
- package/dist/result/vec3.d.ts +1 -1
- package/dist/result/vec3.js +1 -1
- package/dist/result/vec3.js.map +1 -1
- package/dist/runtime-state.d.ts +79 -29
- package/dist/runtime-state.d.ts.map +1 -1
- package/dist/runtime-state.js +84 -0
- package/dist/runtime-state.js.map +1 -1
- package/dist/script-globals.d.ts +24 -0
- package/dist/script-globals.d.ts.map +1 -0
- package/dist/script-globals.js +24 -0
- package/dist/script-globals.js.map +1 -0
- package/dist/sdf/index.d.ts +12 -0
- package/dist/sdf/index.d.ts.map +1 -0
- package/dist/sdf/index.js +13 -0
- package/dist/sdf/index.js.map +1 -0
- package/dist/sdk.d.ts +0 -1
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js.map +1 -1
- package/dist/shape.d.ts +24 -0
- package/dist/shape.d.ts.map +1 -1
- package/dist/shape.js +40 -0
- package/dist/shape.js.map +1 -1
- package/dist/topology/naming/lineage.d.ts +3 -2
- package/dist/topology/naming/lineage.d.ts.map +1 -1
- package/dist/topology/naming/lineage.js.map +1 -1
- package/dist/weapp.d.ts +3 -3
- package/dist/weapp.d.ts.map +1 -1
- package/dist/weapp.js +2 -2
- package/dist/weapp.js.map +1 -1
- package/package.json +283 -44
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"l3-bridge.js","sourceRoot":"","sources":["../../../src/api/internal/l3-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AA+BzC,MAAM,MAAM,GAAG,GAAS,EAAE,GAAE,CAAC,CAAA;AAE7B,uEAAuE;AACvE,SAAS,kBAAkB,CAAC,IAAY,EAAE,EAAU;IAClD,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,IAAI;QACJ,EAAE;QACF,MAAM,EAAE,MAAM;QACd,QAAQ,CAAC,UAAkB;YACzB,OAAO,EAAE,GAAG,UAAU,CAAA;QACxB,CAAC;QACD,MAAM;YACJ,OAAO,KAAK,CAAA;QACd,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAK,KAA4B,CAAC,UAAU,KAAK,IAAI,CAAA;AACzG,CAAC;AAED,6EAA6E;AAC7E,SAAS,oBAAoB,CAAC,OAAgB;IAC5C,OAAO;QACL,IAAI,OAAO;YACT,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,IAAI,QAAQ;YACV,OAAO,KAAK,CAAA;QACd,CAAC;QACD,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM;QACxB,MAAM,EAAE,MAAM;QACd,6EAA6E;QAC7E,6EAA6E;QAC7E,SAAS,EAAE,MAAM;KAClB,CAAA;AACH,CAAC;AAED,uDAAuD;AACvD,SAAS,qBAAqB,CAAC,UAAkB;IAC/C,uEAAuE;AACzE,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAQ;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAA2B,CAAA;IACjD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,8EAA8E;YAC5E,+CAA+C,CAClD,CAAA;IACH,CAAC;IACD,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC;QACzC,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,KAAc,CAAC,EAAE,KAAe,CAAC,CAAA;IAC/E,OAAO,oBAAoB,CAAC,WAAW,CAAC,CAAA;AAC1C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB,EAAE,QAAiB;IACpE,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAA;IACrG,CAAC;IACD,uEAAuE;IACvE,qEAAqE;IACrE,MAAM,UAAU,GAAI,OAAgC,CAAC,OAAO,CAAA;IAC5D,MAAM,KAAK,GACT,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,IAAI,IAAI,IAAI,UAAU;QACzE,CAAC,CAAE,UAA6B,CAAC,EAAE;QACnC,CAAC,CAAE,UAAqB,CAAA;IAC5B,MAAM,OAAO,GAAG,KAAmB,CAAA;IACnC,OAAO,UAAU,CAAC,OAAO,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;AAC/E,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAuC,EAAK,EAAE,IAAe;IACrF,OAAO,EAAE,CAAC,GAAI,IAAgB,CAAkB,CAAA;AAClD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,OAA0B;IACxE,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAA;IACjD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,CAAC;QACrF,MAAM,CAAC,GAAG,IAAI,KAAK,CACjB,2BAA2B,MAAM,qBAAqB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,OAAO,IAAI,QAAQ,GAAG,CAC9G,CAAA;QACD,CAAC,CAAC,IAAI,GAAG,sBAAsB,CAAA;QAC/B,MAAM,CAAC,CAAA;IACT,CAAC;AACH,CAAC;AAED,gFAAgF;AAEhF;6EAC6E;AAC7E,MAAM,UAAU,GAAG,IAAI,OAAO,EAAiB,CAAA;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,WAAW,CAAC,OAAgB,EAAE,MAAc,EAAE,QAAiB;IAC7E,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC;QAAE,OAAO,OAAO,CAAA;IAC9F,MAAM,CAAC,GAAG,OAA8B,CAAA;IACxC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAW,CAAC,CAAA;IACxC,IAAI,IAAI;QAAE,OAAO,IAAI,CAAA;IACrB,MAAM,IAAI,GAAI,CAAC,CAAC,OAA6B,CAAC,IAAI,CAAA;IAClD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QAClE,MAAM,IAAI,OAAO,CACf,MAAM,EACN,qBAAqB,EACrB,yBAAyB,MAAM,6CAA6C,IAAI,KAAK;YACnF,yEAAyE,CAC5E,CAAA;IACH,CAAC;IACD,qBAAqB,CAAC,CAAW,CAAC,CAAA,CAAC,mCAAmC;IACtE,MAAM,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA,CAAC,mDAAmD;IAC7F,UAAU,CAAC,GAAG,CAAC,CAAW,EAAE,CAAC,CAAC,CAAA;IAC9B,OAAO,CAAC,CAAA;AACV,CAAC","sourcesContent":["/**\n * L3 bridge — faijs Shape ⇄ 库侧 brepjs-shaped shape(生成层共用,E5 模板)\n *\n * 设计文档:docs/plans/2026-09-02-faijs-api-surface-completion.md §E5\n *\n * 桥接事实(2026-09-02 实测,2026-09-25 core-decouple wrapup 自有化):\n * - faijs 的 brep slot(`brepOf(shape)` → `slot.solid`)运行时是 occt-wasm 的\n * shape 句柄(number,见 `brep/engine/types.ts` 的 `BrepHandle` 注释);\n * - 库侧(compatOp 投影的 brepjs-shaped 函数)消费的 ShapeHandle 是对象视图\n * (`{ wrapped, disposed, delete, onDispose }`),其 `wrapped` 运行时也是\n * 同一 occt-wasm 实例的 shape 句柄 —— D10 单实例保证两者共享同一 wasm,\n * 句柄空间一致,**零拷贝互操作**。brepjs 子包删除后(裁决 9),本文件\n * 自带最小实现:borrow 视图 / 句柄类型视图 / disposal 解除(no-op)。\n *\n * 因此投影一个库函数只需三件事:\n * 1. faijs Shape → 库输入:`createBorrowedHandle(brepOf(s))`(借入,不转移所有权);\n * 2. 调库函数(Result 语义由各 op 处理:`ok` 取值 / `err` 抛错);\n * 3. 库产物 → faijs Shape:取 `.wrapped`(owned handle)→ `fromHandle()`\n * (meshHandle + 身份槽登记,所有权转入 faijs)。\n *\n * 依赖约束(同 `brep/handle-bridge.ts`):只允许 import runtime-state / shape /\n * handle-bridge / occt-kernel 的类型与工具,保持 dist/sdk.js 零 heavy 依赖\n * (occt-kernel 的 getOcctKernel 为惰性访问,引擎装配前不触碰 wasm)。\n */\n\nimport type { Shape } from '../../mesh/types'\nimport { brepOf } from '../../shape'\nimport { fromHandle, getBrepApi } from '../../brep/handle-bridge'\nimport type { BrepHandle } from '../../brep/engine/types'\nimport { getBackends } from '../../runtime-state'\nimport { OpError } from './result-unwrap'\n\n// ── brepjs 借用面最小自有化(core-decouple wrapup §4.3)──────────────────────\n// 原实现:@faicad/faijs-brepjs/core/disposal.js(createBorrowedHandle /\n// unregisterFromCleanup / ShapeHandle)与 kernel/occtWasm/helpers.js\n// (handle / isOcctWasmHandle)。brepjs 子包删除后按同语义内联。\n\n/** 库侧消费的 shape 句柄视图(borrowed:不拥有、不释放)。 */\nexport interface BorrowedShapeHandle {\n /** The raw kernel shape handle */\n readonly wrapped: unknown\n /** Manual dispose(borrowed 视图为 no-op) */\n [Symbol.dispose](): void\n /** Alias for Symbol.dispose */\n delete(): void\n /** Always false for a borrowed view */\n readonly disposed: boolean\n /** Borrowed views never dispose, so callbacks never fire(no-op)。 */\n onDispose(callback: () => void): void\n}\n\n/** occt-wasm 句柄对象视图(type + id,delete no-op)。 */\nexport interface OcctWasmHandleView {\n __occtWasm: true\n type: string\n id: number\n delete(): void\n HashCode(upperBound: number): number\n IsNull(): boolean\n}\n\nconst noopFn = (): void => {}\n\n/** Build an opaque kernel handle for an arena-allocated WASM shape. */\nfunction occtWasmHandleView(type: string, id: number): OcctWasmHandleView {\n return {\n __occtWasm: true,\n type,\n id,\n delete: noopFn,\n HashCode(upperBound: number) {\n return id % upperBound\n },\n IsNull() {\n return false\n },\n }\n}\n\nfunction isOcctWasmHandle(shape: unknown): shape is OcctWasmHandleView {\n return typeof shape === 'object' && shape !== null && (shape as OcctWasmHandleView).__occtWasm === true\n}\n\n/** Borrow view:不转移所有权、dispose 为 no-op(与 brepjs createBorrowedHandle 同语义)。 */\nfunction createBorrowedHandle(ocShape: unknown): BorrowedShapeHandle {\n return {\n get wrapped() {\n return ocShape\n },\n get disposed() {\n return false\n },\n [Symbol.dispose]: noopFn,\n delete: noopFn,\n // Intentionally a no-op: a borrowed view never disposes, so a callback would\n // never fire. Tie dependent lifetimes to the owning parent's handle instead.\n onDispose: noopFn,\n }\n}\n\n/** brepjs 的 finalizer registry 已随子包删除——解除登记为 no-op。 */\nfunction unregisterFromCleanup(_deletable: object): void {\n // no-op(原 brepjs core/disposal.ts#unregisterFromCleanup;registry 已不存在)\n}\n\n/**\n * Borrow a faijs Shape's OCCT handle as a library-side shape handle.\n *\n * No ownership transfer: the borrowed view is a no-op-dispose wrapper of the\n * same occt-wasm shape, valid while the faijs Shape owns it. Pass the result to\n * compatOp-projected functions that take `Shapeable<T>` / `AnyShape`.\n *\n * `brepOf` is a numeric arena id at runtime (occt-wasm's own `ShapeHandle` is a\n * branded number), but library code consumes shapes as *objects* (the\n * shapeTypeCache WeakMap key, `isOcctWasmHandle` discriminant, direct\n * `shape.type` reads) — a raw number crashes there (\"Invalid value used as weak\n * map key\"). The id is therefore wrapped into a structurally valid\n * `OcctWasmHandleView`: the type is queried from the bound occt kernel through\n * `getOcctKernel().getShapeType`, and the `delete` is a no-op (non-owning view —\n * the arena slot and its ownership are untouched).\n *\n * @param s - the faijs Shape whose brep slot is borrowed.\n * @returns a library-side ShapeHandle view of the same occt shape.\n * @throws when the Shape has no live BREP slot (mesh-only input on a brep op).\n */\nexport function borrowBrepjsShape(s: Shape): BorrowedShapeHandle {\n const solid = brepOf(s) as BrepHandle | undefined\n if (solid === undefined) {\n throw new Error(\n '[faijs/l3-bridge] E_BREP_ONLY_INPUT: operation requires a BREP-backed shape ' +\n '(mesh-only input cannot run on the brep path)',\n )\n }\n const kernelShape = isOcctWasmHandle(solid)\n ? solid\n : occtWasmHandleView(getBrepApi().shapeType(solid as never), solid as number)\n return createBorrowedHandle(kernelShape)\n}\n\n/**\n * Adopt a library-side product into a faijs Shape.\n *\n * Unwraps the owned occt handle (`.wrapped`) and registers it into faijs'\n * identity slot via `fromHandle` — ownership transfers to faijs, and the library\n * wrapper must not dispose it afterwards (projected ops return it directly).\n *\n * @param product - a library-side shape (ShapeHandle / AnyShape family).\n * @param segments - optional tessellation segments(投影侧 `segments?`,裁决 1;\n * 透传给 `fromHandle` 的三角化,默认 32 → 64 由 handle-bridge 兜底).\n * @returns the faijs Shape wrapping the same occt solid.\n */\nexport function adoptBrepjsProduct(product: unknown, segments?: number): Shape {\n if (product === null || typeof product !== 'object' || !('wrapped' in product)) {\n throw new Error('[faijs/l3-bridge] E_BAD_PRODUCT: expected a shape handle from the library engine')\n }\n // library `wrapped` may be an OcctHandle (`{id}`) or a raw numeric id;\n // faijs' kernel meshShape expects the numeric shape id (fromHandle).\n const wrappedAny = (product as { wrapped: unknown }).wrapped\n const rawId =\n typeof wrappedAny === 'object' && wrappedAny !== null && 'id' in wrappedAny\n ? (wrappedAny as { id: number }).id\n : (wrappedAny as number)\n const wrapped = rawId as BrepHandle\n return fromHandle(wrapped, segments === undefined ? undefined : { segments })\n}\n\n/**\n * Call a library function with a rebuilt positional argument list.\n *\n * Generated wrappers build `__args` positionally (borrowing geometry inputs,\n * passing value params through); a plain `fn(...args: unknown[])` spread fails\n * TS2556 against fixed-arity signatures, so the call goes through this\n * rest-typed bridge that preserves the function's own `ReturnType` (so a\n * `Result` return keeps `.ok`/`.value` for the generated unwrap code).\n *\n * @param fn the library function.\n * @param args the rebuilt positional argument list (borrowed handles + value params).\n * @returns whatever the function returns (typed via ReturnType).\n */\nexport function callBrepjs<F extends (...a: never[]) => unknown>(fn: F, args: unknown[]): ReturnType<F> {\n return fn(...(args as never[])) as ReturnType<F>\n}\n\n/**\n * Phase 6(narrowing plan D7):brep 测量 op 的执行前引擎身份断言。\n *\n * 库面 query op 是普通函数(不走 dispatchPath),但部分依赖 occt-only 内核方法\n * (shapeType / linearCenterOfMass / distance / curvature / interference,L2 平台面,\n * D6 表)——在这些 op 的实现上声明 `engines: ['occt']`,函数体第一行即断言当前\n * 引擎身份,在触碰内核之前报出可定位错误(文案与 D11-4 同构),不补桩、不回退。\n *\n * @param opName - op 名(报错文案)。\n * @param engines - 允许执行的引擎 id 集合(arg-spec 条目的 `engines` 字段)。\n * @throws BrepUnsupportedError 当当前引擎不在 `engines` 内。\n */\nexport function assertEngineFor(opName: string, engines: readonly string[]): void {\n const current = getBackends().config.brepEngineId\n if (current === null || current === undefined || !engines.some((e) => e === current)) {\n const e = new Error(\n `E_BREP_UNSUPPORTED: op '${opName}' requires engine ${engines.join(' or ')} (current=${current ?? '<none>'})`,\n )\n e.name = 'BrepUnsupportedError'\n throw e\n }\n}\n\n// ─── adoption (compatOp step 5; R1 fix) ──────────────────────────────────────\n\n/** Already-adopted handle dedup table: the same library handle adopted twice →\n * the same faijs Shape (prevents double ownership / double dispose, R6). */\nconst adoptedMap = new WeakMap<object, Shape>()\n\n/**\n * Adopt a library handle as a faijs Shape (compatOp step 5's only adoption\n * entry point).\n *\n * ① pure data (no `.wrapped`) → pass through unchanged (query/data functions);\n * ② sub-shape kinds (face/edge/wire/vertex/shell) → throw E_SUBSHAPE_BOUNDARY\n * (v1 boundary rejection, R4; the brand is a compile-time phantom type —\n * the runtime kind is read from the occt-wasm handle's own `type` field,\n * same as the kernel getShapeType helpers);\n * ③ entities (solid/compound) → no-op unregisterFromCleanup(★ R1:brepjs\n * finalizer registry 已随子包删除,无孤儿释放风险)→ adoptBrepjsProduct.\n *\n * @param product - the library result (handle or plain data record).\n * @param opName - the op name (error messages).\n * @param segments - optional tessellation segments (compat `segments?`).\n * @returns the adopted faijs Shape, or the plain data untouched.\n */\nexport function adoptEntity(product: unknown, opName: string, segments?: number): unknown {\n if (product === null || typeof product !== 'object' || !('wrapped' in product)) return product\n const h = product as BorrowedShapeHandle\n const prev = adoptedMap.get(h as object)\n if (prev) return prev\n const type = (h.wrapped as { type?: string }).type\n if (type !== undefined && type !== 'solid' && type !== 'compound') {\n throw new OpError(\n opName,\n 'E_SUBSHAPE_BOUNDARY',\n `[faijs/brepjs-compat] ${opName}: E_SUBSHAPE_BOUNDARY: sub-shape handle ('${type}') ` +\n 'must not cross the library boundary; return entity solids or plain data',\n )\n }\n unregisterFromCleanup(h as object) // ★ R1: no-op(brepjs registry 已删除)\n const s = adoptBrepjsProduct(h, segments) // fromHandle: tessellation + identity + BREP slots\n adoptedMap.set(h as object, s)\n return s\n}\n"]}
|
|
1
|
+
{"version":3,"file":"l3-bridge.js","sourceRoot":"","sources":["../../../src/api/internal/l3-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAoBzC,uDAAuD;AACvD,SAAS,qBAAqB,CAAC,UAAkB;IAC/C,uEAAuE;AACzE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB,EAAE,QAAiB;IACpE,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAA;IACrG,CAAC;IACD,uEAAuE;IACvE,qEAAqE;IACrE,MAAM,UAAU,GAAI,OAAgC,CAAC,OAAO,CAAA;IAC5D,MAAM,KAAK,GACT,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,IAAI,IAAI,IAAI,UAAU;QACzE,CAAC,CAAE,UAA6B,CAAC,EAAE;QACnC,CAAC,CAAE,UAAqB,CAAA;IAC5B,MAAM,OAAO,GAAG,KAAmB,CAAA;IACnC,OAAO,UAAU,CAAC,OAAO,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;AAC/E,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAuC,EAAK,EAAE,IAAe;IACrF,OAAO,EAAE,CAAC,GAAI,IAAgB,CAAkB,CAAA;AAClD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,OAA0B;IACxE,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAA;IACjD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,CAAC;QACrF,MAAM,CAAC,GAAG,IAAI,KAAK,CACjB,2BAA2B,MAAM,qBAAqB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,OAAO,IAAI,QAAQ,GAAG,CAC9G,CAAA;QACD,CAAC,CAAC,IAAI,GAAG,sBAAsB,CAAA;QAC/B,MAAM,CAAC,CAAA;IACT,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,KAAwB;IACpE,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAA;IAC5C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,oBAAoB,CAC5B,2BAA2B,MAAM,mBAAmB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,OAAO,IAAI,QAAQ,GAAG,CAC1G,CAAA;IACH,CAAC;AACH,CAAC;AAED,gFAAgF;AAEhF;6EAC6E;AAC7E,MAAM,UAAU,GAAG,IAAI,OAAO,EAAiB,CAAA;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,WAAW,CAAC,OAAgB,EAAE,MAAc,EAAE,QAAiB;IAC7E,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC;QAAE,OAAO,OAAO,CAAA;IAC9F,MAAM,CAAC,GAAG,OAA8B,CAAA;IACxC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAW,CAAC,CAAA;IACxC,IAAI,IAAI;QAAE,OAAO,IAAI,CAAA;IACrB,MAAM,IAAI,GAAI,CAAC,CAAC,OAA6B,CAAC,IAAI,CAAA;IAClD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QAClE,MAAM,IAAI,OAAO,CACf,MAAM,EACN,qBAAqB,EACrB,cAAc,MAAM,6CAA6C,IAAI,KAAK;YACxE,yEAAyE,CAC5E,CAAA;IACH,CAAC;IACD,qBAAqB,CAAC,CAAW,CAAC,CAAA,CAAC,mCAAmC;IACtE,MAAM,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA,CAAC,mDAAmD;IAC7F,UAAU,CAAC,GAAG,CAAC,CAAW,EAAE,CAAC,CAAC,CAAA;IAC9B,OAAO,CAAC,CAAA;AACV,CAAC","sourcesContent":["/**\n * L3 bridge — faijs Shape ⇄ 库侧 brepjs-shaped shape(生成层共用,E5 模板)\n *\n * 桥接事实(2026-09-02 实测,2026-09-25 core-decouple wrapup 自有化):\n * - faijs 的 brep slot(`brepOf(shape)` → `slot.solid`)运行时是 occt-wasm 的\n * shape 句柄(number,见 `brep/engine/types.ts` 的 `BrepHandle` 注释);\n * - 库侧(compatOp 投影的 brepjs-shaped 函数)消费的 ShapeHandle 是对象视图\n * (`{ wrapped, disposed, delete, onDispose }`),其 `wrapped` 运行时也是\n * 同一 occt-wasm 实例的 shape 句柄 —— D10 单实例保证两者共享同一 wasm,\n * 句柄空间一致,**零拷贝互操作**。brepjs 子包删除后(裁决 9),本文件\n * 自带最小实现:句柄类型视图 / disposal 解除(no-op)。\n *\n * 因此投影一个库函数只需三件事:\n * 1. faijs Shape → 库输入:原样直传(faijs-native 库消费 core Shape);\n * 2. 调库函数(Result 语义由各 op 处理:`ok` 取值 / `err` 抛错);\n * 3. 库产物 → faijs Shape:取 `.wrapped`(owned handle)→ `fromHandle()`\n * (meshHandle + 身份槽登记,所有权转入 faijs)。\n *\n * 依赖约束(同 `brep/handle-bridge.ts`):只允许 import runtime-state / shape /\n * handle-bridge / occt-kernel 的类型与工具,保持 dist/sdk.js 零 heavy 依赖\n * (occt-kernel 的 getOcctKernel 为惰性访问,引擎装配前不触碰 wasm)。\n */\n\nimport type { Shape } from '../../mesh/types'\nimport { fromHandle } from '../../brep/handle-bridge'\nimport type { BrepHandle } from '../../brep/engine/types'\nimport { getBackends, HostUnsupportedError } from '../../runtime-state'\nimport { OpError } from './result-unwrap'\n\n// ── brepjs 借用面最小自有化(core-decouple wrapup §4.3)──────────────────────\n// 原实现:@faicad/faijs-brepjs/core/disposal.js(unregisterFromCleanup /\n// ShapeHandle)。brepjs 子包删除后按同语义内联。\n\n/** 库侧消费的 shape 句柄视图(borrowed:不拥有、不释放)。 */\nexport interface BorrowedShapeHandle {\n /** The raw kernel shape handle */\n readonly wrapped: unknown\n /** Manual dispose(borrowed 视图为 no-op) */\n [Symbol.dispose](): void\n /** Alias for Symbol.dispose */\n delete(): void\n /** Always false for a borrowed view */\n readonly disposed: boolean\n /** Borrowed views never dispose, so callbacks never fire(no-op)。 */\n onDispose(callback: () => void): void\n}\n\n/** brepjs 的 finalizer registry 已随子包删除——解除登记为 no-op。 */\nfunction unregisterFromCleanup(_deletable: object): void {\n // no-op(原 brepjs core/disposal.ts#unregisterFromCleanup;registry 已不存在)\n}\n\n/**\n * Adopt a library-side product into a faijs Shape.\n *\n * Unwraps the owned occt handle (`.wrapped`) and registers it into faijs'\n * identity slot via `fromHandle` — ownership transfers to faijs, and the library\n * wrapper must not dispose it afterwards (projected ops return it directly).\n *\n * @param product - a library-side shape (ShapeHandle / AnyShape family).\n * @param segments - optional tessellation segments(投影侧 `segments?`,裁决 1;\n * 透传给 `fromHandle` 的三角化,默认 32 → 64 由 handle-bridge 兜底).\n * @returns the faijs Shape wrapping the same occt solid.\n */\nexport function adoptBrepjsProduct(product: unknown, segments?: number): Shape {\n if (product === null || typeof product !== 'object' || !('wrapped' in product)) {\n throw new Error('[faijs/l3-bridge] E_BAD_PRODUCT: expected a shape handle from the library engine')\n }\n // library `wrapped` may be an OcctHandle (`{id}`) or a raw numeric id;\n // faijs' kernel meshShape expects the numeric shape id (fromHandle).\n const wrappedAny = (product as { wrapped: unknown }).wrapped\n const rawId =\n typeof wrappedAny === 'object' && wrappedAny !== null && 'id' in wrappedAny\n ? (wrappedAny as { id: number }).id\n : (wrappedAny as number)\n const wrapped = rawId as BrepHandle\n return fromHandle(wrapped, segments === undefined ? undefined : { segments })\n}\n\n/**\n * Call a library function with a rebuilt positional argument list.\n *\n * Generated wrappers build `__args` positionally (geometry inputs pass through\n * untouched, value params pass through as-is); a plain `fn(...args: unknown[])` spread fails\n * TS2556 against fixed-arity signatures, so the call goes through this\n * rest-typed bridge that preserves the function's own `ReturnType` (so a\n * `Result` return keeps `.ok`/`.value` for the generated unwrap code).\n *\n * @param fn the library function.\n * @param args the rebuilt positional argument list (geometry inputs + value params).\n * @returns whatever the function returns (typed via ReturnType).\n */\nexport function callBrepjs<F extends (...a: never[]) => unknown>(fn: F, args: unknown[]): ReturnType<F> {\n return fn(...(args as never[])) as ReturnType<F>\n}\n\n/**\n * Phase 6(narrowing plan D7):brep 测量 op 的执行前引擎身份断言。\n *\n * 库面 query op 是普通函数(不走 dispatchPath),但部分依赖 occt-only 内核方法\n * (shapeType / linearCenterOfMass / distance / curvature / interference,L2 平台面,\n * D6 表)——在这些 op 的实现上声明 `engines: ['occt']`,函数体第一行即断言当前\n * 引擎身份,在触碰内核之前报出可定位错误(文案与 D11-4 同构),不补桩、不回退。\n *\n * @param opName - op 名(报错文案)。\n * @param engines - 允许执行的引擎 id 集合(arg-spec 条目的 `engines` 字段)。\n * @throws BrepUnsupportedError 当当前引擎不在 `engines` 内。\n */\nexport function assertEngineFor(opName: string, engines: readonly string[]): void {\n const current = getBackends().config.brepEngineId\n if (current === null || current === undefined || !engines.some((e) => e === current)) {\n const e = new Error(\n `E_BREP_UNSUPPORTED: op '${opName}' requires engine ${engines.join(' or ')} (current=${current ?? '<none>'})`,\n )\n e.name = 'BrepUnsupportedError'\n throw e\n }\n}\n\n/**\n * 导出命令的宿主环境断言(与 {@link assertEngineFor} 并列同构,正交轴)。\n *\n * 脚本可由 AI 生成任意代码、属不受信输入,而出把「往哪写、写几份、写什么」的\n * 决定权交给脚本文本;因此脚本面导出命令只在 `'node'` 宿主开放,browser / weapp\n * 一律在执行前拒绝(`HostPorts.hostEnv` 未声明 = 非 node,不兜底放行)。\n *\n * 断言只在 API 函数体第一行执行(普通函数不走 dispatchPath),所以既覆盖脚本面\n * `cad.*`,也覆盖 TS 直连同一函数的旁路——不存在「脚本被拒、库面直连却放行」。\n * 判据只读 `config.hostEnv`,与安全扫描档位(`securityPolicy`)解耦:放宽档位\n * (含 `off`)不解除本门禁。\n *\n * @param opName - op 名(报错文案)。\n * @param hosts - 允许执行的宿主值集合。\n * @throws HostUnsupportedError 当当前宿主不在 `hosts` 内(含未声明)。\n */\nexport function assertHostFor(opName: string, hosts: readonly string[]): void {\n const current = getBackends().config.hostEnv\n if (current === null || current === undefined || !hosts.some((h) => h === current)) {\n throw new HostUnsupportedError(\n `E_HOST_UNSUPPORTED: op '${opName}' requires host ${hosts.join(' or ')} (current=${current ?? '<none>'})`,\n )\n }\n}\n\n// ─── adoption (compatOp step 5; R1 fix) ──────────────────────────────────────\n\n/** Already-adopted handle dedup table: the same library handle adopted twice →\n * the same faijs Shape (prevents double ownership / double dispose, R6). */\nconst adoptedMap = new WeakMap<object, Shape>()\n\n/**\n * Adopt a library handle as a faijs Shape (compatOp step 5's only adoption\n * entry point).\n *\n * ① pure data (no `.wrapped`) → pass through unchanged (query/data functions);\n * ② sub-shape kinds (face/edge/wire/vertex/shell) → throw E_SUBSHAPE_BOUNDARY\n * (v1 boundary rejection, R4; the brand is a compile-time phantom type —\n * the runtime kind is read from the occt-wasm handle's own `type` field,\n * same as the kernel getShapeType helpers);\n * ③ entities (solid/compound) → no-op unregisterFromCleanup(★ R1:brepjs\n * finalizer registry 已随子包删除,无孤儿释放风险)→ adoptBrepjsProduct.\n *\n * @param product - the library result (handle or plain data record).\n * @param opName - the op name (error messages).\n * @param segments - optional tessellation segments (compat `segments?`).\n * @returns the adopted faijs Shape, or the plain data untouched.\n */\nexport function adoptEntity(product: unknown, opName: string, segments?: number): unknown {\n if (product === null || typeof product !== 'object' || !('wrapped' in product)) return product\n const h = product as BorrowedShapeHandle\n const prev = adoptedMap.get(h as object)\n if (prev) return prev\n const type = (h.wrapped as { type?: string }).type\n if (type !== undefined && type !== 'solid' && type !== 'compound') {\n throw new OpError(\n opName,\n 'E_SUBSHAPE_BOUNDARY',\n `[faijs/op] ${opName}: E_SUBSHAPE_BOUNDARY: sub-shape handle ('${type}') ` +\n 'must not cross the library boundary; return entity solids or plain data',\n )\n }\n unregisterFromCleanup(h as object) // ★ R1: no-op(brepjs registry 已删除)\n const s = adoptBrepjsProduct(h, segments) // fromHandle: tessellation + identity + BREP slots\n adoptedMap.set(h as object, s)\n return s\n}\n"]}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - 2D 截面(`cad.profile` 的面)→ 取**外环**(孔环不参与扫掠/放样)。
|
|
11
11
|
*
|
|
12
12
|
* core-decouple G5 后:wire 视图为 `{ wrapped: BrepHandle, borrowed: boolean }`
|
|
13
|
-
* (brepjs 形态保留,供 brep-
|
|
13
|
+
* (brepjs 形态保留,供 brep-operations 实现直读)。所有权:面→外环的 wire 是
|
|
14
14
|
* arena 新句柄(borrowed=false),由调用方(loft/sweep)消费后 release;
|
|
15
15
|
* 曲线借用(borrowed=true)不 release。
|
|
16
16
|
*/
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - 2D 截面(`cad.profile` 的面)→ 取**外环**(孔环不参与扫掠/放样)。
|
|
11
11
|
*
|
|
12
12
|
* core-decouple G5 后:wire 视图为 `{ wrapped: BrepHandle, borrowed: boolean }`
|
|
13
|
-
* (brepjs 形态保留,供 brep-
|
|
13
|
+
* (brepjs 形态保留,供 brep-operations 实现直读)。所有权:面→外环的 wire 是
|
|
14
14
|
* arena 新句柄(borrowed=false),由调用方(loft/sweep)消费后 release;
|
|
15
15
|
* 曲线借用(borrowed=true)不 release。
|
|
16
16
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile-wire.js","sourceRoot":"","sources":["../../../src/api/internal/profile-wire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAUrD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAc;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAe,CAAA;IAC5C,IAAI,YAAY,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IACrE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAClE,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;IACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAClE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAC/C,CAAC","sourcesContent":["/**\n * profile-wire — 「截面 Shape → 扫掠/放样所需的 wire 视图」的唯一步径(Phase 4→G5)\n *\n * `sweep` / `loft` 共用:脚本面最常见的截面来源是 `cad.profile(...)`(产出 **face**),\n * 而内核的 `sweep` / `loft` 只吃 wire ⇒ 需要「面 → 外环 wire」输入适配。\n * 两处口径必须逐字一致,故收在此叶子模块(一份实现,不允许第二个判定点)。\n *\n * 判定用 faijs 侧判别位(Phase 3 落地的 `kind:'curve'`),不查内核拓扑类型:\n * - 1D 截面(`cad.wire` / `cad.helix` / `cad.profile({as:'wire'})`)→ 借用原句柄;\n * - 2D 截面(`cad.profile` 的面)→ 取**外环**(孔环不参与扫掠/放样)。\n *\n * core-decouple G5 后:wire 视图为 `{ wrapped: BrepHandle, borrowed: boolean }`\n * (brepjs 形态保留,供 brep-
|
|
1
|
+
{"version":3,"file":"profile-wire.js","sourceRoot":"","sources":["../../../src/api/internal/profile-wire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAUrD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAc;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAe,CAAA;IAC5C,IAAI,YAAY,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IACrE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAClE,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;IACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IAClE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAC/C,CAAC","sourcesContent":["/**\n * profile-wire — 「截面 Shape → 扫掠/放样所需的 wire 视图」的唯一步径(Phase 4→G5)\n *\n * `sweep` / `loft` 共用:脚本面最常见的截面来源是 `cad.profile(...)`(产出 **face**),\n * 而内核的 `sweep` / `loft` 只吃 wire ⇒ 需要「面 → 外环 wire」输入适配。\n * 两处口径必须逐字一致,故收在此叶子模块(一份实现,不允许第二个判定点)。\n *\n * 判定用 faijs 侧判别位(Phase 3 落地的 `kind:'curve'`),不查内核拓扑类型:\n * - 1D 截面(`cad.wire` / `cad.helix` / `cad.profile({as:'wire'})`)→ 借用原句柄;\n * - 2D 截面(`cad.profile` 的面)→ 取**外环**(孔环不参与扫掠/放样)。\n *\n * core-decouple G5 后:wire 视图为 `{ wrapped: BrepHandle, borrowed: boolean }`\n * (brepjs 形态保留,供 brep-operations 实现直读)。所有权:面→外环的 wire 是\n * arena 新句柄(borrowed=false),由调用方(loft/sweep)消费后 release;\n * 曲线借用(borrowed=true)不 release。\n */\n\nimport type { Shape } from '../../mesh/types'\nimport { brepOf, isCurveShape } from '../../shape'\nimport { getBrepApi } from '../../brep/handle-bridge'\nimport type { BrepHandle } from '../../brep/engine/types'\n\n/** Wire view for sweep/loft sections: the BREP handle plus its ownership flag. */\nexport interface WireView {\n wrapped: BrepHandle\n /** true = 借用原 shape 句柄(勿 release);false = 新建外环 wire(调用方 release)。 */\n borrowed: boolean\n}\n\n/** 截面 Shape → wire 视图(面取其外环)。\n *\n * @param section - Section shape (curve or face) to adapt.\n * @returns The wire view wrapping the handle and its ownership flag.\n */\nexport function toProfileWireView(section: Shape): WireView {\n const handle = brepOf(section) as BrepHandle\n if (isCurveShape(section)) return { wrapped: handle, borrowed: true }\n const kernel = getBrepApi()\n const faces = kernel.getSubShapes(handle, 'face')\n if (faces.length === 0) return { wrapped: handle, borrowed: true }\n const wires = kernel.getSubShapes(faces[0], 'wire')\n if (wires.length === 0) return { wrapped: handle, borrowed: true }\n return { wrapped: wires[0], borrowed: false }\n}\n"]}
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
* result-unwrap — the single Result→throw bridge shared by every faijs
|
|
3
3
|
* statement boundary (D1).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Three-layer error semantics (§5.1):
|
|
5
|
+
* Three-layer error semantics:
|
|
8
6
|
* library internals / TS compat face → `Result<T>` native (BrepError)
|
|
9
7
|
* statement boundary → `err` unwrapped into a throw
|
|
10
8
|
* faijs-specific op impls → may return `Result`; same unwrap
|
|
@@ -16,7 +14,7 @@
|
|
|
16
14
|
*
|
|
17
15
|
* @module
|
|
18
16
|
*/
|
|
19
|
-
/** Structural shape of the
|
|
17
|
+
/** Structural shape of the compat `Ok`/`Err` records (`brepjs/core/result.ts:12-21`). */
|
|
20
18
|
export type ResultLike = {
|
|
21
19
|
ok: true;
|
|
22
20
|
value: unknown;
|
|
@@ -54,7 +52,7 @@ export declare class OpError extends Error {
|
|
|
54
52
|
/**
|
|
55
53
|
* Structural test for a Result value.
|
|
56
54
|
*
|
|
57
|
-
* Only the `ok: boolean` discriminant is checked — the
|
|
55
|
+
* Only the `ok: boolean` discriminant is checked — the compat `Result` is a
|
|
58
56
|
* plain record, so no `instanceof` and no import is needed (which is what keeps
|
|
59
57
|
* this module a leaf).
|
|
60
58
|
*
|
|
@@ -68,7 +66,7 @@ export declare function isResultLike(v: unknown): v is ResultLike;
|
|
|
68
66
|
*
|
|
69
67
|
* The op name and the `BrepError.code` (when present) are always kept so the
|
|
70
68
|
* engine's statement-level catch reports the same shape the plan's trace A/B
|
|
71
|
-
* describe (`[faijs/
|
|
69
|
+
* describe (`[faijs/op] <op>: <CODE>: <message>`).
|
|
72
70
|
*
|
|
73
71
|
* @param name - the op name.
|
|
74
72
|
* @param err - the thrown value (Error or anything else).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-unwrap.d.ts","sourceRoot":"","sources":["../../../src/api/internal/result-unwrap.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"result-unwrap.d.ts","sourceRoot":"","sources":["../../../src/api/internal/result-unwrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,yFAAyF;AACzF,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC5B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAA;AAE7D;;;;;;;;;;;;;;GAcG;AACH,qBAAa,OAAQ,SAAQ,KAAK;IAChC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;gBACT,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAMrF;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAExD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,KAAK,CAO3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAO/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAU9D"}
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
* result-unwrap — the single Result→throw bridge shared by every faijs
|
|
3
3
|
* statement boundary (D1).
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Three-layer error semantics (§5.1):
|
|
5
|
+
* Three-layer error semantics:
|
|
8
6
|
* library internals / TS compat face → `Result<T>` native (BrepError)
|
|
9
7
|
* statement boundary → `err` unwrapped into a throw
|
|
10
8
|
* faijs-specific op impls → may return `Result`; same unwrap
|
|
@@ -46,7 +44,7 @@ export class OpError extends Error {
|
|
|
46
44
|
/**
|
|
47
45
|
* Structural test for a Result value.
|
|
48
46
|
*
|
|
49
|
-
* Only the `ok: boolean` discriminant is checked — the
|
|
47
|
+
* Only the `ok: boolean` discriminant is checked — the compat `Result` is a
|
|
50
48
|
* plain record, so no `instanceof` and no import is needed (which is what keeps
|
|
51
49
|
* this module a leaf).
|
|
52
50
|
*
|
|
@@ -62,7 +60,7 @@ export function isResultLike(v) {
|
|
|
62
60
|
*
|
|
63
61
|
* The op name and the `BrepError.code` (when present) are always kept so the
|
|
64
62
|
* engine's statement-level catch reports the same shape the plan's trace A/B
|
|
65
|
-
* describe (`[faijs/
|
|
63
|
+
* describe (`[faijs/op] <op>: <CODE>: <message>`).
|
|
66
64
|
*
|
|
67
65
|
* @param name - the op name.
|
|
68
66
|
* @param err - the thrown value (Error or anything else).
|
|
@@ -114,6 +112,6 @@ export function unwrapResult(r, name) {
|
|
|
114
112
|
return r.value;
|
|
115
113
|
const e = (r.error ?? {});
|
|
116
114
|
const code = e.code ?? 'E_OP_FAILED';
|
|
117
|
-
throw new OpError(name, code, `[faijs/
|
|
115
|
+
throw new OpError(name, code, `[faijs/op] ${name}: ${code}: ${e.message ?? 'operation failed'}`);
|
|
118
116
|
}
|
|
119
117
|
//# sourceMappingURL=result-unwrap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-unwrap.js","sourceRoot":"","sources":["../../../src/api/internal/result-unwrap.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"result-unwrap.js","sourceRoot":"","sources":["../../../src/api/internal/result-unwrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,OAAQ,SAAQ,KAAK;IAChC,6CAA6C;IACpC,EAAE,CAAQ;IACnB,2EAA2E;IAClE,IAAI,CAAQ;IACrB,YAAY,EAAU,EAAE,IAAY,EAAE,OAAe,EAAE,OAA6B;QAClF,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;QACrB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,CAAU;IACrC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,OAAQ,CAAsB,CAAC,EAAE,KAAK,SAAS,CAAA;AAC/F,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,GAAY;IAClD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAI,GAA0B,CAAC,IAAI,CAAA;QAC7C,MAAM,MAAM,GAAG,cAAc,IAAI,KAAK,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;QACnF,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,cAAc,IAAI,kBAAkB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACrE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,GAAY;IACpD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAI,GAA0B,CAAC,IAAI,CAAA;QAC7C,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAA;QAC/D,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,IAAI,KAAK,OAAO,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IACrF,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,cAAc,IAAI,kBAAkB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAC5F,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,CAAU,EAAE,IAAY;IACnD,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAA;IAC9B,IAAI,CAAC,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC,KAAK,CAAA;IACxB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAwC,CAAA;IAChE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,aAAa,CAAA;IACpC,MAAM,IAAI,OAAO,CACf,IAAI,EACJ,IAAI,EACJ,cAAc,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,OAAO,IAAI,kBAAkB,EAAE,CAClE,CAAA;AACH,CAAC","sourcesContent":["/**\n * result-unwrap — the single Result→throw bridge shared by every faijs\n * statement boundary (D1).\n *\n * Three-layer error semantics:\n * library internals / TS compat face → `Result<T>` native (BrepError)\n * statement boundary → `err` unwrapped into a throw\n * faijs-specific op impls → may return `Result`; same unwrap\n *\n * This module is a **leaf**: it imports nothing, so both the SDK layer\n * (`src/define-op.ts`, whose `dist/sdk.js` must stay free of heavy static\n * imports) and the compat bridge (`api/internal/compat-op.ts`) can share one\n * implementation. Having two copies would let the two boundaries drift.\n *\n * @module\n */\n\n/** Structural shape of the compat `Ok`/`Err` records (`brepjs/core/result.ts:12-21`). */\nexport type ResultLike =\n | { ok: true; value: unknown }\n | { ok: false; error: { code?: string; message?: string } }\n\n/**\n * Statement-boundary op failure (D1 unwrap / compat adoption).\n *\n * An `err` Result unwrapped at the statement boundary used to be thrown as a\n * plain `Error`, which `CadRuntime.runWithFailureHandling` (recognizing only\n * `BrepUnsupportedError`/`MeshUnsupportedError` by `instanceof`) re-threw out\n * of `execute()` instead of converting it into `ExecutionResult.failedAt`.\n * This class is the engine-recognizable carrier: defined in this leaf module\n * (zero imports) so both `define-op` and the compat bridge can throw it while\n * CadRuntime can catch it without importing anything heavier.\n *\n * A thrown `Error` that is *not* an `OpError` keeps its old meaning: an\n * unexpected implementation bug that must propagate (Result 体系 — expected\n * failures are `err` values, exceptions are bugs).\n */\nexport class OpError extends Error {\n /** The op name that produced the failure. */\n readonly op: string\n /** The `BrepError.code`, or `'E_OP_FAILED'` when the library sent none. */\n readonly code: string\n constructor(op: string, code: string, message: string, options?: { cause?: unknown }) {\n super(message, options)\n this.name = 'OpError'\n this.op = op\n this.code = code\n }\n}\n\n/**\n * Structural test for a Result value.\n *\n * Only the `ok: boolean` discriminant is checked — the compat `Result` is a\n * plain record, so no `instanceof` and no import is needed (which is what keeps\n * this module a leaf).\n *\n * @param v - the candidate value.\n * @returns true when `v` looks like an Ok/Err record.\n */\nexport function isResultLike(v: unknown): v is ResultLike {\n return typeof v === 'object' && v !== null && typeof (v as { ok?: unknown }).ok === 'boolean'\n}\n\n/**\n * Render an error thrown by (or returned from) an implementation as a\n * statement-level failure.\n *\n * The op name and the `BrepError.code` (when present) are always kept so the\n * engine's statement-level catch reports the same shape the plan's trace A/B\n * describe (`[faijs/op] <op>: <CODE>: <message>`).\n *\n * @param name - the op name.\n * @param err - the thrown value (Error or anything else).\n * @returns an Error carrying the op context.\n */\nexport function toOpError(name: string, err: unknown): Error {\n if (err instanceof Error) {\n const code = (err as { code?: unknown }).code\n const prefix = `[faijs/op] ${name}: ${typeof code === 'string' ? code + ': ' : ''}`\n return new Error(prefix + err.message)\n }\n return new Error(`[faijs/op] ${name}: E_OP_FAILED: ${String(err)}`)\n}\n\n/**\n * Wrap an implementation-thrown exception as an {@link OpError} (statement-\n * level failure carrier). Used by `define-op.ts` `runImpl` so that\n * `CadRuntime.directFailedAtOrThrow` recognizes the error as an op failure\n * (not a bug to re-throw).\n *\n * @param name - the op name.\n * @param err - the thrown value.\n * @returns an OpError carrying the op context and code.\n */\nexport function toOpFailure(name: string, err: unknown): OpError {\n if (err instanceof Error) {\n const code = (err as { code?: unknown }).code\n const codeStr = typeof code === 'string' ? code : 'E_OP_FAILED'\n return new OpError(name, codeStr, `[faijs/op] ${name}: ${codeStr}: ${err.message}`)\n }\n return new OpError(name, 'E_OP_FAILED', `[faijs/op] ${name}: E_OP_FAILED: ${String(err)}`)\n}\n\n/**\n * Statement-boundary unwrap (D1).\n *\n * - a non-Result product → returned untouched (plain-data ops, mesh products);\n * - `ok` → `.value`;\n * - `err` → throws an {@link OpError} carrying the op name and BrepError code\n * (the engine converts `OpError` into `ExecutionResult.failedAt`).\n *\n * @param r - the implementation product.\n * @param name - the op name (error messages).\n * @returns the unwrapped value, or the input when it was not a Result.\n * @throws an {@link OpError} when `r` is an `Err`.\n */\nexport function unwrapResult(r: unknown, name: string): unknown {\n if (!isResultLike(r)) return r\n if (r.ok) return r.value\n const e = (r.error ?? {}) as { code?: string; message?: string }\n const code = e.code ?? 'E_OP_FAILED'\n throw new OpError(\n name,\n code,\n `[faijs/op] ${name}: ${code}: ${e.message ?? 'operation failed'}`,\n )\n}\n"]}
|
package/dist/api/knurl.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knurl.d.ts","sourceRoot":"","sources":["../../src/api/knurl.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAQ,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"knurl.d.ts","sourceRoot":"","sources":["../../src/api/knurl.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAQ,MAAM,eAAe,CAAA;AAShD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAEvE;AAED;;;;;;;;;;;;;;;;;;;;IAoBI;AACJ,eAAO,MAAM,KAAK;;CAsBhB,CAAA"}
|
package/dist/api/knurl.js
CHANGED
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
* knurl 无 BREP 实现(mesh-only)——dispatchPath 在 brep 模式下调用前抛错。
|
|
6
6
|
* part-brep-lost 事件由引擎统一发(P4,库不再 emit)。
|
|
7
7
|
*/
|
|
8
|
-
|
|
8
|
+
// B3 correction (2026-10-06): no library-face cad aggregate — import the impl from its own module.
|
|
9
|
+
import * as meshEngrave from '../mesh/engrave.js';
|
|
10
|
+
import * as meshQuery from '../mesh/query.js';
|
|
9
11
|
import { reconcileBrepInputs } from './reconcile.js';
|
|
10
12
|
import { defineOp } from '../sdk.js';
|
|
11
13
|
import { assertPositiveNumber } from './assert.js';
|
|
@@ -45,9 +47,9 @@ export const knurl = defineOp({
|
|
|
45
47
|
// 断链时刻(用户点名场景):BREP 建模的模型最后做滚花 → BREP 输入必须先归约为
|
|
46
48
|
// 合法 2-manifold 网格再进 mesh 路径(reconcileBrepInputs 对 mesh 侧输入原样透传)
|
|
47
49
|
const [meshInput] = reconcileBrepInputs([input]);
|
|
48
|
-
return
|
|
50
|
+
return meshEngrave.knurl(meshInput, {
|
|
49
51
|
face: {
|
|
50
|
-
center: params.faceCenter ??
|
|
52
|
+
center: params.faceCenter ?? meshQuery.bboxCenter(meshInput),
|
|
51
53
|
normal: params.faceNormal ?? [0, 0, 1],
|
|
52
54
|
},
|
|
53
55
|
knurlTextureHeight: params.knurlTextureHeight ?? 0.5,
|
package/dist/api/knurl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knurl.js","sourceRoot":"","sources":["../../src/api/knurl.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"knurl.js","sourceRoot":"","sources":["../../src/api/knurl.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,mGAAmG;AACnG,OAAO,KAAK,WAAW,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,SAAS,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE/C;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA+B;IAC/D,oBAAoB,CAAC,MAAM,CAAC,kBAAkB,EAAE,0BAA0B,CAAC,CAAA;AAC7E,CAAC;AAED;;;;;;;;;;;;;;;;;;;;IAoBI;AACJ,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC;IAC5B,IAAI,EAAE,KAAK,EAAE,KAAY,EAAE,MAA+B,EAAE,EAAE;QAC5D,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAC5D,iBAAiB,CAAC,MAAM,CAAC,CAAA;QACzB,+CAA+C;QAC/C,iEAAiE;QACjE,MAAM,CAAC,SAAS,CAAC,GAAG,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QAChD,OAAO,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE;YAClC,IAAI,EAAE;gBACJ,MAAM,EAAG,MAAM,CAAC,UAA+B,IAAI,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC;gBAClF,MAAM,EAAG,MAAM,CAAC,UAA+B,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;aAC7D;YACD,kBAAkB,EAAG,MAAM,CAAC,kBAAyC,IAAI,GAAG;YAC5E,uBAAuB,EAAG,MAAM,CAAC,uBAA+C,IAAI,KAAK;YACzF,iBAAiB,EAAG,MAAM,CAAC,iBAAwC,IAAI,GAAG;YAC1E,WAAW,EAAG,MAAM,CAAC,WAAkC,IAAI,IAAI;YAC/D,WAAW,EAAG,MAAM,CAAC,WAAkC,IAAI,IAAI;YAC/D,gBAAgB,EAAG,MAAM,CAAC,gBAAuC,IAAI,CAAC;SACvE,CAAC,CAAA;IACJ,CAAC;IACD,SAAS,EAAE,EAAE,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE;IACxE,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,2CAA2C,EAAgB;CACjG,CAAC,CAAA","sourcesContent":["/**\n * api knurl — 滚花库函数(mesh-only)\n *\n *\n * knurl 无 BREP 实现(mesh-only)——dispatchPath 在 brep 模式下调用前抛错。\n * part-brep-lost 事件由引擎统一发(P4,库不再 emit)。\n */\n\nimport type { Shape, Vec3 } from '../mesh/types'\n// B3 correction (2026-10-06): no library-face cad aggregate — import the impl from its own module.\nimport * as meshEngrave from '../mesh/engrave'\nimport * as meshQuery from '../mesh/query'\nimport { reconcileBrepInputs } from './reconcile'\nimport { defineOp } from '../sdk'\nimport type { Provenance } from '../topology/naming/lineage'\nimport { assertPositiveNumber } from './assert'\n\n/**\n * Validate knurl parameters: `knurlTextureHeight` must be a positive number.\n * @param params - the raw knurl operation parameters.\n */\nexport function assertKnurlParams(params: Record<string, unknown>): void {\n assertPositiveNumber(params.knurlTextureHeight, 'knurl.knurlTextureHeight')\n}\n\n/**\n * 施加滚花(顶点位移,非布尔)。mesh-only。\n * @group 特征\n * @inputs 1\n * @async true\n * @qual warn\n * @name knurl\n * @note knurl 无 BREP 实现(mesh-only),本质是顶点位移(网格操作),网格参数可接受;brep 模式下调用前抛 BrepUnsupportedError。面锚定建议用几何引用。\n * @returns Shape 滚花后的几何。\n * @param input - 目标几何。type:Shape required:true\n * @param params.knurlTextureHeight - 纹路高度(mm)。type:number 默认 0.5\n * @param params.knurlScaleU - 纹路 U 向频率。type:number 默认 0.15\n * @param params.knurlScaleV - 纹路 V 向频率。type:number 默认 0.15\n * @param params.knurlInvertDisplacement - 反向位移。type:boolean 默认 false\n * @param params.knurlRefineLength - 细分长度(mm)。type:number 默认 1.0\n * @param params.knurlMappingMode - UV 映射模式。type:number 默认 5\n * @param params.faceCenter - 面锚点中心。type:[x,y,z] 默认 bboxCenter\n * @param params.faceNormal - 面法向。type:[x,y,z] 默认 [0,0,1]\n * @example\n * const p = await cad.knurl(part0, { knurlTextureHeight: 0.5, knurlScaleU: 0.15, knurlScaleV: 0.15, knurlInvertDisplacement: false, knurlRefineLength: 1.0, knurlMappingMode: 5 })\n */\nexport const knurl = defineOp({\n mesh: async (input: Shape, params: Record<string, unknown>) => {\n if (!input) throw new Error('[api/knurl] no input geometry')\n assertKnurlParams(params)\n // 断链时刻(用户点名场景):BREP 建模的模型最后做滚花 → BREP 输入必须先归约为\n // 合法 2-manifold 网格再进 mesh 路径(reconcileBrepInputs 对 mesh 侧输入原样透传)\n const [meshInput] = reconcileBrepInputs([input])\n return meshEngrave.knurl(meshInput, {\n face: {\n center: (params.faceCenter as Vec3 | undefined) ?? meshQuery.bboxCenter(meshInput),\n normal: (params.faceNormal as Vec3 | undefined) ?? [0, 0, 1],\n },\n knurlTextureHeight: (params.knurlTextureHeight as number | undefined) ?? 0.5,\n knurlInvertDisplacement: (params.knurlInvertDisplacement as boolean | undefined) ?? false,\n knurlRefineLength: (params.knurlRefineLength as number | undefined) ?? 1.0,\n knurlScaleU: (params.knurlScaleU as number | undefined) ?? 0.15,\n knurlScaleV: (params.knurlScaleV as number | undefined) ?? 0.15,\n knurlMappingMode: (params.knurlMappingMode as number | undefined) ?? 5,\n })\n },\n paramDims: { knurlTextureHeight: 'length', knurlRefineLength: 'length' },\n naming: { kind: 'unmodeled', reason: 'knurl is mesh-only, no BREP face identity' } as Provenance,\n})\n"]}
|
package/dist/api/loft.d.ts
CHANGED
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
* `cad.profile(...)`(产出 **face**),内核 `loft(wires, …)` 只吃 wire ⇒
|
|
10
10
|
* 需要「面 → 外环」输入适配(`internal/profile-wire.ts` 的唯一步径)。
|
|
11
11
|
*
|
|
12
|
-
* core-decouple G5
|
|
12
|
+
* core-decouple G5:旧 `loft`(brepjs)替换为 occt-wasm 原生直连,
|
|
13
13
|
* 产物经 `fromBrep` 收养(替代 l3-bridge adoptEntity)。
|
|
14
14
|
*/
|
|
15
15
|
import type { Shape } from '../mesh/types.js';
|
|
16
|
-
/**
|
|
16
|
+
/** 放样配置(与旧 LoftOptions 同形;本文件自持,去外部依赖)。 */
|
|
17
17
|
export interface LoftOptions {
|
|
18
18
|
/** 直线插值(ruled)。默认 true。 */
|
|
19
19
|
ruled?: boolean;
|
package/dist/api/loft.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loft.d.ts","sourceRoot":"","sources":["../../src/api/loft.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAU1C,
|
|
1
|
+
{"version":3,"file":"loft.d.ts","sourceRoot":"","sources":["../../src/api/loft.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAU1C,2CAA2C;AAC3C,MAAM,WAAW,WAAW;IAC1B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,mBAAmB;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACpF,mBAAmB;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAClF,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAiDD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,IAAI;;CAOf,CAAA"}
|
package/dist/api/loft.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* `cad.profile(...)`(产出 **face**),内核 `loft(wires, …)` 只吃 wire ⇒
|
|
10
10
|
* 需要「面 → 外环」输入适配(`internal/profile-wire.ts` 的唯一步径)。
|
|
11
11
|
*
|
|
12
|
-
* core-decouple G5
|
|
12
|
+
* core-decouple G5:旧 `loft`(brepjs)替换为 occt-wasm 原生直连,
|
|
13
13
|
* 产物经 `fromBrep` 收养(替代 l3-bridge adoptEntity)。
|
|
14
14
|
*/
|
|
15
15
|
import { defineOp } from '../sdk.js';
|
|
@@ -18,7 +18,7 @@ import { fromBrep } from '../shape.js';
|
|
|
18
18
|
import { solidToShape } from '../brep/brep-ops.js';
|
|
19
19
|
import { getOcctKernel } from '../occt-kernel/occtKernel.js';
|
|
20
20
|
import { toProfileWireView } from './internal/profile-wire.js';
|
|
21
|
-
/** PointInput → [x,y,z]
|
|
21
|
+
/** PointInput → [x,y,z](旧 toVec3 同口径)。 */
|
|
22
22
|
function toVec3(p) {
|
|
23
23
|
if (Array.isArray(p) && p.length >= 3)
|
|
24
24
|
return [p[0], p[1], p[2]];
|
package/dist/api/loft.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loft.js","sourceRoot":"","sources":["../../src/api/loft.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAe3D,
|
|
1
|
+
{"version":3,"file":"loft.js","sourceRoot":"","sources":["../../src/api/loft.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * api loft — 放样:多个截面之间蒙皮生成体(手写平台 op,Phase 4 → G5 core 直连)\n *\n * @platform occt — 实现走 core 直连 `occt-wasm loft` / `loftWithVertices`\n * (BRepOffsetAPI_ThruSections;engine-method-map 里 `loft` 为 occt-only)⇒ 平台 op:\n * defineOp 声明 `engines: ['occt']`(D11)。\n *\n * 为什么手写而不走生成投影:与 `api/sweep.ts` 同因——截面最常见来源是\n * `cad.profile(...)`(产出 **face**),内核 `loft(wires, …)` 只吃 wire ⇒\n * 需要「面 → 外环」输入适配(`internal/profile-wire.ts` 的唯一步径)。\n *\n * core-decouple G5:旧 `loft`(brepjs)替换为 occt-wasm 原生直连,\n * 产物经 `fromBrep` 收养(替代 l3-bridge adoptEntity)。\n */\n\nimport type { Shape } from '../mesh/types'\nimport { defineOp } from '../sdk'\nimport type { Provenance } from '../topology/naming/lineage'\nimport { getBrepApi } from '../brep/handle-bridge'\nimport { fromBrep } from '../shape'\nimport { solidToShape } from '../brep/brep-ops'\nimport { getOcctKernel } from '../occt-kernel/occtKernel'\nimport { toProfileWireView } from './internal/profile-wire'\nimport type { BrepHandle } from '../brep/engine/types'\n\n/** 放样配置(与旧 LoftOptions 同形;本文件自持,去外部依赖)。 */\nexport interface LoftOptions {\n /** 直线插值(ruled)。默认 true。 */\n ruled?: boolean\n /** 起点(退化到点的蒙皮)。 */\n startPoint?: readonly [number, number, number] | { x: number; y: number; z: number }\n /** 终点(退化到点的蒙皮)。 */\n endPoint?: readonly [number, number, number] | { x: number; y: number; z: number }\n /** ThruSections 缝合公差。默认 1e-6。 */\n tolerance?: number\n}\n\n/** PointInput → [x,y,z](旧 toVec3 同口径)。 */\nfunction toVec3(p: LoftOptions['startPoint']): [number, number, number] {\n if (Array.isArray(p) && p.length >= 3) return [p[0]!, p[1]!, p[2]!]\n const o = p as { x: number; y: number; z: number }\n return [o.x, o.y, o.z]\n}\n\n/** BREP 路径:按序蒙皮各截面(wire 视图 → occt-wasm 直连 → fromBrep 收养)。 */\nfunction loftBrep(sections: Shape[], opts?: LoftOptions): Shape {\n if (!Array.isArray(sections) || sections.length === 0) {\n throw new Error('E_LOFT_NO_SECTIONS: loft requires a non-empty array of section shapes')\n }\n // 每截面:wire 直用;面取外环(孔环不参与放样)。\n const wireViews = sections.map((s) => toProfileWireView(s))\n const { ruled = true, startPoint, endPoint } = opts ?? {}\n const kernel = getBrepApi()\n const k = getOcctKernel()\n const wireHandles = wireViews.map((w) => w.wrapped as never)\n\n try {\n let h: unknown\n if (startPoint !== undefined || endPoint !== undefined) {\n const startVertex = startPoint !== undefined ? k.makeVertex(...toVec3(startPoint)) : undefined\n const endVertex = endPoint !== undefined ? k.makeVertex(...toVec3(endPoint)) : undefined\n try {\n h = k.loftWithVertices(wireHandles, true, ruled, startVertex as never, endVertex as never)\n } finally {\n if (startVertex !== undefined) k.release(startVertex)\n if (endVertex !== undefined) k.release(endVertex)\n }\n } else {\n h = k.loft(wireHandles, true, ruled)\n }\n return fromBrep(solidToShape(kernel, h as BrepHandle), { solid: h as BrepHandle })\n } catch (e) {\n const raw = e instanceof Error ? e.message : String(e)\n throw new Error(`E_LOFT_FAILED: loft failed: ${raw}`, { cause: e })\n } finally {\n // 面→外环产出的 wire 是 arena 新句柄(曲线借用不 release)\n for (const w of wireViews) {\n if (!w.borrowed) {\n try { kernel.release(w.wrapped) } catch { /* 已释放 */ }\n }\n }\n }\n}\n\n/**\n * 放样:按给定顺序在截面之间蒙皮生成体。\n * @group 特征\n * @inputs 1\n * @async true\n * @qual ok\n * @name loft\n * @note 平台 op:仅 occt 引擎(BRepOffsetAPI_ThruSections)。截面可为 wire 或面\n * (面取其外环),至少 2 个;`startPoint` / `endPoint` 可做退化到点的蒙皮。\n * 非 occt 引擎执行前报错;brep_mock 不拦截。不做 `loftAll`(数组产物)。\n * @returns Shape 放样体。\n * @param sections - 有序截面集合(wire 或面;面取其外环)。type:Shape[] required:true\n * @param opts - 放样配置(ruled / startPoint / endPoint / tolerance)。type:LoftOptions required:false\n * @example\n * const bottom = cad.profile({ contours: [{ segments: [\n * { kind: 'line', x1: -5, y1: -5, x2: 5, y2: -5 },\n * { kind: 'line', x1: 5, y1: -5, x2: 5, y2: 5 },\n * { kind: 'line', x1: 5, y1: 5, x2: -5, y2: 5 },\n * { kind: 'line', x1: -5, y1: 5, x2: -5, y2: -5 },\n * ] }] })\n * const top = cad.translate(cad.profile({ contours: [{ segments: [\n * { kind: 'line', x1: -3, y1: -3, x2: 3, y2: -3 },\n * { kind: 'line', x1: 3, y1: -3, x2: 3, y2: 3 },\n * { kind: 'line', x1: 3, y1: 3, x2: -3, y2: 3 },\n * { kind: 'line', x1: -3, y1: 3, x2: -3, y2: -3 },\n * ] }] }), [0, 0, 20])\n * const body = await cad.loft([bottom, top])\n */\nexport const loft = defineOp({\n name: 'loft',\n brep(sections: Shape[], opts?: LoftOptions) {\n return loftBrep(sections, opts)\n },\n engines: ['occt'],\n naming: { kind: 'unmodeled', reason: 'lofted-body face vocabulary not defined' } as Provenance,\n})\n"]}
|