@faicad/faijs 0.22.2 → 0.29.3
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 +202 -28
- package/dist/api/api-namespace.d.ts +5 -5
- package/dist/api/api-namespace.d.ts.map +1 -1
- package/dist/api/api-namespace.js +4 -4
- package/dist/api/api-namespace.js.map +1 -1
- package/dist/api/assert.d.ts +2 -2
- package/dist/api/assert.js +8 -8
- package/dist/api/assert.js.map +1 -1
- package/dist/api/asset.d.ts +1 -1
- package/dist/api/asset.js +2 -2
- package/dist/api/asset.js.map +1 -1
- package/dist/api/boolean.d.ts +1 -1
- package/dist/api/boolean.d.ts.map +1 -1
- package/dist/api/boolean.js +128 -16
- package/dist/api/boolean.js.map +1 -1
- package/dist/api/cadquery-selectors/borrow-bridge.d.ts +14 -0
- package/dist/api/cadquery-selectors/borrow-bridge.d.ts.map +1 -0
- package/dist/api/cadquery-selectors/borrow-bridge.js +52 -0
- package/dist/api/cadquery-selectors/borrow-bridge.js.map +1 -0
- package/dist/api/cadquery-selectors/edge.d.ts +40 -0
- package/dist/api/cadquery-selectors/edge.d.ts.map +1 -0
- package/dist/api/cadquery-selectors/edge.js +70 -0
- package/dist/api/cadquery-selectors/edge.js.map +1 -0
- package/dist/api/cadquery-selectors/entity.d.ts +121 -0
- package/dist/api/cadquery-selectors/entity.d.ts.map +1 -0
- package/dist/api/cadquery-selectors/entity.js +167 -0
- package/dist/api/cadquery-selectors/entity.js.map +1 -0
- package/dist/api/cadquery-selectors/face.d.ts +33 -0
- package/dist/api/cadquery-selectors/face.d.ts.map +1 -0
- package/dist/api/cadquery-selectors/face.js +353 -0
- package/dist/api/cadquery-selectors/face.js.map +1 -0
- package/dist/api/cadquery-selectors/grammar.d.ts +50 -0
- package/dist/api/cadquery-selectors/grammar.d.ts.map +1 -0
- package/dist/api/cadquery-selectors/grammar.js +345 -0
- package/dist/api/cadquery-selectors/grammar.js.map +1 -0
- package/dist/api/cadquery-selectors/index.d.ts +18 -0
- package/dist/api/cadquery-selectors/index.d.ts.map +1 -0
- package/dist/api/cadquery-selectors/index.js +17 -0
- package/dist/api/cadquery-selectors/index.js.map +1 -0
- package/dist/api/cadquery-selectors/predicates.d.ts +76 -0
- package/dist/api/cadquery-selectors/predicates.d.ts.map +1 -0
- package/dist/api/cadquery-selectors/predicates.js +85 -0
- package/dist/api/cadquery-selectors/predicates.js.map +1 -0
- package/dist/api/cadquery-selectors/resolve.d.ts +41 -0
- package/dist/api/cadquery-selectors/resolve.d.ts.map +1 -0
- package/dist/api/cadquery-selectors/resolve.js +243 -0
- package/dist/api/cadquery-selectors/resolve.js.map +1 -0
- package/dist/api/cadquery-selectors/types.d.ts +96 -0
- package/dist/api/cadquery-selectors/types.d.ts.map +1 -0
- package/dist/api/cadquery-selectors/types.js +11 -0
- package/dist/api/cadquery-selectors/types.js.map +1 -0
- package/dist/api/chamfer.d.ts +13 -5
- package/dist/api/chamfer.d.ts.map +1 -1
- package/dist/api/chamfer.js +63 -7
- package/dist/api/chamfer.js.map +1 -1
- package/dist/api/compound-geom.d.ts +1 -1
- package/dist/api/compound-geom.js +1 -1
- package/dist/api/compound-geom.js.map +1 -1
- package/dist/api/draft.d.ts +1 -1
- package/dist/api/draft.js +1 -1
- package/dist/api/draft.js.map +1 -1
- package/dist/api/edge-ref.d.ts +1 -1
- package/dist/api/edge-ref.d.ts.map +1 -1
- package/dist/api/edge-ref.js +11 -3
- package/dist/api/edge-ref.js.map +1 -1
- package/dist/api/engrave.d.ts +1 -1
- package/dist/api/engrave.js +7 -7
- package/dist/api/engrave.js.map +1 -1
- package/dist/api/extrude.d.ts +6 -1
- package/dist/api/extrude.d.ts.map +1 -1
- package/dist/api/extrude.js +59 -5
- package/dist/api/extrude.js.map +1 -1
- package/dist/api/face-ref.d.ts +1 -1
- package/dist/api/face-ref.js +1 -1
- package/dist/api/face-ref.js.map +1 -1
- package/dist/api/feature-repair.d.ts +1 -1
- package/dist/api/feature-repair.js +1 -1
- package/dist/api/feature-repair.js.map +1 -1
- package/dist/api/fillet-variable.d.ts +1 -1
- package/dist/api/fillet-variable.js +1 -1
- package/dist/api/fillet-variable.js.map +1 -1
- package/dist/api/fillet.d.ts +28 -8
- package/dist/api/fillet.d.ts.map +1 -1
- package/dist/api/fillet.js +64 -9
- package/dist/api/fillet.js.map +1 -1
- package/dist/api/geom.d.ts +1 -1
- package/dist/api/geom.js +1 -1
- package/dist/api/geom.js.map +1 -1
- package/dist/api/helix.d.ts +1 -1
- package/dist/api/helix.js +1 -1
- package/dist/api/helix.js.map +1 -1
- package/dist/api/import-brep.d.ts +20 -2
- package/dist/api/import-brep.d.ts.map +1 -1
- package/dist/api/import-brep.js +28 -3
- package/dist/api/import-brep.js.map +1 -1
- package/dist/api/import-step.d.ts +17 -2
- package/dist/api/import-step.d.ts.map +1 -1
- package/dist/api/import-step.js +23 -3
- package/dist/api/import-step.js.map +1 -1
- package/dist/api/index.d.ts +2 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +5 -2
- package/dist/api/index.js.map +1 -1
- package/dist/api/internal/compat-op.js +1 -1
- package/dist/api/internal/compat-op.js.map +1 -1
- package/dist/api/internal/mesh-solid-op.d.ts +236 -0
- package/dist/api/internal/mesh-solid-op.d.ts.map +1 -0
- package/dist/api/internal/mesh-solid-op.js +352 -0
- package/dist/api/internal/mesh-solid-op.js.map +1 -0
- package/dist/api/internal/svg-asset-resolver.d.ts +1 -1
- package/dist/api/internal/svg-asset-resolver.js +1 -1
- package/dist/api/internal/svg-asset-resolver.js.map +1 -1
- package/dist/api/knurl.d.ts +1 -1
- package/dist/api/knurl.js +2 -2
- package/dist/api/knurl.js.map +1 -1
- package/dist/api/loft.d.ts +1 -1
- package/dist/api/loft.js +1 -1
- package/dist/api/loft.js.map +1 -1
- package/dist/api/measurement/index.d.ts +9 -5
- package/dist/api/measurement/index.d.ts.map +1 -1
- package/dist/api/measurement/index.js +47 -20
- package/dist/api/measurement/index.js.map +1 -1
- package/dist/api/pattern.d.ts +5 -3
- package/dist/api/pattern.d.ts.map +1 -1
- package/dist/api/pattern.js +32 -4
- package/dist/api/pattern.js.map +1 -1
- package/dist/api/place.d.ts +1 -1
- package/dist/api/place.js +1 -1
- package/dist/api/place.js.map +1 -1
- package/dist/api/primitives.d.ts +1 -1
- package/dist/api/primitives.js +2 -2
- package/dist/api/primitives.js.map +1 -1
- package/dist/api/profile.d.ts +39 -12
- package/dist/api/profile.d.ts.map +1 -1
- package/dist/api/profile.js +4 -4
- package/dist/api/profile.js.map +1 -1
- package/dist/api/reconcile.d.ts +1 -1
- package/dist/api/reconcile.js +1 -1
- package/dist/api/reconcile.js.map +1 -1
- package/dist/api/replicate.d.ts.map +1 -1
- package/dist/api/replicate.js +122 -1
- package/dist/api/replicate.js.map +1 -1
- package/dist/api/screw.d.ts +1 -1
- package/dist/api/screw.js +3 -3
- package/dist/api/screw.js.map +1 -1
- package/dist/api/sdf.d.ts +1 -1
- package/dist/api/sdf.js +2 -2
- package/dist/api/sdf.js.map +1 -1
- package/dist/api/section-by-plane.d.ts +1 -1
- package/dist/api/section-by-plane.d.ts.map +1 -1
- package/dist/api/section-by-plane.js +2 -1
- package/dist/api/section-by-plane.js.map +1 -1
- package/dist/api/shell.d.ts +11 -4
- package/dist/api/shell.d.ts.map +1 -1
- package/dist/api/shell.js +53 -7
- package/dist/api/shell.js.map +1 -1
- package/dist/api/sketch-on-face.d.ts +41 -0
- package/dist/api/sketch-on-face.d.ts.map +1 -1
- package/dist/api/sketch-on-face.js +100 -1
- package/dist/api/sketch-on-face.js.map +1 -1
- package/dist/api/sketch-on-plane.d.ts +7 -5
- package/dist/api/sketch-on-plane.d.ts.map +1 -1
- package/dist/api/sketch-on-plane.js +6 -7
- package/dist/api/sketch-on-plane.js.map +1 -1
- package/dist/api/split-by-plane.d.ts +1 -1
- package/dist/api/split-by-plane.d.ts.map +1 -1
- package/dist/api/split-by-plane.js +2 -1
- package/dist/api/split-by-plane.js.map +1 -1
- package/dist/api/split.d.ts +1 -1
- package/dist/api/split.js +2 -2
- package/dist/api/split.js.map +1 -1
- package/dist/api/sweep.d.ts +1 -1
- package/dist/api/sweep.js +1 -1
- package/dist/api/sweep.js.map +1 -1
- package/dist/api/thicken.d.ts +1 -1
- package/dist/api/thicken.js +1 -1
- package/dist/api/thicken.js.map +1 -1
- package/dist/api/topo-resolve.d.ts +74 -1
- package/dist/api/topo-resolve.d.ts.map +1 -1
- package/dist/api/topo-resolve.js +180 -2
- package/dist/api/topo-resolve.js.map +1 -1
- package/dist/api/transform.d.ts +5 -1
- package/dist/api/transform.d.ts.map +1 -1
- package/dist/api/transform.js +62 -11
- package/dist/api/transform.js.map +1 -1
- package/dist/api/wire.d.ts +1 -1
- package/dist/api/wire.js +1 -1
- package/dist/api/wire.js.map +1 -1
- package/dist/brep/brep-ops.d.ts +9 -7
- package/dist/brep/brep-ops.d.ts.map +1 -1
- package/dist/brep/brep-ops.js +23 -24
- package/dist/brep/brep-ops.js.map +1 -1
- package/dist/brep/brep-topology.d.ts +5 -4
- package/dist/brep/brep-topology.d.ts.map +1 -1
- package/dist/brep/brep-topology.js +6 -5
- package/dist/brep/brep-topology.js.map +1 -1
- package/dist/brep/effective-deflection.d.ts +35 -0
- package/dist/brep/effective-deflection.d.ts.map +1 -0
- package/dist/brep/effective-deflection.js +49 -0
- package/dist/brep/effective-deflection.js.map +1 -0
- package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
- package/dist/brep/engine/adapters/brep-mock.js +27 -0
- package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
- package/dist/brep/engine/adapters/brepkit.d.ts +18 -0
- package/dist/brep/engine/adapters/brepkit.d.ts.map +1 -1
- package/dist/brep/engine/adapters/brepkit.js +46 -1
- package/dist/brep/engine/adapters/brepkit.js.map +1 -1
- package/dist/brep/engine/adapters/occt.d.ts +1 -1
- package/dist/brep/engine/adapters/occt.d.ts.map +1 -1
- package/dist/brep/engine/adapters/occt.js +3 -1
- package/dist/brep/engine/adapters/occt.js.map +1 -1
- package/dist/brep/engine/primitives.d.ts +29 -7
- package/dist/brep/engine/primitives.d.ts.map +1 -1
- package/dist/brep/engine/primitives.js.map +1 -1
- package/dist/brep/engine/registry.d.ts +24 -1
- package/dist/brep/engine/registry.d.ts.map +1 -1
- package/dist/brep/engine/registry.js +24 -0
- package/dist/brep/engine/registry.js.map +1 -1
- package/dist/brep/engine/types.d.ts +54 -3
- package/dist/brep/engine/types.d.ts.map +1 -1
- package/dist/brep/engine/types.js +10 -0
- package/dist/brep/engine/types.js.map +1 -1
- package/dist/brep/export/export-model.d.ts.map +1 -1
- package/dist/brep/export/export-model.js +6 -5
- package/dist/brep/export/export-model.js.map +1 -1
- package/dist/brep/face-evolution.d.ts +1 -1
- package/dist/brep/face-evolution.d.ts.map +1 -1
- package/dist/brep/face-evolution.js +20 -1
- package/dist/brep/face-evolution.js.map +1 -1
- package/dist/brep/handle-bridge.d.ts +1 -1
- package/dist/brep/handle-bridge.js +1 -1
- package/dist/brep/handle-bridge.js.map +1 -1
- package/dist/brep/mesh-solid.d.ts +218 -0
- package/dist/brep/mesh-solid.d.ts.map +1 -0
- package/dist/brep/mesh-solid.js +229 -0
- package/dist/brep/mesh-solid.js.map +1 -0
- package/dist/brep/text/fontRegistry.d.ts +32 -1
- package/dist/brep/text/fontRegistry.d.ts.map +1 -1
- package/dist/brep/text/fontRegistry.js +51 -1
- package/dist/brep/text/fontRegistry.js.map +1 -1
- package/dist/brep/text/text-to-solid.d.ts.map +1 -1
- package/dist/brep/text/text-to-solid.js +8 -3
- package/dist/brep/text/text-to-solid.js.map +1 -1
- package/dist/brepkit-kernel/brepkitKernel.d.ts +18 -2
- package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
- package/dist/brepkit-kernel/brepkitKernel.js +449 -123
- package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
- package/dist/brepkit-kernel/brepkitWasm.d.ts +8 -0
- package/dist/brepkit-kernel/brepkitWasm.d.ts.map +1 -1
- package/dist/brepkit-kernel/brepkitWasm.js +10 -0
- package/dist/brepkit-kernel/brepkitWasm.js.map +1 -1
- package/dist/browser-host/browser-font-provider.d.ts +12 -0
- package/dist/browser-host/browser-font-provider.d.ts.map +1 -1
- package/dist/browser-host/browser-font-provider.js +25 -0
- package/dist/browser-host/browser-font-provider.js.map +1 -1
- package/dist/browser.d.ts +6 -3
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +10 -3
- package/dist/browser.js.map +1 -1
- package/dist/cad-runtime/backend-dispatch.d.ts +28 -3
- package/dist/cad-runtime/backend-dispatch.d.ts.map +1 -1
- package/dist/cad-runtime/backend-dispatch.js +119 -4
- package/dist/cad-runtime/backend-dispatch.js.map +1 -1
- package/dist/cad-runtime/browser-lib-loader.js.map +1 -1
- package/dist/cad-runtime/direct-executor.d.ts +15 -3
- package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
- package/dist/cad-runtime/direct-executor.js +33 -1
- package/dist/cad-runtime/direct-executor.js.map +1 -1
- package/dist/cad-runtime/ports.d.ts +3 -3
- package/dist/cad-runtime/ports.d.ts.map +1 -1
- package/dist/cad-runtime/ports.js.map +1 -1
- package/dist/cad-runtime/preview-exec.d.ts +4 -4
- package/dist/cad-runtime/preview-exec.js +2 -2
- package/dist/cad-runtime/preview-exec.js.map +1 -1
- package/dist/cad-runtime/runtime.d.ts +42 -7
- package/dist/cad-runtime/runtime.d.ts.map +1 -1
- package/dist/cad-runtime/runtime.js +68 -5
- package/dist/cad-runtime/runtime.js.map +1 -1
- package/dist/define-op.d.ts +15 -1
- package/dist/define-op.d.ts.map +1 -1
- package/dist/define-op.js +10 -1
- package/dist/define-op.js.map +1 -1
- package/dist/env-agnostic.d.ts +2 -2
- package/dist/env-agnostic.d.ts.map +1 -1
- package/dist/env-agnostic.js +1 -1
- package/dist/env-agnostic.js.map +1 -1
- package/dist/geometry2d/adapt.d.ts +39 -4
- package/dist/geometry2d/adapt.d.ts.map +1 -1
- package/dist/geometry2d/adapt.js +14 -3
- package/dist/geometry2d/adapt.js.map +1 -1
- package/dist/geometry2d/blueprint.d.ts +2 -2
- package/dist/geometry2d/blueprint.js +2 -2
- package/dist/geometry2d/blueprint.js.map +1 -1
- package/dist/geometry2d/bridge/lift-on-plane.d.ts +18 -8
- package/dist/geometry2d/bridge/lift-on-plane.d.ts.map +1 -1
- package/dist/geometry2d/bridge/lift-on-plane.js +65 -12
- package/dist/geometry2d/bridge/lift-on-plane.js.map +1 -1
- package/dist/geometry2d/bridge/plane.d.ts +17 -0
- package/dist/geometry2d/bridge/plane.d.ts.map +1 -1
- package/dist/geometry2d/bridge/plane.js +22 -0
- package/dist/geometry2d/bridge/plane.js.map +1 -1
- package/dist/geometry2d/curve2d.d.ts +25 -0
- package/dist/geometry2d/curve2d.d.ts.map +1 -1
- package/dist/geometry2d/curve2d.js +41 -5
- package/dist/geometry2d/curve2d.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/io/bytes-node.d.ts +11 -0
- package/dist/io/bytes-node.d.ts.map +1 -0
- package/dist/io/bytes-node.js +28 -0
- package/dist/io/bytes-node.js.map +1 -0
- package/dist/io/bytes.d.ts +33 -0
- package/dist/io/bytes.d.ts.map +1 -0
- package/dist/io/bytes.js +41 -0
- package/dist/io/bytes.js.map +1 -0
- package/dist/io/fai-zip/container-read.d.ts +102 -0
- package/dist/io/fai-zip/container-read.d.ts.map +1 -0
- package/dist/io/fai-zip/container-read.js +305 -0
- package/dist/io/fai-zip/container-read.js.map +1 -0
- package/dist/io/fai-zip/container-write.d.ts +70 -0
- package/dist/io/fai-zip/container-write.d.ts.map +1 -0
- package/dist/io/fai-zip/container-write.js +186 -0
- package/dist/io/fai-zip/container-write.js.map +1 -0
- package/dist/io/fai-zip/container.d.ts +107 -0
- package/dist/io/fai-zip/container.d.ts.map +1 -0
- package/dist/io/fai-zip/container.js +89 -0
- package/dist/io/fai-zip/container.js.map +1 -0
- package/dist/io/fai-zip/index.d.ts +18 -0
- package/dist/io/fai-zip/index.d.ts.map +1 -0
- package/dist/io/fai-zip/index.js +4 -0
- package/dist/io/fai-zip/index.js.map +1 -0
- package/dist/io/index.d.ts +10 -0
- package/dist/io/index.d.ts.map +1 -0
- package/dist/io/index.js +13 -0
- package/dist/io/index.js.map +1 -0
- package/dist/io/zip.d.ts +68 -0
- package/dist/io/zip.d.ts.map +1 -0
- package/dist/io/zip.js +147 -0
- package/dist/io/zip.js.map +1 -0
- package/dist/lang/code-to-args.d.ts +1 -1
- package/dist/lang/code-to-args.js +1 -1
- package/dist/lang/code-to-args.js.map +1 -1
- package/dist/lang/statement-summary.d.ts +1 -1
- package/dist/lang/statement-summary.js +1 -1
- package/dist/lang/statement-summary.js.map +1 -1
- package/dist/lang/types.d.ts +1 -1
- package/dist/lang/types.js +1 -1
- package/dist/lang/types.js.map +1 -1
- package/dist/mesh/index.d.ts +2 -1
- package/dist/mesh/index.d.ts.map +1 -1
- package/dist/mesh/index.js +2 -1
- package/dist/mesh/index.js.map +1 -1
- package/dist/mesh/io.d.ts +7 -0
- package/dist/mesh/io.d.ts.map +1 -1
- package/dist/mesh/io.js +14 -17
- package/dist/mesh/io.js.map +1 -1
- package/dist/mesh/reconcile.d.ts +1 -1
- package/dist/mesh/reconcile.js +1 -1
- package/dist/mesh/reconcile.js.map +1 -1
- package/dist/mesh/rigid-transform.d.ts +3 -3
- package/dist/mesh/rigid-transform.js +3 -3
- package/dist/mesh/rigid-transform.js.map +1 -1
- package/dist/mesh/stl-unit.d.ts +24 -0
- package/dist/mesh/stl-unit.d.ts.map +1 -0
- package/dist/mesh/stl-unit.js +17 -0
- package/dist/mesh/stl-unit.js.map +1 -0
- package/dist/mesh/threemf-bambu.d.ts +142 -0
- package/dist/mesh/threemf-bambu.d.ts.map +1 -0
- package/dist/mesh/threemf-bambu.js +334 -0
- package/dist/mesh/threemf-bambu.js.map +1 -0
- package/dist/mesh/threemf-loader.d.ts +42 -7
- package/dist/mesh/threemf-loader.d.ts.map +1 -1
- package/dist/mesh/threemf-loader.js +565 -100
- package/dist/mesh/threemf-loader.js.map +1 -1
- package/dist/mesh/threemf-view.d.ts +71 -0
- package/dist/mesh/threemf-view.d.ts.map +1 -0
- package/dist/mesh/threemf-view.js +100 -0
- package/dist/mesh/threemf-view.js.map +1 -0
- package/dist/node-host/cli.d.ts +44 -6
- package/dist/node-host/cli.d.ts.map +1 -1
- package/dist/node-host/cli.js +76 -26
- package/dist/node-host/cli.js.map +1 -1
- package/dist/node-host/font-family-index.d.ts +93 -0
- package/dist/node-host/font-family-index.d.ts.map +1 -0
- package/dist/node-host/font-family-index.js +273 -0
- package/dist/node-host/font-family-index.js.map +1 -0
- package/dist/node-host/fs-asset-resolver.d.ts +8 -3
- package/dist/node-host/fs-asset-resolver.d.ts.map +1 -1
- package/dist/node-host/fs-asset-resolver.js +13 -5
- package/dist/node-host/fs-asset-resolver.js.map +1 -1
- package/dist/node-host/index.d.ts +8 -0
- package/dist/node-host/index.d.ts.map +1 -1
- package/dist/node-host/index.js +1 -0
- package/dist/node-host/index.js.map +1 -1
- package/dist/node-host/node-font-provider.d.ts +28 -0
- package/dist/node-host/node-font-provider.d.ts.map +1 -1
- package/dist/node-host/node-font-provider.js +49 -0
- package/dist/node-host/node-font-provider.js.map +1 -1
- package/dist/node.d.ts +1 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +1 -0
- package/dist/node.js.map +1 -1
- package/dist/occt-kernel/occt-primitives.d.ts.map +1 -1
- package/dist/occt-kernel/occt-primitives.js +35 -2
- package/dist/occt-kernel/occt-primitives.js.map +1 -1
- package/dist/occt-kernel/occtKernel.d.ts +18 -13
- package/dist/occt-kernel/occtKernel.d.ts.map +1 -1
- package/dist/occt-kernel/occtKernel.js +18 -31
- package/dist/occt-kernel/occtKernel.js.map +1 -1
- package/dist/occt-kernel/stepColorParser.d.ts +18 -0
- package/dist/occt-kernel/stepColorParser.d.ts.map +1 -1
- package/dist/occt-kernel/stepColorParser.js +38 -0
- package/dist/occt-kernel/stepColorParser.js.map +1 -1
- package/dist/occt-kernel/topologyExt.d.ts +1 -1
- package/dist/occt-kernel/topologyExt.d.ts.map +1 -1
- package/dist/occt-kernel/topologyExt.js +4 -5
- package/dist/occt-kernel/topologyExt.js.map +1 -1
- package/dist/primitives/text/cjk-font.d.ts +2 -15
- package/dist/primitives/text/cjk-font.d.ts.map +1 -1
- package/dist/primitives/text/cjk-font.js +13 -1
- package/dist/primitives/text/cjk-font.js.map +1 -1
- package/dist/runtime-state.d.ts +85 -9
- package/dist/runtime-state.d.ts.map +1 -1
- package/dist/runtime-state.js +72 -2
- package/dist/runtime-state.js.map +1 -1
- package/dist/sdk.d.ts +3 -3
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +5 -5
- package/dist/sdk.js.map +1 -1
- package/dist/shape.d.ts +97 -2
- package/dist/shape.d.ts.map +1 -1
- package/dist/shape.js +126 -1
- package/dist/shape.js.map +1 -1
- package/dist/topology/naming/lineage.d.ts +6 -0
- package/dist/topology/naming/lineage.d.ts.map +1 -1
- package/dist/topology/naming/lineage.js +8 -0
- package/dist/topology/naming/lineage.js.map +1 -1
- package/dist/topology/naming/resolve-edge.d.ts +20 -1
- package/dist/topology/naming/resolve-edge.d.ts.map +1 -1
- package/dist/topology/naming/resolve-edge.js +54 -20
- package/dist/topology/naming/resolve-edge.js.map +1 -1
- package/dist/weapp.d.ts +6 -2
- package/dist/weapp.d.ts.map +1 -1
- package/dist/weapp.js +7 -1
- package/dist/weapp.js.map +1 -1
- package/package.json +18 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brep-mock.js","sourceRoot":"","sources":["../../../../src/brep/engine/adapters/brep-mock.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * engine/adapters/memory — 内存模拟 BREP 引擎(第二引擎,引擎切换验证用)\n *\n *\n * 目的:证明「引擎可切换」——不是生产内核,是注册表机制的验证载体。\n * 与 occt 适配器(adapters/occt.ts)同构注册;同一段 faijs 代码在\n * occt / memory 两个引擎下都能执行(构造 → 变换 → 布尔 → 三角化 → 导出),\n * 通过 mock STEP 文本标记区分当前引擎。\n *\n * 实现形态:句柄为自增 number;每条形状记录 { kind, bbox, tag }。\n * 只实现引擎切换测试所需的方法面(原语/变换/布尔/网格化/导出),\n * 其余方法抛「not implemented」——缺失即暴露,绝不伪造(§7.5 语义)。\n */\n\nimport { registerBrepEngine, type BrepEngine } from '../registry'\nimport type {\n BrepBoundingBox,\n BrepCurveParameters,\n BrepEdgeData,\n BrepEvolutionData,\n BrepHandle,\n BrepMeshResult,\n BrepUvBounds,\n\n} from '../types'\nimport type { BrepEngineApi, AssertSatisfiesBrepEngineApi } from '../primitives'\n\n/** brep-mock engine registration id. */\nexport const BREP_MOCK_ENGINE_ID = 'brep_mock'\n\n/** Internal shape record (the \"solid\" of an in-memory mock BREP). */\ninterface MemShape {\n kind: 'box' | 'sphere' | 'cylinder' | 'cone' | 'edge' | 'wire' | 'face' | 'solid' | 'compound'\n /** 轴对齐包围盒(近似真实几何,供 getBoundingBox / 导出用)。 */\n bbox: BrepBoundingBox\n /** 人类可读描述(导出标记用)。 */\n tag: string\n}\n\nfunction bboxOf(kind: MemShape['kind'], size: [number, number, number]): BrepBoundingBox {\n const [x, y, z] = size\n return { xmin: -x / 2, ymin: -y / 2, zmin: -z / 2, xmax: x / 2, ymax: y / 2, zmax: z / 2 }\n}\n\n/** 1×1×1 单位盒三角化(8 顶点 / 12 三角形;memory 引擎的 meshShape 输出)。 */\nconst UNIT_BOX_POSITIONS = new Float32Array([\n -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5,\n -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5,\n])\nconst UNIT_BOX_INDICES = new Uint32Array([\n 0, 2, 1, 0, 3, 2, 4, 5, 6, 4, 6, 7, 0, 1, 5, 0, 5, 4,\n 1, 2, 6, 1, 6, 5, 2, 3, 7, 2, 7, 6, 3, 0, 4, 3, 4, 7,\n])\n\nfunction unitBoxMesh(): BrepMeshResult {\n return {\n positions: new Float32Array(UNIT_BOX_POSITIONS),\n normals: new Float32Array(24), // 占位法线(切换测试不校验法线)\n indices: new Uint32Array(UNIT_BOX_INDICES),\n vertexCount: 8,\n triangleCount: 12,\n }\n}\n\n/**\n * Build an in-memory mock BREP engine (a BrepEngineApi subset).\n * @returns the mock in-memory BREP engine API.\n */\nexport function createBrepMockApi(): BrepEngineApi {\n const shapes = new Map<number, MemShape>()\n let nextHandle = 1\n\n const alloc = (shape: MemShape): BrepHandle => {\n const h = nextHandle as BrepHandle\n nextHandle += 1\n shapes.set(h, shape)\n return h\n }\n\n const need = (h: BrepHandle, method: string): MemShape => {\n const s = shapes.get(h)\n if (!s) throw new Error(`[brep-mock-engine] ${method}: unknown handle ${h}`)\n return s\n }\n\n const unsupported = (method: string): never => {\n throw new Error(`[brep-mock-engine] ${method}() not implemented — engine-switch test only`)\n }\n\n /** 布尔合并 bbox(fuse/cut/common 的近似包围盒)。 */\n const mergeBbox = (a: BrepBoundingBox, b: BrepBoundingBox): BrepBoundingBox => ({\n xmin: Math.min(a.xmin, b.xmin),\n ymin: Math.min(a.ymin, b.ymin),\n zmin: Math.min(a.zmin, b.zmin),\n xmax: Math.max(a.xmax, b.xmax),\n ymax: Math.max(a.ymax, b.ymax),\n zmax: Math.max(a.zmax, b.zmax),\n })\n\n\n const primitive = (\n kind: MemShape['kind'],\n size: [number, number, number],\n tag: string,\n ): BrepHandle => alloc({ kind, bbox: bboxOf(kind, size), tag })\n\n const primitives: BrepEngineApi = {\n // ── 生命周期 ──\n release: () => undefined,\n\n // ── 实体图元 ──\n makeBox: (dx, dy, dz) => primitive('box', [dx, dy, dz], `box ${dx}x${dy}x${dz}`),\n makeBoxFromCorners: (c1, c2) => primitive('box',\n [Math.abs(c2.x - c1.x), Math.abs(c2.y - c1.y), Math.abs(c2.z - c1.z)],\n `box (${c1.x},${c1.y},${c1.z})→(${c2.x},${c2.y},${c2.z})`),\n makeCylinder: (radius, height) => primitive('cylinder', [radius * 2, radius * 2, height], `cylinder r=${radius} h=${height}`),\n makeSphere: (radius) => primitive('sphere', [radius * 2, radius * 2, radius * 2], `sphere r=${radius}`),\n makeCone: (r1, r2, height) => primitive('cone', [Math.max(r1, r2) * 2, Math.max(r1, r2) * 2, height], `cone r1=${r1} r2=${r2} h=${height}`),\n makeRectangle: (width, height) => primitive('face', [width, height, 0], `rectangle ${width}x${height}`),\n\n // ── 造型运算 ──\n extrude: (shape, dx, dy, dz) => {\n const s = need(shape, 'extrude')\n return alloc({ kind: 'solid', bbox: { ...s.bbox, xmax: s.bbox.xmax + dx, ymax: s.bbox.ymax + dy, zmax: s.bbox.zmax + dz }, tag: `extrude(${s.tag})` })\n },\n revolveVec: (shape, _center, direction, angleDeg) => {\n // Mock approximation: revolve grows the bbox by sweeping the profile's\n // extent around the axis — approximate with the direction-scaled extent\n // (signature-level coverage only, like extrude above).\n const s = need(shape, 'revolveVec')\n const grow = (Math.abs(angleDeg) / 360) * Math.hypot(direction.x, direction.y, direction.z) * 2\n return alloc({\n kind: 'solid',\n bbox: {\n xmin: s.bbox.xmin - grow, ymin: s.bbox.ymin - grow, zmin: s.bbox.zmin,\n xmax: s.bbox.xmax + grow, ymax: s.bbox.ymax + grow, zmax: s.bbox.zmax,\n },\n tag: `revolveVec(${s.tag},a=${angleDeg})`,\n })\n },\n sew: (shapesIn, _tolerance) => {\n // Mock approximation: merge the parts' bboxes into one shell-ish solid.\n let bbox: BrepBoundingBox | null = null\n let tag = 'sew('\n for (const h of shapesIn) {\n const rec = need(h, 'sew')\n bbox = bbox ? mergeBbox(bbox, rec.bbox) : { ...rec.bbox }\n tag += `${rec.tag},`\n }\n return alloc({ kind: 'solid', bbox: bbox ?? bboxOf('solid', [0, 0, 0]), tag: `${tag})` })\n },\n sewAndSolidify: () => alloc({ kind: 'solid', bbox: bboxOf('solid', [1, 1, 1]), tag: 'sewAndSolidify' }),\n shell: (solid, _facesToRemove, thickness, _tolerance) => {\n // Mock approximation: shelling keeps the outer bbox and marks it hollow.\n const s = need(solid, 'shell')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `shell(${s.tag},t=${thickness})` })\n },\n hullFromPoints: (points, _tolerance) => {\n // Mock approximation: bbox of the point set as a solid.\n if (points.length === 0) return unsupported('hullFromPoints: empty point set')\n let xmin = Infinity, ymin = Infinity, zmin = Infinity\n let xmax = -Infinity, ymax = -Infinity, zmax = -Infinity\n for (const p of points) {\n xmin = Math.min(xmin, p.x); ymin = Math.min(ymin, p.y); zmin = Math.min(zmin, p.z)\n xmax = Math.max(xmax, p.x); ymax = Math.max(ymax, p.y); zmax = Math.max(zmax, p.z)\n }\n return alloc({ kind: 'solid', bbox: { xmin, ymin, zmin, xmax, ymax, zmax }, tag: `hullFromPoints(n=${points.length})` })\n },\n\n // ── 倒角与圆角(mock:只重打标签/复制,不做真几何;引擎切换测试覆盖签名面) ──\n chamfer: (solid, edges, distance) => {\n const s = need(solid, 'chamfer')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `chamfer(${s.tag},d=${distance},e=${edges.length})` })\n },\n chamferDistAngle: (solid, edges, distance, angleDeg) => {\n const s = need(solid, 'chamferDistAngle')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `chamferDA(${s.tag},d=${distance},a=${angleDeg},e=${edges.length})` })\n },\n fillet: (solid, edges, radius) => {\n const s = need(solid, 'fillet')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `fillet(${s.tag},r=${radius},e=${edges.length})` })\n },\n filletVariable: (solid, edge, startRadius, endRadius) => {\n const s = need(solid, 'filletVariable')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `filletVar(${s.tag},r=${startRadius}-${endRadius},e=1)` })\n },\n filletWithHistory: (solid, edges, radius, _hashes, _upper) => {\n const s = need(solid, 'filletWithHistory')\n const result = alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `filletWH(${s.tag},r=${radius},e=${edges.length})` })\n const evo: BrepEvolutionData = { result, modified: [], generated: [], deleted: [] }\n return evo\n },\n\n // ── 布尔与分割 ──\n fuse: (a, b) => {\n const sa = need(a, 'fuse')\n const sb = need(b, 'fuse')\n return alloc({ kind: 'solid', bbox: mergeBbox(sa.bbox, sb.bbox), tag: `fuse(${sa.tag},${sb.tag})` })\n },\n cut: (a, b) => {\n const sa = need(a, 'cut')\n return alloc({ kind: 'solid', bbox: { ...sa.bbox }, tag: `cut(${sa.tag},#${b})` })\n },\n common: (a, b) => {\n const sa = need(a, 'common')\n const sb = need(b, 'common')\n return alloc({ kind: 'solid', bbox: mergeBbox(sa.bbox, sb.bbox), tag: `common(${sa.tag},${sb.tag})` })\n },\n intersect: (a, b) => {\n const sa = need(a, 'intersect')\n const sb = need(b, 'intersect')\n return alloc({ kind: 'solid', bbox: mergeBbox(sa.bbox, sb.bbox), tag: `intersect(${sa.tag},${sb.tag})` })\n },\n sectionByPlane: (shape, _point, _normal) => {\n // Mock approximation: section curves keep the input bbox as a wire-ish record.\n const s = need(shape, 'sectionByPlane')\n return [alloc({ kind: 'wire', bbox: { ...s.bbox }, tag: `sectionByPlane(${s.tag})` })]\n },\n splitByPlane: (shape, _point, _normal) => {\n // Mock approximation: two halves share the input bbox (no real cut).\n const s = need(shape, 'splitByPlane')\n return {\n positive: alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `splitByPlane+(${s.tag})` }),\n negative: alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `splitByPlane-(${s.tag})` }),\n }\n },\n fuseAll: (shapesIn) => {\n let bbox: BrepBoundingBox | null = null\n let tag = 'fuseAll('\n for (const s of shapesIn) {\n const rec = need(s, 'fuseAll')\n bbox = bbox ? mergeBbox(bbox, rec.bbox) : { ...rec.bbox }\n tag += `${rec.tag},`\n }\n return alloc({ kind: 'solid', bbox: bbox ?? bboxOf('solid', [0, 0, 0]), tag: `${tag})` })\n },\n\n // ── 变换 ──\n translate: (shape, dx, dy, dz) => {\n const s = need(shape, 'translate')\n return alloc({\n kind: 'solid',\n bbox: {\n xmin: s.bbox.xmin + dx, ymin: s.bbox.ymin + dy, zmin: s.bbox.zmin + dz,\n xmax: s.bbox.xmax + dx, ymax: s.bbox.ymax + dy, zmax: s.bbox.zmax + dz,\n },\n tag: `translate(${s.tag},${dx},${dy},${dz})`,\n })\n },\n scale: (shape, _center, factor) => {\n const s = need(shape, 'scale')\n return alloc({ kind: 'solid', bbox: {\n xmin: s.bbox.xmin * factor, ymin: s.bbox.ymin * factor, zmin: s.bbox.zmin * factor,\n xmax: s.bbox.xmax * factor, ymax: s.bbox.ymax * factor, zmax: s.bbox.zmax * factor,\n }, tag: `scale(${s.tag},${factor})` })\n },\n transform: (shape, _matrix) => {\n const s = need(shape, 'transform')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `transform(${s.tag})` })\n },\n located: (shape, _matrix) => {\n const s = need(shape, 'located')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `located(${s.tag})` })\n },\n generalTransform: (shape, _matrix) => {\n const s = need(shape, 'generalTransform')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `generalTransform(${s.tag})` })\n },\n copy: (shape) => {\n const s = need(shape, 'copy')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `copy(${s.tag})` })\n },\n\n // ── 阵列(Phase 2 接口新增;mock 只重打标签/复制,不做真几何) ──\n linearPattern: (shape, direction, spacing, count) => {\n const s = need(shape, 'linearPattern')\n const list: BrepHandle[] = []\n for (let i = 0; i < count; i++) {\n list.push(alloc({\n kind: 'solid',\n bbox: {\n xmin: s.bbox.xmin + direction.x * spacing * i, ymin: s.bbox.ymin + direction.y * spacing * i, zmin: s.bbox.zmin + direction.z * spacing * i,\n xmax: s.bbox.xmax + direction.x * spacing * i, ymax: s.bbox.ymax + direction.y * spacing * i, zmax: s.bbox.zmax + direction.z * spacing * i,\n },\n tag: `linearPattern(${s.tag},${i})`,\n }))\n }\n return list\n },\n circularPattern: (shape, _center, _axis, _angleStep, _count) => {\n const s = need(shape, 'circularPattern')\n return [alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `circularPattern(${s.tag})` })]\n },\n gridPattern: (shape, directionX, directionY, spacingX, spacingY, countX, countY) => {\n const s = need(shape, 'gridPattern')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `gridPattern(${s.tag},${countX}x${countY})` })\n },\n\n // ── 曲线构造 ──\n makeLineEdge: (start, end) => alloc({ kind: 'edge',\n bbox: {\n xmin: Math.min(start.x, end.x), ymin: Math.min(start.y, end.y), zmin: Math.min(start.z, end.z),\n xmax: Math.max(start.x, end.x), ymax: Math.max(start.y, end.y), zmax: Math.max(start.z, end.z),\n },\n tag: `line(${start.x},${start.y},${start.z})→(${end.x},${end.y},${end.z})` }),\n makeArcEdge: (start, mid, end) => {\n const xs = [start.x, mid.x, end.x]\n const ys = [start.y, mid.y, end.y]\n const zs = [start.z, mid.z, end.z]\n return alloc({ kind: 'edge', bbox: {\n xmin: Math.min(...xs), ymin: Math.min(...ys), zmin: Math.min(...zs),\n xmax: Math.max(...xs), ymax: Math.max(...ys), zmax: Math.max(...zs),\n }, tag: `arc` })\n },\n makeBezierEdge: () => alloc({ kind: 'edge', bbox: bboxOf('edge', [1, 1, 1]), tag: 'bezier' }),\n makeCircleEdge: (center, _normal, radius) => alloc({ kind: 'edge', bbox: bboxOf('edge', [radius * 2, radius * 2, 0]), tag: `circle(${center.x},${center.y},${center.z},r=${radius})` }),\n\n // ── 拓扑构造 ──\n makeWire: (edges) => alloc({ kind: 'wire', bbox: edges.length > 0 ? { ...need(edges[0], 'makeWire').bbox } : bboxOf('wire', [0, 0, 0]), tag: `wire(${edges.length})` }),\n makeFace: (wire) => alloc({ kind: 'face', bbox: { ...need(wire, 'makeFace').bbox }, tag: `face(#${wire})` }),\n makeCompound: (parts) => {\n let bbox: BrepBoundingBox | null = null\n for (const p of parts) {\n const rec = need(p, 'makeCompound')\n bbox = bbox ? mergeBbox(bbox, rec.bbox) : { ...rec.bbox }\n }\n return alloc({ kind: 'compound', bbox: bbox ?? bboxOf('compound', [0, 0, 0]), tag: `compound(${parts.length})` })\n },\n\n buildTriFace: () => alloc({ kind: 'face', bbox: bboxOf('face', [1, 1, 0]), tag: 'triFace' }),\n addHolesInFace: (face) => alloc({ kind: 'face', bbox: { ...need(face, 'addHolesInFace').bbox }, tag: `holedFace(#${face})` }),\n\n // ── 三角化(BREP→mesh 唯一出口) ──\n meshShape: () => unitBoxMesh(),\n wireframe: (): BrepEdgeData => ({ points: new Float32Array(0), edgeGroups: new Int32Array(0), pointCount: 0, edgeCount: 0 }),\n\n // ── 拓扑查询 ──\n getSubShapes: () => [],\n subShapeHashes: () => [],\n hashCode: (shape) => shape % 2147483647,\n isSame: (a, b) => a === b,\n isSolid: () => true,\n shapeType: () => 'SOLID',\n shapeOrientation: () => 'forward',\n edgeToFaceMap: () => ({}),\n adjacentFaces: () => [],\n sharedEdges: () => [],\n\n // ── 几何求值 ──\n curveType: () => 'line',\n curvePointAtParam: () => ({ x: 0, y: 0, z: 0 }),\n curveTangent: () => ({ x: 1, y: 0, z: 0 }),\n curveParameters: (): BrepCurveParameters => ({ first: 0, last: 1 }),\n curveIsClosed: () => false,\n curveLength: () => 0,\n surfaceType: () => 'plane',\n surfaceNormal: () => ({ x: 0, y: 0, z: 1 }),\n pointOnSurface: () => ({ x: 0, y: 0, z: 0 }),\n uvBounds: (): BrepUvBounds => ({ uMin: 0, uMax: 1, vMin: 0, vMax: 1 }),\n getFaceCylinderData: () => null,\n getNurbsCurveData: () => null,\n interpolatePoints: () => alloc({ kind: 'edge', bbox: bboxOf('edge', [1, 1, 1]), tag: 'interpolatePoints' }),\n defeature: (shape) => { need(shape, 'defeature'); return shape },\n draft: (shape) => { need(shape, 'draft'); return shape },\n removeHolesFromFace: (face) => { need(face, 'removeHolesFromFace'); return face },\n reverseShape: (shape) => { need(shape, 'reverseShape'); return shape },\n projectEdges: () => unsupported('projectEdges'),\n\n // ── 测量 ──\n getBoundingBox: (shape) => ({ ...need(shape, 'getBoundingBox').bbox }),\n getVolume: (shape) => {\n const b = need(shape, 'getVolume').bbox\n return (b.xmax - b.xmin) * (b.ymax - b.ymin) * (b.zmax - b.zmin)\n },\n getCenterOfMass: (shape) => {\n const b = need(shape, 'getCenterOfMass').bbox\n return { x: (b.xmin + b.xmax) / 2, y: (b.ymin + b.ymax) / 2, z: (b.zmin + b.zmax) / 2 }\n },\n getSurfaceArea: () => 0,\n getLength: () => 0,\n\n // ── 校验与修复 ──\n isValid: () => true,\n unifySameDomain: (shape) => shape,\n healSolid: (shape) => shape,\n fixShape: (shape) => shape,\n fixFaceOrientations: (shape) => shape,\n removeDegenerateEdges: (shape) => shape,\n\n // ── IO ──\n importStep: () => alloc({ kind: 'solid', bbox: bboxOf('solid', [10, 10, 10]), tag: 'importStep(mock)' }),\n exportStep: (shape) => {\n const s = need(shape, 'exportStep')\n return `brep-mock-engine STEP (mock)\\nshape #${shape}: ${s.tag}\\nFILE_DESCRIPTION((\"brep-mock-engine\"), \"2;1\");`\n },\n importStl: () => alloc({ kind: 'solid', bbox: bboxOf('solid', [10, 10, 10]), tag: 'importStl(mock)' }),\n fromBREP: () => alloc({ kind: 'solid', bbox: bboxOf('solid', [10, 10, 10]), tag: 'fromBREP(mock)' }),\n\n // ── 面演化(L1 三员:mock 用底层布尔 + 空 evo) ──\n cutWithHistory: (a, b, _hashes, _upper) => {\n const result = primitives.cut(a, b)\n const evo: BrepEvolutionData = { result, modified: [], generated: [], deleted: [] }\n return evo\n },\n fuseWithHistory: (a, b, _hashes, _upper) => {\n const result = primitives.fuse(a, b)\n const evo: BrepEvolutionData = { result, modified: [], generated: [], deleted: [] }\n return evo\n },\n intersectWithHistory: (a, b, _hashes, _upper) => {\n const result = primitives.intersect(a, b)\n const evo: BrepEvolutionData = { result, modified: [], generated: [], deleted: [] }\n return evo\n },\n\n // ── L1 补齐方法(mock 验证载体——查询类给简单实现,其余明确缺失暴露) ──\n dispose: () => undefined,\n composeTransform: () => unsupported('composeTransform'),\n makeEllipsoid: () => unsupported('makeEllipsoid'),\n makeTorus: () => unsupported('makeTorus'),\n makeVertex: (x, y, z) => alloc({ kind: 'edge', bbox: { xmin: x, ymin: y, zmin: z, xmax: x, ymax: y, zmax: z }, tag: `vertex(${x},${y},${z})` }),\n mirror: (shape) => alloc({ kind: need(shape, 'mirror').kind, bbox: { ...need(shape, 'mirror').bbox }, tag: `mirror(#${shape})` }),\n surfaceCenterOfMass: (shape) => { const b = need(shape, 'surfaceCenterOfMass').bbox; return { x: (b.xmin + b.xmax) / 2, y: (b.ymin + b.ymax) / 2, z: (b.zmin + b.zmax) / 2 } },\n locate: (shape) => alloc({ kind: need(shape, 'locate').kind, bbox: { ...need(shape, 'locate').bbox }, tag: `locate(#${shape})` }),\n copyShape: (shape) => alloc({ kind: need(shape, 'copyShape').kind, bbox: { ...need(shape, 'copyShape').bbox }, tag: `copy(#${shape})` }),\n }\n return primitives\n}\n\n/** Assemble the brep-mock engine (sync registration — no async init). */\nexport function registerBrepMockEngine(): void {\n registerBrepEngine(BREP_MOCK_ENGINE_ID, async (): Promise<BrepEngine> => ({\n id: BREP_MOCK_ENGINE_ID,\n primitives: createBrepMockApi(),\n capabilities: {\n // brep-mock lacks evolution/heal/assembly — missing capabilities are exposed (§7.5).\n },\n }))\n}\n\n// §7.8 compile-time guard: createBrepMockApi's return type must satisfy BrepEngineApi.\ntype _AssertBrepMockApi = AssertSatisfiesBrepEngineApi<ReturnType<typeof createBrepMockApi>>\n"]}
|
|
1
|
+
{"version":3,"file":"brep-mock.js","sourceRoot":"","sources":["../../../../src/brep/engine/adapters/brep-mock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,kBAAkB,EAAmB,MAAM,aAAa,CAAA;AAajE,wCAAwC;AACxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAA;AAW9C,SAAS,MAAM,CAAC,IAAsB,EAAE,IAA8B;IACpE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAA;AAC5F,CAAC;AAED,2DAA2D;AAC3D,MAAM,kBAAkB,GAAG,IAAI,YAAY,CAAC;IAC1C,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG;IAClE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;CAC/D,CAAC,CAAA;AACF,MAAM,gBAAgB,GAAG,IAAI,WAAW,CAAC;IACvC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACpD,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACrD,CAAC,CAAA;AAEF,SAAS,WAAW;IAClB,OAAO;QACL,SAAS,EAAE,IAAI,YAAY,CAAC,kBAAkB,CAAC;QAC/C,OAAO,EAAE,IAAI,YAAY,CAAC,EAAE,CAAC,EAAE,kBAAkB;QACjD,OAAO,EAAE,IAAI,WAAW,CAAC,gBAAgB,CAAC;QAC1C,WAAW,EAAE,CAAC;QACd,aAAa,EAAE,EAAE;KAClB,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAA;IAC1C,IAAI,UAAU,GAAG,CAAC,CAAA;IAElB,MAAM,KAAK,GAAG,CAAC,KAAe,EAAc,EAAE;QAC5C,MAAM,CAAC,GAAG,UAAwB,CAAA;QAClC,UAAU,IAAI,CAAC,CAAA;QACf,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QACpB,OAAO,CAAC,CAAA;IACV,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,CAAC,CAAa,EAAE,MAAc,EAAY,EAAE;QACvD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,oBAAoB,CAAC,EAAE,CAAC,CAAA;QAC5E,OAAO,CAAC,CAAA;IACV,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,MAAc,EAAS,EAAE;QAC5C,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,8CAA8C,CAAC,CAAA;IAC7F,CAAC,CAAA;IAED,yCAAyC;IACzC,MAAM,SAAS,GAAG,CAAC,CAAkB,EAAE,CAAkB,EAAmB,EAAE,CAAC,CAAC;QAC9E,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QAC9B,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QAC9B,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QAC9B,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QAC9B,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QAC9B,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;KAC/B,CAAC,CAAA;IAGF,MAAM,SAAS,GAAG,CAChB,IAAsB,EACtB,IAA8B,EAC9B,GAAW,EACC,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IAE/D,MAAM,UAAU,GAAkB;QAChC,aAAa;QACb,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;QAExB,aAAa;QACb,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QAChF,kBAAkB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAC7C,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EACrE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC;QAC5D,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,cAAc,MAAM,MAAM,MAAM,EAAE,CAAC;QAC7H,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,YAAY,MAAM,EAAE,CAAC;QACvG,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,MAAM,EAAE,CAAC;QAC3I,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,MAAM,EAAE,CAAC;QAEvG,aAAa;QACb,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;YAChC,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;QACxJ,CAAC;QACD,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;YAClD,uEAAuE;YACvE,wEAAwE;YACxE,uDAAuD;YACvD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;YACnC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YAC/F,OAAO,KAAK,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE;oBACJ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;oBACrE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;iBACtE;gBACD,GAAG,EAAE,cAAc,CAAC,CAAC,GAAG,MAAM,QAAQ,GAAG;aAC1C,CAAC,CAAA;QACJ,CAAC;QACD,GAAG,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE;YAC5B,wEAAwE;YACxE,IAAI,IAAI,GAA2B,IAAI,CAAA;YACvC,IAAI,GAAG,GAAG,MAAM,CAAA;YAChB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;gBAC1B,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;gBACzD,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;YACtB,CAAC;YACD,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAA;QAC3F,CAAC;QACD,cAAc,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC;QACvG,KAAK,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE;YACtD,yEAAyE;YACzE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YAC9B,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,GAAG,MAAM,SAAS,GAAG,EAAE,CAAC,CAAA;QAC7F,CAAC;QACD,cAAc,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;YACrC,wDAAwD;YACxD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,WAAW,CAAC,iCAAiC,CAAC,CAAA;YAC9E,IAAI,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,QAAQ,CAAA;YACrD,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAA;YACxD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAClF,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YACpF,CAAC;YACD,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,oBAAoB,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;QAC1H,CAAC;QAED,+CAA+C;QAC/C,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YAClC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;YAChC,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,GAAG,MAAM,QAAQ,MAAM,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;QAChH,CAAC;QACD,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;YACrD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;YACzC,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,GAAG,MAAM,QAAQ,MAAM,QAAQ,MAAM,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;QAChI,CAAC;QACD,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YAC/B,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;QAC7G,CAAC;QACD,cAAc,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE;YACtD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;YACvC,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,GAAG,MAAM,WAAW,IAAI,SAAS,OAAO,EAAE,CAAC,CAAA;QACpH,CAAC;QACD,iBAAiB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3D,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;YACrH,MAAM,GAAG,GAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;YACnF,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,cAAc;QACd,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YAC1B,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;QACtG,CAAC;QACD,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;YACzB,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;QACpF,CAAC;QACD,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACf,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;YAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;YAC5B,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;QACxG,CAAC;QACD,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;YAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;YAC/B,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;QAC3G,CAAC;QACD,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;YACzC,+EAA+E;YAC/E,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;YACvC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;QACxF,CAAC;QACD,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;YACvC,qEAAqE;YACrE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;YACrC,OAAO;gBACL,QAAQ,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;gBACvF,QAAQ,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;aACxF,CAAA;QACH,CAAC;QACD,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;YACpB,IAAI,IAAI,GAA2B,IAAI,CAAA;YACvC,IAAI,GAAG,GAAG,UAAU,CAAA;YACpB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;gBAC9B,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;gBACzD,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;YACtB,CAAC;YACD,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAA;QAC3F,CAAC;QAED,WAAW;QACX,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;YAClC,OAAO,KAAK,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE;oBACJ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;oBACtE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;iBACvE;gBACD,GAAG,EAAE,aAAa,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG;aAC7C,CAAC,CAAA;QACJ,CAAC;QACD,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAChC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YAC9B,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;oBAClC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM;oBAClF,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM;iBACnF,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,CAAA;QACxC,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;YAClC,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;QAClF,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;YAChC,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;QAChF,CAAC;QACD,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACnC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;YACzC,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;QACzF,CAAC;QACD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;YACd,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAC7B,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;QAC7E,CAAC;QAED,6CAA6C;QAC7C,aAAa,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YAClD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;YACtC,MAAM,IAAI,GAAiB,EAAE,CAAA;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;oBACd,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE;wBACJ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;wBAC3I,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;qBAC5I;oBACD,GAAG,EAAE,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG;iBACpC,CAAC,CAAC,CAAA;YACL,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;YAC7D,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;YACxC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;QAC1F,CAAC;QACD,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACjF,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;YACpC,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,MAAM,GAAG,EAAE,CAAC,CAAA;QACxG,CAAC;QAED,aAAa;QACb,YAAY,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM;YAChD,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC9F,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;aAC/F;YACD,GAAG,EAAE,QAAQ,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAC/E,WAAW,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YAC/B,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;YAClC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;YAClC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;YAClC,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;oBACjC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACnE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;iBACpE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;QAClB,CAAC;QACD,cAAc,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;QAC7F,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;YACzB,0EAA0E;YAC1E,yEAAyE;YACzE,2BAA2B;YAC3B,MAAM,EAAE,GAAa,EAAE,CAAA;YACvB,MAAM,EAAE,GAAa,EAAE,CAAA;YACvB,MAAM,EAAE,GAAa,EAAE,CAAA;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAA;gBAClB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAA;gBACtB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAA;YACxB,CAAC;YACD,OAAO,KAAK,CAAC;gBACX,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC;oBACjB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE;oBAC9I,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7B,GAAG,EAAE,SAAS;aACf,CAAC,CAAA;QACJ,CAAC;QACD,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;YACnB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;YAClC,OAAO;gBACL,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,WAAW,IAAI,GAAG,EAAE,CAAC;gBACrE,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,WAAW,IAAI,GAAG,EAAE,CAAC;aACtE,CAAA;QACH,CAAC;QACD,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC;QAEvL,aAAa;QACb,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;QACvK,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,SAAS,IAAI,GAAG,EAAE,CAAC;QAC5G,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;YACtB,IAAI,IAAI,GAA2B,IAAI,CAAA;YACvC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;gBACnC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;YAC3D,CAAC;YACD,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;QACnH,CAAC;QAED,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QAC5F,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,cAAc,IAAI,GAAG,EAAE,CAAC;QAE7H,4BAA4B;QAC5B,SAAS,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;QAC9B,SAAS,EAAE,GAAiB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QAE5H,aAAa;QACb,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE;QACtB,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE;QACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,UAAU;QACvC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;QACzB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;QACnB,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO;QACxB,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS;QACjC,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QACzB,aAAa,EAAE,GAAG,EAAE,CAAC,EAAE;QACvB,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE;QAErB,aAAa;QACb,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM;QACvB,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/C,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1C,eAAe,EAAE,GAAwB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACnE,aAAa,EAAE,GAAG,EAAE,CAAC,KAAK;QAC1B,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QACpB,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO;QAC1B,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3C,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5C,QAAQ,EAAE,GAAiB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACtE,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI;QAC/B,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI;QAC7B,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,CAAC;QAC3G,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,KAAK,CAAA,CAAC,CAAC;QAChE,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,CAAA,CAAC,CAAC;QACxD,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,OAAO,IAAI,CAAA,CAAC,CAAC;QACjF,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,KAAK,CAAA,CAAC,CAAC;QACtE,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC;QAE/C,WAAW;QACX,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC;QACtE,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,IAAI,CAAA;YACvC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;QAClE,CAAC;QACD,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;YACzB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAA;YAC7C,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;QACzF,CAAC;QACD,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;QACvB,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAElB,cAAc;QACd,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;QACnB,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;QACjC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;QAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;QAC1B,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;QACrC,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;QAEvC,WAAW;QACX,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAC;QACxG,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;YACpB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;YACnC,OAAO,wCAAwC,KAAK,KAAK,CAAC,CAAC,GAAG,kDAAkD,CAAA;QAClH,CAAC;QACD,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC;QACtG,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC;QAEpG,sCAAsC;QACtC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnC,MAAM,GAAG,GAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;YACnF,OAAO,GAAG,CAAA;QACZ,CAAC;QACD,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACpC,MAAM,GAAG,GAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;YACnF,OAAO,GAAG,CAAA;QACZ,CAAC;QACD,oBAAoB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACzC,MAAM,GAAG,GAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;YACnF,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,8CAA8C;QAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;QACxB,gBAAgB,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,kBAAkB,CAAC;QACvD,aAAa,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,eAAe,CAAC;QACjD,SAAS,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC;QACzC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/I,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,WAAW,KAAK,GAAG,EAAE,CAAC;QACjI,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA,CAAC,CAAC;QAC9K,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,WAAW,KAAK,GAAG,EAAE,CAAC;QACjI,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,SAAS,KAAK,GAAG,EAAE,CAAC;KACzI,CAAA;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,sBAAsB;IACpC,kBAAkB,CAAC,mBAAmB,EAAE,KAAK,IAAyB,EAAE,CAAC,CAAC;QACxE,EAAE,EAAE,mBAAmB;QACvB,UAAU,EAAE,iBAAiB,EAAE;QAC/B,YAAY,EAAE;QACZ,qFAAqF;SACtF;KACF,CAAC,CAAC,CAAA;AACL,CAAC","sourcesContent":["/**\n * engine/adapters/memory — 内存模拟 BREP 引擎(第二引擎,引擎切换验证用)\n *\n *\n * 目的:证明「引擎可切换」——不是生产内核,是注册表机制的验证载体。\n * 与 occt 适配器(adapters/occt.ts)同构注册;同一段 faijs 代码在\n * occt / memory 两个引擎下都能执行(构造 → 变换 → 布尔 → 三角化 → 导出),\n * 通过 mock STEP 文本标记区分当前引擎。\n *\n * 实现形态:句柄为自增 number;每条形状记录 { kind, bbox, tag }。\n * 只实现引擎切换测试所需的方法面(原语/变换/布尔/网格化/导出),\n * 其余方法抛「not implemented」——缺失即暴露,绝不伪造(§7.5 语义)。\n */\n\nimport { registerBrepEngine, type BrepEngine } from '../registry'\nimport type {\n BrepBoundingBox,\n BrepCurveParameters,\n BrepEdgeData,\n BrepEvolutionData,\n BrepHandle,\n BrepMeshResult,\n BrepUvBounds,\n\n} from '../types'\nimport type { BrepEngineApi, AssertSatisfiesBrepEngineApi } from '../primitives'\n\n/** brep-mock engine registration id. */\nexport const BREP_MOCK_ENGINE_ID = 'brep_mock'\n\n/** Internal shape record (the \"solid\" of an in-memory mock BREP). */\ninterface MemShape {\n kind: 'box' | 'sphere' | 'cylinder' | 'cone' | 'edge' | 'wire' | 'face' | 'solid' | 'compound'\n /** 轴对齐包围盒(近似真实几何,供 getBoundingBox / 导出用)。 */\n bbox: BrepBoundingBox\n /** 人类可读描述(导出标记用)。 */\n tag: string\n}\n\nfunction bboxOf(kind: MemShape['kind'], size: [number, number, number]): BrepBoundingBox {\n const [x, y, z] = size\n return { xmin: -x / 2, ymin: -y / 2, zmin: -z / 2, xmax: x / 2, ymax: y / 2, zmax: z / 2 }\n}\n\n/** 1×1×1 单位盒三角化(8 顶点 / 12 三角形;memory 引擎的 meshShape 输出)。 */\nconst UNIT_BOX_POSITIONS = new Float32Array([\n -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5,\n -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5,\n])\nconst UNIT_BOX_INDICES = new Uint32Array([\n 0, 2, 1, 0, 3, 2, 4, 5, 6, 4, 6, 7, 0, 1, 5, 0, 5, 4,\n 1, 2, 6, 1, 6, 5, 2, 3, 7, 2, 7, 6, 3, 0, 4, 3, 4, 7,\n])\n\nfunction unitBoxMesh(): BrepMeshResult {\n return {\n positions: new Float32Array(UNIT_BOX_POSITIONS),\n normals: new Float32Array(24), // 占位法线(切换测试不校验法线)\n indices: new Uint32Array(UNIT_BOX_INDICES),\n vertexCount: 8,\n triangleCount: 12,\n }\n}\n\n/**\n * Build an in-memory mock BREP engine (a BrepEngineApi subset).\n * @returns the mock in-memory BREP engine API.\n */\nexport function createBrepMockApi(): BrepEngineApi {\n const shapes = new Map<number, MemShape>()\n let nextHandle = 1\n\n const alloc = (shape: MemShape): BrepHandle => {\n const h = nextHandle as BrepHandle\n nextHandle += 1\n shapes.set(h, shape)\n return h\n }\n\n const need = (h: BrepHandle, method: string): MemShape => {\n const s = shapes.get(h)\n if (!s) throw new Error(`[brep-mock-engine] ${method}: unknown handle ${h}`)\n return s\n }\n\n const unsupported = (method: string): never => {\n throw new Error(`[brep-mock-engine] ${method}() not implemented — engine-switch test only`)\n }\n\n /** 布尔合并 bbox(fuse/cut/common 的近似包围盒)。 */\n const mergeBbox = (a: BrepBoundingBox, b: BrepBoundingBox): BrepBoundingBox => ({\n xmin: Math.min(a.xmin, b.xmin),\n ymin: Math.min(a.ymin, b.ymin),\n zmin: Math.min(a.zmin, b.zmin),\n xmax: Math.max(a.xmax, b.xmax),\n ymax: Math.max(a.ymax, b.ymax),\n zmax: Math.max(a.zmax, b.zmax),\n })\n\n\n const primitive = (\n kind: MemShape['kind'],\n size: [number, number, number],\n tag: string,\n ): BrepHandle => alloc({ kind, bbox: bboxOf(kind, size), tag })\n\n const primitives: BrepEngineApi = {\n // ── 生命周期 ──\n release: () => undefined,\n\n // ── 实体图元 ──\n makeBox: (dx, dy, dz) => primitive('box', [dx, dy, dz], `box ${dx}x${dy}x${dz}`),\n makeBoxFromCorners: (c1, c2) => primitive('box',\n [Math.abs(c2.x - c1.x), Math.abs(c2.y - c1.y), Math.abs(c2.z - c1.z)],\n `box (${c1.x},${c1.y},${c1.z})→(${c2.x},${c2.y},${c2.z})`),\n makeCylinder: (radius, height) => primitive('cylinder', [radius * 2, radius * 2, height], `cylinder r=${radius} h=${height}`),\n makeSphere: (radius) => primitive('sphere', [radius * 2, radius * 2, radius * 2], `sphere r=${radius}`),\n makeCone: (r1, r2, height) => primitive('cone', [Math.max(r1, r2) * 2, Math.max(r1, r2) * 2, height], `cone r1=${r1} r2=${r2} h=${height}`),\n makeRectangle: (width, height) => primitive('face', [width, height, 0], `rectangle ${width}x${height}`),\n\n // ── 造型运算 ──\n extrude: (shape, dx, dy, dz) => {\n const s = need(shape, 'extrude')\n return alloc({ kind: 'solid', bbox: { ...s.bbox, xmax: s.bbox.xmax + dx, ymax: s.bbox.ymax + dy, zmax: s.bbox.zmax + dz }, tag: `extrude(${s.tag})` })\n },\n revolveVec: (shape, _center, direction, angleDeg) => {\n // Mock approximation: revolve grows the bbox by sweeping the profile's\n // extent around the axis — approximate with the direction-scaled extent\n // (signature-level coverage only, like extrude above).\n const s = need(shape, 'revolveVec')\n const grow = (Math.abs(angleDeg) / 360) * Math.hypot(direction.x, direction.y, direction.z) * 2\n return alloc({\n kind: 'solid',\n bbox: {\n xmin: s.bbox.xmin - grow, ymin: s.bbox.ymin - grow, zmin: s.bbox.zmin,\n xmax: s.bbox.xmax + grow, ymax: s.bbox.ymax + grow, zmax: s.bbox.zmax,\n },\n tag: `revolveVec(${s.tag},a=${angleDeg})`,\n })\n },\n sew: (shapesIn, _tolerance) => {\n // Mock approximation: merge the parts' bboxes into one shell-ish solid.\n let bbox: BrepBoundingBox | null = null\n let tag = 'sew('\n for (const h of shapesIn) {\n const rec = need(h, 'sew')\n bbox = bbox ? mergeBbox(bbox, rec.bbox) : { ...rec.bbox }\n tag += `${rec.tag},`\n }\n return alloc({ kind: 'solid', bbox: bbox ?? bboxOf('solid', [0, 0, 0]), tag: `${tag})` })\n },\n sewAndSolidify: () => alloc({ kind: 'solid', bbox: bboxOf('solid', [1, 1, 1]), tag: 'sewAndSolidify' }),\n shell: (solid, _facesToRemove, thickness, _tolerance) => {\n // Mock approximation: shelling keeps the outer bbox and marks it hollow.\n const s = need(solid, 'shell')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `shell(${s.tag},t=${thickness})` })\n },\n hullFromPoints: (points, _tolerance) => {\n // Mock approximation: bbox of the point set as a solid.\n if (points.length === 0) return unsupported('hullFromPoints: empty point set')\n let xmin = Infinity, ymin = Infinity, zmin = Infinity\n let xmax = -Infinity, ymax = -Infinity, zmax = -Infinity\n for (const p of points) {\n xmin = Math.min(xmin, p.x); ymin = Math.min(ymin, p.y); zmin = Math.min(zmin, p.z)\n xmax = Math.max(xmax, p.x); ymax = Math.max(ymax, p.y); zmax = Math.max(zmax, p.z)\n }\n return alloc({ kind: 'solid', bbox: { xmin, ymin, zmin, xmax, ymax, zmax }, tag: `hullFromPoints(n=${points.length})` })\n },\n\n // ── 倒角与圆角(mock:只重打标签/复制,不做真几何;引擎切换测试覆盖签名面) ──\n chamfer: (solid, edges, distance) => {\n const s = need(solid, 'chamfer')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `chamfer(${s.tag},d=${distance},e=${edges.length})` })\n },\n chamferDistAngle: (solid, edges, distance, angleDeg) => {\n const s = need(solid, 'chamferDistAngle')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `chamferDA(${s.tag},d=${distance},a=${angleDeg},e=${edges.length})` })\n },\n fillet: (solid, edges, radius) => {\n const s = need(solid, 'fillet')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `fillet(${s.tag},r=${radius},e=${edges.length})` })\n },\n filletVariable: (solid, edge, startRadius, endRadius) => {\n const s = need(solid, 'filletVariable')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `filletVar(${s.tag},r=${startRadius}-${endRadius},e=1)` })\n },\n filletWithHistory: (solid, edges, radius, _hashes, _upper) => {\n const s = need(solid, 'filletWithHistory')\n const result = alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `filletWH(${s.tag},r=${radius},e=${edges.length})` })\n const evo: BrepEvolutionData = { result, modified: [], generated: [], deleted: [] }\n return evo\n },\n\n // ── 布尔与分割 ──\n fuse: (a, b) => {\n const sa = need(a, 'fuse')\n const sb = need(b, 'fuse')\n return alloc({ kind: 'solid', bbox: mergeBbox(sa.bbox, sb.bbox), tag: `fuse(${sa.tag},${sb.tag})` })\n },\n cut: (a, b) => {\n const sa = need(a, 'cut')\n return alloc({ kind: 'solid', bbox: { ...sa.bbox }, tag: `cut(${sa.tag},#${b})` })\n },\n common: (a, b) => {\n const sa = need(a, 'common')\n const sb = need(b, 'common')\n return alloc({ kind: 'solid', bbox: mergeBbox(sa.bbox, sb.bbox), tag: `common(${sa.tag},${sb.tag})` })\n },\n intersect: (a, b) => {\n const sa = need(a, 'intersect')\n const sb = need(b, 'intersect')\n return alloc({ kind: 'solid', bbox: mergeBbox(sa.bbox, sb.bbox), tag: `intersect(${sa.tag},${sb.tag})` })\n },\n sectionByPlane: (shape, _point, _normal) => {\n // Mock approximation: section curves keep the input bbox as a wire-ish record.\n const s = need(shape, 'sectionByPlane')\n return [alloc({ kind: 'wire', bbox: { ...s.bbox }, tag: `sectionByPlane(${s.tag})` })]\n },\n splitByPlane: (shape, _point, _normal) => {\n // Mock approximation: two halves share the input bbox (no real cut).\n const s = need(shape, 'splitByPlane')\n return {\n positive: alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `splitByPlane+(${s.tag})` }),\n negative: alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `splitByPlane-(${s.tag})` }),\n }\n },\n fuseAll: (shapesIn) => {\n let bbox: BrepBoundingBox | null = null\n let tag = 'fuseAll('\n for (const s of shapesIn) {\n const rec = need(s, 'fuseAll')\n bbox = bbox ? mergeBbox(bbox, rec.bbox) : { ...rec.bbox }\n tag += `${rec.tag},`\n }\n return alloc({ kind: 'solid', bbox: bbox ?? bboxOf('solid', [0, 0, 0]), tag: `${tag})` })\n },\n\n // ── 变换 ──\n translate: (shape, dx, dy, dz) => {\n const s = need(shape, 'translate')\n return alloc({\n kind: 'solid',\n bbox: {\n xmin: s.bbox.xmin + dx, ymin: s.bbox.ymin + dy, zmin: s.bbox.zmin + dz,\n xmax: s.bbox.xmax + dx, ymax: s.bbox.ymax + dy, zmax: s.bbox.zmax + dz,\n },\n tag: `translate(${s.tag},${dx},${dy},${dz})`,\n })\n },\n scale: (shape, _center, factor) => {\n const s = need(shape, 'scale')\n return alloc({ kind: 'solid', bbox: {\n xmin: s.bbox.xmin * factor, ymin: s.bbox.ymin * factor, zmin: s.bbox.zmin * factor,\n xmax: s.bbox.xmax * factor, ymax: s.bbox.ymax * factor, zmax: s.bbox.zmax * factor,\n }, tag: `scale(${s.tag},${factor})` })\n },\n transform: (shape, _matrix) => {\n const s = need(shape, 'transform')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `transform(${s.tag})` })\n },\n located: (shape, _matrix) => {\n const s = need(shape, 'located')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `located(${s.tag})` })\n },\n generalTransform: (shape, _matrix) => {\n const s = need(shape, 'generalTransform')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `generalTransform(${s.tag})` })\n },\n copy: (shape) => {\n const s = need(shape, 'copy')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `copy(${s.tag})` })\n },\n\n // ── 阵列(Phase 2 接口新增;mock 只重打标签/复制,不做真几何) ──\n linearPattern: (shape, direction, spacing, count) => {\n const s = need(shape, 'linearPattern')\n const list: BrepHandle[] = []\n for (let i = 0; i < count; i++) {\n list.push(alloc({\n kind: 'solid',\n bbox: {\n xmin: s.bbox.xmin + direction.x * spacing * i, ymin: s.bbox.ymin + direction.y * spacing * i, zmin: s.bbox.zmin + direction.z * spacing * i,\n xmax: s.bbox.xmax + direction.x * spacing * i, ymax: s.bbox.ymax + direction.y * spacing * i, zmax: s.bbox.zmax + direction.z * spacing * i,\n },\n tag: `linearPattern(${s.tag},${i})`,\n }))\n }\n return list\n },\n circularPattern: (shape, _center, _axis, _angleStep, _count) => {\n const s = need(shape, 'circularPattern')\n return [alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `circularPattern(${s.tag})` })]\n },\n gridPattern: (shape, directionX, directionY, spacingX, spacingY, countX, countY) => {\n const s = need(shape, 'gridPattern')\n return alloc({ kind: 'solid', bbox: { ...s.bbox }, tag: `gridPattern(${s.tag},${countX}x${countY})` })\n },\n\n // ── 曲线构造 ──\n makeLineEdge: (start, end) => alloc({ kind: 'edge',\n bbox: {\n xmin: Math.min(start.x, end.x), ymin: Math.min(start.y, end.y), zmin: Math.min(start.z, end.z),\n xmax: Math.max(start.x, end.x), ymax: Math.max(start.y, end.y), zmax: Math.max(start.z, end.z),\n },\n tag: `line(${start.x},${start.y},${start.z})→(${end.x},${end.y},${end.z})` }),\n makeArcEdge: (start, mid, end) => {\n const xs = [start.x, mid.x, end.x]\n const ys = [start.y, mid.y, end.y]\n const zs = [start.z, mid.z, end.z]\n return alloc({ kind: 'edge', bbox: {\n xmin: Math.min(...xs), ymin: Math.min(...ys), zmin: Math.min(...zs),\n xmax: Math.max(...xs), ymax: Math.max(...ys), zmax: Math.max(...zs),\n }, tag: `arc` })\n },\n makeBezierEdge: () => alloc({ kind: 'edge', bbox: bboxOf('edge', [1, 1, 1]), tag: 'bezier' }),\n makeBSplineEdge: (poles) => {\n // Bbox from the control polygon (a superset of a Bézier's hull; exact for\n // the shape's own bbox purposes and good enough for the mock's role as a\n // call-sequence recorder).\n const xs: number[] = []\n const ys: number[] = []\n const zs: number[] = []\n for (let i = 0; i + 2 < poles.length; i += 3) {\n xs.push(poles[i]!)\n ys.push(poles[i + 1]!)\n zs.push(poles[i + 2]!)\n }\n return alloc({\n kind: 'edge',\n bbox: xs.length > 0\n ? { xmin: Math.min(...xs), ymin: Math.min(...ys), zmin: Math.min(...zs), xmax: Math.max(...xs), ymax: Math.max(...ys), zmax: Math.max(...zs) }\n : bboxOf('edge', [1, 1, 1]),\n tag: 'bspline',\n })\n },\n curveSplit: (edge) => {\n const e = need(edge, 'curveSplit')\n return [\n alloc({ kind: 'edge', bbox: { ...e.bbox }, tag: `splitA(#${edge})` }),\n alloc({ kind: 'edge', bbox: { ...e.bbox }, tag: `splitB(#${edge})` }),\n ]\n },\n makeCircleEdge: (center, _normal, radius) => alloc({ kind: 'edge', bbox: bboxOf('edge', [radius * 2, radius * 2, 0]), tag: `circle(${center.x},${center.y},${center.z},r=${radius})` }),\n\n // ── 拓扑构造 ──\n makeWire: (edges) => alloc({ kind: 'wire', bbox: edges.length > 0 ? { ...need(edges[0], 'makeWire').bbox } : bboxOf('wire', [0, 0, 0]), tag: `wire(${edges.length})` }),\n makeFace: (wire) => alloc({ kind: 'face', bbox: { ...need(wire, 'makeFace').bbox }, tag: `face(#${wire})` }),\n makeCompound: (parts) => {\n let bbox: BrepBoundingBox | null = null\n for (const p of parts) {\n const rec = need(p, 'makeCompound')\n bbox = bbox ? mergeBbox(bbox, rec.bbox) : { ...rec.bbox }\n }\n return alloc({ kind: 'compound', bbox: bbox ?? bboxOf('compound', [0, 0, 0]), tag: `compound(${parts.length})` })\n },\n\n buildTriFace: () => alloc({ kind: 'face', bbox: bboxOf('face', [1, 1, 0]), tag: 'triFace' }),\n addHolesInFace: (face) => alloc({ kind: 'face', bbox: { ...need(face, 'addHolesInFace').bbox }, tag: `holedFace(#${face})` }),\n\n // ── 三角化(BREP→mesh 唯一出口) ──\n meshShape: () => unitBoxMesh(),\n wireframe: (): BrepEdgeData => ({ points: new Float32Array(0), edgeGroups: new Int32Array(0), pointCount: 0, edgeCount: 0 }),\n\n // ── 拓扑查询 ──\n getSubShapes: () => [],\n subShapeHashes: () => [],\n hashCode: (shape) => shape % 2147483647,\n isSame: (a, b) => a === b,\n isSolid: () => true,\n shapeType: () => 'SOLID',\n shapeOrientation: () => 'forward',\n edgeToFaceMap: () => ({}),\n adjacentFaces: () => [],\n sharedEdges: () => [],\n\n // ── 几何求值 ──\n curveType: () => 'line',\n curvePointAtParam: () => ({ x: 0, y: 0, z: 0 }),\n curveTangent: () => ({ x: 1, y: 0, z: 0 }),\n curveParameters: (): BrepCurveParameters => ({ first: 0, last: 1 }),\n curveIsClosed: () => false,\n curveLength: () => 0,\n surfaceType: () => 'plane',\n surfaceNormal: () => ({ x: 0, y: 0, z: 1 }),\n pointOnSurface: () => ({ x: 0, y: 0, z: 0 }),\n uvBounds: (): BrepUvBounds => ({ uMin: 0, uMax: 1, vMin: 0, vMax: 1 }),\n getFaceCylinderData: () => null,\n getNurbsCurveData: () => null,\n interpolatePoints: () => alloc({ kind: 'edge', bbox: bboxOf('edge', [1, 1, 1]), tag: 'interpolatePoints' }),\n defeature: (shape) => { need(shape, 'defeature'); return shape },\n draft: (shape) => { need(shape, 'draft'); return shape },\n removeHolesFromFace: (face) => { need(face, 'removeHolesFromFace'); return face },\n reverseShape: (shape) => { need(shape, 'reverseShape'); return shape },\n projectEdges: () => unsupported('projectEdges'),\n\n // ── 测量 ──\n getBoundingBox: (shape) => ({ ...need(shape, 'getBoundingBox').bbox }),\n getVolume: (shape) => {\n const b = need(shape, 'getVolume').bbox\n return (b.xmax - b.xmin) * (b.ymax - b.ymin) * (b.zmax - b.zmin)\n },\n getCenterOfMass: (shape) => {\n const b = need(shape, 'getCenterOfMass').bbox\n return { x: (b.xmin + b.xmax) / 2, y: (b.ymin + b.ymax) / 2, z: (b.zmin + b.zmax) / 2 }\n },\n getSurfaceArea: () => 0,\n getLength: () => 0,\n\n // ── 校验与修复 ──\n isValid: () => true,\n unifySameDomain: (shape) => shape,\n healSolid: (shape) => shape,\n fixShape: (shape) => shape,\n fixFaceOrientations: (shape) => shape,\n removeDegenerateEdges: (shape) => shape,\n\n // ── IO ──\n importStep: () => alloc({ kind: 'solid', bbox: bboxOf('solid', [10, 10, 10]), tag: 'importStep(mock)' }),\n exportStep: (shape) => {\n const s = need(shape, 'exportStep')\n return `brep-mock-engine STEP (mock)\\nshape #${shape}: ${s.tag}\\nFILE_DESCRIPTION((\"brep-mock-engine\"), \"2;1\");`\n },\n importStl: () => alloc({ kind: 'solid', bbox: bboxOf('solid', [10, 10, 10]), tag: 'importStl(mock)' }),\n fromBREP: () => alloc({ kind: 'solid', bbox: bboxOf('solid', [10, 10, 10]), tag: 'fromBREP(mock)' }),\n\n // ── 面演化(L1 三员:mock 用底层布尔 + 空 evo) ──\n cutWithHistory: (a, b, _hashes, _upper) => {\n const result = primitives.cut(a, b)\n const evo: BrepEvolutionData = { result, modified: [], generated: [], deleted: [] }\n return evo\n },\n fuseWithHistory: (a, b, _hashes, _upper) => {\n const result = primitives.fuse(a, b)\n const evo: BrepEvolutionData = { result, modified: [], generated: [], deleted: [] }\n return evo\n },\n intersectWithHistory: (a, b, _hashes, _upper) => {\n const result = primitives.intersect(a, b)\n const evo: BrepEvolutionData = { result, modified: [], generated: [], deleted: [] }\n return evo\n },\n\n // ── L1 补齐方法(mock 验证载体——查询类给简单实现,其余明确缺失暴露) ──\n dispose: () => undefined,\n composeTransform: () => unsupported('composeTransform'),\n makeEllipsoid: () => unsupported('makeEllipsoid'),\n makeTorus: () => unsupported('makeTorus'),\n makeVertex: (x, y, z) => alloc({ kind: 'edge', bbox: { xmin: x, ymin: y, zmin: z, xmax: x, ymax: y, zmax: z }, tag: `vertex(${x},${y},${z})` }),\n mirror: (shape) => alloc({ kind: need(shape, 'mirror').kind, bbox: { ...need(shape, 'mirror').bbox }, tag: `mirror(#${shape})` }),\n surfaceCenterOfMass: (shape) => { const b = need(shape, 'surfaceCenterOfMass').bbox; return { x: (b.xmin + b.xmax) / 2, y: (b.ymin + b.ymax) / 2, z: (b.zmin + b.zmax) / 2 } },\n locate: (shape) => alloc({ kind: need(shape, 'locate').kind, bbox: { ...need(shape, 'locate').bbox }, tag: `locate(#${shape})` }),\n copyShape: (shape) => alloc({ kind: need(shape, 'copyShape').kind, bbox: { ...need(shape, 'copyShape').bbox }, tag: `copy(#${shape})` }),\n }\n return primitives\n}\n\n/** Assemble the brep-mock engine (sync registration — no async init). */\nexport function registerBrepMockEngine(): void {\n registerBrepEngine(BREP_MOCK_ENGINE_ID, async (): Promise<BrepEngine> => ({\n id: BREP_MOCK_ENGINE_ID,\n primitives: createBrepMockApi(),\n capabilities: {\n // brep-mock lacks evolution/heal/assembly — missing capabilities are exposed (§7.5).\n },\n }))\n}\n\n// §7.8 compile-time guard: createBrepMockApi's return type must satisfy BrepEngineApi.\ntype _AssertBrepMockApi = AssertSatisfiesBrepEngineApi<ReturnType<typeof createBrepMockApi>>\n"]}
|
|
@@ -22,4 +22,22 @@ export declare const BREPKIT_BREP_ENGINE_ID = "brepkit";
|
|
|
22
22
|
export declare function registerBrepkitBrepEngine(): Promise<void>;
|
|
23
23
|
/** 已注册任何 BREP 引擎则 no-op;否则注册 brepkit(可作为宿主的显式缺省装配点)。 */
|
|
24
24
|
export declare function ensureBrepkitDefaultEngine(): Promise<void>;
|
|
25
|
+
/** brepkit 网格实体后端 id —— 与 `defineOp.meshEngines` 的门禁名同源。 */
|
|
26
|
+
export declare const BREPKIT_MESH_ENGINE_ID = "brepkit";
|
|
27
|
+
/**
|
|
28
|
+
* 装配 brepkit **网格实体后端**(网格语义路径;与 BREP 槽独立)。
|
|
29
|
+
*
|
|
30
|
+
* 与 `registerBrepkitBrepEngine` 的关系:同一个 brepkit wasm 实例、同一个
|
|
31
|
+
* `createBrepkitPrimitives()` 对象(已按内核 memo 化,见其 GOTCHA),但走的是
|
|
32
|
+
* **mesh 语义**——逐三角形导入 → 缝合 → 共面合并 → 网格实体。
|
|
33
|
+
*
|
|
34
|
+
* 装与不装的区别:装了,`load` 的 mesh 路径产出的零件带近似拓扑(可选中面/边,
|
|
35
|
+
* 后续 mesh op 可作用于其上);不装,mesh 路径维持"裸网格、无拓扑"的历史行为。
|
|
36
|
+
* 这是**宿主装配事实**,不是错误(与"规范化失败必须报错"是两回事)。
|
|
37
|
+
*
|
|
38
|
+
* 幂等:已注册同名 mesh 引擎则跳过。
|
|
39
|
+
*/
|
|
40
|
+
export declare function registerBrepkitMeshEngine(): Promise<void>;
|
|
41
|
+
/** 已注册任何网格实体后端则 no-op;否则注册 brepkit(宿主的显式缺省装配点)。 */
|
|
42
|
+
export declare function ensureBrepkitMeshBackend(): Promise<void>;
|
|
25
43
|
//# sourceMappingURL=brepkit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brepkit.d.ts","sourceRoot":"","sources":["../../../../src/brep/engine/adapters/brepkit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"brepkit.d.ts","sourceRoot":"","sources":["../../../../src/brep/engine/adapters/brepkit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,uBAAuB;AACvB,eAAO,MAAM,sBAAsB,YAAY,CAAA;AAE/C;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAsG/D;AAED,wDAAwD;AACxD,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC,CAGhE;AAID,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,YAAY,CAAA;AAE/C;;;;;;;;;;;;GAYG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAa/D;AAED,mDAAmD;AACnD,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG9D"}
|
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
* 小程序装配顺序(§6.1):Worker 启动时先 setBrepkitWasmInitFn + 本函数注册,
|
|
8
8
|
* ensureOcctDefaultEngine 的动态 import('occt-wasm') 永不触发。
|
|
9
9
|
*/
|
|
10
|
-
import { registerBrepEngine, isBrepEngineRegistered, hasBrepEngine } from '../registry.js';
|
|
10
|
+
import { registerBrepEngine, isBrepEngineRegistered, hasBrepEngine, registerMeshEngine, getMeshSolidBackend, isMeshEngineRegistered, } from '../registry.js';
|
|
11
11
|
import { createBrepkitPrimitives } from '../../../brepkit-kernel/brepkitKernel.js';
|
|
12
|
+
import { normalizeMeshSolid, describeMeshSolid, buildMeshSolidTopology } from '../../mesh-solid.js';
|
|
12
13
|
/** brepkit 引擎注册 id。 */
|
|
13
14
|
export const BREPKIT_BREP_ENGINE_ID = 'brepkit';
|
|
14
15
|
/**
|
|
@@ -74,6 +75,13 @@ export async function registerBrepkitBrepEngine() {
|
|
|
74
75
|
'hullFromPoints',
|
|
75
76
|
'makeFace',
|
|
76
77
|
'makeLineEdge',
|
|
78
|
+
// 2026-09-30 草图弧线修复(circumcircle 项序纠正)后,brepkit 的曲线构边族
|
|
79
|
+
// 几何实测正确:quarter/half/cw 弧长 = πr/2·span、makeCircleEdge 整圆 face 挤出
|
|
80
|
+
// πr²·L。逐名如实声明(声明 ⊆ 实例,engine-switch-p3 守卫)。
|
|
81
|
+
'makeArcEdge',
|
|
82
|
+
'makeBezierEdge',
|
|
83
|
+
'makeCircleEdge',
|
|
84
|
+
'makeWire',
|
|
77
85
|
// Phase 2:brepkit wasm 已导出 pattern 三方法并已接线(brepkitKernel.ts 阵列族)。
|
|
78
86
|
'linearPattern',
|
|
79
87
|
'circularPattern',
|
|
@@ -124,4 +132,41 @@ export async function ensureBrepkitDefaultEngine() {
|
|
|
124
132
|
return;
|
|
125
133
|
await registerBrepkitBrepEngine();
|
|
126
134
|
}
|
|
135
|
+
// ── 网格实体后端(方案 2026-10-01 §3.3) ──
|
|
136
|
+
/** brepkit 网格实体后端 id —— 与 `defineOp.meshEngines` 的门禁名同源。 */
|
|
137
|
+
export const BREPKIT_MESH_ENGINE_ID = 'brepkit';
|
|
138
|
+
/**
|
|
139
|
+
* 装配 brepkit **网格实体后端**(网格语义路径;与 BREP 槽独立)。
|
|
140
|
+
*
|
|
141
|
+
* 与 `registerBrepkitBrepEngine` 的关系:同一个 brepkit wasm 实例、同一个
|
|
142
|
+
* `createBrepkitPrimitives()` 对象(已按内核 memo 化,见其 GOTCHA),但走的是
|
|
143
|
+
* **mesh 语义**——逐三角形导入 → 缝合 → 共面合并 → 网格实体。
|
|
144
|
+
*
|
|
145
|
+
* 装与不装的区别:装了,`load` 的 mesh 路径产出的零件带近似拓扑(可选中面/边,
|
|
146
|
+
* 后续 mesh op 可作用于其上);不装,mesh 路径维持"裸网格、无拓扑"的历史行为。
|
|
147
|
+
* 这是**宿主装配事实**,不是错误(与"规范化失败必须报错"是两回事)。
|
|
148
|
+
*
|
|
149
|
+
* 幂等:已注册同名 mesh 引擎则跳过。
|
|
150
|
+
*/
|
|
151
|
+
export async function registerBrepkitMeshEngine() {
|
|
152
|
+
const primitives = await createBrepkitPrimitives();
|
|
153
|
+
if (isMeshEngineRegistered(BREPKIT_MESH_ENGINE_ID))
|
|
154
|
+
return;
|
|
155
|
+
const backend = {
|
|
156
|
+
id: BREPKIT_MESH_ENGINE_ID,
|
|
157
|
+
kernel: primitives,
|
|
158
|
+
ops: primitives.meshSolid,
|
|
159
|
+
normalize: (mesh, opts) => normalizeMeshSolid(backend, mesh, opts),
|
|
160
|
+
describe: (solid, opts) => describeMeshSolid(backend, solid, opts),
|
|
161
|
+
buildTopologyData: (result) => buildMeshSolidTopology(backend, result),
|
|
162
|
+
release: (solid) => { primitives.release(solid); },
|
|
163
|
+
};
|
|
164
|
+
registerMeshEngine(BREPKIT_MESH_ENGINE_ID, { id: BREPKIT_MESH_ENGINE_ID, meshSolid: backend });
|
|
165
|
+
}
|
|
166
|
+
/** 已注册任何网格实体后端则 no-op;否则注册 brepkit(宿主的显式缺省装配点)。 */
|
|
167
|
+
export async function ensureBrepkitMeshBackend() {
|
|
168
|
+
if (getMeshSolidBackend())
|
|
169
|
+
return;
|
|
170
|
+
await registerBrepkitMeshEngine();
|
|
171
|
+
}
|
|
127
172
|
//# sourceMappingURL=brepkit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brepkit.js","sourceRoot":"","sources":["../../../../src/brep/engine/adapters/brepkit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAA;AAExG,OAAO,EAAE,uBAAuB,EAA0B,MAAM,uCAAuC,CAAA;AAEvG,uBAAuB;AACvB,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAA;AAE/C;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAC7C,MAAM,UAAU,GAAG,MAAM,uBAAuB,EAAE,CAAA;IAClD,IAAI,sBAAsB,CAAC,sBAAsB,CAAC;QAAE,OAAM;IAC1D,kBAAkB,CAAC,sBAAsB,EAAE,KAAK,IAAyB,EAAE,CAAC,CAAC;QAC3E,EAAE,EAAE,sBAAsB;QAC1B,UAAU;QACV,YAAY,EAAE;YACZ,KAAK,EAAE,IAAI;YACX,kCAAkC;YAClC,oEAAoE;YACpE,uDAAuD;YACvD,+DAA+D;YAC/D,wCAAwC;YACxC,SAAS,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC;YACrE,OAAO,EAAE;gBACP,gBAAgB;gBAChB,+EAA+E;gBAC/E,uEAAuE;gBACvE,gBAAgB;gBAChB,4DAA4D;gBAC5D,oEAAoE;gBACpE,WAAW;gBACX,gBAAgB;gBAChB,WAAW;gBACX,iBAAiB;gBACjB,qBAAqB;gBACrB,iBAAiB;gBACjB,mBAAmB;gBACnB,cAAc;gBACd,KAAK;gBACL,UAAU;gBACV,MAAM;gBACN,SAAS;gBACT,UAAU;gBACV,WAAW;gBACX,WAAW;gBACX,cAAc;gBACd,oDAAoD;gBACpD,mEAAmE;gBACnE,0DAA0D;gBAC1D,qEAAqE;gBACrE,eAAe;gBACf,WAAW;gBACX,YAAY;gBACZ,QAAQ;gBACR,OAAO;gBACP,oDAAoD;gBACpD,8DAA8D;gBAC9D,8DAA8D;gBAC9D,gBAAgB;gBAChB,UAAU;gBACV,cAAc;gBACd,kEAAkE;gBAClE,eAAe;gBACf,iBAAiB;gBACjB,aAAa;gBACb,OAAO;gBACP,gBAAgB;gBAChB,eAAe;gBACf,aAAa;gBACb,WAAW;gBACX,UAAU;gBACV,6DAA6D;gBAC7D,+DAA+D;gBAC/D,8CAA8C;gBAC9C,SAAS;gBACT,WAAW;gBACX,uEAAuE;gBACvE,oEAAoE;gBACpE,yEAAyE;gBACzE,+EAA+E;gBAC/E,eAAe;gBACf,SAAS;gBACT,WAAW;gBACX,kBAAkB;gBAClB,uEAAuE;gBACvE,mFAAmF;gBACnF,0FAA0F;gBAC1F,wFAAwF;gBACxF,iDAAiD;gBACjD,gBAAgB;gBAChB,cAAc;gBACd,SAAS;gBACT,cAAc;aACf;YACD,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK;YACf,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,IAAI;YAChB,iBAAiB,EAAE,cAAc;SAClC;KACF,CAAC,CAAC,CAAA;AACL,CAAC;AAED,wDAAwD;AACxD,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAC9C,IAAI,aAAa,EAAE;QAAE,OAAM;IAC3B,MAAM,yBAAyB,EAAE,CAAA;AACnC,CAAC","sourcesContent":["/**\n * engine/adapters/brepkit — brepkit BREP 引擎适配器(对照 adapters/occt.ts 形态)\n *\n * 把 createBrepkitPrimitives 包装为 BrepEngine 注册进注册表。业务层只经注册表取\n * 引擎,不直接 import brepkit 初始化函数——引擎本体可整体替换(换适配器即换引擎)。\n *\n * 小程序装配顺序(§6.1):Worker 启动时先 setBrepkitWasmInitFn + 本函数注册,\n * ensureOcctDefaultEngine 的动态 import('occt-wasm') 永不触发。\n */\n\nimport { registerBrepEngine, isBrepEngineRegistered, hasBrepEngine, type BrepEngine } from '../registry'\nimport type { AssertSatisfiesBrepEngineApi } from '../primitives'\nimport { createBrepkitPrimitives, type BrepkitPrimitives } from '../../../brepkit-kernel/brepkitKernel'\n\n/** brepkit 引擎注册 id。 */\nexport const BREPKIT_BREP_ENGINE_ID = 'brepkit'\n\n/**\n * 装配 brepkit BREP 引擎(宿主启动时调用一次,幂等)。\n *\n * 预初始化 createBrepkitPrimitives():wasm 装载完成后立即注册——注册返回后\n * provider 直接返回就绪实例。幂等:已注册则跳过。\n *\n * 能力表(设计文档 §5.2 v1 建议值,随单测逐项校正):\n * evolution 仅覆盖 fuse/cut/fillet(chamferWithHistory 未提供,诚实报错);\n * meshLift/assembly/advSurface 均为 false,命中即静态报错,禁止伪造。\n */\nexport async function registerBrepkitBrepEngine(): Promise<void> {\n const primitives = await createBrepkitPrimitives()\n if (isBrepEngineRegistered(BREPKIT_BREP_ENGINE_ID)) return\n registerBrepEngine(BREPKIT_BREP_ENGINE_ID, async (): Promise<BrepEngine> => ({\n id: BREPKIT_BREP_ENGINE_ID,\n primitives,\n capabilities: {\n exact: true,\n // 面演化:逐核函数如实声明(Phase 0.2,不是族级布尔)。\n // brepkit 只实现 fillet/cut/fuse 三个 *WithHistory,其余(chamfer/intersect/\n // translate/rotate/mirror/scale/shell/offset/thicken)在\n // brepkit-kernel/brepkitKernel.ts:224-537 一律 unsupported(...)。\n // 声明里少写一项 = 让该 op 静默通过静态判定后死在运行时(红线违规)。\n evolution: ['fuseWithHistory', 'cutWithHistory', 'filletWithHistory'],\n methods: [\n 'addHolesInFace',\n // Phase 3:brepkitKernel 真实现映射(wasm getBoundingBox/getSurfaceCenterOfMass 导出)——\n // 能力表可声明;其余 31 个 Phase 3 方法为 unsupported 桩 → 不声明(engine-switch-p3 断言)。\n 'getBoundingBox',\n // Phase 4(narrowing D9):测量族全部接线(surfaceArea→getSurfaceArea、\n // length/wireLength→getLength、volume、centerOfMass)——L1 中立名(D5)如实声明。\n 'getVolume',\n 'getSurfaceArea',\n 'getLength',\n 'getCenterOfMass',\n 'surfaceCenterOfMass',\n 'curveParameters',\n 'curvePointAtParam',\n 'curveTangent',\n 'cut',\n 'fixShape',\n 'fuse',\n 'fuseAll',\n 'hashCode',\n 'healSolid',\n 'intersect',\n 'makeCylinder',\n // Phase 3:brepkitKernel 真实现接线 5 个(wasm 导出同/可映射语义)——\n // makeEllipsoid/makeTorus/makeVertex/mirror/shell;section/split 语义\n // 不匹配(wasm 平面式)→ 保持 unsupported 不声明(engine-switch-p3 断言)。\n // extrude 已于 B 批接线(makeRectangle 产出 knownFace → extrude 沿向量挤出,:446)。\n 'makeEllipsoid',\n 'makeTorus',\n 'makeVertex',\n 'mirror',\n 'shell',\n // 2026-09-26 B 批:brepkitKernel.hullFromPoints 真实现接线\n // (→ kernel.convexHull,brepkitKernel.ts:477)——convexHull op 由\n // engines:['occt'] 降级为 capabilities:['hullFromPoints'],故如实声明。\n 'hullFromPoints',\n 'makeFace',\n 'makeLineEdge',\n // Phase 2:brepkit wasm 已导出 pattern 三方法并已接线(brepkitKernel.ts 阵列族)。\n 'linearPattern',\n 'circularPattern',\n 'gridPattern',\n 'scale',\n 'sewAndSolidify',\n 'surfaceNormal',\n 'surfaceType',\n 'translate',\n 'uvBounds',\n // 2026-09-26 A 批:brepkitKernel 已实现 dispose(GC 型 no-op,:226)与\n // copyShape(调 kernel.copySolid,:397)——此前未声明导致 torus/pattern 族/\n // clone 在静态判定被拒。声明 ⊆ 实例(engine-switch-p3 守卫)。\n 'dispose',\n 'copyShape',\n // 2026-09-26 B 批:brepkitKernel 真实现 makeRectangle(:436)/extrude(:446,要求\n // knownFace 输入——makeRectangle 产出的面已登记进 knownFaces,makeBaseBox 链可用)/\n // transform(:563)/generalTransform(:572,二者均经 cloneAndTransform 深拷贝+原地仿射,\n // 与 occt STEP-safe BRepBuilderAPI_Transform 同语义)。声明 ⊆ 实例(engine-switch-p3 守卫)。\n 'makeRectangle',\n 'extrude',\n 'transform',\n 'generalTransform',\n // 2026-09-26 C batch (section/drill/pocket/boss/mirrorJoin downgrade):\n // brepkitKernel real wiring - sectionByPlane(:492 returns face group, occt returns\n // edge/wire group; semantic diff noted), makeCompound(:668 virtual compound for non-solid\n // children), located(:566 drill cylinder placement), getSubShapes(:775 face selection).\n // declared <= instance (engine-switch-p3 guard).\n 'sectionByPlane',\n 'makeCompound',\n 'located',\n 'getSubShapes',\n ],\n heal: true,\n directEdit: true,\n advSurface: false,\n assembly: false,\n meshLift: false,\n exactMeasurement: true,\n brepExport: true,\n tessellationModel: 'extract-time',\n },\n }))\n}\n\n/** 已注册任何 BREP 引擎则 no-op;否则注册 brepkit(可作为宿主的显式缺省装配点)。 */\nexport async function ensureBrepkitDefaultEngine(): Promise<void> {\n if (hasBrepEngine()) return\n await registerBrepkitBrepEngine()\n}\n\n// §7.8 编译期完整性守卫:brepkit 原语集合必须满足 BrepEngineApi。\n// 实现缺方法或签名不兼容 → tsc 在此报错列出缺失(与 occt 适配器同守卫)。\ntype _AssertBrepkitApi = AssertSatisfiesBrepEngineApi<BrepkitPrimitives>\n"]}
|
|
1
|
+
{"version":3,"file":"brepkit.js","sourceRoot":"","sources":["../../../../src/brep/engine/adapters/brepkit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,kBAAkB,EAAE,sBAAsB,EAAE,aAAa,EACzD,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,GAEhE,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,uBAAuB,EAA0B,MAAM,uCAAuC,CAAA;AAEvG,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAEhG,uBAAuB;AACvB,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAA;AAE/C;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAC7C,MAAM,UAAU,GAAG,MAAM,uBAAuB,EAAE,CAAA;IAClD,IAAI,sBAAsB,CAAC,sBAAsB,CAAC;QAAE,OAAM;IAC1D,kBAAkB,CAAC,sBAAsB,EAAE,KAAK,IAAyB,EAAE,CAAC,CAAC;QAC3E,EAAE,EAAE,sBAAsB;QAC1B,UAAU;QACV,YAAY,EAAE;YACZ,KAAK,EAAE,IAAI;YACX,kCAAkC;YAClC,oEAAoE;YACpE,uDAAuD;YACvD,+DAA+D;YAC/D,wCAAwC;YACxC,SAAS,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC;YACrE,OAAO,EAAE;gBACP,gBAAgB;gBAChB,+EAA+E;gBAC/E,uEAAuE;gBACvE,gBAAgB;gBAChB,4DAA4D;gBAC5D,oEAAoE;gBACpE,WAAW;gBACX,gBAAgB;gBAChB,WAAW;gBACX,iBAAiB;gBACjB,qBAAqB;gBACrB,iBAAiB;gBACjB,mBAAmB;gBACnB,cAAc;gBACd,KAAK;gBACL,UAAU;gBACV,MAAM;gBACN,SAAS;gBACT,UAAU;gBACV,WAAW;gBACX,WAAW;gBACX,cAAc;gBACd,oDAAoD;gBACpD,mEAAmE;gBACnE,0DAA0D;gBAC1D,qEAAqE;gBACrE,eAAe;gBACf,WAAW;gBACX,YAAY;gBACZ,QAAQ;gBACR,OAAO;gBACP,oDAAoD;gBACpD,8DAA8D;gBAC9D,8DAA8D;gBAC9D,gBAAgB;gBAChB,UAAU;gBACV,cAAc;gBACd,uDAAuD;gBACvD,kEAAkE;gBAClE,6CAA6C;gBAC7C,aAAa;gBACb,gBAAgB;gBAChB,gBAAgB;gBAChB,UAAU;gBACV,kEAAkE;gBAClE,eAAe;gBACf,iBAAiB;gBACjB,aAAa;gBACb,OAAO;gBACP,gBAAgB;gBAChB,eAAe;gBACf,aAAa;gBACb,WAAW;gBACX,UAAU;gBACV,6DAA6D;gBAC7D,+DAA+D;gBAC/D,8CAA8C;gBAC9C,SAAS;gBACT,WAAW;gBACX,uEAAuE;gBACvE,oEAAoE;gBACpE,yEAAyE;gBACzE,+EAA+E;gBAC/E,eAAe;gBACf,SAAS;gBACT,WAAW;gBACX,kBAAkB;gBAClB,uEAAuE;gBACvE,mFAAmF;gBACnF,0FAA0F;gBAC1F,wFAAwF;gBACxF,iDAAiD;gBACjD,gBAAgB;gBAChB,cAAc;gBACd,SAAS;gBACT,cAAc;aACf;YACD,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK;YACf,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,IAAI;YAChB,iBAAiB,EAAE,cAAc;SAClC;KACF,CAAC,CAAC,CAAA;AACL,CAAC;AAED,wDAAwD;AACxD,MAAM,CAAC,KAAK,UAAU,0BAA0B;IAC9C,IAAI,aAAa,EAAE;QAAE,OAAM;IAC3B,MAAM,yBAAyB,EAAE,CAAA;AACnC,CAAC;AAED,mCAAmC;AAEnC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAA;AAE/C;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAC7C,MAAM,UAAU,GAAG,MAAM,uBAAuB,EAAE,CAAA;IAClD,IAAI,sBAAsB,CAAC,sBAAsB,CAAC;QAAE,OAAM;IAC1D,MAAM,OAAO,GAAqB;QAChC,EAAE,EAAE,sBAAsB;QAC1B,MAAM,EAAE,UAAU;QAClB,GAAG,EAAE,UAAU,CAAC,SAAS;QACzB,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;QAClE,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;QAClE,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC;QACtE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC;KAClD,CAAA;IACD,kBAAkB,CAAC,sBAAsB,EAAE,EAAE,EAAE,EAAE,sBAAsB,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;AAChG,CAAC;AAED,mDAAmD;AACnD,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC5C,IAAI,mBAAmB,EAAE;QAAE,OAAM;IACjC,MAAM,yBAAyB,EAAE,CAAA;AACnC,CAAC","sourcesContent":["/**\n * engine/adapters/brepkit — brepkit BREP 引擎适配器(对照 adapters/occt.ts 形态)\n *\n * 把 createBrepkitPrimitives 包装为 BrepEngine 注册进注册表。业务层只经注册表取\n * 引擎,不直接 import brepkit 初始化函数——引擎本体可整体替换(换适配器即换引擎)。\n *\n * 小程序装配顺序(§6.1):Worker 启动时先 setBrepkitWasmInitFn + 本函数注册,\n * ensureOcctDefaultEngine 的动态 import('occt-wasm') 永不触发。\n */\n\nimport {\n registerBrepEngine, isBrepEngineRegistered, hasBrepEngine,\n registerMeshEngine, getMeshSolidBackend, isMeshEngineRegistered,\n type BrepEngine,\n} from '../registry'\nimport type { AssertSatisfiesBrepEngineApi } from '../primitives'\nimport { createBrepkitPrimitives, type BrepkitPrimitives } from '../../../brepkit-kernel/brepkitKernel'\nimport type { MeshSolidBackend } from '../../mesh-solid'\nimport { normalizeMeshSolid, describeMeshSolid, buildMeshSolidTopology } from '../../mesh-solid'\n\n/** brepkit 引擎注册 id。 */\nexport const BREPKIT_BREP_ENGINE_ID = 'brepkit'\n\n/**\n * 装配 brepkit BREP 引擎(宿主启动时调用一次,幂等)。\n *\n * 预初始化 createBrepkitPrimitives():wasm 装载完成后立即注册——注册返回后\n * provider 直接返回就绪实例。幂等:已注册则跳过。\n *\n * 能力表(设计文档 §5.2 v1 建议值,随单测逐项校正):\n * evolution 仅覆盖 fuse/cut/fillet(chamferWithHistory 未提供,诚实报错);\n * meshLift/assembly/advSurface 均为 false,命中即静态报错,禁止伪造。\n */\nexport async function registerBrepkitBrepEngine(): Promise<void> {\n const primitives = await createBrepkitPrimitives()\n if (isBrepEngineRegistered(BREPKIT_BREP_ENGINE_ID)) return\n registerBrepEngine(BREPKIT_BREP_ENGINE_ID, async (): Promise<BrepEngine> => ({\n id: BREPKIT_BREP_ENGINE_ID,\n primitives,\n capabilities: {\n exact: true,\n // 面演化:逐核函数如实声明(Phase 0.2,不是族级布尔)。\n // brepkit 只实现 fillet/cut/fuse 三个 *WithHistory,其余(chamfer/intersect/\n // translate/rotate/mirror/scale/shell/offset/thicken)在\n // brepkit-kernel/brepkitKernel.ts:224-537 一律 unsupported(...)。\n // 声明里少写一项 = 让该 op 静默通过静态判定后死在运行时(红线违规)。\n evolution: ['fuseWithHistory', 'cutWithHistory', 'filletWithHistory'],\n methods: [\n 'addHolesInFace',\n // Phase 3:brepkitKernel 真实现映射(wasm getBoundingBox/getSurfaceCenterOfMass 导出)——\n // 能力表可声明;其余 31 个 Phase 3 方法为 unsupported 桩 → 不声明(engine-switch-p3 断言)。\n 'getBoundingBox',\n // Phase 4(narrowing D9):测量族全部接线(surfaceArea→getSurfaceArea、\n // length/wireLength→getLength、volume、centerOfMass)——L1 中立名(D5)如实声明。\n 'getVolume',\n 'getSurfaceArea',\n 'getLength',\n 'getCenterOfMass',\n 'surfaceCenterOfMass',\n 'curveParameters',\n 'curvePointAtParam',\n 'curveTangent',\n 'cut',\n 'fixShape',\n 'fuse',\n 'fuseAll',\n 'hashCode',\n 'healSolid',\n 'intersect',\n 'makeCylinder',\n // Phase 3:brepkitKernel 真实现接线 5 个(wasm 导出同/可映射语义)——\n // makeEllipsoid/makeTorus/makeVertex/mirror/shell;section/split 语义\n // 不匹配(wasm 平面式)→ 保持 unsupported 不声明(engine-switch-p3 断言)。\n // extrude 已于 B 批接线(makeRectangle 产出 knownFace → extrude 沿向量挤出,:446)。\n 'makeEllipsoid',\n 'makeTorus',\n 'makeVertex',\n 'mirror',\n 'shell',\n // 2026-09-26 B 批:brepkitKernel.hullFromPoints 真实现接线\n // (→ kernel.convexHull,brepkitKernel.ts:477)——convexHull op 由\n // engines:['occt'] 降级为 capabilities:['hullFromPoints'],故如实声明。\n 'hullFromPoints',\n 'makeFace',\n 'makeLineEdge',\n // 2026-09-30 草图弧线修复(circumcircle 项序纠正)后,brepkit 的曲线构边族\n // 几何实测正确:quarter/half/cw 弧长 = πr/2·span、makeCircleEdge 整圆 face 挤出\n // πr²·L。逐名如实声明(声明 ⊆ 实例,engine-switch-p3 守卫)。\n 'makeArcEdge',\n 'makeBezierEdge',\n 'makeCircleEdge',\n 'makeWire',\n // Phase 2:brepkit wasm 已导出 pattern 三方法并已接线(brepkitKernel.ts 阵列族)。\n 'linearPattern',\n 'circularPattern',\n 'gridPattern',\n 'scale',\n 'sewAndSolidify',\n 'surfaceNormal',\n 'surfaceType',\n 'translate',\n 'uvBounds',\n // 2026-09-26 A 批:brepkitKernel 已实现 dispose(GC 型 no-op,:226)与\n // copyShape(调 kernel.copySolid,:397)——此前未声明导致 torus/pattern 族/\n // clone 在静态判定被拒。声明 ⊆ 实例(engine-switch-p3 守卫)。\n 'dispose',\n 'copyShape',\n // 2026-09-26 B 批:brepkitKernel 真实现 makeRectangle(:436)/extrude(:446,要求\n // knownFace 输入——makeRectangle 产出的面已登记进 knownFaces,makeBaseBox 链可用)/\n // transform(:563)/generalTransform(:572,二者均经 cloneAndTransform 深拷贝+原地仿射,\n // 与 occt STEP-safe BRepBuilderAPI_Transform 同语义)。声明 ⊆ 实例(engine-switch-p3 守卫)。\n 'makeRectangle',\n 'extrude',\n 'transform',\n 'generalTransform',\n // 2026-09-26 C batch (section/drill/pocket/boss/mirrorJoin downgrade):\n // brepkitKernel real wiring - sectionByPlane(:492 returns face group, occt returns\n // edge/wire group; semantic diff noted), makeCompound(:668 virtual compound for non-solid\n // children), located(:566 drill cylinder placement), getSubShapes(:775 face selection).\n // declared <= instance (engine-switch-p3 guard).\n 'sectionByPlane',\n 'makeCompound',\n 'located',\n 'getSubShapes',\n ],\n heal: true,\n directEdit: true,\n advSurface: false,\n assembly: false,\n meshLift: false,\n exactMeasurement: true,\n brepExport: true,\n tessellationModel: 'extract-time',\n },\n }))\n}\n\n/** 已注册任何 BREP 引擎则 no-op;否则注册 brepkit(可作为宿主的显式缺省装配点)。 */\nexport async function ensureBrepkitDefaultEngine(): Promise<void> {\n if (hasBrepEngine()) return\n await registerBrepkitBrepEngine()\n}\n\n// ── 网格实体后端(方案 2026-10-01 §3.3) ──\n\n/** brepkit 网格实体后端 id —— 与 `defineOp.meshEngines` 的门禁名同源。 */\nexport const BREPKIT_MESH_ENGINE_ID = 'brepkit'\n\n/**\n * 装配 brepkit **网格实体后端**(网格语义路径;与 BREP 槽独立)。\n *\n * 与 `registerBrepkitBrepEngine` 的关系:同一个 brepkit wasm 实例、同一个\n * `createBrepkitPrimitives()` 对象(已按内核 memo 化,见其 GOTCHA),但走的是\n * **mesh 语义**——逐三角形导入 → 缝合 → 共面合并 → 网格实体。\n *\n * 装与不装的区别:装了,`load` 的 mesh 路径产出的零件带近似拓扑(可选中面/边,\n * 后续 mesh op 可作用于其上);不装,mesh 路径维持\"裸网格、无拓扑\"的历史行为。\n * 这是**宿主装配事实**,不是错误(与\"规范化失败必须报错\"是两回事)。\n *\n * 幂等:已注册同名 mesh 引擎则跳过。\n */\nexport async function registerBrepkitMeshEngine(): Promise<void> {\n const primitives = await createBrepkitPrimitives()\n if (isMeshEngineRegistered(BREPKIT_MESH_ENGINE_ID)) return\n const backend: MeshSolidBackend = {\n id: BREPKIT_MESH_ENGINE_ID,\n kernel: primitives,\n ops: primitives.meshSolid,\n normalize: (mesh, opts) => normalizeMeshSolid(backend, mesh, opts),\n describe: (solid, opts) => describeMeshSolid(backend, solid, opts),\n buildTopologyData: (result) => buildMeshSolidTopology(backend, result),\n release: (solid) => { primitives.release(solid) },\n }\n registerMeshEngine(BREPKIT_MESH_ENGINE_ID, { id: BREPKIT_MESH_ENGINE_ID, meshSolid: backend })\n}\n\n/** 已注册任何网格实体后端则 no-op;否则注册 brepkit(宿主的显式缺省装配点)。 */\nexport async function ensureBrepkitMeshBackend(): Promise<void> {\n if (getMeshSolidBackend()) return\n await registerBrepkitMeshEngine()\n}\n\n// §7.8 编译期完整性守卫:brepkit 原语集合必须满足 BrepEngineApi。\n// 实现缺方法或签名不兼容 → tsc 在此报错列出缺失(与 occt 适配器同守卫)。\ntype _AssertBrepkitApi = AssertSatisfiesBrepEngineApi<BrepkitPrimitives>\n"]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 本文件是「occt 引擎实现」的注册入口:把 `createOcctPrimitives()`(occt-kernel/
|
|
5
5
|
* occt-primitives.ts,L1 契约 `BrepEngineApi` 的 occt 显式实现)注册进引擎注册表。
|
|
6
|
-
* 业务层(runtime/brep ops/
|
|
6
|
+
* 业务层(runtime/brep ops/api)只经注册表取引擎,不直接 import occt 初始化
|
|
7
7
|
* 函数——引擎本体可整体替换(换一个适配器即换引擎)。
|
|
8
8
|
*
|
|
9
9
|
* Phase 3(docs/plans/2026-09-24-brep-engine-api-narrowing-native-access.md):
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"occt.d.ts","sourceRoot":"","sources":["../../../../src/brep/engine/adapters/occt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"occt.d.ts","sourceRoot":"","sources":["../../../../src/brep/engine/adapters/occt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,2CAA2C;AAC3C,eAAO,MAAM,mBAAmB,SAAS,CAAA;AAqIzC;;;;;;GAMG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0B5D;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG7D"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 本文件是「occt 引擎实现」的注册入口:把 `createOcctPrimitives()`(occt-kernel/
|
|
5
5
|
* occt-primitives.ts,L1 契约 `BrepEngineApi` 的 occt 显式实现)注册进引擎注册表。
|
|
6
|
-
* 业务层(runtime/brep ops/
|
|
6
|
+
* 业务层(runtime/brep ops/api)只经注册表取引擎,不直接 import occt 初始化
|
|
7
7
|
* 函数——引擎本体可整体替换(换一个适配器即换引擎)。
|
|
8
8
|
*
|
|
9
9
|
* Phase 3(docs/plans/2026-09-24-brep-engine-api-narrowing-native-access.md):
|
|
@@ -74,6 +74,7 @@ const OCCT_METHOD_KINDS = [
|
|
|
74
74
|
'intersect',
|
|
75
75
|
'fuseAll',
|
|
76
76
|
'makeArcEdge',
|
|
77
|
+
'makeCircleEdge',
|
|
77
78
|
'makeBezierEdge',
|
|
78
79
|
'makeCylinder',
|
|
79
80
|
'makeEllipsoid',
|
|
@@ -82,6 +83,7 @@ const OCCT_METHOD_KINDS = [
|
|
|
82
83
|
'makeLineEdge',
|
|
83
84
|
'makeTorus',
|
|
84
85
|
'makeVertex',
|
|
86
|
+
'makeWire',
|
|
85
87
|
'makeWireFromMixed',
|
|
86
88
|
'buildEdgeOnSurface',
|
|
87
89
|
'addHolesInFace',
|
|
@@ -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 * 本文件是「occt 引擎实现」的注册入口:把 `createOcctPrimitives()`(occt-kernel/\n * occt-primitives.ts,L1 契约 `BrepEngineApi` 的 occt 显式实现)注册进引擎注册表。\n * 业务层(runtime/brep ops/
|
|
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/api)只经注册表取引擎,不直接 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 'makeCircleEdge',\n 'makeBezierEdge',\n 'makeCylinder',\n 'makeEllipsoid',\n 'makeFace',\n 'makeFaceOnSurface',\n 'makeLineEdge',\n 'makeTorus',\n 'makeVertex',\n 'makeWire',\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 // 2026-09-26 B 批:rotate/applyMatrix 从 engines:[occt] 降级为能力路由后,occt 侧须\n // 如实声明 transform(:228,BRepBuilderAPI_Transform 深拷贝,STEP-safe)/\n // generalTransform(:231,gp_GTrsf)——此前两方法在 primitives 上实现但未登记进能力表。\n 'transform',\n 'generalTransform',\n // 2026-09-26 C batch: section/drill/pocket/boss/mirrorJoin downgrade - OCCT already implements\n // sectionByPlane(:162)/makeCompound(:285)/located(:229)/getSubShapes(:314) but previously undeclared\n // (engines:[occt] bypassed the gate). Now declared honestly for capability routing.\n 'sectionByPlane',\n 'makeCompound',\n 'located',\n 'getSubShapes',\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"]}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* - 禁止任何 `as BrepEngineApi` 跨层断言(守卫见 §5 守卫清单)。
|
|
12
12
|
* - 三个适配器的编译期断言 `_Assert*Api` 由此全部获得真校验力。
|
|
13
13
|
*/
|
|
14
|
-
import type { BrepBoundingBox, BrepCurveParameters, BrepEdgeData, BrepEvolutionData, BrepHandle, BrepMeshResult, BrepSubShapeType, BrepTessellateOptions, BrepUvBounds, BrepVec3 } from './types.js';
|
|
14
|
+
import type { BrepBoundingBox, BrepCurveParameters, BrepEdgeData, BrepEvolutionData, BrepHandle, BrepMeshResult, BrepNurbsCurveData, BrepSubShapeType, BrepTessellateOptions, BrepUvBounds, BrepVec3 } from './types.js';
|
|
15
15
|
/**
|
|
16
16
|
* BREP 引擎原语契约(L1 核心面)。所有句柄参数/返回值均为 BrepHandle(不透明值,§6.3)。
|
|
17
17
|
* 引擎实现(occt/brepkit 适配器)负责内部句柄形态与 BrepHandle 的转换,以及方言消化
|
|
@@ -108,7 +108,24 @@ export interface BrepEngineApi {
|
|
|
108
108
|
makeLineEdge(start: BrepVec3, end: BrepVec3): BrepHandle;
|
|
109
109
|
makeArcEdge(start: BrepVec3, mid: BrepVec3, end: BrepVec3): BrepHandle;
|
|
110
110
|
makeBezierEdge(controlPoints: BrepVec3[]): BrepHandle;
|
|
111
|
+
/**
|
|
112
|
+
* Exact NURBS edge from raw control data — the write-side counterpart of
|
|
113
|
+
* `getNurbsCurveData`, so a rational / multi-span curve survives a round trip
|
|
114
|
+
* instead of being tessellated.
|
|
115
|
+
*
|
|
116
|
+
* `poles` is flat `[x,y,z, …]`; `knots`/`multiplicities` are parallel (the
|
|
117
|
+
* expanded knot vector is `knots[i]` repeated `multiplicities[i]` times). The
|
|
118
|
+
* built edge spans the WHOLE curve — to reproduce an edge that is a sub-range
|
|
119
|
+
* of its basis curve, trim it with `curveSplit`.
|
|
120
|
+
*/
|
|
121
|
+
makeBSplineEdge(poles: number[], weights: number[], knots: number[], multiplicities: number[], degree: number, periodic?: boolean): BrepHandle;
|
|
111
122
|
makeCircleEdge(center: BrepVec3, normal: BrepVec3, radius: number): BrepHandle;
|
|
123
|
+
/**
|
|
124
|
+
* Split an edge at an interior parameter into its two sub-edges, in order.
|
|
125
|
+
* The parameter must be STRICTLY inside the edge's domain — splitting at an
|
|
126
|
+
* end is rejected by the kernel rather than returning a degenerate pair.
|
|
127
|
+
*/
|
|
128
|
+
curveSplit(edge: BrepHandle, param: number): [BrepHandle, BrepHandle];
|
|
112
129
|
makeWire(edges: BrepHandle[]): BrepHandle;
|
|
113
130
|
makeFace(wire: BrepHandle): BrepHandle;
|
|
114
131
|
makeCompound(shapes: BrepHandle[]): BrepHandle;
|
|
@@ -151,12 +168,17 @@ export interface BrepEngineApi {
|
|
|
151
168
|
getFaceCylinderData(face: BrepHandle): {
|
|
152
169
|
radius: number;
|
|
153
170
|
} | null;
|
|
154
|
-
/**
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
171
|
+
/**
|
|
172
|
+
* NURBS control data of the edge's basis curve, or `null` for the analytic
|
|
173
|
+
* kinds (line / circle / ellipse / hyperbola / parabola).
|
|
174
|
+
*
|
|
175
|
+
* ⚠️ Two measured behaviours (2026-09-29) that the name does not imply:
|
|
176
|
+
* · it THROWS — it is not a nullable getter — when the edge is not a B-spline
|
|
177
|
+
* or Bézier, so callers must guard, not just null-check;
|
|
178
|
+
* · it returns the WHOLE basis curve, while `curveParameters` returns the
|
|
179
|
+
* EDGE's trim range on it; rebuilding without the trim is not faithful.
|
|
180
|
+
*/
|
|
181
|
+
getNurbsCurveData(edge: BrepHandle): BrepNurbsCurveData | null;
|
|
160
182
|
interpolatePoints(points: BrepVec3[], degree: number): BrepHandle;
|
|
161
183
|
/** 去特征(移除面集合)。 */
|
|
162
184
|
defeature(shape: BrepHandle, faces: BrepHandle[]): BrepHandle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../src/brep/engine/primitives.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../src/brep/engine/primitives.ts"],"names":[],"mappings":"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"}
|