@faicad/faijs 0.16.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +4 -5
- package/NOTICE +5 -6
- package/dist/api/api-namespace.d.ts.map +1 -1
- package/dist/api/api-namespace.js +19 -1
- package/dist/api/api-namespace.js.map +1 -1
- package/dist/api/assembly/entities.d.ts +1 -1
- package/dist/api/assembly/entities.d.ts.map +1 -1
- package/dist/api/assembly/entities.js.map +1 -1
- package/dist/api/assembly/joints.d.ts +2 -2
- package/dist/api/assembly/joints.d.ts.map +1 -1
- package/dist/api/assembly/joints.js +2 -2
- package/dist/api/assembly/joints.js.map +1 -1
- package/dist/api/assembly/lower.d.ts +1 -1
- package/dist/api/assembly/lower.d.ts.map +1 -1
- package/dist/api/assembly/lower.js.map +1 -1
- package/dist/api/assembly/pose.d.ts +3 -3
- package/dist/api/assembly/pose.d.ts.map +1 -1
- package/dist/api/assembly/pose.js +1 -1
- package/dist/api/assembly/pose.js.map +1 -1
- package/dist/api/assembly/preview.d.ts +1 -1
- package/dist/api/assembly/preview.d.ts.map +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.map +1 -1
- package/dist/api/assembly/solve.js +3 -3
- package/dist/api/assembly/solve.js.map +1 -1
- package/dist/api/assembly/solvers/assembly-tree.d.ts +98 -0
- package/dist/api/assembly/solvers/assembly-tree.d.ts.map +1 -0
- package/dist/api/assembly/solvers/assembly-tree.js +130 -0
- package/dist/api/assembly/solvers/assembly-tree.js.map +1 -0
- package/dist/api/assembly/solvers/chain-solver.d.ts +27 -0
- package/dist/api/assembly/solvers/chain-solver.d.ts.map +1 -0
- package/dist/api/assembly/solvers/chain-solver.js +330 -0
- package/dist/api/assembly/solvers/chain-solver.js.map +1 -0
- package/dist/api/assembly/solvers/global-solver.js +2 -2
- package/dist/api/assembly/solvers/global-solver.js.map +1 -1
- package/dist/api/assembly/solvers/joints-kinematics.d.ts +308 -0
- package/dist/api/assembly/solvers/joints-kinematics.d.ts.map +1 -0
- package/dist/api/assembly/solvers/joints-kinematics.js +643 -0
- package/dist/api/assembly/solvers/joints-kinematics.js.map +1 -0
- package/dist/api/assembly/solvers/quat.d.ts +35 -0
- package/dist/api/assembly/solvers/quat.d.ts.map +1 -0
- package/dist/api/assembly/solvers/quat.js +84 -0
- package/dist/api/assembly/solvers/quat.js.map +1 -0
- package/dist/api/assembly/solvers/types.d.ts +33 -0
- package/dist/api/assembly/solvers/types.d.ts.map +1 -1
- package/dist/api/assembly/solvers/types.js.map +1 -1
- package/dist/api/boolean.d.ts.map +1 -1
- package/dist/api/boolean.js +3 -4
- package/dist/api/boolean.js.map +1 -1
- package/dist/api/brep-mirror/booleanFns.d.ts +40 -0
- package/dist/api/brep-mirror/booleanFns.d.ts.map +1 -0
- package/dist/api/brep-mirror/booleanFns.js +99 -0
- package/dist/api/brep-mirror/booleanFns.js.map +1 -0
- package/dist/api/brep-mirror/brepHelpers.d.ts +55 -0
- package/dist/api/brep-mirror/brepHelpers.d.ts.map +1 -0
- package/dist/api/brep-mirror/brepHelpers.js +131 -0
- package/dist/api/brep-mirror/brepHelpers.js.map +1 -0
- package/dist/api/brep-mirror/compoundFns.d.ts +47 -0
- package/dist/api/brep-mirror/compoundFns.d.ts.map +1 -0
- package/dist/api/brep-mirror/compoundFns.js +300 -0
- package/dist/api/brep-mirror/compoundFns.js.map +1 -0
- package/dist/api/brep-mirror/healingFns.d.ts +78 -0
- package/dist/api/brep-mirror/healingFns.d.ts.map +1 -0
- package/dist/api/brep-mirror/healingFns.js +294 -0
- package/dist/api/brep-mirror/healingFns.js.map +1 -0
- package/dist/api/brep-mirror/hullFns.d.ts +20 -0
- package/dist/api/brep-mirror/hullFns.d.ts.map +1 -0
- package/dist/api/brep-mirror/hullFns.js +46 -0
- package/dist/api/brep-mirror/hullFns.js.map +1 -0
- package/dist/api/brep-mirror/patternFns.d.ts +43 -0
- package/dist/api/brep-mirror/patternFns.d.ts.map +1 -0
- package/dist/api/brep-mirror/patternFns.js +178 -0
- package/dist/api/brep-mirror/patternFns.js.map +1 -0
- package/dist/api/brep-mirror/primitiveFns.d.ts +42 -0
- package/dist/api/brep-mirror/primitiveFns.d.ts.map +1 -0
- package/dist/api/brep-mirror/primitiveFns.js +104 -0
- package/dist/api/brep-mirror/primitiveFns.js.map +1 -0
- package/dist/api/brep-mirror/roofFns.d.ts +24 -0
- package/dist/api/brep-mirror/roofFns.d.ts.map +1 -0
- package/dist/api/brep-mirror/roofFns.js +229 -0
- package/dist/api/brep-mirror/roofFns.js.map +1 -0
- package/dist/api/brep-mirror/straightSkeleton.d.ts +36 -0
- package/dist/api/brep-mirror/straightSkeleton.d.ts.map +1 -0
- package/dist/api/brep-mirror/straightSkeleton.js +443 -0
- package/dist/api/brep-mirror/straightSkeleton.js.map +1 -0
- package/dist/api/brep-mirror/sweepFns.d.ts +55 -0
- package/dist/api/brep-mirror/sweepFns.d.ts.map +1 -0
- package/dist/api/brep-mirror/sweepFns.js +200 -0
- package/dist/api/brep-mirror/sweepFns.js.map +1 -0
- package/dist/api/brep-mirror/threadFns.d.ts +15 -0
- package/dist/api/brep-mirror/threadFns.d.ts.map +1 -1
- package/dist/api/brep-mirror/threadFns.js +37 -2
- package/dist/api/brep-mirror/threadFns.js.map +1 -1
- package/dist/api/brep-mirror/topologyFns.d.ts +74 -0
- package/dist/api/brep-mirror/topologyFns.d.ts.map +1 -0
- package/dist/api/brep-mirror/topologyFns.js +273 -0
- package/dist/api/brep-mirror/topologyFns.js.map +1 -0
- package/dist/api/brep-topology.d.ts +190 -0
- package/dist/api/brep-topology.d.ts.map +1 -0
- package/dist/api/brep-topology.js +337 -0
- package/dist/api/brep-topology.js.map +1 -0
- package/dist/api/brepjs-compat/constants.d.ts +11 -0
- package/dist/api/brepjs-compat/constants.d.ts.map +1 -0
- package/dist/api/brepjs-compat/constants.js +11 -0
- package/dist/api/brepjs-compat/constants.js.map +1 -0
- package/dist/api/brepjs-compat/index.d.ts +19 -232
- package/dist/api/brepjs-compat/index.d.ts.map +1 -1
- package/dist/api/brepjs-compat/index.js +19 -286
- package/dist/api/brepjs-compat/index.js.map +1 -1
- package/dist/api/brepjs-compat/planeOps.d.ts +98 -0
- package/dist/api/brepjs-compat/planeOps.d.ts.map +1 -0
- package/dist/api/brepjs-compat/planeOps.js +170 -0
- package/dist/api/brepjs-compat/planeOps.js.map +1 -0
- package/dist/api/brepjs-compat/planeTypes.d.ts +24 -0
- package/dist/api/brepjs-compat/planeTypes.d.ts.map +1 -0
- package/dist/api/brepjs-compat/planeTypes.js +8 -0
- package/dist/api/brepjs-compat/planeTypes.js.map +1 -0
- package/dist/api/brepjs-compat/types.d.ts +64 -0
- package/dist/api/brepjs-compat/types.d.ts.map +1 -0
- package/dist/api/brepjs-compat/types.js +48 -0
- package/dist/api/brepjs-compat/types.js.map +1 -0
- package/dist/api/brepjs-compat/vecOps.d.ts +124 -0
- package/dist/api/brepjs-compat/vecOps.d.ts.map +1 -0
- package/dist/api/brepjs-compat/vecOps.js +202 -0
- package/dist/api/brepjs-compat/vecOps.js.map +1 -0
- package/dist/api/chamfer.d.ts +5 -0
- package/dist/api/chamfer.d.ts.map +1 -1
- package/dist/api/chamfer.js +13 -8
- package/dist/api/chamfer.js.map +1 -1
- package/dist/api/compound-geom.d.ts.map +1 -1
- package/dist/api/compound-geom.js +8 -2
- package/dist/api/compound-geom.js.map +1 -1
- package/dist/api/draft.d.ts +69 -0
- package/dist/api/draft.d.ts.map +1 -0
- package/dist/api/draft.js +109 -0
- package/dist/api/draft.js.map +1 -0
- package/dist/api/edge-ref.d.ts.map +1 -1
- package/dist/api/edge-ref.js +2 -2
- package/dist/api/edge-ref.js.map +1 -1
- package/dist/api/engrave.d.ts.map +1 -1
- package/dist/api/engrave.js +2 -3
- package/dist/api/engrave.js.map +1 -1
- package/dist/api/extrude.d.ts.map +1 -1
- package/dist/api/extrude.js +28 -13
- package/dist/api/extrude.js.map +1 -1
- package/dist/api/face-ref.d.ts.map +1 -1
- package/dist/api/face-ref.js +2 -2
- package/dist/api/face-ref.js.map +1 -1
- package/dist/api/feature-repair.d.ts +137 -0
- package/dist/api/feature-repair.d.ts.map +1 -0
- package/dist/api/feature-repair.js +221 -0
- package/dist/api/feature-repair.js.map +1 -0
- package/dist/api/fillet-variable.d.ts +35 -0
- package/dist/api/fillet-variable.d.ts.map +1 -0
- package/dist/api/fillet-variable.js +71 -0
- package/dist/api/fillet-variable.js.map +1 -0
- package/dist/api/fillet.d.ts +3 -0
- package/dist/api/fillet.d.ts.map +1 -1
- package/dist/api/fillet.js +7 -4
- package/dist/api/fillet.js.map +1 -1
- package/dist/api/generated/2d.d.ts +1 -13
- package/dist/api/generated/2d.d.ts.map +1 -1
- package/dist/api/generated/2d.js +6 -1
- package/dist/api/generated/2d.js.map +1 -1
- package/dist/api/generated/brepjs/index.d.ts +298 -298
- package/dist/api/generated/brepjs/index.d.ts.map +1 -1
- package/dist/api/generated/brepjs/index.js +183 -183
- package/dist/api/generated/brepjs/index.js.map +1 -1
- package/dist/api/generated/core.d.ts +3 -123
- package/dist/api/generated/core.d.ts.map +1 -1
- package/dist/api/generated/core.js +2 -81
- package/dist/api/generated/core.js.map +1 -1
- package/dist/api/generated/gear.d.ts +1 -15
- package/dist/api/generated/gear.d.ts.map +1 -1
- package/dist/api/generated/gear.js +6 -3
- package/dist/api/generated/gear.js.map +1 -1
- package/dist/api/generated/io.d.ts +1 -13
- package/dist/api/generated/io.d.ts.map +1 -1
- package/dist/api/generated/io.js +6 -1
- package/dist/api/generated/io.js.map +1 -1
- package/dist/api/generated/kernel.d.ts +1 -39
- package/dist/api/generated/kernel.d.ts.map +1 -1
- package/dist/api/generated/kernel.js +6 -4
- package/dist/api/generated/kernel.js.map +1 -1
- package/dist/api/generated/measurement.d.ts +53 -97
- package/dist/api/generated/measurement.d.ts.map +1 -1
- package/dist/api/generated/measurement.js +48 -143
- package/dist/api/generated/measurement.js.map +1 -1
- package/dist/api/generated/ns.d.ts +1 -10
- package/dist/api/generated/ns.d.ts.map +1 -1
- package/dist/api/generated/ns.js +2 -10
- package/dist/api/generated/ns.js.map +1 -1
- package/dist/api/generated/operations.d.ts +65 -110
- package/dist/api/generated/operations.d.ts.map +1 -1
- package/dist/api/generated/operations.js +132 -80
- package/dist/api/generated/operations.js.map +1 -1
- package/dist/api/generated/projection.d.ts +1 -8
- package/dist/api/generated/projection.d.ts.map +1 -1
- package/dist/api/generated/projection.js +6 -4
- package/dist/api/generated/projection.js.map +1 -1
- package/dist/api/generated/query.d.ts +1 -9
- package/dist/api/generated/query.d.ts.map +1 -1
- package/dist/api/generated/query.js +6 -1
- package/dist/api/generated/query.js.map +1 -1
- package/dist/api/generated/script-face-manifest.d.ts +2 -0
- package/dist/api/generated/script-face-manifest.d.ts.map +1 -1
- package/dist/api/generated/script-face-manifest.js +34 -22
- package/dist/api/generated/script-face-manifest.js.map +1 -1
- package/dist/api/generated/script-face.d.ts +52 -27
- package/dist/api/generated/script-face.d.ts.map +1 -1
- package/dist/api/generated/script-face.js +18 -4
- package/dist/api/generated/script-face.js.map +1 -1
- package/dist/api/generated/sketching.d.ts +4 -7
- package/dist/api/generated/sketching.d.ts.map +1 -1
- package/dist/api/generated/sketching.js +10 -8
- package/dist/api/generated/sketching.js.map +1 -1
- package/dist/api/generated/text.d.ts +1 -6
- package/dist/api/generated/text.d.ts.map +1 -1
- package/dist/api/generated/text.js +6 -3
- package/dist/api/generated/text.js.map +1 -1
- package/dist/api/generated/topology.d.ts +77 -175
- package/dist/api/generated/topology.d.ts.map +1 -1
- package/dist/api/generated/topology.js +172 -131
- package/dist/api/generated/topology.js.map +1 -1
- package/dist/api/geom.d.ts.map +1 -1
- package/dist/api/geom.js +2 -2
- package/dist/api/geom.js.map +1 -1
- package/dist/api/helix.d.ts +51 -0
- package/dist/api/helix.d.ts.map +1 -0
- package/dist/api/helix.js +63 -0
- package/dist/api/helix.js.map +1 -0
- package/dist/api/import-step.d.ts.map +1 -1
- package/dist/api/import-step.js +6 -2
- package/dist/api/import-step.js.map +1 -1
- package/dist/api/index.d.ts +18 -5
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +29 -12
- package/dist/api/index.js.map +1 -1
- package/dist/api/internal/compat-op.d.ts +10 -0
- package/dist/api/internal/compat-op.d.ts.map +1 -1
- package/dist/api/internal/compat-op.js +9 -3
- package/dist/api/internal/compat-op.js.map +1 -1
- package/dist/api/internal/compat-projection.d.ts +4 -4
- package/dist/api/internal/compat-projection.js +7 -7
- package/dist/api/internal/compat-projection.js.map +1 -1
- package/dist/api/internal/l3-bridge.d.ts +75 -42
- package/dist/api/internal/l3-bridge.d.ts.map +1 -1
- package/dist/api/internal/l3-bridge.js +105 -50
- package/dist/api/internal/l3-bridge.js.map +1 -1
- package/dist/api/internal/profile-wire.d.ts +31 -0
- package/dist/api/internal/profile-wire.d.ts.map +1 -0
- package/dist/api/internal/profile-wire.js +37 -0
- package/dist/api/internal/profile-wire.js.map +1 -0
- package/dist/api/internal/replica-role-table.js +2 -2
- package/dist/api/internal/replica-role-table.js.map +1 -1
- package/dist/api/loft.d.ts +66 -0
- package/dist/api/loft.d.ts.map +1 -0
- package/dist/api/loft.js +111 -0
- package/dist/api/loft.js.map +1 -0
- package/dist/api/measurement/index.d.ts +51 -0
- package/dist/api/measurement/index.d.ts.map +1 -0
- package/dist/api/measurement/index.js +71 -0
- package/dist/api/measurement/index.js.map +1 -0
- package/dist/api/occt-kernel-bridge.d.ts +5 -8
- package/dist/api/occt-kernel-bridge.d.ts.map +1 -1
- package/dist/api/occt-kernel-bridge.js +18 -14
- package/dist/api/occt-kernel-bridge.js.map +1 -1
- package/dist/api/pattern.d.ts.map +1 -1
- package/dist/api/pattern.js +3 -4
- package/dist/api/pattern.js.map +1 -1
- package/dist/api/place.d.ts.map +1 -1
- package/dist/api/place.js +2 -4
- package/dist/api/place.js.map +1 -1
- package/dist/api/primitives.d.ts.map +1 -1
- package/dist/api/primitives.js +3 -4
- package/dist/api/primitives.js.map +1 -1
- package/dist/api/replicate.d.ts +28 -1
- package/dist/api/replicate.d.ts.map +1 -1
- package/dist/api/replicate.js +29 -19
- package/dist/api/replicate.js.map +1 -1
- package/dist/api/result.d.ts +6 -11
- package/dist/api/result.d.ts.map +1 -1
- package/dist/api/result.js +6 -11
- package/dist/api/result.js.map +1 -1
- package/dist/api/revolve.d.ts.map +1 -1
- package/dist/api/revolve.js +15 -14
- package/dist/api/revolve.js.map +1 -1
- package/dist/api/screw.d.ts +3 -0
- package/dist/api/screw.d.ts.map +1 -1
- package/dist/api/screw.js +9 -4
- package/dist/api/screw.js.map +1 -1
- package/dist/api/sdf.d.ts +1 -1
- package/dist/api/section-by-plane.d.ts +42 -0
- package/dist/api/section-by-plane.d.ts.map +1 -0
- package/dist/api/section-by-plane.js +61 -0
- package/dist/api/section-by-plane.js.map +1 -0
- package/dist/api/shell.d.ts +45 -0
- package/dist/api/shell.d.ts.map +1 -0
- package/dist/api/shell.js +73 -0
- package/dist/api/shell.js.map +1 -0
- package/dist/api/sketch.d.ts +8 -1
- package/dist/api/sketch.d.ts.map +1 -1
- package/dist/api/sketch.js +12 -7
- package/dist/api/sketch.js.map +1 -1
- package/dist/api/split-by-plane.d.ts +41 -0
- package/dist/api/split-by-plane.d.ts.map +1 -0
- package/dist/api/split-by-plane.js +60 -0
- package/dist/api/split-by-plane.js.map +1 -0
- package/dist/api/split.d.ts +6 -1
- package/dist/api/split.d.ts.map +1 -1
- package/dist/api/split.js +23 -9
- package/dist/api/split.js.map +1 -1
- package/dist/api/surface/arg-spec.d.ts +22 -0
- package/dist/api/surface/arg-spec.d.ts.map +1 -1
- package/dist/api/surface/arg-spec.js +723 -476
- package/dist/api/surface/arg-spec.js.map +1 -1
- package/dist/api/sweep.d.ts +55 -0
- package/dist/api/sweep.d.ts.map +1 -0
- package/dist/api/sweep.js +86 -0
- package/dist/api/sweep.js.map +1 -0
- package/dist/api/thicken.d.ts +36 -0
- package/dist/api/thicken.d.ts.map +1 -0
- package/dist/api/thicken.js +55 -0
- package/dist/api/thicken.js.map +1 -0
- package/dist/api/transform.d.ts +8 -0
- package/dist/api/transform.d.ts.map +1 -1
- package/dist/api/transform.js +15 -4
- package/dist/api/transform.js.map +1 -1
- package/dist/api/view/cameraFns.d.ts +48 -0
- package/dist/api/view/cameraFns.d.ts.map +1 -0
- package/dist/api/view/cameraFns.js +75 -0
- package/dist/api/view/cameraFns.js.map +1 -0
- package/dist/api/view/projectionPlanes.d.ts +25 -0
- package/dist/api/view/projectionPlanes.d.ts.map +1 -0
- package/dist/api/view/projectionPlanes.js +30 -0
- package/dist/api/view/projectionPlanes.js.map +1 -0
- package/dist/api/view/view-camera.d.ts +2 -2
- package/dist/api/view/view-camera.d.ts.map +1 -1
- package/dist/api/view/view-camera.js +3 -3
- package/dist/api/view/view-camera.js.map +1 -1
- package/dist/api/view/view-projection.d.ts +9 -6
- package/dist/api/view/view-projection.d.ts.map +1 -1
- package/dist/api/view/view-projection.js +132 -65
- package/dist/api/view/view-projection.js.map +1 -1
- package/dist/api/wire.d.ts +45 -0
- package/dist/api/wire.d.ts.map +1 -0
- package/dist/api/wire.js +96 -0
- package/dist/api/wire.js.map +1 -0
- package/dist/boolean/creased-normals.d.ts +50 -0
- package/dist/boolean/creased-normals.d.ts.map +1 -0
- package/dist/boolean/creased-normals.js +114 -0
- package/dist/boolean/creased-normals.js.map +1 -0
- package/dist/boolean/deriveNormals.d.ts +4 -1
- package/dist/boolean/deriveNormals.d.ts.map +1 -1
- package/dist/boolean/deriveNormals.js +5 -2
- package/dist/boolean/deriveNormals.js.map +1 -1
- package/dist/brep/brep-ops.d.ts +6 -0
- package/dist/brep/brep-ops.d.ts.map +1 -1
- package/dist/brep/brep-ops.js +11 -2
- package/dist/brep/brep-ops.js.map +1 -1
- package/dist/brep/brep-topology.d.ts +4 -0
- package/dist/brep/brep-topology.d.ts.map +1 -1
- package/dist/brep/brep-topology.js +4 -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 +79 -59
- package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
- package/dist/brep/engine/adapters/brepkit.d.ts.map +1 -1
- package/dist/brep/engine/adapters/brepkit.js +7 -1
- package/dist/brep/engine/adapters/brepkit.js.map +1 -1
- package/dist/brep/engine/adapters/occt.d.ts +15 -7
- package/dist/brep/engine/adapters/occt.d.ts.map +1 -1
- package/dist/brep/engine/adapters/occt.js +52 -167
- package/dist/brep/engine/adapters/occt.js.map +1 -1
- package/dist/brep/engine/primitives.d.ts +93 -130
- package/dist/brep/engine/primitives.d.ts.map +1 -1
- package/dist/brep/engine/primitives.js +9 -7
- package/dist/brep/engine/primitives.js.map +1 -1
- package/dist/brep/engine/types.d.ts +14 -1
- package/dist/brep/engine/types.d.ts.map +1 -1
- package/dist/brep/engine/types.js +11 -1
- package/dist/brep/engine/types.js.map +1 -1
- package/dist/brep/export/step.d.ts +3 -0
- package/dist/brep/export/step.d.ts.map +1 -1
- package/dist/brep/export/step.js +7 -1
- package/dist/brep/export/step.js.map +1 -1
- package/dist/brep/face-evolution.d.ts +8 -0
- package/dist/brep/face-evolution.d.ts.map +1 -1
- package/dist/brep/face-evolution.js +15 -3
- package/dist/brep/face-evolution.js.map +1 -1
- package/dist/brep/handle-bridge.d.ts +20 -2
- package/dist/brep/handle-bridge.d.ts.map +1 -1
- package/dist/brep/handle-bridge.js +25 -2
- package/dist/brep/handle-bridge.js.map +1 -1
- package/dist/brepkit-kernel/brepkitKernel.d.ts +25 -5
- package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
- package/dist/brepkit-kernel/brepkitKernel.js +336 -144
- package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
- package/dist/cad-runtime/admit-compat-lib.d.ts +6 -1
- package/dist/cad-runtime/admit-compat-lib.d.ts.map +1 -1
- package/dist/cad-runtime/admit-compat-lib.js +5 -1
- package/dist/cad-runtime/admit-compat-lib.js.map +1 -1
- package/dist/cad-runtime/backend-dispatch.d.ts +9 -3
- package/dist/cad-runtime/backend-dispatch.d.ts.map +1 -1
- package/dist/cad-runtime/backend-dispatch.js +32 -2
- package/dist/cad-runtime/backend-dispatch.js.map +1 -1
- package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
- package/dist/cad-runtime/direct-executor.js +8 -2
- package/dist/cad-runtime/direct-executor.js.map +1 -1
- package/dist/cad-runtime/runtime.d.ts +3 -0
- package/dist/cad-runtime/runtime.d.ts.map +1 -1
- package/dist/cad-runtime/runtime.js +3 -1
- package/dist/cad-runtime/runtime.js.map +1 -1
- package/dist/define-op.d.ts +18 -2
- package/dist/define-op.d.ts.map +1 -1
- package/dist/define-op.js +29 -1
- package/dist/define-op.js.map +1 -1
- package/dist/env-agnostic.d.ts +3 -0
- package/dist/env-agnostic.d.ts.map +1 -1
- package/dist/env-agnostic.js +7 -0
- package/dist/env-agnostic.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/dist/lang/symbol-table.generated.d.ts +28 -0
- package/dist/lang/symbol-table.generated.d.ts.map +1 -1
- package/dist/lang/symbol-table.generated.js +29 -1
- package/dist/lang/symbol-table.generated.js.map +1 -1
- package/dist/occt-kernel/highLevelApi.d.ts.map +1 -1
- package/dist/occt-kernel/highLevelApi.js +6 -3
- package/dist/occt-kernel/highLevelApi.js.map +1 -1
- package/dist/occt-kernel/hullGeometry.d.ts +31 -0
- package/dist/occt-kernel/hullGeometry.d.ts.map +1 -0
- package/dist/occt-kernel/hullGeometry.js +319 -0
- package/dist/occt-kernel/hullGeometry.js.map +1 -0
- package/dist/occt-kernel/hullOps.d.ts +24 -0
- package/dist/occt-kernel/hullOps.d.ts.map +1 -0
- package/dist/occt-kernel/hullOps.js +52 -0
- package/dist/occt-kernel/hullOps.js.map +1 -0
- package/dist/occt-kernel/occt-primitives.d.ts +14 -0
- package/dist/occt-kernel/occt-primitives.d.ts.map +1 -0
- package/dist/occt-kernel/occt-primitives.js +351 -0
- package/dist/occt-kernel/occt-primitives.js.map +1 -0
- package/dist/occt-kernel/occtKernel.d.ts +14 -6
- package/dist/occt-kernel/occtKernel.d.ts.map +1 -1
- package/dist/occt-kernel/occtKernel.js +11 -3
- package/dist/occt-kernel/occtKernel.js.map +1 -1
- package/dist/occt-kernel/topologyExt.js +2 -2
- package/dist/occt-kernel/topologyExt.js.map +1 -1
- package/dist/primitives/brep-primitives.d.ts +4 -0
- package/dist/primitives/brep-primitives.d.ts.map +1 -1
- package/dist/primitives/brep-primitives.js +4 -0
- package/dist/primitives/brep-primitives.js.map +1 -1
- package/dist/result/bug.d.ts +22 -0
- package/dist/result/bug.d.ts.map +1 -0
- package/dist/result/bug.js +28 -0
- package/dist/result/bug.js.map +1 -0
- package/dist/result/errors.d.ts +270 -0
- package/dist/result/errors.d.ts.map +1 -0
- package/dist/result/errors.js +317 -0
- package/dist/result/errors.js.map +1 -0
- package/dist/result/kernelErrorTranslation.d.ts +21 -0
- package/dist/result/kernelErrorTranslation.d.ts.map +1 -0
- package/dist/result/kernelErrorTranslation.js +102 -0
- package/dist/result/kernelErrorTranslation.js.map +1 -0
- package/dist/result/result.d.ts +213 -0
- package/dist/result/result.d.ts.map +1 -0
- package/dist/result/result.js +336 -0
- package/dist/result/result.js.map +1 -0
- package/dist/result/vec3.d.ts +12 -0
- package/dist/result/vec3.d.ts.map +1 -0
- package/dist/result/vec3.js +14 -0
- package/dist/result/vec3.js.map +1 -0
- package/dist/runtime-state.d.ts +9 -0
- package/dist/runtime-state.d.ts.map +1 -1
- package/dist/runtime-state.js.map +1 -1
- package/dist/sdk.d.ts +3 -1
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +2 -1
- package/dist/sdk.js.map +1 -1
- package/dist/shape.d.ts +43 -1
- package/dist/shape.d.ts.map +1 -1
- package/dist/shape.js +57 -1
- package/dist/shape.js.map +1 -1
- package/dist/topology/naming/geom-hint.js +1 -1
- package/dist/topology/naming/geom-hint.js.map +1 -1
- package/dist/topology/naming/score.js +1 -1
- package/dist/topology/naming/score.js.map +1 -1
- package/package.json +6 -16
|
@@ -1,42 +1,52 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* engine/adapters/occt — OCCT BREP 引擎适配器(槽位 1 的默认实现)
|
|
3
3
|
*
|
|
4
|
+
* 本文件是「occt 引擎实现」的注册入口:把 `createOcctPrimitives()`(occt-kernel/
|
|
5
|
+
* occt-primitives.ts,L1 契约 `BrepEngineApi` 的 occt 显式实现)注册进引擎注册表。
|
|
6
|
+
* 业务层(runtime/brep ops/stdlib)只经注册表取引擎,不直接 import occt 初始化
|
|
7
|
+
* 函数——引擎本体可整体替换(换一个适配器即换引擎)。
|
|
4
8
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
9
|
+
* Phase 3(docs/plans/2026-09-24-brep-engine-api-narrowing-native-access.md):
|
|
10
|
+
* 本文件不再做任何猴子补丁(旧版在 occt-wasm 单例上覆写 pattern 三方法与 33 个
|
|
11
|
+
* 登记方法——全部移入 `createOcctPrimitives` 的显式对象字面量)。occt-wasm 类型
|
|
12
|
+
* 耦合只存在于 occt-kernel/(A1 允许的唯一耦合区);本文件不接触 occt-wasm 类型。
|
|
8
13
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* 接触 occt-wasm 类型。
|
|
14
|
+
* 平台独有能力(loft 族、工具实体 section/split、L1 三员之外的 *WithHistory、
|
|
15
|
+
* XCAF 等)不在 L1 契约里——平台代码经原生面 `getOcctKernel()`(D3)访问。
|
|
12
16
|
*/
|
|
13
17
|
import { registerBrepEngine, hasBrepEngine, isBrepEngineRegistered } from '../registry.js';
|
|
14
|
-
import {
|
|
15
|
-
import { initOcctWasm } from '../../../occt-kernel/occtKernel.js';
|
|
16
|
-
import { injectCurrentBrepEngineAsKernel } from '../../../api/occt-kernel-bridge.js';
|
|
18
|
+
import { createOcctPrimitives } from '../../../occt-kernel/occt-primitives.js';
|
|
17
19
|
/** OCCT 引擎注册 id(默认 BREP 引擎;首个注册自动成为默认)。 */
|
|
18
20
|
export const OCCT_BREP_ENGINE_ID = 'occt';
|
|
19
|
-
// Phase 2 幂等护栏:occt-wasm 是进程级单例,registerOcctBrepEngine 可能被多次调用
|
|
20
|
-
// (测试重置注册表后重注册)。pattern 三方法只覆写一次——重复覆写会捕获到上一轮
|
|
21
|
-
// 覆写版(返回 BrepHandle[]),把它当 compound 拆 → getSubShapes: Invalid shape ID: 0。
|
|
22
|
-
let occtPatternWired = false;
|
|
23
21
|
/**
|
|
24
22
|
* OCCT 实际提供的 `*WithHistory` 核函数名(Phase 0.2:逐核函数如实声明)。
|
|
25
23
|
*
|
|
26
|
-
* 12 个全部由 `occt-wasm@3.8.4` 提供(`dist/index.d.ts` 的 `*WithHistory`
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
24
|
+
* 12 个全部由 `occt-wasm@3.8.4` 提供(`dist/index.d.ts` 的 `*WithHistory` 声明)。
|
|
25
|
+
* L1 契约只含前三员 + filletWithHistory(双方都有对齐实现);其余 8 个是 occt
|
|
26
|
+
* 平台面能力(brepkit 无对应 API),存在性由本能力表如实声明,op 侧用
|
|
27
|
+
* `engines: ['occt']`(Phase 5 D11)表达平台归属。
|
|
30
28
|
*/
|
|
29
|
+
const OCCT_EVOLUTION_KINDS = [
|
|
30
|
+
'fuseWithHistory',
|
|
31
|
+
'cutWithHistory',
|
|
32
|
+
'intersectWithHistory',
|
|
33
|
+
'filletWithHistory',
|
|
34
|
+
'chamferWithHistory',
|
|
35
|
+
'translateWithHistory',
|
|
36
|
+
'rotateWithHistory',
|
|
37
|
+
'mirrorWithHistory',
|
|
38
|
+
'scaleWithHistory',
|
|
39
|
+
'shellWithHistory',
|
|
40
|
+
'offsetWithHistory',
|
|
41
|
+
'thickenWithHistory',
|
|
42
|
+
];
|
|
31
43
|
/**
|
|
32
|
-
* 非演化内核方法全集(BrepMethodKind
|
|
33
|
-
* occtWasmAdapter 提供全部方法(occt-kernel/initOcctWasm 包装同一实例),
|
|
34
|
-
* 逐核如实声明(Phase 1,P2 缺口补齐)。
|
|
44
|
+
* 非演化内核方法全集(BrepMethodKind)——逐核如实声明(Phase 1,P2 缺口补齐)。
|
|
35
45
|
*
|
|
36
46
|
* ⚠️ Phase 2 修正(能力声明=可执行语义):
|
|
37
|
-
* - 保留 `gridPattern`:occt-wasm 无原生 gridPattern
|
|
38
|
-
*
|
|
39
|
-
*
|
|
47
|
+
* - 保留 `gridPattern`:occt-wasm 无原生 gridPattern,但适配器有组合实现
|
|
48
|
+
* (嵌套 linearPattern + fuseAll,见 occt-primitives.ts)——occt 下
|
|
49
|
+
* gridPattern op 可执行,声明成立;
|
|
40
50
|
* - 移除 `rectangularPattern`:occt-wasm 无此内核方法,vendored rectangularPattern
|
|
41
51
|
* 是纯 JS 组合(compoundOpsFns.ts translate+fuseAll,不调内核)——无 op 依赖
|
|
42
52
|
* 该能力名,声明即虚假(capability-map 实证 36 op 无一依赖)。
|
|
@@ -87,7 +97,6 @@ const OCCT_METHOD_KINDS = [
|
|
|
87
97
|
'removeDegenerateEdges',
|
|
88
98
|
'simplify',
|
|
89
99
|
'split',
|
|
90
|
-
'boundingBox',
|
|
91
100
|
'curveParameters',
|
|
92
101
|
'curvePointAtParam',
|
|
93
102
|
'curveTangent',
|
|
@@ -100,6 +109,13 @@ const OCCT_METHOD_KINDS = [
|
|
|
100
109
|
'surfaceNormal',
|
|
101
110
|
'surfaceType',
|
|
102
111
|
'uvBounds',
|
|
112
|
+
// Phase 5(D5):测量族能力名统一为 L1 中立名(getBoundingBox/getVolume/...)——
|
|
113
|
+
// vendored 面按 brepjs 自身命名(volume/area/length),core 能力表用 L1 中立名。
|
|
114
|
+
'getBoundingBox',
|
|
115
|
+
'getVolume',
|
|
116
|
+
'getSurfaceArea',
|
|
117
|
+
'getLength',
|
|
118
|
+
'getCenterOfMass',
|
|
103
119
|
'composeTransform',
|
|
104
120
|
'applyComposedTransformWithHistory',
|
|
105
121
|
'generalTransformNonOrthogonal',
|
|
@@ -111,157 +127,26 @@ const OCCT_METHOD_KINDS = [
|
|
|
111
127
|
'dispose',
|
|
112
128
|
'downcast',
|
|
113
129
|
'hashCode',
|
|
114
|
-
//
|
|
115
|
-
// brepkit 无——chamfer op 静态判定执行前报错)
|
|
130
|
+
// chamfer/fillet 基础方法(directEdit 族逐核真名;occt-wasm 原生提供)
|
|
116
131
|
'chamfer',
|
|
117
132
|
'chamferDistAngle',
|
|
118
133
|
'fillet',
|
|
119
134
|
'filletVariable',
|
|
120
135
|
];
|
|
121
|
-
const OCCT_EVOLUTION_KINDS = [
|
|
122
|
-
'fuseWithHistory',
|
|
123
|
-
'cutWithHistory',
|
|
124
|
-
'intersectWithHistory',
|
|
125
|
-
'filletWithHistory',
|
|
126
|
-
'chamferWithHistory',
|
|
127
|
-
'translateWithHistory',
|
|
128
|
-
'rotateWithHistory',
|
|
129
|
-
'mirrorWithHistory',
|
|
130
|
-
'scaleWithHistory',
|
|
131
|
-
'shellWithHistory',
|
|
132
|
-
'offsetWithHistory',
|
|
133
|
-
'thickenWithHistory',
|
|
134
|
-
];
|
|
135
136
|
/**
|
|
136
|
-
* 装配 OCCT BREP
|
|
137
|
+
* 装配 OCCT BREP 引擎(宿主启动时调用一次,幂等)。
|
|
138
|
+
*
|
|
139
|
+
* 预初始化 `createOcctPrimitives()`(内部 await initOcctWasm):wasm 加载完成后
|
|
140
|
+
* 立即注册——保证注册返回后内核单例已就绪。幂等:已注册(含运行时默认装配或
|
|
141
|
+
* 宿主先行注册)则跳过注册,仅确保 wasm 预初始化。
|
|
137
142
|
*/
|
|
138
143
|
export async function registerOcctBrepEngine() {
|
|
139
|
-
const primitives = await
|
|
144
|
+
const primitives = await createOcctPrimitives();
|
|
140
145
|
if (isBrepEngineRegistered(OCCT_BREP_ENGINE_ID))
|
|
141
146
|
return;
|
|
142
|
-
// Phase 2:occt-wasm 原生 linearPattern/circularPattern 返回 compound(含全部副本),
|
|
143
|
-
// BrepEngineApi 契约要求 BrepHandle[](各份副本)→ 在此拆 compound(getSubShapes)。
|
|
144
|
-
// gridPattern 无原生内核函数 → 组合实现(嵌套 linearPattern + fuseAll,与 vendored
|
|
145
|
-
// 回退路径同构);拆出的子句柄由调用方 release,compound 容器拆完即释放。
|
|
146
|
-
// ⚠️ initOcctWasm 的返回类型在 occtKernel.ts 被硬断言为 BrepEngineApi(linearPattern
|
|
147
|
-
// 签名 BrepHandle[]),但运行时 occt-wasm 的 linearPattern/circularPattern 返回**单个
|
|
148
|
-
// compound 句柄**(含全部副本)——类型撒谎。此处以运行时原始形态(OcctPatternRaw)
|
|
149
|
-
// 调用,再经 getSubShapes 拆成数组(与 vendored transformOps.linearPattern 同构)。
|
|
150
|
-
// 不能使用对象展开({ ...primitives }):OcctKernel 的方法在原型上(class 实例),
|
|
151
|
-
// 展开只拷自有属性 → makeBoxFromCorners 等全部原型方法丢失(consume-input.test 实证)。
|
|
152
|
-
// 直接覆盖单例实例的 pattern 三方法(occt-wasm 单例,无共享状态风险)。
|
|
153
|
-
// ⚠️ 覆盖前必须先捕获原生 linearPattern/circularPattern:覆盖后 raw.linearPattern
|
|
154
|
-
// 会指向 occtApi.linearPattern 自身 → 无限递归(Maximum call stack size exceeded 实证)。
|
|
155
|
-
const raw = primitives;
|
|
156
|
-
// ⚠️ 幂等护栏:occt-wasm 是进程级单例,宿主可能多次调用本注册(测试重置注册表后
|
|
157
|
-
// 重注册)。重复覆写会捕获到上一轮覆写版(返回 BrepHandle[]),把它当 compound 拆
|
|
158
|
-
// → `getSubShapes: Invalid shape ID: 0`(engine-switch-p2 parity 实证)。只覆写一次,
|
|
159
|
-
// raw 与 occtApi 指向同一单例,后续注册直接复用覆写结果。
|
|
160
|
-
if (!occtPatternWired) {
|
|
161
|
-
// ⚠️ 覆盖前必须先捕获原生 linearPattern/circularPattern:覆盖后 raw.linearPattern
|
|
162
|
-
// 会指向 occtApi.linearPattern 自身 → 无限递归(Maximum call stack size exceeded 实证)。
|
|
163
|
-
const nativeLinearPattern = raw.linearPattern.bind(raw);
|
|
164
|
-
const nativeCircularPattern = raw.circularPattern.bind(raw);
|
|
165
|
-
const occtApi = primitives;
|
|
166
|
-
occtApi.linearPattern = (shape, direction, spacing, count) => {
|
|
167
|
-
const compound = nativeLinearPattern(shape, direction, spacing, count);
|
|
168
|
-
const parts = raw.getSubShapes(compound, 'solid');
|
|
169
|
-
raw.release(compound);
|
|
170
|
-
return parts.map((h) => h);
|
|
171
|
-
};
|
|
172
|
-
occtApi.circularPattern = (shape, center, axis, angleStep, count) => {
|
|
173
|
-
const compound = nativeCircularPattern(shape, center, axis, angleStep, count);
|
|
174
|
-
const parts = raw.getSubShapes(compound, 'solid');
|
|
175
|
-
raw.release(compound);
|
|
176
|
-
return parts.map((h) => h);
|
|
177
|
-
};
|
|
178
|
-
occtApi.gridPattern = (shape, directionX, directionY, spacingX, spacingY, countX, countY) => {
|
|
179
|
-
// ⚠️ 内部必须用捕获的 nativeLinearPattern:此时 raw.linearPattern 已被覆写为
|
|
180
|
-
// BrepHandle[] 语义,误用会把数组当 compound 拆(同上红线实证)。
|
|
181
|
-
const colCompound = nativeLinearPattern(shape, directionX, spacingX, countX);
|
|
182
|
-
const cols = raw.getSubShapes(colCompound, 'solid');
|
|
183
|
-
raw.release(colCompound);
|
|
184
|
-
const all = [];
|
|
185
|
-
try {
|
|
186
|
-
for (const c of cols) {
|
|
187
|
-
const rowCompound = nativeLinearPattern(c, directionY, spacingY, countY);
|
|
188
|
-
try {
|
|
189
|
-
all.push(...raw.getSubShapes(rowCompound, 'solid'));
|
|
190
|
-
}
|
|
191
|
-
finally {
|
|
192
|
-
raw.release(rowCompound);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
finally {
|
|
197
|
-
for (const c of cols)
|
|
198
|
-
raw.release(c);
|
|
199
|
-
}
|
|
200
|
-
return raw.fuseAll(all);
|
|
201
|
-
};
|
|
202
|
-
// ═══ Phase 3:能力表 33 个登记方法接线(capability-map 64 方法收口) ═══
|
|
203
|
-
// 原则:能力表声明了(OCCT_METHOD_KINDS 含全部 33)→ 实例必须可实现,否则静态
|
|
204
|
-
// 判定放行后运行时崩(红线)。18 个 occt-wasm 原生导出直接绑定(签名与
|
|
205
|
-
// BrepEngineApi 一致:Vec3=BrepVec3、ShapeHandle=BrepHandle);15 个组合方法
|
|
206
|
-
// (occt-wasm 无原生导出)经 vendored OcctWasmAdapter 组合面代理 + 形态转换。
|
|
207
|
-
// 只接线一次(occtPatternWired 护栏内);重复注册复用覆写结果,不重复捕获。
|
|
208
|
-
const k = primitives;
|
|
209
|
-
occtApi.buildExtrusionLaw = k.buildExtrusionLaw.bind(primitives);
|
|
210
|
-
occtApi.composeTransform = k.composeTransform.bind(primitives);
|
|
211
|
-
occtApi.downcast = k.downcast.bind(primitives);
|
|
212
|
-
occtApi.healFace = k.healFace.bind(primitives);
|
|
213
|
-
occtApi.healWire = k.healWire.bind(primitives);
|
|
214
|
-
occtApi.isNull = k.isNull.bind(primitives);
|
|
215
|
-
occtApi.iterShapes = k.iterShapes.bind(primitives);
|
|
216
|
-
occtApi.makeEllipsoid = k.makeEllipsoid.bind(primitives);
|
|
217
|
-
occtApi.makeFaceOnSurface = k.makeFaceOnSurface.bind(primitives);
|
|
218
|
-
occtApi.makeTorus = k.makeTorus.bind(primitives);
|
|
219
|
-
occtApi.makeVertex = k.makeVertex.bind(primitives);
|
|
220
|
-
occtApi.mirror = k.mirror.bind(primitives);
|
|
221
|
-
occtApi.sew = k.sew.bind(primitives);
|
|
222
|
-
occtApi.shell = k.shell.bind(primitives);
|
|
223
|
-
occtApi.simplePipe = k.simplePipe.bind(primitives);
|
|
224
|
-
occtApi.simplify = k.simplify.bind(primitives);
|
|
225
|
-
occtApi.split = k.split.bind(primitives);
|
|
226
|
-
occtApi.sweepPipeShell = k.sweepPipeShell.bind(primitives);
|
|
227
|
-
const vendor = OcctWasmAdapter.fromKernel(primitives);
|
|
228
|
-
occtApi.boundingBox = (shape) => {
|
|
229
|
-
const b = vendor.boundingBox(shape);
|
|
230
|
-
return { xmin: b.min[0], ymin: b.min[1], zmin: b.min[2], xmax: b.max[0], ymax: b.max[1], zmax: b.max[2] };
|
|
231
|
-
};
|
|
232
|
-
occtApi.shapeType = (shape) => vendor.shapeType(shape);
|
|
233
|
-
occtApi.surfaceCenterOfMass = (face) => {
|
|
234
|
-
const v = vendor.surfaceCenterOfMass(face);
|
|
235
|
-
return { x: v[0], y: v[1], z: v[2] };
|
|
236
|
-
};
|
|
237
|
-
occtApi.locate = (shape, matrix) => vendor.locate(shape, matrix);
|
|
238
|
-
occtApi.copyShape = (shape) => vendor.copyShape(shape);
|
|
239
|
-
occtApi.fixSelfIntersection = (wire) => vendor.fixSelfIntersection(wire);
|
|
240
|
-
occtApi.hullFromPoints = (points, tolerance) => vendor.hullFromPoints(points, tolerance);
|
|
241
|
-
occtApi.loftAdvanced = (wires, options) => vendor.loftAdvanced(wires, options);
|
|
242
|
-
occtApi.makeWireFromMixed = (items) => vendor.makeWireFromMixed(items);
|
|
243
|
-
occtApi.revolveVec = (shape, center, direction, angleDeg) => vendor.revolveVec(shape, [center.x, center.y, center.z], [direction.x, direction.y, direction.z], angleDeg);
|
|
244
|
-
occtApi.buildEdgeOnSurface = (curve, surface) => vendor.buildEdgeOnSurface(curve, surface);
|
|
245
|
-
occtApi.dispose = (shape) => { if (shape !== undefined)
|
|
246
|
-
raw.release(shape); };
|
|
247
|
-
occtApi.generalTransformNonOrthogonal = (shape, matrix) => vendor.generalTransformNonOrthogonal(shape, matrix.slice(0, 9), matrix.slice(9, 12));
|
|
248
|
-
const toEvolution = (op) => {
|
|
249
|
-
const segments = (m) => {
|
|
250
|
-
const out = [];
|
|
251
|
-
for (const [inHash, outHashes] of m)
|
|
252
|
-
out.push(inHash, outHashes.length, ...outHashes);
|
|
253
|
-
return out;
|
|
254
|
-
};
|
|
255
|
-
return { result: op.shape, modified: segments(op.evolution.modified), generated: segments(op.evolution.generated), deleted: [...op.evolution.deleted] };
|
|
256
|
-
};
|
|
257
|
-
occtApi.generalTransformWithHistory = (shape, matrix, inputFaceHashes, hashUpperBound) => toEvolution(vendor.generalTransformWithHistory(shape, matrix.slice(0, 9), matrix.slice(9, 12), false, inputFaceHashes, hashUpperBound));
|
|
258
|
-
occtApi.applyComposedTransformWithHistory = (shape, matrix, inputFaceHashes, hashUpperBound) => toEvolution(vendor.applyComposedTransformWithHistory(shape, matrix, inputFaceHashes, hashUpperBound));
|
|
259
|
-
occtPatternWired = true;
|
|
260
|
-
}
|
|
261
|
-
const occtApi = primitives;
|
|
262
147
|
registerBrepEngine(OCCT_BREP_ENGINE_ID, async () => ({
|
|
263
148
|
id: OCCT_BREP_ENGINE_ID,
|
|
264
|
-
primitives
|
|
149
|
+
primitives,
|
|
265
150
|
capabilities: {
|
|
266
151
|
// 面演化:逐核函数名单(不是族级布尔——见 BrepEvolutionKind)。
|
|
267
152
|
evolution: OCCT_EVOLUTION_KINDS,
|
|
@@ -278,10 +163,10 @@ export async function registerOcctBrepEngine() {
|
|
|
278
163
|
tessellationModel: 'extract-time',
|
|
279
164
|
},
|
|
280
165
|
}));
|
|
281
|
-
//
|
|
282
|
-
//
|
|
283
|
-
//
|
|
284
|
-
|
|
166
|
+
// 2026-09-25 core-decouple Phase 2(§5.1):删除 occt-kernel-bridge 后,本注册
|
|
167
|
+
// 流程只管 core 引擎注册表,不再向 vendored kernel registry 注入——vendored
|
|
168
|
+
// 兼容面(compat op)由 Phase 3 逐批自有化替换;中间态下需要 vendored 面的
|
|
169
|
+
// 宿主/测试自行装配 vendored registry。
|
|
285
170
|
}
|
|
286
171
|
/**
|
|
287
172
|
* 内置默认 BREP 引擎装配(OCCT):宿主未注册任何引擎时的缺省值。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"occt.js","sourceRoot":"","sources":["../../../../src/brep/engine/adapters/occt.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * engine/adapters/occt — OCCT BREP 引擎适配器(槽位 1 的默认实现)\n *\n *\n * 本文件是「occt 引擎实现」的注册入口:把 occt-kernel 的 initOcctWasm 包装为\n * BrepEngine 注册进注册表。业务层(runtime/brep ops/stdlib)只经注册表取引擎,\n * 不直接 import occt 初始化函数——引擎本体可整体替换(换一个适配器即换引擎)。\n *\n * OCCT 类型耦合(import 'occt-wasm')只存在于 occt-kernel/occtKernel.ts(A1 验收\n * 允许的唯一耦合区);本文件经 initOcctWasm 函数边界获得 BrepEngineApi,不直接\n * 接触 occt-wasm 类型。\n */\n\nimport { registerBrepEngine, hasBrepEngine, isBrepEngineRegistered, type BrepEngine } from '../registry'\nimport type { AssertSatisfiesBrepEngineApi, BrepEngineApi } from '../primitives'\nimport type { BrepEvolutionKind, BrepMethodKind } from '../types'\nimport type { BrepEvolutionData, BrepHandle, BrepSubShapeType, BrepVec3 } from '../types'\nimport { OcctWasmAdapter } from '../../../vendored/brepjs/kernel/occtWasm/occtWasmAdapter'\nimport { initOcctWasm } from '../../../occt-kernel/occtKernel'\nimport { injectCurrentBrepEngineAsKernel } from '../../../api/occt-kernel-bridge'\n\n/** OCCT 引擎注册 id(默认 BREP 引擎;首个注册自动成为默认)。 */\nexport const OCCT_BREP_ENGINE_ID = 'occt'\n\n// Phase 2 幂等护栏:occt-wasm 是进程级单例,registerOcctBrepEngine 可能被多次调用\n// (测试重置注册表后重注册)。pattern 三方法只覆写一次——重复覆写会捕获到上一轮\n// 覆写版(返回 BrepHandle[]),把它当 compound 拆 → getSubShapes: Invalid shape ID: 0。\nlet occtPatternWired = false\n\n/**\n * OCCT 实际提供的 `*WithHistory` 核函数名(Phase 0.2:逐核函数如实声明)。\n *\n * 12 个全部由 `occt-wasm@3.8.4` 提供(`dist/index.d.ts` 的 `*WithHistory` 声明),\n * 且 faijs 侧已全部绑定(`brep/engine/primitives.ts` 的 `BrepEngineApi`)并有运行时\n * 冒烟测试(`brep/engine/evolution-bindings.test.ts`——因 `initOcctWasm` 的返回类型\n * 被 `as unknown as` 硬断言,编译期守卫是空转的,只有运行时测试能证明它们真在)。\n */\n/**\n * 非演化内核方法全集(BrepMethodKind)——occt-wasm 是参考内核,vendored\n * occtWasmAdapter 提供全部方法(occt-kernel/initOcctWasm 包装同一实例),\n * 逐核如实声明(Phase 1,P2 缺口补齐)。\n *\n * ⚠️ Phase 2 修正(能力声明=可执行语义):\n * - 保留 `gridPattern`:occt-wasm 无原生 gridPattern,但 vendored gridPattern\n * 有回退路径(嵌套 linearPattern,patternFns.ts)且本适配器新增组合实现\n * ——occt 下 gridPattern op 可执行,声明成立;\n * - 移除 `rectangularPattern`:occt-wasm 无此内核方法,vendored rectangularPattern\n * 是纯 JS 组合(compoundOpsFns.ts translate+fuseAll,不调内核)——无 op 依赖\n * 该能力名,声明即虚假(capability-map 实证 36 op 无一依赖)。\n */\nconst OCCT_METHOD_KINDS = [\n 'linearPattern',\n 'circularPattern',\n 'gridPattern',\n 'mirror',\n 'rotate',\n 'translate',\n 'scale',\n 'makeRectangle',\n 'shell',\n 'extrude',\n 'loft',\n 'loftAdvanced',\n 'section',\n 'sweepPipeShell',\n 'simplePipe',\n 'revolveVec',\n 'buildExtrusionLaw',\n 'fuse',\n 'cut',\n 'intersect',\n 'fuseAll',\n 'makeArcEdge',\n 'makeBezierEdge',\n 'makeCylinder',\n 'makeEllipsoid',\n 'makeFace',\n 'makeFaceOnSurface',\n 'makeLineEdge',\n 'makeTorus',\n 'makeVertex',\n 'makeWireFromMixed',\n 'buildEdgeOnSurface',\n 'addHolesInFace',\n 'buildTriFace',\n 'sew',\n 'sewAndSolidify',\n 'healFace',\n 'healSolid',\n 'healWire',\n 'fixShape',\n 'fixSelfIntersection',\n 'isValid',\n 'removeDegenerateEdges',\n 'simplify',\n 'split',\n 'boundingBox',\n 'curveParameters',\n 'curvePointAtParam',\n 'curveTangent',\n 'hullFromPoints',\n 'isNull',\n 'iterShapes',\n 'locate',\n 'shapeType',\n 'surfaceCenterOfMass',\n 'surfaceNormal',\n 'surfaceType',\n 'uvBounds',\n 'composeTransform',\n 'applyComposedTransformWithHistory',\n 'generalTransformNonOrthogonal',\n 'generalTransformWithHistory',\n 'importStl',\n 'createXCAFDocument',\n 'importXCAFFromSTEP',\n 'copyShape',\n 'dispose',\n 'downcast',\n 'hashCode',\n // Phase 2:chamfer/fillet 基础方法(directEdit 族逐核真名;occt-wasm 原生提供,\n // brepkit 无——chamfer op 静态判定执行前报错)\n 'chamfer',\n 'chamferDistAngle',\n 'fillet',\n 'filletVariable',\n] as const satisfies readonly BrepMethodKind[]\n\nconst OCCT_EVOLUTION_KINDS = [\n 'fuseWithHistory',\n 'cutWithHistory',\n 'intersectWithHistory',\n 'filletWithHistory',\n 'chamferWithHistory',\n 'translateWithHistory',\n 'rotateWithHistory',\n 'mirrorWithHistory',\n 'scaleWithHistory',\n 'shellWithHistory',\n 'offsetWithHistory',\n 'thickenWithHistory',\n] as const satisfies readonly BrepEvolutionKind[]\n\n/**\n * 装配 OCCT BREP 引擎(宿主启动时调用一次,幂等)。\n *\n * 预初始化 initOcctWasm():wasm 加载完成后立即注册——保证注册返回后\n * getKernel() 立即可用(occt-kernel 单例已就绪),provider 直接返回预初始化实例。\n * 幂等:已注册(含运行时默认装配或宿主先行注册)则跳过注册,仅确保 wasm 预初始化。\n */\n/** occt-wasm 运行时原始 pattern 形态(initOcctWasm 返回类型被硬断言,此处如实还原)。 */\ninterface OcctPatternRaw {\n // occt-wasm 原生签名(dist/index.d.ts:230-231 实证):方向/中心/轴是 **Vec3 对象**\n // ({x,y,z}),4/5 参数形态。⚠️ vendored transformOps.ts 的分量式调用(6/9 参数)\n // 是 brepjs 内部 OcctKernelWasm 的假定面,对真实 occt-wasm 不成立(运行实证崩),\n // Phase 3 全量收敛时单独处置。\n linearPattern(shape: number, direction: { x: number; y: number; z: number }, spacing: number, count: number): number\n circularPattern(shape: number, center: { x: number; y: number; z: number }, axis: { x: number; y: number; z: number }, angleStep: number, count: number): number\n getSubShapes(shape: number, type: 'solid'): number[]\n release(shape: number): void\n fuseAll(shapes: number[]): number\n}\n\n/**\n * 装配 OCCT BREP 引擎(幂等;pattern 三方法仅首次覆写,见上方长注释)。\n */\nexport async function registerOcctBrepEngine(): Promise<void> {\n const primitives = await initOcctWasm()\n if (isBrepEngineRegistered(OCCT_BREP_ENGINE_ID)) return\n // Phase 2:occt-wasm 原生 linearPattern/circularPattern 返回 compound(含全部副本),\n // BrepEngineApi 契约要求 BrepHandle[](各份副本)→ 在此拆 compound(getSubShapes)。\n // gridPattern 无原生内核函数 → 组合实现(嵌套 linearPattern + fuseAll,与 vendored\n // 回退路径同构);拆出的子句柄由调用方 release,compound 容器拆完即释放。\n // ⚠️ initOcctWasm 的返回类型在 occtKernel.ts 被硬断言为 BrepEngineApi(linearPattern\n // 签名 BrepHandle[]),但运行时 occt-wasm 的 linearPattern/circularPattern 返回**单个\n // compound 句柄**(含全部副本)——类型撒谎。此处以运行时原始形态(OcctPatternRaw)\n // 调用,再经 getSubShapes 拆成数组(与 vendored transformOps.linearPattern 同构)。\n // 不能使用对象展开({ ...primitives }):OcctKernel 的方法在原型上(class 实例),\n // 展开只拷自有属性 → makeBoxFromCorners 等全部原型方法丢失(consume-input.test 实证)。\n // 直接覆盖单例实例的 pattern 三方法(occt-wasm 单例,无共享状态风险)。\n // ⚠️ 覆盖前必须先捕获原生 linearPattern/circularPattern:覆盖后 raw.linearPattern\n // 会指向 occtApi.linearPattern 自身 → 无限递归(Maximum call stack size exceeded 实证)。\n const raw = primitives as unknown as OcctPatternRaw\n // ⚠️ 幂等护栏:occt-wasm 是进程级单例,宿主可能多次调用本注册(测试重置注册表后\n // 重注册)。重复覆写会捕获到上一轮覆写版(返回 BrepHandle[]),把它当 compound 拆\n // → `getSubShapes: Invalid shape ID: 0`(engine-switch-p2 parity 实证)。只覆写一次,\n // raw 与 occtApi 指向同一单例,后续注册直接复用覆写结果。\n if (!occtPatternWired) {\n // ⚠️ 覆盖前必须先捕获原生 linearPattern/circularPattern:覆盖后 raw.linearPattern\n // 会指向 occtApi.linearPattern 自身 → 无限递归(Maximum call stack size exceeded 实证)。\n const nativeLinearPattern = raw.linearPattern.bind(raw)\n const nativeCircularPattern = raw.circularPattern.bind(raw)\n const occtApi = primitives as BrepEngineApi\n occtApi.linearPattern = (shape, direction, spacing, count) => {\n const compound = nativeLinearPattern(shape, direction, spacing, count)\n const parts = raw.getSubShapes(compound, 'solid')\n raw.release(compound)\n return parts.map((h) => h as BrepHandle)\n }\n occtApi.circularPattern = (shape, center, axis, angleStep, count) => {\n const compound = nativeCircularPattern(shape, center, axis, angleStep, count)\n const parts = raw.getSubShapes(compound, 'solid')\n raw.release(compound)\n return parts.map((h) => h as BrepHandle)\n }\n occtApi.gridPattern = (shape, directionX, directionY, spacingX, spacingY, countX, countY) => {\n // ⚠️ 内部必须用捕获的 nativeLinearPattern:此时 raw.linearPattern 已被覆写为\n // BrepHandle[] 语义,误用会把数组当 compound 拆(同上红线实证)。\n const colCompound = nativeLinearPattern(shape, directionX, spacingX, countX)\n const cols = raw.getSubShapes(colCompound, 'solid')\n raw.release(colCompound)\n const all: number[] = []\n try {\n for (const c of cols) {\n const rowCompound = nativeLinearPattern(c, directionY, spacingY, countY)\n try {\n all.push(...raw.getSubShapes(rowCompound, 'solid'))\n } finally {\n raw.release(rowCompound)\n }\n }\n } finally {\n for (const c of cols) raw.release(c)\n }\n return raw.fuseAll(all) as BrepHandle\n }\n\n // ═══ Phase 3:能力表 33 个登记方法接线(capability-map 64 方法收口) ═══\n // 原则:能力表声明了(OCCT_METHOD_KINDS 含全部 33)→ 实例必须可实现,否则静态\n // 判定放行后运行时崩(红线)。18 个 occt-wasm 原生导出直接绑定(签名与\n // BrepEngineApi 一致:Vec3=BrepVec3、ShapeHandle=BrepHandle);15 个组合方法\n // (occt-wasm 无原生导出)经 vendored OcctWasmAdapter 组合面代理 + 形态转换。\n // 只接线一次(occtPatternWired 护栏内);重复注册复用覆写结果,不重复捕获。\n const k = primitives as unknown as {\n buildExtrusionLaw(profile: string, length: number, endFactor: number): BrepHandle\n composeTransform(m1: number[], m2: number[]): number[]\n downcast(shape: BrepHandle, targetType: BrepSubShapeType): BrepHandle\n healFace(shape: BrepHandle, tolerance?: number): BrepHandle\n healWire(shape: BrepHandle, tolerance?: number): BrepHandle\n isNull(shape: BrepHandle): boolean\n iterShapes(shape: BrepHandle): BrepHandle[]\n makeEllipsoid(rx: number, ry: number, rz: number): BrepHandle\n makeFaceOnSurface(face: BrepHandle, wire: BrepHandle): BrepHandle\n makeTorus(majorRadius: number, minorRadius: number): BrepHandle\n makeVertex(x: number, y: number, z: number): BrepHandle\n mirror(shape: BrepHandle, point: BrepVec3, normal: BrepVec3): BrepHandle\n sew(shapes: BrepHandle[], tolerance?: number): BrepHandle\n shell(solid: BrepHandle, facesToRemove: BrepHandle[], thickness: number, tolerance: number): BrepHandle\n simplePipe(profile: BrepHandle, spine: BrepHandle): BrepHandle\n simplify(shape: BrepHandle): BrepHandle\n split(shape: BrepHandle, tools: BrepHandle[]): BrepHandle\n sweepPipeShell(profile: BrepHandle, spine: BrepHandle, freenet?: boolean, smooth?: boolean): BrepHandle\n }\n occtApi.buildExtrusionLaw = k.buildExtrusionLaw.bind(primitives)\n occtApi.composeTransform = k.composeTransform.bind(primitives)\n occtApi.downcast = k.downcast.bind(primitives)\n occtApi.healFace = k.healFace.bind(primitives)\n occtApi.healWire = k.healWire.bind(primitives)\n occtApi.isNull = k.isNull.bind(primitives)\n occtApi.iterShapes = k.iterShapes.bind(primitives)\n occtApi.makeEllipsoid = k.makeEllipsoid.bind(primitives)\n occtApi.makeFaceOnSurface = k.makeFaceOnSurface.bind(primitives)\n occtApi.makeTorus = k.makeTorus.bind(primitives)\n occtApi.makeVertex = k.makeVertex.bind(primitives)\n occtApi.mirror = k.mirror.bind(primitives)\n occtApi.sew = k.sew.bind(primitives)\n occtApi.shell = k.shell.bind(primitives)\n occtApi.simplePipe = k.simplePipe.bind(primitives)\n occtApi.simplify = k.simplify.bind(primitives)\n occtApi.split = k.split.bind(primitives)\n occtApi.sweepPipeShell = k.sweepPipeShell.bind(primitives)\n const vendor = OcctWasmAdapter.fromKernel(primitives as never)\n occtApi.boundingBox = (shape) => {\n const b = vendor.boundingBox(shape as never)\n return { xmin: b.min[0], ymin: b.min[1], zmin: b.min[2], xmax: b.max[0], ymax: b.max[1], zmax: b.max[2] }\n }\n occtApi.shapeType = (shape) => vendor.shapeType(shape as never) as BrepSubShapeType\n occtApi.surfaceCenterOfMass = (face) => {\n const v = vendor.surfaceCenterOfMass(face as never)\n return { x: v[0], y: v[1], z: v[2] }\n }\n occtApi.locate = (shape, matrix) => vendor.locate(shape as never, matrix as never) as BrepHandle\n occtApi.copyShape = (shape) => vendor.copyShape(shape as never) as BrepHandle\n occtApi.fixSelfIntersection = (wire) => vendor.fixSelfIntersection(wire as never) as BrepHandle\n occtApi.hullFromPoints = (points, tolerance) => vendor.hullFromPoints(points as never, tolerance) as BrepHandle\n occtApi.loftAdvanced = (wires, options) => vendor.loftAdvanced(wires as never, options as never) as BrepHandle\n occtApi.makeWireFromMixed = (items) => vendor.makeWireFromMixed(items as never) as BrepHandle\n occtApi.revolveVec = (shape, center, direction, angleDeg) =>\n vendor.revolveVec(shape as never, [center.x, center.y, center.z] as never, [direction.x, direction.y, direction.z] as never, angleDeg) as BrepHandle\n occtApi.buildEdgeOnSurface = (curve, surface) => vendor.buildEdgeOnSurface(curve as never, surface as never) as BrepHandle\n occtApi.dispose = (shape) => { if (shape !== undefined) raw.release(shape as number) }\n occtApi.generalTransformNonOrthogonal = (shape, matrix) =>\n vendor.generalTransformNonOrthogonal(shape as never, matrix.slice(0, 9) as never, matrix.slice(9, 12) as never) as BrepHandle\n const toEvolution = (op: {\n shape: number\n evolution: {\n modified: ReadonlyMap<number, readonly number[]>\n generated: ReadonlyMap<number, readonly number[]>\n deleted: ReadonlySet<number>\n }\n }): BrepEvolutionData => {\n const segments = (m: ReadonlyMap<number, readonly number[]>): number[] => {\n const out: number[] = []\n for (const [inHash, outHashes] of m) out.push(inHash, outHashes.length, ...outHashes)\n return out\n }\n return { result: op.shape as BrepHandle, modified: segments(op.evolution.modified), generated: segments(op.evolution.generated), deleted: [...op.evolution.deleted] }\n }\n occtApi.generalTransformWithHistory = (shape, matrix, inputFaceHashes, hashUpperBound) =>\n toEvolution(vendor.generalTransformWithHistory(\n shape as never,\n matrix.slice(0, 9) as never,\n matrix.slice(9, 12) as never,\n false,\n inputFaceHashes as never,\n hashUpperBound,\n ) as never)\n occtApi.applyComposedTransformWithHistory = (shape, matrix, inputFaceHashes, hashUpperBound) =>\n toEvolution(vendor.applyComposedTransformWithHistory(\n shape as never,\n matrix as never,\n inputFaceHashes as never,\n hashUpperBound,\n ) as never)\n occtPatternWired = true\n }\n const occtApi = primitives as BrepEngineApi\n registerBrepEngine(OCCT_BREP_ENGINE_ID, async (): Promise<BrepEngine> => ({\n id: OCCT_BREP_ENGINE_ID,\n primitives: occtApi,\n capabilities: {\n // 面演化:逐核函数名单(不是族级布尔——见 BrepEvolutionKind)。\n evolution: OCCT_EVOLUTION_KINDS,\n // 非演化内核方法:逐核如实声明(Phase 1,P2 缺口补齐;op 声明按此静态判定)。\n methods: OCCT_METHOD_KINDS,\n heal: true,\n directEdit: true,\n advSurface: true,\n assembly: true,\n // P7 并入(D4):OCCT 是精确 B-rep 内核——如实声明 brepjs KernelCapabilities 字段。\n exact: true,\n brepExport: true,\n exactMeasurement: true,\n tessellationModel: 'extract-time',\n },\n }))\n // P7-②:同一装配点把移植内核注册表注入到当前 BREP 引擎(Phase 2 P2-5:取代旧的\n // bindOcctKernel() 固定绑定,改为引擎中立的 injectCurrentBrepEngineAsKernel)。\n // 使 L3 调移植 L2 的 op 在宿主装配后立即可用;幂等,重复调用安全。\n await injectCurrentBrepEngineAsKernel()\n}\n\n/**\n * 内置默认 BREP 引擎装配(OCCT):宿主未注册任何引擎时的缺省值。\n *\n * OCCT 是 faijs 的默认 BREP 引擎——低频率、静态的替换:换引擎 = 宿主在\n * 装配期显式注册其它引擎(首个注册者为默认),或改本处默认。宿主无需为\n * 每次使用自行提供引擎;本函数幂等,已注册任何引擎则 no-op。\n */\nexport async function ensureOcctDefaultEngine(): Promise<void> {\n if (hasBrepEngine()) return\n await registerOcctBrepEngine()\n}\n\n// §7.8 编译期守卫:initOcctWasm 的返回类型必须满足 BrepEngineApi。\n// 若未来 occt-kernel 的导出类型不再满足接口(如接口新增方法)→ tsc 报错列出缺失。\ntype _AssertOcctApi = AssertSatisfiesBrepEngineApi<Awaited<ReturnType<typeof initOcctWasm>>>\n"]}
|
|
1
|
+
{"version":3,"file":"occt.js","sourceRoot":"","sources":["../../../../src/brep/engine/adapters/occt.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * engine/adapters/occt — OCCT BREP 引擎适配器(槽位 1 的默认实现)\n *\n * 本文件是「occt 引擎实现」的注册入口:把 `createOcctPrimitives()`(occt-kernel/\n * occt-primitives.ts,L1 契约 `BrepEngineApi` 的 occt 显式实现)注册进引擎注册表。\n * 业务层(runtime/brep ops/stdlib)只经注册表取引擎,不直接 import occt 初始化\n * 函数——引擎本体可整体替换(换一个适配器即换引擎)。\n *\n * Phase 3(docs/plans/2026-09-24-brep-engine-api-narrowing-native-access.md):\n * 本文件不再做任何猴子补丁(旧版在 occt-wasm 单例上覆写 pattern 三方法与 33 个\n * 登记方法——全部移入 `createOcctPrimitives` 的显式对象字面量)。occt-wasm 类型\n * 耦合只存在于 occt-kernel/(A1 允许的唯一耦合区);本文件不接触 occt-wasm 类型。\n *\n * 平台独有能力(loft 族、工具实体 section/split、L1 三员之外的 *WithHistory、\n * XCAF 等)不在 L1 契约里——平台代码经原生面 `getOcctKernel()`(D3)访问。\n */\n\nimport { registerBrepEngine, hasBrepEngine, isBrepEngineRegistered, type BrepEngine } from '../registry'\nimport type { BrepEvolutionKind, BrepMethodKind } from '../types'\nimport { createOcctPrimitives } from '../../../occt-kernel/occt-primitives'\n\n/** OCCT 引擎注册 id(默认 BREP 引擎;首个注册自动成为默认)。 */\nexport const OCCT_BREP_ENGINE_ID = 'occt'\n\n/**\n * OCCT 实际提供的 `*WithHistory` 核函数名(Phase 0.2:逐核函数如实声明)。\n *\n * 12 个全部由 `occt-wasm@3.8.4` 提供(`dist/index.d.ts` 的 `*WithHistory` 声明)。\n * L1 契约只含前三员 + filletWithHistory(双方都有对齐实现);其余 8 个是 occt\n * 平台面能力(brepkit 无对应 API),存在性由本能力表如实声明,op 侧用\n * `engines: ['occt']`(Phase 5 D11)表达平台归属。\n */\nconst OCCT_EVOLUTION_KINDS = [\n 'fuseWithHistory',\n 'cutWithHistory',\n 'intersectWithHistory',\n 'filletWithHistory',\n 'chamferWithHistory',\n 'translateWithHistory',\n 'rotateWithHistory',\n 'mirrorWithHistory',\n 'scaleWithHistory',\n 'shellWithHistory',\n 'offsetWithHistory',\n 'thickenWithHistory',\n] as const satisfies readonly BrepEvolutionKind[]\n\n/**\n * 非演化内核方法全集(BrepMethodKind)——逐核如实声明(Phase 1,P2 缺口补齐)。\n *\n * ⚠️ Phase 2 修正(能力声明=可执行语义):\n * - 保留 `gridPattern`:occt-wasm 无原生 gridPattern,但适配器有组合实现\n * (嵌套 linearPattern + fuseAll,见 occt-primitives.ts)——occt 下\n * gridPattern op 可执行,声明成立;\n * - 移除 `rectangularPattern`:occt-wasm 无此内核方法,vendored rectangularPattern\n * 是纯 JS 组合(compoundOpsFns.ts translate+fuseAll,不调内核)——无 op 依赖\n * 该能力名,声明即虚假(capability-map 实证 36 op 无一依赖)。\n */\nconst OCCT_METHOD_KINDS = [\n 'linearPattern',\n 'circularPattern',\n 'gridPattern',\n 'mirror',\n 'rotate',\n 'translate',\n 'scale',\n 'makeRectangle',\n 'shell',\n 'extrude',\n 'loft',\n 'loftAdvanced',\n 'section',\n 'sweepPipeShell',\n 'simplePipe',\n 'revolveVec',\n 'buildExtrusionLaw',\n 'fuse',\n 'cut',\n 'intersect',\n 'fuseAll',\n 'makeArcEdge',\n 'makeBezierEdge',\n 'makeCylinder',\n 'makeEllipsoid',\n 'makeFace',\n 'makeFaceOnSurface',\n 'makeLineEdge',\n 'makeTorus',\n 'makeVertex',\n 'makeWireFromMixed',\n 'buildEdgeOnSurface',\n 'addHolesInFace',\n 'buildTriFace',\n 'sew',\n 'sewAndSolidify',\n 'healFace',\n 'healSolid',\n 'healWire',\n 'fixShape',\n 'fixSelfIntersection',\n 'isValid',\n 'removeDegenerateEdges',\n 'simplify',\n 'split',\n 'curveParameters',\n 'curvePointAtParam',\n 'curveTangent',\n 'hullFromPoints',\n 'isNull',\n 'iterShapes',\n 'locate',\n 'shapeType',\n 'surfaceCenterOfMass',\n 'surfaceNormal',\n 'surfaceType',\n 'uvBounds',\n // Phase 5(D5):测量族能力名统一为 L1 中立名(getBoundingBox/getVolume/...)——\n // vendored 面按 brepjs 自身命名(volume/area/length),core 能力表用 L1 中立名。\n 'getBoundingBox',\n 'getVolume',\n 'getSurfaceArea',\n 'getLength',\n 'getCenterOfMass',\n 'composeTransform',\n 'applyComposedTransformWithHistory',\n 'generalTransformNonOrthogonal',\n 'generalTransformWithHistory',\n 'importStl',\n 'createXCAFDocument',\n 'importXCAFFromSTEP',\n 'copyShape',\n 'dispose',\n 'downcast',\n 'hashCode',\n // chamfer/fillet 基础方法(directEdit 族逐核真名;occt-wasm 原生提供)\n 'chamfer',\n 'chamferDistAngle',\n 'fillet',\n 'filletVariable',\n] as const satisfies readonly BrepMethodKind[]\n\n/**\n * 装配 OCCT BREP 引擎(宿主启动时调用一次,幂等)。\n *\n * 预初始化 `createOcctPrimitives()`(内部 await initOcctWasm):wasm 加载完成后\n * 立即注册——保证注册返回后内核单例已就绪。幂等:已注册(含运行时默认装配或\n * 宿主先行注册)则跳过注册,仅确保 wasm 预初始化。\n */\nexport async function registerOcctBrepEngine(): Promise<void> {\n const primitives = await createOcctPrimitives()\n if (isBrepEngineRegistered(OCCT_BREP_ENGINE_ID)) return\n registerBrepEngine(OCCT_BREP_ENGINE_ID, async (): Promise<BrepEngine> => ({\n id: OCCT_BREP_ENGINE_ID,\n primitives,\n capabilities: {\n // 面演化:逐核函数名单(不是族级布尔——见 BrepEvolutionKind)。\n evolution: OCCT_EVOLUTION_KINDS,\n // 非演化内核方法:逐核如实声明(Phase 1,P2 缺口补齐;op 声明按此静态判定)。\n methods: OCCT_METHOD_KINDS,\n heal: true,\n directEdit: true,\n advSurface: true,\n assembly: true,\n // P7 并入(D4):OCCT 是精确 B-rep 内核——如实声明 brepjs KernelCapabilities 字段。\n exact: true,\n brepExport: true,\n exactMeasurement: true,\n tessellationModel: 'extract-time',\n },\n }))\n // 2026-09-25 core-decouple Phase 2(§5.1):删除 occt-kernel-bridge 后,本注册\n // 流程只管 core 引擎注册表,不再向 vendored kernel registry 注入——vendored\n // 兼容面(compat op)由 Phase 3 逐批自有化替换;中间态下需要 vendored 面的\n // 宿主/测试自行装配 vendored registry。\n}\n\n/**\n * 内置默认 BREP 引擎装配(OCCT):宿主未注册任何引擎时的缺省值。\n *\n * OCCT 是 faijs 的默认 BREP 引擎——低频率、静态的替换:换引擎 = 宿主在\n * 装配期显式注册其它引擎(首个注册者为默认),或改本处默认。宿主无需为\n * 每次使用自行提供引擎;本函数幂等,已注册任何引擎则 no-op。\n */\nexport async function ensureOcctDefaultEngine(): Promise<void> {\n if (hasBrepEngine()) return\n await registerOcctBrepEngine()\n}\n"]}
|