@faicad/faijs 0.33.2 → 0.35.8
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/dist/api/api-namespace.d.ts +14 -14
- package/dist/api/api-namespace.d.ts.map +1 -1
- package/dist/api/api-namespace.js +40 -14
- package/dist/api/api-namespace.js.map +1 -1
- package/dist/api/appearance.d.ts +47 -6
- package/dist/api/appearance.d.ts.map +1 -1
- package/dist/api/appearance.js.map +1 -1
- package/dist/api/assembly/entities.js +14 -4
- package/dist/api/assembly/entities.js.map +1 -1
- package/dist/api/assembly/solve-tree.d.ts +1 -0
- package/dist/api/assembly/solve-tree.d.ts.map +1 -1
- package/dist/api/assembly/solve-tree.js +42 -17
- package/dist/api/assembly/solve-tree.js.map +1 -1
- package/dist/api/assembly/solve.d.ts +1 -0
- package/dist/api/assembly/solve.d.ts.map +1 -1
- package/dist/api/assembly/solve.js.map +1 -1
- package/dist/api/assembly/solvers/global-solver.d.ts.map +1 -1
- package/dist/api/assembly/solvers/global-solver.js +130 -23
- package/dist/api/assembly/solvers/global-solver.js.map +1 -1
- package/dist/api/assembly/solvers/pose-from-delta.d.ts +9 -0
- package/dist/api/assembly/solvers/pose-from-delta.d.ts.map +1 -1
- package/dist/api/assembly/solvers/pose-from-delta.js +23 -0
- package/dist/api/assembly/solvers/pose-from-delta.js.map +1 -1
- package/dist/api/assembly/solvers/types.d.ts +20 -2
- package/dist/api/assembly/solvers/types.d.ts.map +1 -1
- package/dist/api/assembly/solvers/types.js.map +1 -1
- package/dist/api/chamfer.d.ts +7 -4
- package/dist/api/chamfer.d.ts.map +1 -1
- package/dist/api/chamfer.js +57 -13
- package/dist/api/chamfer.js.map +1 -1
- package/dist/api/draft.d.ts +7 -4
- package/dist/api/draft.d.ts.map +1 -1
- package/dist/api/draft.js +11 -6
- package/dist/api/draft.js.map +1 -1
- package/dist/api/edge-ref.d.ts +4 -4
- package/dist/api/edge-ref.js +4 -4
- package/dist/api/edge-ref.js.map +1 -1
- package/dist/api/extrude.d.ts +10 -6
- package/dist/api/extrude.d.ts.map +1 -1
- package/dist/api/extrude.js +54 -26
- package/dist/api/extrude.js.map +1 -1
- package/dist/api/face-ref.d.ts +4 -4
- package/dist/api/face-ref.js +4 -4
- package/dist/api/face-ref.js.map +1 -1
- package/dist/api/feature-repair.d.ts +6 -3
- package/dist/api/feature-repair.d.ts.map +1 -1
- package/dist/api/feature-repair.js +12 -7
- package/dist/api/feature-repair.js.map +1 -1
- package/dist/api/fillet-variable.d.ts +6 -2
- package/dist/api/fillet-variable.d.ts.map +1 -1
- package/dist/api/fillet-variable.js +24 -6
- package/dist/api/fillet-variable.js.map +1 -1
- package/dist/api/fillet.d.ts +7 -4
- package/dist/api/fillet.d.ts.map +1 -1
- package/dist/api/fillet.js +92 -12
- package/dist/api/fillet.js.map +1 -1
- package/dist/api/generated/script-face-manifest.js +1 -1
- package/dist/api/generated/script-face-manifest.js.map +1 -1
- package/dist/api/generated/topology.js +1 -1
- package/dist/api/generated/topology.js.map +1 -1
- package/dist/api/helix.d.ts +13 -13
- package/dist/api/helix.d.ts.map +1 -1
- package/dist/api/helix.js +19 -24
- package/dist/api/helix.js.map +1 -1
- package/dist/api/import-brep.d.ts +10 -18
- package/dist/api/import-brep.d.ts.map +1 -1
- package/dist/api/import-brep.js +17 -25
- package/dist/api/import-brep.js.map +1 -1
- package/dist/api/import-step.d.ts +10 -15
- package/dist/api/import-step.d.ts.map +1 -1
- package/dist/api/import-step.js +24 -29
- package/dist/api/import-step.js.map +1 -1
- package/dist/api/index.js +2 -2
- package/dist/api/index.js.map +1 -1
- package/dist/api/internal/export-members.js.map +1 -1
- package/dist/api/loft-advanced.d.ts +4 -0
- package/dist/api/loft-advanced.d.ts.map +1 -1
- package/dist/api/loft-advanced.js +4 -0
- package/dist/api/loft-advanced.js.map +1 -1
- package/dist/api/loft.d.ts +5 -3
- package/dist/api/loft.d.ts.map +1 -1
- package/dist/api/loft.js +5 -3
- package/dist/api/loft.js.map +1 -1
- package/dist/api/meta.d.ts +42 -6
- package/dist/api/meta.d.ts.map +1 -1
- package/dist/api/meta.js.map +1 -1
- package/dist/api/primitives.d.ts +3 -2
- package/dist/api/primitives.d.ts.map +1 -1
- package/dist/api/primitives.js +3 -2
- package/dist/api/primitives.js.map +1 -1
- package/dist/api/punch-hole.d.ts +5 -2
- package/dist/api/punch-hole.d.ts.map +1 -1
- package/dist/api/punch-hole.js +4 -1
- package/dist/api/punch-hole.js.map +1 -1
- package/dist/api/replicate.d.ts +4 -5
- package/dist/api/replicate.d.ts.map +1 -1
- package/dist/api/replicate.js +4 -5
- package/dist/api/replicate.js.map +1 -1
- package/dist/api/selectors-to-refs.d.ts +83 -0
- package/dist/api/selectors-to-refs.d.ts.map +1 -0
- package/dist/api/selectors-to-refs.js +211 -0
- package/dist/api/selectors-to-refs.js.map +1 -0
- package/dist/api/shell.d.ts +17 -8
- package/dist/api/shell.d.ts.map +1 -1
- package/dist/api/shell.js +45 -15
- package/dist/api/shell.js.map +1 -1
- package/dist/api/sketch-on-face.d.ts +12 -6
- package/dist/api/sketch-on-face.d.ts.map +1 -1
- package/dist/api/sketch-on-face.js +31 -4
- package/dist/api/sketch-on-face.js.map +1 -1
- package/dist/api/sketch-on-plane.d.ts +3 -0
- package/dist/api/sketch-on-plane.d.ts.map +1 -1
- package/dist/api/sketch-on-plane.js +3 -0
- package/dist/api/sketch-on-plane.js.map +1 -1
- package/dist/api/sketch-on-surface.d.ts +4 -1
- package/dist/api/sketch-on-surface.d.ts.map +1 -1
- package/dist/api/sketch-on-surface.js +4 -1
- package/dist/api/sketch-on-surface.js.map +1 -1
- package/dist/api/surface/arg-spec.d.ts.map +1 -1
- package/dist/api/surface/arg-spec.js +5 -6
- package/dist/api/surface/arg-spec.js.map +1 -1
- package/dist/api/topo-resolve.d.ts.map +1 -1
- package/dist/api/topo-resolve.js +24 -5
- package/dist/api/topo-resolve.js.map +1 -1
- package/dist/api/view/view-projection.d.ts.map +1 -1
- package/dist/api/view/view-projection.js +9 -2
- package/dist/api/view/view-projection.js.map +1 -1
- package/dist/brep/brep-chain.js +2 -2
- package/dist/brep/brep-chain.js.map +1 -1
- package/dist/brep/brep-ops.d.ts +1 -1
- package/dist/brep/brep-ops.js +1 -1
- package/dist/brep/brep-ops.js.map +1 -1
- package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
- package/dist/brep/engine/adapters/brep-mock.js +45 -0
- package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
- package/dist/brep/engine/primitives.d.ts +87 -3
- package/dist/brep/engine/primitives.d.ts.map +1 -1
- package/dist/brep/engine/primitives.js +1 -1
- package/dist/brep/engine/primitives.js.map +1 -1
- package/dist/brep/engine/registry.d.ts +33 -7
- package/dist/brep/engine/registry.d.ts.map +1 -1
- package/dist/brep/engine/registry.js +47 -16
- package/dist/brep/engine/registry.js.map +1 -1
- package/dist/brep/handle-bridge.d.ts +14 -15
- package/dist/brep/handle-bridge.d.ts.map +1 -1
- package/dist/brep/handle-bridge.js +35 -15
- package/dist/brep/handle-bridge.js.map +1 -1
- package/dist/brep/primitives-brep.js +2 -2
- package/dist/brep/primitives-brep.js.map +1 -1
- package/dist/brep/text/text-to-solid.d.ts +40 -3
- package/dist/brep/text/text-to-solid.d.ts.map +1 -1
- package/dist/brep/text/text-to-solid.js +104 -24
- package/dist/brep/text/text-to-solid.js.map +1 -1
- package/dist/brepkit-kernel/brepkitKernel.d.ts +2 -2
- package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
- package/dist/brepkit-kernel/brepkitKernel.js +328 -38
- package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
- package/dist/brepkit-kernel/brepkitWasm.d.ts +3 -1
- package/dist/brepkit-kernel/brepkitWasm.d.ts.map +1 -1
- package/dist/brepkit-kernel/brepkitWasm.js +13 -9
- package/dist/brepkit-kernel/brepkitWasm.js.map +1 -1
- package/dist/brepkit-kernel/multi-version-test.d.ts +2 -2
- package/dist/brepkit-kernel/multi-version-test.d.ts.map +1 -1
- package/dist/brepkit-kernel/multi-version-test.js +6 -6
- package/dist/brepkit-kernel/multi-version-test.js.map +1 -1
- package/dist/browser.d.ts +2 -3
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +1 -2
- package/dist/browser.js.map +1 -1
- package/dist/cad-runtime/admit-compat-lib.d.ts +9 -1
- package/dist/cad-runtime/admit-compat-lib.d.ts.map +1 -1
- package/dist/cad-runtime/admit-compat-lib.js +11 -1
- package/dist/cad-runtime/admit-compat-lib.js.map +1 -1
- package/dist/cad-runtime/browser-lib-loader.d.ts +16 -11
- package/dist/cad-runtime/browser-lib-loader.d.ts.map +1 -1
- package/dist/cad-runtime/browser-lib-loader.js +16 -8
- package/dist/cad-runtime/browser-lib-loader.js.map +1 -1
- package/dist/cad-runtime/direct-executor.d.ts +62 -5
- package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
- package/dist/cad-runtime/direct-executor.js +617 -42
- package/dist/cad-runtime/direct-executor.js.map +1 -1
- package/dist/cad-runtime/interp/closure.d.ts +3 -2
- package/dist/cad-runtime/interp/closure.d.ts.map +1 -1
- package/dist/cad-runtime/interp/closure.js.map +1 -1
- package/dist/cad-runtime/interp/env.d.ts +9 -6
- package/dist/cad-runtime/interp/env.d.ts.map +1 -1
- package/dist/cad-runtime/interp/env.js +4 -2
- package/dist/cad-runtime/interp/env.js.map +1 -1
- package/dist/cad-runtime/lib-decl.d.ts +121 -0
- package/dist/cad-runtime/lib-decl.d.ts.map +1 -0
- package/dist/cad-runtime/lib-decl.js +100 -0
- package/dist/cad-runtime/lib-decl.js.map +1 -0
- package/dist/cad-runtime/ports.d.ts +12 -0
- 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 +59 -5
- package/dist/cad-runtime/runtime.d.ts.map +1 -1
- package/dist/cad-runtime/runtime.js +252 -20
- package/dist/cad-runtime/runtime.js.map +1 -1
- package/dist/extra/browser.d.ts +9 -0
- package/dist/extra/browser.d.ts.map +1 -0
- package/dist/extra/browser.js +9 -0
- package/dist/extra/browser.js.map +1 -0
- package/dist/extra/editor-ops.d.ts +22 -0
- package/dist/extra/editor-ops.d.ts.map +1 -0
- package/dist/extra/editor-ops.js +21 -0
- package/dist/extra/editor-ops.js.map +1 -0
- package/dist/extra/extras/svg-extrude.d.ts +45 -0
- package/dist/extra/extras/svg-extrude.d.ts.map +1 -0
- package/dist/extra/extras/svg-extrude.js +110 -0
- package/dist/extra/extras/svg-extrude.js.map +1 -0
- package/dist/extra/extras/text-cjk.d.ts +36 -0
- package/dist/extra/extras/text-cjk.d.ts.map +1 -0
- package/dist/extra/extras/text-cjk.js +86 -0
- package/dist/extra/extras/text-cjk.js.map +1 -0
- package/dist/extra/extras/text-geometry.d.ts +69 -0
- package/dist/extra/extras/text-geometry.d.ts.map +1 -0
- package/dist/extra/extras/text-geometry.js +188 -0
- package/dist/extra/extras/text-geometry.js.map +1 -0
- package/dist/extra/index.d.ts +40 -0
- package/dist/extra/index.d.ts.map +1 -0
- package/dist/extra/index.js +40 -0
- package/dist/extra/index.js.map +1 -0
- package/dist/extra/mesh/drill-hole/DrillHoleCore.d.ts +94 -0
- package/dist/extra/mesh/drill-hole/DrillHoleCore.d.ts.map +1 -0
- package/dist/extra/mesh/drill-hole/DrillHoleCore.js +282 -0
- package/dist/extra/mesh/drill-hole/DrillHoleCore.js.map +1 -0
- package/dist/extra/mesh/drill-hole/drill-types.d.ts +34 -0
- package/dist/extra/mesh/drill-hole/drill-types.d.ts.map +1 -0
- package/dist/extra/mesh/drill-hole/drill-types.js +7 -0
- package/dist/extra/mesh/drill-hole/drill-types.js.map +1 -0
- package/dist/extra/mesh/engrave-decoration.d.ts +42 -0
- package/dist/extra/mesh/engrave-decoration.d.ts.map +1 -0
- package/dist/extra/mesh/engrave-decoration.js +39 -0
- package/dist/extra/mesh/engrave-decoration.js.map +1 -0
- package/dist/extra/mesh/fai_drill.d.ts +21 -0
- package/dist/extra/mesh/fai_drill.d.ts.map +1 -0
- package/dist/extra/mesh/fai_drill.js +89 -0
- package/dist/extra/mesh/fai_drill.js.map +1 -0
- package/dist/extra/mesh/fai_extrude.d.ts +24 -0
- package/dist/extra/mesh/fai_extrude.d.ts.map +1 -0
- package/dist/extra/mesh/fai_extrude.js +42 -0
- package/dist/extra/mesh/fai_extrude.js.map +1 -0
- package/dist/extra/mesh/fai_split.d.ts +164 -0
- package/dist/extra/mesh/fai_split.d.ts.map +1 -0
- package/dist/extra/mesh/fai_split.js +269 -0
- package/dist/extra/mesh/fai_split.js.map +1 -0
- package/dist/extra/mesh/primitives.d.ts +29 -0
- package/dist/extra/mesh/primitives.d.ts.map +1 -0
- package/dist/extra/mesh/primitives.js +41 -0
- package/dist/extra/mesh/primitives.js.map +1 -0
- package/dist/extra/op-names.d.ts +37 -0
- package/dist/extra/op-names.d.ts.map +1 -0
- package/dist/extra/op-names.js +46 -0
- package/dist/extra/op-names.js.map +1 -0
- package/dist/extra/ops/compound.d.ts +140 -0
- package/dist/extra/ops/compound.d.ts.map +1 -0
- package/dist/extra/ops/compound.js +167 -0
- package/dist/extra/ops/compound.js.map +1 -0
- package/dist/extra/ops/copy.d.ts +40 -0
- package/dist/extra/ops/copy.d.ts.map +1 -0
- package/dist/extra/ops/copy.js +83 -0
- package/dist/extra/ops/copy.js.map +1 -0
- package/dist/extra/ops/fai_drill.d.ts +51 -0
- package/dist/extra/ops/fai_drill.d.ts.map +1 -0
- package/dist/extra/ops/fai_drill.js +233 -0
- package/dist/extra/ops/fai_drill.js.map +1 -0
- package/dist/extra/ops/fai_extrude.d.ts +36 -0
- package/dist/extra/ops/fai_extrude.d.ts.map +1 -0
- package/dist/extra/ops/fai_extrude.js +84 -0
- package/dist/extra/ops/fai_extrude.js.map +1 -0
- package/dist/extra/ops/fai_split.d.ts +46 -0
- package/dist/extra/ops/fai_split.d.ts.map +1 -0
- package/dist/extra/ops/fai_split.js +235 -0
- package/dist/extra/ops/fai_split.js.map +1 -0
- package/dist/extra/ops/load.d.ts +49 -0
- package/dist/extra/ops/load.d.ts.map +1 -0
- package/dist/extra/ops/load.js +423 -0
- package/dist/extra/ops/load.js.map +1 -0
- package/dist/extra/ops/svg-extrude.d.ts +32 -0
- package/dist/extra/ops/svg-extrude.d.ts.map +1 -0
- package/dist/extra/ops/svg-extrude.js +74 -0
- package/dist/extra/ops/svg-extrude.js.map +1 -0
- package/dist/extra/ops/text.d.ts +34 -0
- package/dist/extra/ops/text.d.ts.map +1 -0
- package/dist/extra/ops/text.js +100 -0
- package/dist/extra/ops/text.js.map +1 -0
- package/dist/geometry2d/bridge/lift-on-plane.d.ts +8 -5
- package/dist/geometry2d/bridge/lift-on-plane.d.ts.map +1 -1
- package/dist/geometry2d/bridge/lift-on-plane.js +8 -5
- package/dist/geometry2d/bridge/lift-on-plane.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/lang/symbol-table.d.ts +3 -3
- package/dist/lang/symbol-table.generated.d.ts +10 -0
- package/dist/lang/symbol-table.generated.d.ts.map +1 -1
- package/dist/lang/symbol-table.generated.js +10 -0
- package/dist/lang/symbol-table.generated.js.map +1 -1
- package/dist/lang/symbol-table.js +3 -3
- package/dist/lang/symbol-table.js.map +1 -1
- package/dist/math3d/index.d.ts +1 -1
- package/dist/math3d/index.js +1 -1
- package/dist/math3d/index.js.map +1 -1
- package/dist/mesh/engrave.d.ts +2 -3
- package/dist/mesh/engrave.d.ts.map +1 -1
- package/dist/mesh/engrave.js +4 -11
- package/dist/mesh/engrave.js.map +1 -1
- package/dist/mesh/index.d.ts +0 -2
- package/dist/mesh/index.d.ts.map +1 -1
- package/dist/mesh/index.js +0 -2
- package/dist/mesh/index.js.map +1 -1
- package/dist/mesh/primitives.d.ts +7 -5
- package/dist/mesh/primitives.d.ts.map +1 -1
- package/dist/mesh/primitives.js +16 -9
- package/dist/mesh/primitives.js.map +1 -1
- package/dist/mesh/types.d.ts +4 -3
- package/dist/mesh/types.d.ts.map +1 -1
- package/dist/mesh/types.js.map +1 -1
- package/dist/node-host/cli.d.ts +11 -4
- package/dist/node-host/cli.d.ts.map +1 -1
- package/dist/node-host/cli.js +53 -28
- package/dist/node-host/cli.js.map +1 -1
- package/dist/node-host/execute-script.d.ts.map +1 -1
- package/dist/node-host/execute-script.js +3 -4
- package/dist/node-host/execute-script.js.map +1 -1
- package/dist/node-host/lib-package-json.d.ts +36 -0
- package/dist/node-host/lib-package-json.d.ts.map +1 -0
- package/dist/node-host/lib-package-json.js +73 -0
- package/dist/node-host/lib-package-json.js.map +1 -0
- package/dist/occt-kernel/occt-primitives.d.ts.map +1 -1
- package/dist/occt-kernel/occt-primitives.js +41 -0
- package/dist/occt-kernel/occt-primitives.js.map +1 -1
- package/dist/occt-kernel/occtKernel.d.ts +1 -1
- package/dist/occt-kernel/occtKernel.js +1 -1
- package/dist/occt-kernel/occtKernel.js.map +1 -1
- package/dist/primitives/brep-primitives.d.ts.map +1 -1
- package/dist/primitives/brep-primitives.js +39 -12
- package/dist/primitives/brep-primitives.js.map +1 -1
- package/dist/runtime-state.d.ts +28 -1
- package/dist/runtime-state.d.ts.map +1 -1
- package/dist/runtime-state.js +14 -1
- package/dist/runtime-state.js.map +1 -1
- package/dist/sdk.d.ts +2 -2
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +11 -2
- package/dist/sdk.js.map +1 -1
- package/dist/sketch/bspline.d.ts +58 -0
- package/dist/sketch/bspline.d.ts.map +1 -0
- package/dist/sketch/bspline.js +104 -0
- package/dist/sketch/bspline.js.map +1 -0
- package/dist/sketch/canonical.d.ts +239 -0
- package/dist/sketch/canonical.d.ts.map +1 -0
- package/dist/sketch/canonical.js +17 -0
- package/dist/sketch/canonical.js.map +1 -0
- package/dist/sketch/contour.d.ts +43 -0
- package/dist/sketch/contour.d.ts.map +1 -0
- package/dist/sketch/contour.js +202 -0
- package/dist/sketch/contour.js.map +1 -0
- package/dist/sketch/dim-spec.d.ts +32 -0
- package/dist/sketch/dim-spec.d.ts.map +1 -0
- package/dist/sketch/dim-spec.js +112 -0
- package/dist/sketch/dim-spec.js.map +1 -0
- package/dist/sketch/faces.d.ts +45 -0
- package/dist/sketch/faces.d.ts.map +1 -0
- package/dist/sketch/faces.js +108 -0
- package/dist/sketch/faces.js.map +1 -0
- package/dist/sketch/fcstd-types.d.ts +194 -0
- package/dist/sketch/fcstd-types.d.ts.map +1 -0
- package/dist/sketch/fcstd-types.js +67 -0
- package/dist/sketch/fcstd-types.js.map +1 -0
- package/dist/sketch/index.d.ts +46 -0
- package/dist/sketch/index.d.ts.map +1 -0
- package/dist/sketch/index.js +39 -0
- package/dist/sketch/index.js.map +1 -0
- package/dist/sketch/node.d.ts +14 -0
- package/dist/sketch/node.d.ts.map +1 -0
- package/dist/sketch/node.js +43 -0
- package/dist/sketch/node.js.map +1 -0
- package/dist/sketch/op.d.ts +111 -0
- package/dist/sketch/op.d.ts.map +1 -0
- package/dist/sketch/op.js +185 -0
- package/dist/sketch/op.js.map +1 -0
- package/dist/sketch/planegcs-backend.d.ts +69 -0
- package/dist/sketch/planegcs-backend.d.ts.map +1 -0
- package/dist/sketch/planegcs-backend.js +812 -0
- package/dist/sketch/planegcs-backend.js.map +1 -0
- package/dist/sketch/project.d.ts +176 -0
- package/dist/sketch/project.d.ts.map +1 -0
- package/dist/sketch/project.js +656 -0
- package/dist/sketch/project.js.map +1 -0
- package/dist/sketch/shapes.d.ts +370 -0
- package/dist/sketch/shapes.d.ts.map +1 -0
- package/dist/sketch/shapes.js +959 -0
- package/dist/sketch/shapes.js.map +1 -0
- package/dist/sketch/solve.d.ts +21 -0
- package/dist/sketch/solve.d.ts.map +1 -0
- package/dist/sketch/solve.js +144 -0
- package/dist/sketch/solve.js.map +1 -0
- package/dist/sketch/solver-loader.d.ts +47 -0
- package/dist/sketch/solver-loader.d.ts.map +1 -0
- package/dist/sketch/solver-loader.js +77 -0
- package/dist/sketch/solver-loader.js.map +1 -0
- package/dist/sketch/solver.d.ts +63 -0
- package/dist/sketch/solver.d.ts.map +1 -0
- package/dist/sketch/solver.js +28 -0
- package/dist/sketch/solver.js.map +1 -0
- package/dist/sketch/verify.d.ts +53 -0
- package/dist/sketch/verify.d.ts.map +1 -0
- package/dist/sketch/verify.js +71 -0
- package/dist/sketch/verify.js.map +1 -0
- package/dist/topology/naming/geom-hint.d.ts +12 -0
- package/dist/topology/naming/geom-hint.d.ts.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/lineage.d.ts +1 -0
- package/dist/topology/naming/lineage.d.ts.map +1 -1
- package/dist/topology/naming/lineage.js +37 -1
- package/dist/topology/naming/lineage.js.map +1 -1
- package/dist/topology/naming/resolve-face.d.ts +13 -2
- package/dist/topology/naming/resolve-face.d.ts.map +1 -1
- package/dist/topology/naming/resolve-face.js +18 -2
- package/dist/topology/naming/resolve-face.js.map +1 -1
- package/dist/weapp.d.ts +1 -1
- package/dist/weapp.d.ts.map +1 -1
- package/dist/weapp.js +1 -1
- package/dist/weapp.js.map +1 -1
- package/package.json +43 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topology.js","sourceRoot":"","sources":["../../../src/api/generated/topology.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * generated/topology.ts — 生成文件,勿手改。\n * 由 packages/core/scripts/gen-l3-surface.ts 依据 api/surface/arg-spec.ts 生成(E5/P14 分片)。\n * topology 模块:21 个投影符号;另有 281 个 skip 登记。\n * A6(2026-10-06)口径指认:本文件是 brepjs 投影面的**增量**清单;脚本面全集的\n * 权威来源是 generated/script-face.ts + gen-symbol-table 产物\n * lang/symbol-table.generated.ts(cad 脚本面 95 op)。两个清单回答不同问题,\n * 互不为超集——禁止用本文件的名字反推脚本面能力。\n */\nimport { defineOp } from '../../define-op'\nimport { brepOf } from '../../shape'\nimport { getBrepApi } from '../../brep/handle-bridge'\nimport type { BrepHandle } from '../../brep/engine/types'\nimport type { Shape } from '../../mesh/types'\nimport { torusBrep as __own_torusBrep } from '../brep-operations/primitiveFns'\nimport { fuseBrep as __own_fuseBrep } from '../brep-operations/booleanFns'\nimport { ellipsoidBrep as __own_ellipsoidBrep } from '../brep-operations/primitiveFns'\nimport { rotateBrep as __own_rotateBrep } from '../brep-operations/topologyFns'\nimport { mirrorBrep as __own_mirrorBrep } from '../brep-operations/topologyFns'\nimport { cloneBrep as __own_cloneBrep } from '../brep-operations/topologyFns'\nimport { applyMatrixBrep as __own_applyMatrixBrep } from '../brep-operations/topologyFns'\nimport { locateBrep as __own_locateBrep } from '../brep-operations/topologyFns'\nimport { sectionBrep as __own_sectionBrep } from '../brep-operations/booleanFns'\nimport { splitBrep as __own_splitBrep } from '../brep-operations/booleanFns'\nimport { shellBrep as __own_shellBrep } from '../brep-operations/topologyFns'\nimport { offsetBrep as __own_offsetBrep } from '../brep-operations/topologyFns'\nimport { healBrep as __own_healBrep } from '../brep-operations/healingFns'\nimport { simplifyBrep as __own_simplifyBrep } from '../brep-operations/healingFns'\nimport { autoHealBrep as __own_autoHealBrep } from '../brep-operations/healingFns'\nimport { fixShapeBrep as __own_fixShapeBrep } from '../brep-operations/healingFns'\nimport { healSolidBrep as __own_healSolidBrep } from '../brep-operations/healingFns'\nimport { fixSelfIntersectionBrep as __own_fixSelfIntersectionBrep } from '../brep-operations/healingFns'\n\n/**\n * torus — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * (majorRadius: number, minorRadius: number, options?: TorusOptions)\n * 桥接:defineOp({ brep: __own_torusBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const torus = defineOp({\n brep: __own_torusBrep,\n name: 'torus', naming: {\"kind\":\"unmodeled\",\"reason\":\"construct vocabulary pending Phase 3\"}, paramDims: {},\n})\n\n/**\n * fuse — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * (a: Shape3D, b: Shape3D, options?: BooleanOptions) -> Result<Shape3D>\n * 桥接:defineOp({ brep: __own_fuseBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const fuse = defineOp({\n brep: __own_fuseBrep,\n name: 'fuse', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, engines: [\"occt\"], paramDims: {},\n})\n\n/**\n * getBounds — 查询(core,生成文件,勿手改;来源 api/surface/arg-spec.ts)。\n * (shape: Shape) -> BrepBoundingBox(core)\n * 桥接:getBrepApi().* 直连 occt 引擎(§5.5 第 2 条)——无来源实现中转。\n *\n * @param shape - 可形状参数(原样透传)\n * @returns { xmin: number; ymin: number; zmin: number; xmax: number; ymax: number; zmax: number } — 纯数据结果(非 Shape)。\n */\nexport function getBounds(shape: Shape): { xmin: number; ymin: number; zmin: number; xmax: number; ymax: number; zmax: number } {\n const h0 = brepOf(shape as Shape) as BrepHandle\n return getBrepApi().getBoundingBox(h0)\n}\n\n/**\n * ellipsoid — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * ellipsoid(rx: number, ry: number, rz: number, options?: EllipsoidOptions): Shape\n * 桥接:defineOp({ brep: __own_ellipsoidBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const ellipsoid = defineOp({\n brep: __own_ellipsoidBrep,\n name: 'ellipsoid', naming: {\"kind\":\"unmodeled\",\"reason\":\"construct vocabulary pending Phase 3\"}, paramDims: {},\n})\n\n/**\n * rotate — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * rotate(shape: Shape, angle: number, options?: { at?, axis? }): Shape\n * 桥接:defineOp({ brep: __own_rotateBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const rotate = defineOp({\n brep: __own_rotateBrep,\n name: 'rotate', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, paramDims: {},\n})\n\n/**\n * mirror — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * mirror(shape: Shape, options?: MirrorOptions): Shape\n * 桥接:defineOp({ brep: __own_mirrorBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const mirror = defineOp({\n brep: __own_mirrorBrep,\n name: 'mirror', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, paramDims: {},\n})\n\n/**\n * clone — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * clone(shape: Shape): Shape\n * 桥接:defineOp({ brep: __own_cloneBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const clone = defineOp({\n brep: __own_cloneBrep,\n name: 'clone', naming: {\"kind\":\"identity\"}, paramDims: {},\n})\n\n/**\n * applyMatrix — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * applyMatrix(shape: Shape, matrix: unknown): Shape\n * 桥接:defineOp({ brep: __own_applyMatrixBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const applyMatrix = defineOp({\n brep: __own_applyMatrixBrep,\n name: 'applyMatrix', naming: {\"kind\":\"identity\"}, paramDims: {},\n})\n\n/**\n * locate — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * locate(shape: Shape, placement: unknown): Shape\n * 桥接:defineOp({ brep: __own_locateBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const locate = defineOp({\n brep: __own_locateBrep,\n name: 'locate', naming: {\"kind\":\"identity\"}, engines: [\"occt\"], paramDims: {},\n})\n\n/**\n * section — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * section(shape: Shape, plane: PlaneInput): Shape\n * 桥接:defineOp({ brep: __own_sectionBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const section = defineOp({\n brep: __own_sectionBrep,\n name: 'section', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, paramDims: {},\n})\n\n/**\n * split — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * split(shape: Shape, tools: Shape[]): Shape\n * 桥接:defineOp({ brep: __own_splitBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const split = defineOp({\n brep: __own_splitBrep,\n name: 'split', naming: {\"kind\":\"subdivide\"}, engines: [\"occt\"], paramDims: {},\n})\n\n/**\n * shell — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * shell(shape: Shape, faces?: Shape[], thickness: number): Shape\n * 桥接:defineOp({ brep: __own_shellBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const shell = defineOp({\n brep: __own_shellBrep,\n name: 'shell', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, engines: [\"occt\"], paramDims: {},\n})\n\n/**\n * offset — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * offset(shape: Shape, distance: number): Shape\n * 桥接:defineOp({ brep: __own_offsetBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const offset = defineOp({\n brep: __own_offsetBrep,\n name: 'offset', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, engines: [\"occt\"], paramDims: {},\n})\n\n/**\n * heal — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * heal(shape: Shape): Shape\n * 桥接:defineOp({ brep: __own_healBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const heal = defineOp({\n brep: __own_healBrep,\n name: 'heal', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, engines: [\"occt\"], paramDims: {},\n})\n\n/**\n * simplify — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * simplify(shape: Shape): Shape\n * 桥接:defineOp({ brep: __own_simplifyBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const simplify = defineOp({\n brep: __own_simplifyBrep,\n name: 'simplify', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, engines: [\"occt\"], paramDims: {},\n})\n\n/**\n * isValid — 查询(core,生成文件,勿手改;来源 api/surface/arg-spec.ts)。\n * isValid(shape: Shape): boolean(core)\n * 桥接:getBrepApi().* 直连 occt 引擎(§5.5 第 2 条)——无来源实现中转。\n *\n * @param shape - 可形状参数(原样透传)\n * @returns boolean — 纯数据结果(非 Shape)。\n */\nexport function isValid(shape: Shape): boolean {\n const h0 = brepOf(shape as Shape) as BrepHandle\n return getBrepApi().isValid(h0)\n}\n\n/**\n * isSameShape — 查询(core,生成文件,勿手改;来源 api/surface/arg-spec.ts)。\n * isSameShape(a: Shape, b: Shape): boolean(core)\n * 桥接:getBrepApi().* 直连 occt 引擎(§5.5 第 2 条)——无来源实现中转。\n *\n * @param a - 可形状参数(第一个被比较形状)\n * @param b - 可形状参数(第二个被比较形状)\n * @returns boolean — 纯数据结果(非 Shape)。\n */\nexport function isSameShape(a: Shape, b: Shape): boolean {\n const h0 = brepOf(a as Shape) as BrepHandle\n const h1 = brepOf(b as Shape) as BrepHandle\n return getBrepApi().isSame(h0, h1)\n}\n\n/**\n * autoHeal — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * autoHeal(shape: Shape, options?: AutoHealOptions): { shape: Shape, report }\n * 桥接:defineOp({ brep: __own_autoHealBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const autoHeal = defineOp({\n brep: __own_autoHealBrep,\n name: 'autoHeal', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, engines: [\"occt\"], outputs: [\"shape\"], paramDims: {},\n})\n\n/**\n * fixShape — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * fixShape(shape: Shape): Shape\n * 桥接:defineOp({ brep: __own_fixShapeBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const fixShape = defineOp({\n brep: __own_fixShapeBrep,\n name: 'fixShape', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, paramDims: {},\n})\n\n/**\n * healSolid — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * healSolid(solid: Shape): Shape\n * 桥接:defineOp({ brep: __own_healSolidBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const healSolid = defineOp({\n brep: __own_healSolidBrep,\n name: 'healSolid', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, paramDims: {},\n})\n\n/**\n * fixSelfIntersection — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * fixSelfIntersection(shape: Shape): Shape\n * 桥接:defineOp({ brep: __own_fixSelfIntersectionBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const fixSelfIntersection = defineOp({\n brep: __own_fixSelfIntersectionBrep,\n name: 'fixSelfIntersection', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, engines: [\"occt\"], paramDims: {},\n})\n"]}
|
|
1
|
+
{"version":3,"file":"topology.js","sourceRoot":"","sources":["../../../src/api/generated/topology.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * generated/topology.ts — 生成文件,勿手改。\n * 由 packages/core/scripts/gen-l3-surface.ts 依据 api/surface/arg-spec.ts 生成(E5/P14 分片)。\n * topology 模块:21 个投影符号;另有 281 个 skip 登记。\n * A6(2026-10-06)口径指认:本文件是 brepjs 投影面的**增量**清单;脚本面全集的\n * 权威来源是 generated/script-face.ts + gen-symbol-table 产物\n * lang/symbol-table.generated.ts(cad 脚本面 95 op)。两个清单回答不同问题,\n * 互不为超集——禁止用本文件的名字反推脚本面能力。\n */\nimport { defineOp } from '../../define-op'\nimport { brepOf } from '../../shape'\nimport { getBrepApi } from '../../brep/handle-bridge'\nimport type { BrepHandle } from '../../brep/engine/types'\nimport type { Shape } from '../../mesh/types'\nimport { torusBrep as __own_torusBrep } from '../brep-operations/primitiveFns'\nimport { fuseBrep as __own_fuseBrep } from '../brep-operations/booleanFns'\nimport { ellipsoidBrep as __own_ellipsoidBrep } from '../brep-operations/primitiveFns'\nimport { rotateBrep as __own_rotateBrep } from '../brep-operations/topologyFns'\nimport { mirrorBrep as __own_mirrorBrep } from '../brep-operations/topologyFns'\nimport { cloneBrep as __own_cloneBrep } from '../brep-operations/topologyFns'\nimport { applyMatrixBrep as __own_applyMatrixBrep } from '../brep-operations/topologyFns'\nimport { locateBrep as __own_locateBrep } from '../brep-operations/topologyFns'\nimport { sectionBrep as __own_sectionBrep } from '../brep-operations/booleanFns'\nimport { splitBrep as __own_splitBrep } from '../brep-operations/booleanFns'\nimport { shellBrep as __own_shellBrep } from '../brep-operations/topologyFns'\nimport { offsetBrep as __own_offsetBrep } from '../brep-operations/topologyFns'\nimport { healBrep as __own_healBrep } from '../brep-operations/healingFns'\nimport { simplifyBrep as __own_simplifyBrep } from '../brep-operations/healingFns'\nimport { autoHealBrep as __own_autoHealBrep } from '../brep-operations/healingFns'\nimport { fixShapeBrep as __own_fixShapeBrep } from '../brep-operations/healingFns'\nimport { healSolidBrep as __own_healSolidBrep } from '../brep-operations/healingFns'\nimport { fixSelfIntersectionBrep as __own_fixSelfIntersectionBrep } from '../brep-operations/healingFns'\n\n/**\n * torus — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * (majorRadius: number, minorRadius: number, options?: TorusOptions)\n * 桥接:defineOp({ brep: __own_torusBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const torus = defineOp({\n brep: __own_torusBrep,\n name: 'torus', naming: {\"kind\":\"unmodeled\",\"reason\":\"construct vocabulary pending Phase 3\"}, paramDims: {},\n})\n\n/**\n * fuse — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * (a: Shape3D, b: Shape3D, options?: BooleanOptions) -> Result<Shape3D>\n * 桥接:defineOp({ brep: __own_fuseBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const fuse = defineOp({\n brep: __own_fuseBrep,\n name: 'fuse', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, paramDims: {},\n})\n\n/**\n * getBounds — 查询(core,生成文件,勿手改;来源 api/surface/arg-spec.ts)。\n * (shape: Shape) -> BrepBoundingBox(core)\n * 桥接:getBrepApi().* 直连 occt 引擎(§5.5 第 2 条)——无来源实现中转。\n *\n * @param shape - 可形状参数(原样透传)\n * @returns { xmin: number; ymin: number; zmin: number; xmax: number; ymax: number; zmax: number } — 纯数据结果(非 Shape)。\n */\nexport function getBounds(shape: Shape): { xmin: number; ymin: number; zmin: number; xmax: number; ymax: number; zmax: number } {\n const h0 = brepOf(shape as Shape) as BrepHandle\n return getBrepApi().getBoundingBox(h0)\n}\n\n/**\n * ellipsoid — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * ellipsoid(rx: number, ry: number, rz: number, options?: EllipsoidOptions): Shape\n * 桥接:defineOp({ brep: __own_ellipsoidBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const ellipsoid = defineOp({\n brep: __own_ellipsoidBrep,\n name: 'ellipsoid', naming: {\"kind\":\"unmodeled\",\"reason\":\"construct vocabulary pending Phase 3\"}, paramDims: {},\n})\n\n/**\n * rotate — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * rotate(shape: Shape, angle: number, options?: { at?, axis? }): Shape\n * 桥接:defineOp({ brep: __own_rotateBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const rotate = defineOp({\n brep: __own_rotateBrep,\n name: 'rotate', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, paramDims: {},\n})\n\n/**\n * mirror — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * mirror(shape: Shape, options?: MirrorOptions): Shape\n * 桥接:defineOp({ brep: __own_mirrorBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const mirror = defineOp({\n brep: __own_mirrorBrep,\n name: 'mirror', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, paramDims: {},\n})\n\n/**\n * clone — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * clone(shape: Shape): Shape\n * 桥接:defineOp({ brep: __own_cloneBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const clone = defineOp({\n brep: __own_cloneBrep,\n name: 'clone', naming: {\"kind\":\"identity\"}, paramDims: {},\n})\n\n/**\n * applyMatrix — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * applyMatrix(shape: Shape, matrix: unknown): Shape\n * 桥接:defineOp({ brep: __own_applyMatrixBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const applyMatrix = defineOp({\n brep: __own_applyMatrixBrep,\n name: 'applyMatrix', naming: {\"kind\":\"identity\"}, paramDims: {},\n})\n\n/**\n * locate — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * locate(shape: Shape, placement: unknown): Shape\n * 桥接:defineOp({ brep: __own_locateBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const locate = defineOp({\n brep: __own_locateBrep,\n name: 'locate', naming: {\"kind\":\"identity\"}, engines: [\"occt\"], paramDims: {},\n})\n\n/**\n * section — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * section(shape: Shape, plane: PlaneInput): Shape\n * 桥接:defineOp({ brep: __own_sectionBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const section = defineOp({\n brep: __own_sectionBrep,\n name: 'section', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, paramDims: {},\n})\n\n/**\n * split — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * split(shape: Shape, tools: Shape[]): Shape\n * 桥接:defineOp({ brep: __own_splitBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const split = defineOp({\n brep: __own_splitBrep,\n name: 'split', naming: {\"kind\":\"subdivide\"}, engines: [\"occt\"], paramDims: {},\n})\n\n/**\n * shell — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * shell(shape: Shape, faces?: Shape[], thickness: number): Shape\n * 桥接:defineOp({ brep: __own_shellBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const shell = defineOp({\n brep: __own_shellBrep,\n name: 'shell', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, engines: [\"occt\"], paramDims: {},\n})\n\n/**\n * offset — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * offset(shape: Shape, distance: number): Shape\n * 桥接:defineOp({ brep: __own_offsetBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const offset = defineOp({\n brep: __own_offsetBrep,\n name: 'offset', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, engines: [\"occt\"], paramDims: {},\n})\n\n/**\n * heal — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * heal(shape: Shape): Shape\n * 桥接:defineOp({ brep: __own_healBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const heal = defineOp({\n brep: __own_healBrep,\n name: 'heal', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, engines: [\"occt\"], paramDims: {},\n})\n\n/**\n * simplify — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * simplify(shape: Shape): Shape\n * 桥接:defineOp({ brep: __own_simplifyBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const simplify = defineOp({\n brep: __own_simplifyBrep,\n name: 'simplify', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, engines: [\"occt\"], paramDims: {},\n})\n\n/**\n * isValid — 查询(core,生成文件,勿手改;来源 api/surface/arg-spec.ts)。\n * isValid(shape: Shape): boolean(core)\n * 桥接:getBrepApi().* 直连 occt 引擎(§5.5 第 2 条)——无来源实现中转。\n *\n * @param shape - 可形状参数(原样透传)\n * @returns boolean — 纯数据结果(非 Shape)。\n */\nexport function isValid(shape: Shape): boolean {\n const h0 = brepOf(shape as Shape) as BrepHandle\n return getBrepApi().isValid(h0)\n}\n\n/**\n * isSameShape — 查询(core,生成文件,勿手改;来源 api/surface/arg-spec.ts)。\n * isSameShape(a: Shape, b: Shape): boolean(core)\n * 桥接:getBrepApi().* 直连 occt 引擎(§5.5 第 2 条)——无来源实现中转。\n *\n * @param a - 可形状参数(第一个被比较形状)\n * @param b - 可形状参数(第二个被比较形状)\n * @returns boolean — 纯数据结果(非 Shape)。\n */\nexport function isSameShape(a: Shape, b: Shape): boolean {\n const h0 = brepOf(a as Shape) as BrepHandle\n const h1 = brepOf(b as Shape) as BrepHandle\n return getBrepApi().isSame(h0, h1)\n}\n\n/**\n * autoHeal — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * autoHeal(shape: Shape, options?: AutoHealOptions): { shape: Shape, report }\n * 桥接:defineOp({ brep: __own_autoHealBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const autoHeal = defineOp({\n brep: __own_autoHealBrep,\n name: 'autoHeal', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, engines: [\"occt\"], outputs: [\"shape\"], paramDims: {},\n})\n\n/**\n * fixShape — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * fixShape(shape: Shape): Shape\n * 桥接:defineOp({ brep: __own_fixShapeBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const fixShape = defineOp({\n brep: __own_fixShapeBrep,\n name: 'fixShape', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, paramDims: {},\n})\n\n/**\n * healSolid — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * healSolid(solid: Shape): Shape\n * 桥接:defineOp({ brep: __own_healSolidBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const healSolid = defineOp({\n brep: __own_healSolidBrep,\n name: 'healSolid', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, paramDims: {},\n})\n\n/**\n * fixSelfIntersection — core 自有实现(生成文件,禁手改;来源 api/surface/arg-spec.ts)。\n * fixSelfIntersection(shape: Shape): Shape\n * 桥接:defineOp({ brep: __own_fixSelfIntersectionBrep })——core 直连 occt 引擎(§5.4),\n * D11 归一在自有实现内部完成(api/brep-operations/)。\n */\nexport const fixSelfIntersection = defineOp({\n brep: __own_fixSelfIntersectionBrep,\n name: 'fixSelfIntersection', naming: {\"kind\":\"kernel\",\"newFaces\":{\"via\":\"byAdjacency\"}}, engines: [\"occt\"], paramDims: {},\n})\n"]}
|
package/dist/api/helix.d.ts
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* api helix — 螺旋线(1D
|
|
2
|
+
* api helix — 螺旋线(1D 曲线,全平台中立 op)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `engines: ['occt']` 由守卫 ② 校验。
|
|
4
|
+
* 2026-10-13:`makeHelixWire` 已进 L1 中立面(`BrepEngineApi`),本 op 由
|
|
5
|
+
* 「occt 平台 op」升为**全平台中立 op** —— 不再声明 `engines: ['occt']`。
|
|
7
6
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* -
|
|
12
|
-
*
|
|
7
|
+
* 手性是 `makeHelixWire` 的**形参**(`leftHanded`),由引擎适配器消化,本文件只看 L1:
|
|
8
|
+
* - 右手(默认 `'right'`):两引擎都可建。brepkit 侧是采样拟合近似
|
|
9
|
+
* (无 1D 螺旋原语),偏差已钉 band。
|
|
10
|
+
* - 左手(`handed: 'left'`):occt 侧走原生带手性入口(`makeHelixWireHanded`);
|
|
11
|
+
* brepkit 无带手性原语 → 适配器**显式失败**,不做镜像兜底
|
|
12
|
+
* (静默换算法比报错更危险)。故本文件不 import 平台模块、也不按 op 声明
|
|
13
|
+
* `engines: ['occt']`——那会把右手一并拒掉。
|
|
13
14
|
* - 1D 产物:经 fromBrepCurve 登记,kind='curve'。
|
|
14
|
-
* - 非 occt 引擎(brepkit)→ 执行前 BrepUnsupportedError(D11-4);brep_mock 受 D11-3
|
|
15
|
-
* 豁免不拦截(且 getOcctKernel 为全局 occt 实例,brep_mock 下仍可真实出线)。
|
|
16
15
|
*/
|
|
17
16
|
import type { Shape } from '../mesh/types.js';
|
|
18
17
|
/** 螺旋手性:`'right'`(右手,逆时针上旋)或 `'left'`(左手,顺时针上旋)。 */
|
|
@@ -31,7 +30,8 @@ export interface HelixOptions {
|
|
|
31
30
|
origin?: [number, number, number];
|
|
32
31
|
/**
|
|
33
32
|
* 手性(默认 `'right'`)。同 pitch/height/radius 下左右旋互为镜像。
|
|
34
|
-
*
|
|
33
|
+
* 经 L1 `makeHelixWire(..., leftHanded)` 送达引擎适配器:occt 两侧都原生支持;
|
|
34
|
+
* brepkit 只有右手(左手显式失败,不镜像)。
|
|
35
35
|
*/
|
|
36
36
|
handed?: HelixHanded;
|
|
37
37
|
}
|
|
@@ -42,7 +42,7 @@ export interface HelixOptions {
|
|
|
42
42
|
* @async false
|
|
43
43
|
* @qual ok
|
|
44
44
|
* @name helix
|
|
45
|
-
* @note
|
|
45
|
+
* @note 全平台中立 op:手性是 L1 `makeHelixWire` 的形参(`leftHanded`)——右手两引擎都可建(brepkit 侧为采样拟合近似);左手仅 occt 原生支持,brepkit 适配器显式失败(不镜像兜底)。
|
|
46
46
|
* @returns Shape 1D 螺旋线(kind:'curve')。
|
|
47
47
|
* @param options.radius - 螺旋半径(mm,>0)。type:number required:true
|
|
48
48
|
* @param options.pitch - 螺距(mm,≠0)。type:number required:true
|
package/dist/api/helix.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helix.d.ts","sourceRoot":"","sources":["../../src/api/helix.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"helix.d.ts","sourceRoot":"","sources":["../../src/api/helix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAO1C,oDAAoD;AACpD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAA;AAE1C,sBAAsB;AACtB,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,cAAc;IACd,KAAK,EAAE,MAAM,CAAA;IACb,yBAAyB;IACzB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,gBAAgB;IAChB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAwBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,KAAK;;CAYhB,CAAA"}
|
package/dist/api/helix.js
CHANGED
|
@@ -1,25 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* api helix — 螺旋线(1D
|
|
2
|
+
* api helix — 螺旋线(1D 曲线,全平台中立 op)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `engines: ['occt']` 由守卫 ② 校验。
|
|
4
|
+
* 2026-10-13:`makeHelixWire` 已进 L1 中立面(`BrepEngineApi`),本 op 由
|
|
5
|
+
* 「occt 平台 op」升为**全平台中立 op** —— 不再声明 `engines: ['occt']`。
|
|
7
6
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* -
|
|
12
|
-
*
|
|
7
|
+
* 手性是 `makeHelixWire` 的**形参**(`leftHanded`),由引擎适配器消化,本文件只看 L1:
|
|
8
|
+
* - 右手(默认 `'right'`):两引擎都可建。brepkit 侧是采样拟合近似
|
|
9
|
+
* (无 1D 螺旋原语),偏差已钉 band。
|
|
10
|
+
* - 左手(`handed: 'left'`):occt 侧走原生带手性入口(`makeHelixWireHanded`);
|
|
11
|
+
* brepkit 无带手性原语 → 适配器**显式失败**,不做镜像兜底
|
|
12
|
+
* (静默换算法比报错更危险)。故本文件不 import 平台模块、也不按 op 声明
|
|
13
|
+
* `engines: ['occt']`——那会把右手一并拒掉。
|
|
13
14
|
* - 1D 产物:经 fromBrepCurve 登记,kind='curve'。
|
|
14
|
-
* - 非 occt 引擎(brepkit)→ 执行前 BrepUnsupportedError(D11-4);brep_mock 受 D11-3
|
|
15
|
-
* 豁免不拦截(且 getOcctKernel 为全局 occt 实例,brep_mock 下仍可真实出线)。
|
|
16
15
|
*/
|
|
17
16
|
import { solidToShape } from '../brep/brep-ops.js';
|
|
18
17
|
import { getBrepApi } from '../brep/handle-bridge.js';
|
|
19
18
|
import { fromBrepCurve } from '../shape.js';
|
|
20
19
|
import { defineOp } from '../sdk.js';
|
|
21
|
-
|
|
22
|
-
/** BREP 路径:用 occt 原生 makeHelixWire / makeHelixWireHanded 构造螺旋线,登记 1D 句柄。 */
|
|
20
|
+
/** BREP 路径:经 L1 `makeHelixWire` 构造螺旋线(手性作为形参),登记 1D 句柄。 */
|
|
23
21
|
function helixBrep(opts) {
|
|
24
22
|
const { radius, pitch, turns } = opts;
|
|
25
23
|
if (!(radius > 0))
|
|
@@ -36,13 +34,11 @@ function helixBrep(opts) {
|
|
|
36
34
|
const origin = opts.origin ?? [0, 0, 0];
|
|
37
35
|
const height = pitch * turns;
|
|
38
36
|
const kernel = getBrepApi();
|
|
39
|
-
const occt = getOcctKernel();
|
|
40
37
|
const o = { x: origin[0], y: origin[1], z: origin[2] };
|
|
41
38
|
const a = { x: axis[0], y: axis[1], z: axis[2] };
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
: occt.makeHelixWire(o, a, pitch, height, radius));
|
|
39
|
+
// 手性是 L1 形参:occt 侧左右手都是原生路径;brepkit 侧右手采样拟合、左手由
|
|
40
|
+
// 适配器显式拒绝(无镜像兜底)。本文件因此不需要任何平台 import。
|
|
41
|
+
const handle = kernel.makeHelixWire(o, a, pitch, height, radius, handed === 'left');
|
|
46
42
|
return fromBrepCurve(solidToShape(kernel, handle), { solid: handle });
|
|
47
43
|
}
|
|
48
44
|
/**
|
|
@@ -52,7 +48,7 @@ function helixBrep(opts) {
|
|
|
52
48
|
* @async false
|
|
53
49
|
* @qual ok
|
|
54
50
|
* @name helix
|
|
55
|
-
* @note
|
|
51
|
+
* @note 全平台中立 op:手性是 L1 `makeHelixWire` 的形参(`leftHanded`)——右手两引擎都可建(brepkit 侧为采样拟合近似);左手仅 occt 原生支持,brepkit 适配器显式失败(不镜像兜底)。
|
|
56
52
|
* @returns Shape 1D 螺旋线(kind:'curve')。
|
|
57
53
|
* @param options.radius - 螺旋半径(mm,>0)。type:number required:true
|
|
58
54
|
* @param options.pitch - 螺距(mm,≠0)。type:number required:true
|
|
@@ -65,15 +61,14 @@ function helixBrep(opts) {
|
|
|
65
61
|
* const lh = cad.helix({ radius: 5, pitch: 2, turns: 3, handed: 'left' })
|
|
66
62
|
*/
|
|
67
63
|
export const helix = defineOp({
|
|
68
|
-
// name
|
|
69
|
-
//
|
|
70
|
-
//
|
|
71
|
-
//
|
|
64
|
+
// name 必填:occt op 覆盖率扫描器的 op 全集只收
|
|
65
|
+
// `export const X = defineOp({ name: '…' })`——缺 name 的 op 在报告里不可见。
|
|
66
|
+
// (本 op 无平台直调:左手经 L1 形参送达,原生 makeHelixWireHanded 由契约实现层
|
|
67
|
+
// 直调,见 occt-kernel/occt-primitives.ts。)
|
|
72
68
|
name: 'helix',
|
|
73
69
|
brep(opts) {
|
|
74
70
|
return helixBrep(opts);
|
|
75
71
|
},
|
|
76
|
-
engines: ['occt'],
|
|
77
72
|
naming: { kind: 'unmodeled', reason: 'construct vocabulary pending Phase 3' },
|
|
78
73
|
paramDims: {},
|
|
79
74
|
});
|
package/dist/api/helix.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helix.js","sourceRoot":"","sources":["../../src/api/helix.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"helix.js","sourceRoot":"","sources":["../../src/api/helix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AA0BjC,2DAA2D;AAC3D,SAAS,SAAS,CAAC,IAAkB;IACnC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;IACrC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC5E,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;IAChF,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACzE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAA;IACrC,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,8DAA8D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACnG,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,KAAK,GAAG,KAAK,CAAA;IAC5B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IACtD,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IAChD,gDAAgD;IAChD,sCAAsC;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAA;IACnF,OAAO,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;AACvE,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC;IAC5B,kCAAkC;IAClC,mEAAmE;IACnE,wDAAwD;IACxD,0CAA0C;IAC1C,IAAI,EAAE,OAAO;IACb,IAAI,CAAC,IAAkB;QACrB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC;IACD,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,sCAAsC,EAAgB;IAE3F,SAAS,EAAE,EAAE;CACd,CAAC,CAAA","sourcesContent":["/**\n * api helix — 螺旋线(1D 曲线,全平台中立 op)\n *\n * 2026-10-13:`makeHelixWire` 已进 L1 中立面(`BrepEngineApi`),本 op 由\n * 「occt 平台 op」升为**全平台中立 op** —— 不再声明 `engines: ['occt']`。\n *\n * 手性是 `makeHelixWire` 的**形参**(`leftHanded`),由引擎适配器消化,本文件只看 L1:\n * - 右手(默认 `'right'`):两引擎都可建。brepkit 侧是采样拟合近似\n * (无 1D 螺旋原语),偏差已钉 band。\n * - 左手(`handed: 'left'`):occt 侧走原生带手性入口(`makeHelixWireHanded`);\n * brepkit 无带手性原语 → 适配器**显式失败**,不做镜像兜底\n * (静默换算法比报错更危险)。故本文件不 import 平台模块、也不按 op 声明\n * `engines: ['occt']`——那会把右手一并拒掉。\n * - 1D 产物:经 fromBrepCurve 登记,kind='curve'。\n */\n\nimport type { Shape } from '../mesh/types'\nimport { solidToShape } from '../brep/brep-ops'\nimport { getBrepApi } from '../brep/handle-bridge'\nimport { fromBrepCurve } from '../shape'\nimport { defineOp } from '../sdk'\nimport type { Provenance } from '../topology/naming/lineage'\n\n/** 螺旋手性:`'right'`(右手,逆时针上旋)或 `'left'`(左手,顺时针上旋)。 */\nexport type HelixHanded = 'right' | 'left'\n\n/** `cad.helix` 参数。 */\nexport interface HelixOptions {\n /** 螺旋半径(mm,>0)。 */\n radius: number\n /** 螺距(mm,每圈沿轴的推进量,≠0)。 */\n pitch: number\n /** 圈数(>0)。 */\n turns: number\n /** 螺旋轴方向(单位向量,默认 +Z)。 */\n axis?: [number, number, number]\n /** 起点(默认原点)。 */\n origin?: [number, number, number]\n /**\n * 手性(默认 `'right'`)。同 pitch/height/radius 下左右旋互为镜像。\n * 经 L1 `makeHelixWire(..., leftHanded)` 送达引擎适配器:occt 两侧都原生支持;\n * brepkit 只有右手(左手显式失败,不镜像)。\n */\n handed?: HelixHanded\n}\n\n/** BREP 路径:经 L1 `makeHelixWire` 构造螺旋线(手性作为形参),登记 1D 句柄。 */\nfunction helixBrep(opts: HelixOptions): Shape {\n const { radius, pitch, turns } = opts\n if (!(radius > 0)) throw new Error('E_HELIX_BAD_RADIUS: radius must be > 0')\n if (!(pitch !== 0)) throw new Error('E_HELIX_BAD_PITCH: pitch must be non-zero')\n if (!(turns > 0)) throw new Error('E_HELIX_BAD_TURNS: turns must be > 0')\n const handed = opts.handed ?? 'right'\n if (handed !== 'right' && handed !== 'left') {\n throw new Error(`E_HELIX_BAD_HANDED: handed must be 'right' or 'left' (got '${String(handed)}')`)\n }\n const axis = opts.axis ?? [0, 0, 1]\n const origin = opts.origin ?? [0, 0, 0]\n const height = pitch * turns\n const kernel = getBrepApi()\n const o = { x: origin[0], y: origin[1], z: origin[2] }\n const a = { x: axis[0], y: axis[1], z: axis[2] }\n // 手性是 L1 形参:occt 侧左右手都是原生路径;brepkit 侧右手采样拟合、左手由\n // 适配器显式拒绝(无镜像兜底)。本文件因此不需要任何平台 import。\n const handle = kernel.makeHelixWire(o, a, pitch, height, radius, handed === 'left')\n return fromBrepCurve(solidToShape(kernel, handle), { solid: handle })\n}\n\n/**\n * 构造螺旋线(1D 曲线)。\n * @group 创建\n * @inputs 0\n * @async false\n * @qual ok\n * @name helix\n * @note 全平台中立 op:手性是 L1 `makeHelixWire` 的形参(`leftHanded`)——右手两引擎都可建(brepkit 侧为采样拟合近似);左手仅 occt 原生支持,brepkit 适配器显式失败(不镜像兜底)。\n * @returns Shape 1D 螺旋线(kind:'curve')。\n * @param options.radius - 螺旋半径(mm,>0)。type:number required:true\n * @param options.pitch - 螺距(mm,≠0)。type:number required:true\n * @param options.turns - 圈数(>0)。type:number required:true\n * @param options.axis - 螺旋轴方向(默认 +Z)。type:Vec3 required:false\n * @param options.origin - 起点(默认原点)。type:Vec3 required:false\n * @param options.handed - 手性:'right'(默认)或 'left'。type:HelixHanded required:false\n * @example\n * const h = cad.helix({ radius: 5, pitch: 2, turns: 3 })\n * const lh = cad.helix({ radius: 5, pitch: 2, turns: 3, handed: 'left' })\n */\nexport const helix = defineOp({\n // name 必填:occt op 覆盖率扫描器的 op 全集只收\n // `export const X = defineOp({ name: '…' })`——缺 name 的 op 在报告里不可见。\n // (本 op 无平台直调:左手经 L1 形参送达,原生 makeHelixWireHanded 由契约实现层\n // 直调,见 occt-kernel/occt-primitives.ts。)\n name: 'helix',\n brep(opts: HelixOptions) {\n return helixBrep(opts)\n },\n naming: { kind: 'unmodeled', reason: 'construct vocabulary pending Phase 3' } as Provenance,\n\n paramDims: {},\n})\n"]}
|
|
@@ -14,6 +14,13 @@
|
|
|
14
14
|
* BREP 专属:`.brp` 无 mesh 解析器;mesh / 无内核模式抛 E_BREP_UNSUPPORTED。
|
|
15
15
|
*/
|
|
16
16
|
import type { Shape } from '../mesh/types.js';
|
|
17
|
+
/**
|
|
18
|
+
* 裸实现:契约层测试直调(不经 defineOp 的 dispatch 拦截)。
|
|
19
|
+
*
|
|
20
|
+
* @param params - op 参数对象;`asset` 为容器资产名(去扩展名)。
|
|
21
|
+
* @returns 持 OCCT 句柄的几何(非实体亦可)。
|
|
22
|
+
*/
|
|
23
|
+
export declare function importBrepImpl(params: Record<string, unknown>): Promise<Shape>;
|
|
17
24
|
/**
|
|
18
25
|
* 平台 BREP 资产导入:把容器 `assets/` 里的冻结 BREP 载体装成持 OCCT 句柄的 Shape。
|
|
19
26
|
*
|
|
@@ -26,27 +33,12 @@ import type { Shape } from '../mesh/types.js';
|
|
|
26
33
|
* @qual ok
|
|
27
34
|
* @name import_brep
|
|
28
35
|
* @param params.asset - 容器资产名(去扩展名)。type:string required:true
|
|
29
|
-
* @note 非实体一等(C6):wire/face/shell 一律可导入,本 op 不设 `allowNonSolid` 一类开关。需要实体的 op(布尔、up-to 目标面)在**使用点**报错,而不是在导入点拒绝。
|
|
30
|
-
* @note 这是**平台**资产导入 op。编辑器 `cad.load` 是 `../3d_editor` 的「文件导入 Feature」(key/path/url 三键分流 + 画布语句位置语义),平台侧不要复用它(C7)。
|
|
31
36
|
* @returns Promise<Shape> 持 OCCT 句柄的几何(非实体亦可)。
|
|
32
37
|
* @example
|
|
33
38
|
* const a = await cad.import_brep({ asset: 'Array001.Shape' })
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* @param params - op 参数对象;`asset` 为容器资产名(去扩展名)。
|
|
39
|
-
* @returns 持 OCCT 句柄的几何(非实体亦可)。
|
|
40
|
-
*/
|
|
41
|
-
export declare function importBrepImpl(params: Record<string, unknown>): Promise<Shape>;
|
|
42
|
-
/**
|
|
43
|
-
* GOTCHA(2026-09-30):import_brep / import_step 必须经 defineOp 包装进入 cad
|
|
44
|
-
* 命名空间,不能是裸 async 函数。part 键 roleTable(outputTablesByPart)只在
|
|
45
|
-
* define-op.ts 包装层的 brep 分支登记(shape.ts attachBrep 只落语句键表,因为
|
|
46
|
-
* fromBrep 时刻 shape 还没被 executor 命名)。裸函数产物没有 part 键表 → 下游
|
|
47
|
-
* place 的 inputRoleTable(tableOfPart)拿到 undefined → place 产物 roleTable
|
|
48
|
-
* 断流 → edgeRef 报 "input shape has no role table (nameless shape)"
|
|
49
|
-
* (fcstd 语料 43 例,如 ISO4032_Hex_Nut_M10 的 chamfer(Pocket001__place))。
|
|
39
|
+
* @note 非实体一等(C6):wire/face/shell 一律可导入,本 op 不设 `allowNonSolid` 一类开关。需要实体的 op(布尔、up-to 目标面)在**使用点**报错,而不是在导入点拒绝。
|
|
40
|
+
* @note 这是**平台**资产导入 op。编辑器 `cad.load` 是 `../3d_editor` 的「文件导入 Feature」(key/path/url 三键分流 + 画布语句位置语义),平台侧不要复用它(C7)。
|
|
41
|
+
* @note GOTCHA(2026-09-30):必须经 defineOp 包装进入 cad 命名空间,不能是裸 async 函数。part 键 roleTable(outputTablesByPart)只在 define-op.ts 包装层的 brep 分支登记(shape.ts attachBrep 只落语句键表,因为 fromBrep 时刻 shape 还没被 executor 命名)。裸函数产物没有 part 键表 → 下游 place 的 inputRoleTable(tableOfPart)拿到 undefined → place 产物 roleTable 断流 → edgeRef 报 "input shape has no role table (nameless shape)"(fcstd 语料 43 例,如 ISO4032_Hex_Nut_M10 的 chamfer(Pocket001__place))。
|
|
50
42
|
*/
|
|
51
43
|
export declare const import_brep: ((params: Record<string, unknown>) => Promise<Shape>) & {
|
|
52
44
|
__faijs__dualOp?: import("../define-op.js").DualOpMeta;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-brep.d.ts","sourceRoot":"","sources":["../../src/api/import-brep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAU1C
|
|
1
|
+
{"version":3,"file":"import-brep.d.ts","sourceRoot":"","sources":["../../src/api/import-brep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAU1C;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CA2CpF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,WAAW;;CAUtB,CAAA"}
|
package/dist/api/import-brep.js
CHANGED
|
@@ -18,24 +18,6 @@ import { OpError } from './internal/result-unwrap.js';
|
|
|
18
18
|
import { loadBrep } from '../brep/brep-ops.js';
|
|
19
19
|
import { fromBrep } from '../shape.js';
|
|
20
20
|
import { defineOp } from '../sdk.js';
|
|
21
|
-
/**
|
|
22
|
-
* 平台 BREP 资产导入:把容器 `assets/` 里的冻结 BREP 载体装成持 OCCT 句柄的 Shape。
|
|
23
|
-
*
|
|
24
|
-
* `asset` = 资产名(去扩展名,沿用 `FsAssetResolver` 的 `key = basename(file)` 规则),
|
|
25
|
-
* 由宿主资产解析器按 key 解析(与 `cad.load` 同套解析器)。
|
|
26
|
-
*
|
|
27
|
-
* @group 创建
|
|
28
|
-
* @inputs 0
|
|
29
|
-
* @async true
|
|
30
|
-
* @qual ok
|
|
31
|
-
* @name import_brep
|
|
32
|
-
* @param params.asset - 容器资产名(去扩展名)。type:string required:true
|
|
33
|
-
* @note 非实体一等(C6):wire/face/shell 一律可导入,本 op 不设 `allowNonSolid` 一类开关。需要实体的 op(布尔、up-to 目标面)在**使用点**报错,而不是在导入点拒绝。
|
|
34
|
-
* @note 这是**平台**资产导入 op。编辑器 `cad.load` 是 `../3d_editor` 的「文件导入 Feature」(key/path/url 三键分流 + 画布语句位置语义),平台侧不要复用它(C7)。
|
|
35
|
-
* @returns Promise<Shape> 持 OCCT 句柄的几何(非实体亦可)。
|
|
36
|
-
* @example
|
|
37
|
-
* const a = await cad.import_brep({ asset: 'Array001.Shape' })
|
|
38
|
-
*/
|
|
39
21
|
/**
|
|
40
22
|
* 裸实现:契约层测试直调(不经 defineOp 的 dispatch 拦截)。
|
|
41
23
|
*
|
|
@@ -77,13 +59,23 @@ export async function importBrepImpl(params) {
|
|
|
77
59
|
});
|
|
78
60
|
}
|
|
79
61
|
/**
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
62
|
+
* 平台 BREP 资产导入:把容器 `assets/` 里的冻结 BREP 载体装成持 OCCT 句柄的 Shape。
|
|
63
|
+
*
|
|
64
|
+
* `asset` = 资产名(去扩展名,沿用 `FsAssetResolver` 的 `key = basename(file)` 规则),
|
|
65
|
+
* 由宿主资产解析器按 key 解析(与 `cad.load` 同套解析器)。
|
|
66
|
+
*
|
|
67
|
+
* @group 创建
|
|
68
|
+
* @inputs 0
|
|
69
|
+
* @async true
|
|
70
|
+
* @qual ok
|
|
71
|
+
* @name import_brep
|
|
72
|
+
* @param params.asset - 容器资产名(去扩展名)。type:string required:true
|
|
73
|
+
* @returns Promise<Shape> 持 OCCT 句柄的几何(非实体亦可)。
|
|
74
|
+
* @example
|
|
75
|
+
* const a = await cad.import_brep({ asset: 'Array001.Shape' })
|
|
76
|
+
* @note 非实体一等(C6):wire/face/shell 一律可导入,本 op 不设 `allowNonSolid` 一类开关。需要实体的 op(布尔、up-to 目标面)在**使用点**报错,而不是在导入点拒绝。
|
|
77
|
+
* @note 这是**平台**资产导入 op。编辑器 `cad.load` 是 `../3d_editor` 的「文件导入 Feature」(key/path/url 三键分流 + 画布语句位置语义),平台侧不要复用它(C7)。
|
|
78
|
+
* @note GOTCHA(2026-09-30):必须经 defineOp 包装进入 cad 命名空间,不能是裸 async 函数。part 键 roleTable(outputTablesByPart)只在 define-op.ts 包装层的 brep 分支登记(shape.ts attachBrep 只落语句键表,因为 fromBrep 时刻 shape 还没被 executor 命名)。裸函数产物没有 part 键表 → 下游 place 的 inputRoleTable(tableOfPart)拿到 undefined → place 产物 roleTable 断流 → edgeRef 报 "input shape has no role table (nameless shape)"(fcstd 语料 43 例,如 ISO4032_Hex_Nut_M10 的 chamfer(Pocket001__place))。
|
|
87
79
|
*/
|
|
88
80
|
export const import_brep = defineOp({
|
|
89
81
|
name: 'import_brep',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-brep.js","sourceRoot":"","sources":["../../src/api/import-brep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAKjC
|
|
1
|
+
{"version":3,"file":"import-brep.js","sourceRoot":"","sources":["../../src/api/import-brep.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * api import_brep — 平台 BREP 资产导入 op(H11 / 方案 §4.1)\n *\n *\n * 与编辑器 `cad.load`(`api/load.ts`)的区别见方案 §4.5:\n * - `cad.load` 是 ../3d_editor 的「文件导入 Feature」(key/path/url 三键分流、\n * 语句位置约定、partIndex 画布语义),且历史契约要求实体。\n * - `cad.import_brep` 是 faijs **平台**几何 op:单一 asset 引用(容器资产名,\n * 去扩展名),语义是「把冻结的 BREP 载体装成持 OCCT 句柄的 Shape」。\n *\n * 非实体(wire/face/shell)一等公民(C6):不要求实体,始终 allowNonSolid。\n * 需要实体的操作(布尔、up-to 目标面)在使用点报错(V-C8)。\n *\n * BREP 专属:`.brp` 无 mesh 解析器;mesh / 无内核模式抛 E_BREP_UNSUPPORTED。\n */\n\nimport type { Shape } from '../mesh/types'\nimport { getBackends, BrepUnsupportedError, getCurrentStmt } from '../runtime-state'\nimport { OpError } from './internal/result-unwrap'\nimport { loadBrep } from '../brep/brep-ops'\nimport { fromBrep } from '../shape'\nimport { defineOp } from '../sdk'\nimport type { Provenance } from '../topology/naming/lineage'\n\nimport type { BrepEngineApi } from '../brep/engine/primitives'\n\n/**\n * 裸实现:契约层测试直调(不经 defineOp 的 dispatch 拦截)。\n *\n * @param params - op 参数对象;`asset` 为容器资产名(去扩展名)。\n * @returns 持 OCCT 句柄的几何(非实体亦可)。\n */\nexport async function importBrepImpl(params: Record<string, unknown>): Promise<Shape> {\n const assets = getBackends().assets as {\n resolveByKey?(key: string): Promise<{ bytes: ArrayBuffer }>\n } | undefined\n if (!assets || !assets.resolveByKey) {\n throw new OpError('import_brep', 'E_OP_FAILED', '[api/import_brep] assets backend is required')\n }\n\n const asset = params.asset\n if (typeof asset !== 'string' || asset.length === 0) {\n throw new OpError('import_brep', 'E_ARGS', '[api/import_brep] asset name (string) is required')\n }\n\n const buffer = (await assets.resolveByKey(asset)).bytes\n\n const { kernel: kernels } = getBackends()\n const kernel = kernels.brep as BrepEngineApi | null\n if (!kernel) {\n throw new BrepUnsupportedError(\n 'E_BREP_UNSUPPORTED: import_brep requires an OCCT kernel (.brp assets have no mesh parser)',\n )\n }\n\n // C6:非实体一等公民——始终允许导入 wire/face/shell(allowNonSolid=true)。\n const { solid: solidHandle, shape } = loadBrep(\n kernel, buffer, undefined, undefined, { allowNonSolid: true },\n )\n // E3(H12):链根建 roleTable(与 primitives.ts 同源机制)——冻结资产是\n // 无名形状,没有这张表下游 edgeRef/faceRef 无法解析(nameless-shape 缺陷)。\n // Phase 1.6:origin 用导入语句的 StmtId——同一资产导入两次是两条语句,\n // 各自产出的面天然分属不同 origin(旧实现用资产名,两次导入撞 origin)。\n // 3.8: imported:<i> — imported faces have no semantic names (arbitrary geometry),\n // named by enumeration order in the imported file (stable across re-import of same file).\n const stmtId = String(getCurrentStmt()?.id ?? '')\n const hashes = kernel.subShapeHashes(solidHandle, 'face', 2147483647)\n const roles = new Map<string, number[]>()\n for (let i = 0; i < hashes.length; i++) {\n roles.set(`imported:${i}`, [hashes[i]!])\n }\n return fromBrep(shape, {\n solid: solidHandle,\n roleTable: new Map([[stmtId, roles]]),\n })\n}\n\n/**\n * 平台 BREP 资产导入:把容器 `assets/` 里的冻结 BREP 载体装成持 OCCT 句柄的 Shape。\n *\n * `asset` = 资产名(去扩展名,沿用 `FsAssetResolver` 的 `key = basename(file)` 规则),\n * 由宿主资产解析器按 key 解析(与 `cad.load` 同套解析器)。\n *\n * @group 创建\n * @inputs 0\n * @async true\n * @qual ok\n * @name import_brep\n * @param params.asset - 容器资产名(去扩展名)。type:string required:true\n * @returns Promise<Shape> 持 OCCT 句柄的几何(非实体亦可)。\n * @example\n * const a = await cad.import_brep({ asset: 'Array001.Shape' })\n * @note 非实体一等(C6):wire/face/shell 一律可导入,本 op 不设 `allowNonSolid` 一类开关。需要实体的 op(布尔、up-to 目标面)在**使用点**报错,而不是在导入点拒绝。\n * @note 这是**平台**资产导入 op。编辑器 `cad.load` 是 `../3d_editor` 的「文件导入 Feature」(key/path/url 三键分流 + 画布语句位置语义),平台侧不要复用它(C7)。\n * @note GOTCHA(2026-09-30):必须经 defineOp 包装进入 cad 命名空间,不能是裸 async 函数。part 键 roleTable(outputTablesByPart)只在 define-op.ts 包装层的 brep 分支登记(shape.ts attachBrep 只落语句键表,因为 fromBrep 时刻 shape 还没被 executor 命名)。裸函数产物没有 part 键表 → 下游 place 的 inputRoleTable(tableOfPart)拿到 undefined → place 产物 roleTable 断流 → edgeRef 报 \"input shape has no role table (nameless shape)\"(fcstd 语料 43 例,如 ISO4032_Hex_Nut_M10 的 chamfer(Pocket001__place))。\n */\nexport const import_brep = defineOp({\n name: 'import_brep',\n brep: importBrepImpl,\n engines: ['occt'],\n // `imported:0` 是 <i> 采样值(同 extrude 的 `wall:0`):实际产出 imported:0..n-1,\n // 与上面 roleTable 的 `imported:${i}` 逐字对齐。不能写成 semantic 'imported'——\n // 它是结构 kind,出现在串首会被 parseRoleName 读成结构而非语义名(见 role-name.ts RESERVED_KEYWORDS)。\n naming: { kind: 'construct', newFaces: { via: 'explicit', vocab: [{ kind: 'imported', index: 0 }] } } as Provenance,\n\n paramDims: {},\n})\n"]}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import type { Shape } from '../mesh/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* 裸实现:契约层测试直调(不经 defineOp 的 dispatch 拦截)。
|
|
4
|
+
*
|
|
5
|
+
* @param params - op 参数对象;`path` 为 STEP 文件路径。
|
|
6
|
+
* @returns 持 OCCT 句柄的几何(非实体亦可)。
|
|
7
|
+
*/
|
|
8
|
+
export declare function importStepImpl(params: Record<string, unknown>): Promise<Shape>;
|
|
2
9
|
/**
|
|
3
10
|
* api import_step — 任意路径 STEP 文件导入 op(方案 Phase 5 / Q2 真缺口)
|
|
4
11
|
*
|
|
@@ -18,24 +25,12 @@ import type { Shape } from '../mesh/types.js';
|
|
|
18
25
|
* @qual ok
|
|
19
26
|
* @name import_step
|
|
20
27
|
* @param params.path - 本地绝对路径(宿主 resolveFile 解析)。type:string required:true
|
|
21
|
-
* @note 平台 STEP 导入 op。读文件经宿主资产解析器(`assets.resolveFile`),与 `cad.load` 同一通道;语义为「任意路径 STEP → OCCT 读入的 Shape」。
|
|
22
|
-
* @note 非实体一等(C6):wire/face/shell 一律可导入。需要实体的 op(布尔、up-to 目标面)在**使用点**报错。
|
|
23
28
|
* @returns Promise<Shape> 持 OCCT 句柄的几何(非实体亦可)。
|
|
24
29
|
* @example
|
|
25
30
|
* const a = await cad.import_step({ path: 'D:/models/box.step' })
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* @param params - op 参数对象;`path` 为 STEP 文件路径。
|
|
31
|
-
* @returns 持 OCCT 句柄的几何(非实体亦可)。
|
|
32
|
-
*/
|
|
33
|
-
export declare function importStepImpl(params: Record<string, unknown>): Promise<Shape>;
|
|
34
|
-
/**
|
|
35
|
-
* GOTCHA(2026-09-30):与 import_brep 同——必须经 defineOp 包装进入 cad 命名空间,
|
|
36
|
-
* 不能是裸 async 函数。part 键 roleTable(outputTablesByPart)只在 define-op.ts
|
|
37
|
-
* 包装层的 brep 分支登记;裸 async 函数产物没有 part 键表,下游 place/edgeRef
|
|
38
|
-
* 报 "input shape has no role table (nameless shape)"。
|
|
31
|
+
* @note 平台 STEP 导入 op。读文件经宿主资产解析器(`assets.resolveFile`),与 `cad.load` 同一通道;语义为「任意路径 STEP → OCCT 读入的 Shape」。
|
|
32
|
+
* @note 非实体一等(C6):wire/face/shell 一律可导入。需要实体的 op(布尔、up-to 目标面)在**使用点**报错。
|
|
33
|
+
* @note GOTCHA(2026-09-30):与 import_brep 同——必须经 defineOp 包装进入 cad 命名空间,不能是裸 async 函数。part 键 roleTable(outputTablesByPart)只在 define-op.ts 包装层的 brep 分支登记;裸 async 函数产物没有 part 键表,下游 place/edgeRef 报 "input shape has no role table (nameless shape)"。
|
|
39
34
|
*/
|
|
40
35
|
export declare const import_step: ((params: Record<string, unknown>) => Promise<Shape>) & {
|
|
41
36
|
__faijs__dualOp?: import("../define-op.js").DualOpMeta;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-step.d.ts","sourceRoot":"","sources":["../../src/api/import-step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAwB1C
|
|
1
|
+
{"version":3,"file":"import-step.d.ts","sourceRoot":"","sources":["../../src/api/import-step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAwB1C;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAkDpF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,WAAW;;CAUtB,CAAA"}
|
package/dist/api/import-step.js
CHANGED
|
@@ -18,31 +18,6 @@ function decodeStepText(buffer) {
|
|
|
18
18
|
return undefined;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
/**
|
|
22
|
-
* api import_step — 任意路径 STEP 文件导入 op(方案 Phase 5 / Q2 真缺口)
|
|
23
|
-
*
|
|
24
|
-
* 与 `import_brep`(容器资产)和 `cad.load`(编辑器 FileRef)的职责切分:
|
|
25
|
-
* - `cad.import_step` 是 faijs **平台**几何 op:单一本地路径(宿主 `resolveFile`),
|
|
26
|
-
* OCCT STEPControl_Reader 读入,返回持 OCCT 句柄 + roleTable 的 Shape。
|
|
27
|
-
* - `import_brep` 读的是容器 `assets/` 里的冻结 BREP 资产(key,去扩展名);
|
|
28
|
-
* `cad.load` 是 `../3d_editor` 的「文件导入 Feature」(key/path/url 三键分流、
|
|
29
|
-
* 画布语句位置语义),平台侧不要复用它(C7)。
|
|
30
|
-
*
|
|
31
|
-
* 非实体(wire/face/shell)一等公民(C6,对齐 import_brep):始终 allowNonSolid。
|
|
32
|
-
* STEP 是 BREP 专属格式:mesh / 无内核模式抛 E_BREP_UNSUPPORTED。
|
|
33
|
-
*
|
|
34
|
-
* @group 创建
|
|
35
|
-
* @inputs 0
|
|
36
|
-
* @async true
|
|
37
|
-
* @qual ok
|
|
38
|
-
* @name import_step
|
|
39
|
-
* @param params.path - 本地绝对路径(宿主 resolveFile 解析)。type:string required:true
|
|
40
|
-
* @note 平台 STEP 导入 op。读文件经宿主资产解析器(`assets.resolveFile`),与 `cad.load` 同一通道;语义为「任意路径 STEP → OCCT 读入的 Shape」。
|
|
41
|
-
* @note 非实体一等(C6):wire/face/shell 一律可导入。需要实体的 op(布尔、up-to 目标面)在**使用点**报错。
|
|
42
|
-
* @returns Promise<Shape> 持 OCCT 句柄的几何(非实体亦可)。
|
|
43
|
-
* @example
|
|
44
|
-
* const a = await cad.import_step({ path: 'D:/models/box.step' })
|
|
45
|
-
*/
|
|
46
21
|
/**
|
|
47
22
|
* 裸实现:契约层测试直调(不经 defineOp 的 dispatch 拦截)。
|
|
48
23
|
*
|
|
@@ -94,10 +69,30 @@ export async function importStepImpl(params) {
|
|
|
94
69
|
return fromBrep(shape, { solid: solidHandle, roleTable: new Map([[stmtId, roles]]) });
|
|
95
70
|
}
|
|
96
71
|
/**
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
72
|
+
* api import_step — 任意路径 STEP 文件导入 op(方案 Phase 5 / Q2 真缺口)
|
|
73
|
+
*
|
|
74
|
+
* 与 `import_brep`(容器资产)和 `cad.load`(编辑器 FileRef)的职责切分:
|
|
75
|
+
* - `cad.import_step` 是 faijs **平台**几何 op:单一本地路径(宿主 `resolveFile`),
|
|
76
|
+
* OCCT STEPControl_Reader 读入,返回持 OCCT 句柄 + roleTable 的 Shape。
|
|
77
|
+
* - `import_brep` 读的是容器 `assets/` 里的冻结 BREP 资产(key,去扩展名);
|
|
78
|
+
* `cad.load` 是 `../3d_editor` 的「文件导入 Feature」(key/path/url 三键分流、
|
|
79
|
+
* 画布语句位置语义),平台侧不要复用它(C7)。
|
|
80
|
+
*
|
|
81
|
+
* 非实体(wire/face/shell)一等公民(C6,对齐 import_brep):始终 allowNonSolid。
|
|
82
|
+
* STEP 是 BREP 专属格式:mesh / 无内核模式抛 E_BREP_UNSUPPORTED。
|
|
83
|
+
*
|
|
84
|
+
* @group 创建
|
|
85
|
+
* @inputs 0
|
|
86
|
+
* @async true
|
|
87
|
+
* @qual ok
|
|
88
|
+
* @name import_step
|
|
89
|
+
* @param params.path - 本地绝对路径(宿主 resolveFile 解析)。type:string required:true
|
|
90
|
+
* @returns Promise<Shape> 持 OCCT 句柄的几何(非实体亦可)。
|
|
91
|
+
* @example
|
|
92
|
+
* const a = await cad.import_step({ path: 'D:/models/box.step' })
|
|
93
|
+
* @note 平台 STEP 导入 op。读文件经宿主资产解析器(`assets.resolveFile`),与 `cad.load` 同一通道;语义为「任意路径 STEP → OCCT 读入的 Shape」。
|
|
94
|
+
* @note 非实体一等(C6):wire/face/shell 一律可导入。需要实体的 op(布尔、up-to 目标面)在**使用点**报错。
|
|
95
|
+
* @note GOTCHA(2026-09-30):与 import_brep 同——必须经 defineOp 包装进入 cad 命名空间,不能是裸 async 函数。part 键 roleTable(outputTablesByPart)只在 define-op.ts 包装层的 brep 分支登记;裸 async 函数产物没有 part 键表,下游 place/edgeRef 报 "input shape has no role table (nameless shape)"。
|
|
101
96
|
*/
|
|
102
97
|
export const import_step = defineOp({
|
|
103
98
|
name: 'import_step',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-step.js","sourceRoot":"","sources":["../../src/api/import-step.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAGjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG1D,gEAAgE;AAChE,SAAS,cAAc,CAAC,MAAmB;IACzC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC;QAAE,OAAO,SAAS,CAAA;IAC3C,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACnE,mDAAmD;QACnD,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"import-step.js","sourceRoot":"","sources":["../../src/api/import-step.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Shape } from '../mesh/types'\nimport { getBackends, BrepUnsupportedError, getCurrentStmt } from '../runtime-state'\nimport { getBrepApi } from '../brep/handle-bridge'\nimport { OpError } from './internal/result-unwrap'\nimport { loadBrep } from '../brep/brep-ops'\nimport { fromBrep } from '../shape'\nimport { defineOp } from '../sdk'\nimport type { Provenance } from '../topology/naming/lineage'\nimport type { BrepEngineApi } from '../brep/engine/primitives'\nimport { parseStepPartMeta } from '../step/stepMetaParser'\nimport type { ShapeMeta } from './meta'\n\n/** 尽力把 ArrayBuffer 当 UTF-8 文本解出;非文本(如 .brp 二进制)返回 undefined。 */\nfunction decodeStepText(buffer: ArrayBuffer): string | undefined {\n if (!(buffer?.byteLength)) return undefined\n try {\n const s = new TextDecoder('utf-8', { fatal: false }).decode(buffer)\n // STEP 是纯文本 ISO-10303-21;首段要出现 `ISO-10303-21;` 才算。\n return s.includes('ISO-10303-21') ? s : undefined\n } catch {\n return undefined\n }\n}\n\n/**\n * 裸实现:契约层测试直调(不经 defineOp 的 dispatch 拦截)。\n *\n * @param params - op 参数对象;`path` 为 STEP 文件路径。\n * @returns 持 OCCT 句柄的几何(非实体亦可)。\n */\nexport async function importStepImpl(params: Record<string, unknown>): Promise<Shape> {\n const path = params.path\n if (typeof path !== 'string' || path.length === 0) {\n throw new OpError('import_step', 'E_ARGS', '[api/import_step] path (string) is required')\n }\n\n const assets = getBackends().assets as {\n resolveFile?(path: string): Promise<ArrayBuffer>\n } | undefined\n if (!assets || !assets.resolveFile) {\n throw new OpError(\n 'import_step',\n 'E_OP_FAILED',\n '[api/import_step] assets backend (resolveFile) is required',\n )\n }\n\n const buffer = await assets.resolveFile(path)\n\n let kernel: BrepEngineApi\n try { kernel = getBrepApi() } catch { throw new BrepUnsupportedError(\n 'E_BREP_UNSUPPORTED: import_step requires a BREP engine (STEP has no mesh parser)',\n )\n }\n\n // C6:非实体一等公民(对齐 import_brep)。loadBrep 自适应:CASCADE Topology\n // 文本走 kernel.fromBREP,其余(STEP/STP)走 kernel.importStep。\n const { solid: solidHandle, shape } = loadBrep(\n kernel, buffer, undefined, undefined, { allowNonSolid: true },\n )\n // P2(设计文档 2026-10-05-meta §5.2 读):从 STEP (P21) 文本捞伙伴级描述/属性\n // 挂 `shape.meta`(name 已由 OCCT label 提供,description/UDA 由纯文本补充)。\n // 非文本/非 STEP 内容跳过,绝不抛。\n const stepText = decodeStepText(buffer)\n if (stepText && shape.meta == null) {\n const partMeta = parseStepPartMeta(stepText)\n const shapeMeta: ShapeMeta = { ...(shape.meta ?? {}) }\n if (partMeta.description) shapeMeta.description = partMeta.description\n if (partMeta.metadata && Object.keys(partMeta.metadata).length > 0) shapeMeta.metadata = partMeta.metadata\n if (Object.keys(shapeMeta).length > 0) shape.meta = shapeMeta\n }\n // E3(H12):链根建 roleTable——导入文件的面没有语义名,按枚举序命名\n // imported:<i>(同一文件重复导入,枚举序稳定,role 名跨次导入保持一致)。\n const stmtId = String(getCurrentStmt()?.id ?? '')\n const hashes = kernel.subShapeHashes(solidHandle, 'face', 2147483647)\n const roles = new Map<string, number[]>()\n for (let i = 0; i < hashes.length; i++) {\n roles.set(`imported:${i}`, [hashes[i]!])\n }\n return fromBrep(shape, { solid: solidHandle, roleTable: new Map([[stmtId, roles]]) })\n}\n\n/**\n * api import_step — 任意路径 STEP 文件导入 op(方案 Phase 5 / Q2 真缺口)\n *\n * 与 `import_brep`(容器资产)和 `cad.load`(编辑器 FileRef)的职责切分:\n * - `cad.import_step` 是 faijs **平台**几何 op:单一本地路径(宿主 `resolveFile`),\n * OCCT STEPControl_Reader 读入,返回持 OCCT 句柄 + roleTable 的 Shape。\n * - `import_brep` 读的是容器 `assets/` 里的冻结 BREP 资产(key,去扩展名);\n * `cad.load` 是 `../3d_editor` 的「文件导入 Feature」(key/path/url 三键分流、\n * 画布语句位置语义),平台侧不要复用它(C7)。\n *\n * 非实体(wire/face/shell)一等公民(C6,对齐 import_brep):始终 allowNonSolid。\n * STEP 是 BREP 专属格式:mesh / 无内核模式抛 E_BREP_UNSUPPORTED。\n *\n * @group 创建\n * @inputs 0\n * @async true\n * @qual ok\n * @name import_step\n * @param params.path - 本地绝对路径(宿主 resolveFile 解析)。type:string required:true\n * @returns Promise<Shape> 持 OCCT 句柄的几何(非实体亦可)。\n * @example\n * const a = await cad.import_step({ path: 'D:/models/box.step' })\n * @note 平台 STEP 导入 op。读文件经宿主资产解析器(`assets.resolveFile`),与 `cad.load` 同一通道;语义为「任意路径 STEP → OCCT 读入的 Shape」。\n * @note 非实体一等(C6):wire/face/shell 一律可导入。需要实体的 op(布尔、up-to 目标面)在**使用点**报错。\n * @note GOTCHA(2026-09-30):与 import_brep 同——必须经 defineOp 包装进入 cad 命名空间,不能是裸 async 函数。part 键 roleTable(outputTablesByPart)只在 define-op.ts 包装层的 brep 分支登记;裸 async 函数产物没有 part 键表,下游 place/edgeRef 报 \"input shape has no role table (nameless shape)\"。\n */\nexport const import_step = defineOp({\n name: 'import_step',\n brep: importStepImpl,\n // 方案 docs/plans/2026-10-11-brepkit-step-io.md:不做引擎门禁。实现体走\n // getBrepApi() 的 L1 契约(kernel.importStep / fromBREP),brepkit 适配器已实现,\n // 各引擎行为同构;不支持的实体类型按 reader 自身行为处理,faijs 侧不抛错。\n // `imported:0` 是 <i> 采样值(同 extrude 的 `wall:0`),与 import-brep 同构。\n naming: { kind: 'construct', newFaces: { via: 'explicit', vocab: [{ kind: 'imported', index: 0 }] } } as Provenance,\n\n paramDims: {},\n})\n"]}
|