@faicad/faijs 0.30.9 → 0.32.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/align/index.d.ts +64 -0
- package/dist/api/align/index.d.ts.map +1 -0
- package/dist/api/align/index.js +101 -0
- package/dist/api/align/index.js.map +1 -0
- package/dist/api/api-namespace.d.ts +5 -4
- package/dist/api/api-namespace.d.ts.map +1 -1
- package/dist/api/api-namespace.js +45 -7
- package/dist/api/api-namespace.js.map +1 -1
- package/dist/api/boolean-op/index.d.ts +65 -0
- package/dist/api/boolean-op/index.d.ts.map +1 -0
- package/dist/api/boolean-op/index.js +114 -0
- package/dist/api/boolean-op/index.js.map +1 -0
- package/dist/api/boolean.d.ts.map +1 -1
- package/dist/api/boolean.js +19 -27
- package/dist/api/boolean.js.map +1 -1
- package/dist/api/brep-operations/healingFns.d.ts +13 -0
- package/dist/api/brep-operations/healingFns.d.ts.map +1 -1
- package/dist/api/brep-operations/healingFns.js +28 -1
- package/dist/api/brep-operations/healingFns.js.map +1 -1
- package/dist/api/brep-operations/joinery-brep.js +10 -10
- package/dist/api/brep-operations/joinery-brep.js.map +1 -1
- package/dist/api/brep-operations/topologyFns.d.ts +27 -6
- package/dist/api/brep-operations/topologyFns.d.ts.map +1 -1
- package/dist/api/brep-operations/topologyFns.js +46 -22
- package/dist/api/brep-operations/topologyFns.js.map +1 -1
- package/dist/api/chamfer.d.ts +5 -4
- package/dist/api/chamfer.d.ts.map +1 -1
- package/dist/api/chamfer.js +13 -11
- package/dist/api/chamfer.js.map +1 -1
- package/dist/api/curve-sketch/index.d.ts.map +1 -1
- package/dist/api/curve-sketch/index.js +12 -3
- package/dist/api/curve-sketch/index.js.map +1 -1
- package/dist/api/draft.js +2 -3
- package/dist/api/draft.js.map +1 -1
- package/dist/api/engrave.d.ts.map +1 -1
- package/dist/api/engrave.js +4 -13
- package/dist/api/engrave.js.map +1 -1
- package/dist/api/export-3mf.d.ts +73 -0
- package/dist/api/export-3mf.d.ts.map +1 -0
- package/dist/api/export-3mf.js +121 -0
- package/dist/api/export-3mf.js.map +1 -0
- package/dist/api/export-brep.d.ts +6 -0
- package/dist/api/export-brep.d.ts.map +1 -1
- package/dist/api/export-brep.js +11 -2
- package/dist/api/export-brep.js.map +1 -1
- package/dist/api/export-step.d.ts +67 -0
- package/dist/api/export-step.d.ts.map +1 -0
- package/dist/api/export-step.js +98 -0
- package/dist/api/export-step.js.map +1 -0
- package/dist/api/export-stl.d.ts +8 -0
- package/dist/api/export-stl.d.ts.map +1 -1
- package/dist/api/export-stl.js +23 -8
- package/dist/api/export-stl.js.map +1 -1
- package/dist/api/extrude.d.ts.map +1 -1
- package/dist/api/extrude.js +18 -17
- package/dist/api/extrude.js.map +1 -1
- package/dist/api/feature-repair.d.ts +1 -1
- package/dist/api/feature-repair.d.ts.map +1 -1
- package/dist/api/feature-repair.js +7 -7
- package/dist/api/feature-repair.js.map +1 -1
- package/dist/api/fillet-variable.d.ts.map +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 +3 -3
- package/dist/api/fillet.d.ts.map +1 -1
- package/dist/api/fillet.js +4 -4
- package/dist/api/fillet.js.map +1 -1
- package/dist/api/generated/operations.js +16 -16
- package/dist/api/generated/operations.js.map +1 -1
- package/dist/api/generated/script-face-manifest.d.ts +1 -1
- package/dist/api/generated/script-face-manifest.js +3 -3
- package/dist/api/generated/script-face-manifest.js.map +1 -1
- package/dist/api/generated/script-face.d.ts +1 -1
- package/dist/api/generated/script-face.js +1 -1
- package/dist/api/generated/script-face.js.map +1 -1
- package/dist/api/generated/sketching.js +1 -1
- package/dist/api/generated/sketching.js.map +1 -1
- package/dist/api/generated/topology.js +18 -18
- package/dist/api/generated/topology.js.map +1 -1
- package/dist/api/helix.d.ts +1 -1
- package/dist/api/helix.d.ts.map +1 -1
- package/dist/api/helix.js +2 -1
- package/dist/api/helix.js.map +1 -1
- package/dist/api/import-brep.d.ts.map +1 -1
- package/dist/api/import-brep.js +1 -0
- package/dist/api/import-brep.js.map +1 -1
- package/dist/api/import-step.d.ts.map +1 -1
- package/dist/api/import-step.js +1 -0
- package/dist/api/import-step.js.map +1 -1
- package/dist/api/index.d.ts +9 -3
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +19 -4
- package/dist/api/index.js.map +1 -1
- package/dist/api/internal/compat-op.d.ts +6 -6
- package/dist/api/internal/compat-op.d.ts.map +1 -1
- package/dist/api/internal/compat-op.js +7 -9
- package/dist/api/internal/compat-op.js.map +1 -1
- package/dist/api/internal/export-members.d.ts +80 -0
- package/dist/api/internal/export-members.d.ts.map +1 -0
- package/dist/api/internal/export-members.js +104 -0
- package/dist/api/internal/export-members.js.map +1 -0
- package/dist/api/internal/l3-bridge.d.ts +17 -0
- package/dist/api/internal/l3-bridge.d.ts.map +1 -1
- package/dist/api/internal/l3-bridge.js +23 -1
- package/dist/api/internal/l3-bridge.js.map +1 -1
- package/dist/api/loft-advanced.d.ts +66 -0
- package/dist/api/loft-advanced.d.ts.map +1 -0
- package/dist/api/loft-advanced.js +112 -0
- package/dist/api/loft-advanced.js.map +1 -0
- package/dist/api/loft.d.ts +16 -23
- package/dist/api/loft.d.ts.map +1 -1
- package/dist/api/loft.js +22 -40
- package/dist/api/loft.js.map +1 -1
- package/dist/api/measure-query/index.d.ts +262 -0
- package/dist/api/measure-query/index.d.ts.map +1 -0
- package/dist/api/measure-query/index.js +392 -0
- package/dist/api/measure-query/index.js.map +1 -0
- package/dist/api/pattern.d.ts.map +1 -1
- package/dist/api/pattern.js +1 -3
- package/dist/api/pattern.js.map +1 -1
- package/dist/api/place.d.ts.map +1 -1
- package/dist/api/place.js +1 -0
- package/dist/api/place.js.map +1 -1
- package/dist/api/primitives.d.ts +6 -6
- package/dist/api/primitives.d.ts.map +1 -1
- package/dist/api/primitives.js +12 -11
- package/dist/api/primitives.js.map +1 -1
- package/dist/api/profile.d.ts.map +1 -1
- package/dist/api/profile.js +1 -1
- package/dist/api/profile.js.map +1 -1
- package/dist/api/punch-hole.d.ts.map +1 -1
- package/dist/api/punch-hole.js +1 -1
- package/dist/api/punch-hole.js.map +1 -1
- package/dist/api/replicate.d.ts +5 -7
- package/dist/api/replicate.d.ts.map +1 -1
- package/dist/api/replicate.js +24 -56
- package/dist/api/replicate.js.map +1 -1
- package/dist/api/revolve.d.ts.map +1 -1
- package/dist/api/revolve.js +1 -0
- package/dist/api/revolve.js.map +1 -1
- package/dist/api/screw.d.ts.map +1 -1
- package/dist/api/screw.js +1 -0
- package/dist/api/screw.js.map +1 -1
- package/dist/api/sdf.d.ts.map +1 -1
- package/dist/api/sdf.js +1 -0
- package/dist/api/sdf.js.map +1 -1
- package/dist/api/section-by-plane.d.ts.map +1 -1
- package/dist/api/section-by-plane.js +0 -1
- package/dist/api/section-by-plane.js.map +1 -1
- package/dist/api/shell.d.ts +1 -1
- package/dist/api/shell.d.ts.map +1 -1
- package/dist/api/shell.js +12 -2
- package/dist/api/shell.js.map +1 -1
- package/dist/api/sketch-on-face.d.ts +34 -30
- package/dist/api/sketch-on-face.d.ts.map +1 -1
- package/dist/api/sketch-on-face.js +40 -28
- package/dist/api/sketch-on-face.js.map +1 -1
- package/dist/api/sketch-on-plane.d.ts.map +1 -1
- package/dist/api/sketch-on-plane.js +1 -1
- package/dist/api/sketch-on-plane.js.map +1 -1
- package/dist/api/sketch-on-surface.d.ts +76 -0
- package/dist/api/sketch-on-surface.d.ts.map +1 -0
- package/dist/api/sketch-on-surface.js +99 -0
- package/dist/api/sketch-on-surface.js.map +1 -0
- package/dist/api/solid-offset/index.d.ts.map +1 -1
- package/dist/api/solid-offset/index.js +1 -0
- package/dist/api/solid-offset/index.js.map +1 -1
- package/dist/api/split-by-plane.d.ts.map +1 -1
- package/dist/api/split-by-plane.js +0 -1
- package/dist/api/split-by-plane.js.map +1 -1
- package/dist/api/split.d.ts +1 -1
- package/dist/api/split.d.ts.map +1 -1
- package/dist/api/split.js +2 -1
- package/dist/api/split.js.map +1 -1
- package/dist/api/surface/arg-spec.d.ts +8 -16
- package/dist/api/surface/arg-spec.d.ts.map +1 -1
- package/dist/api/surface/arg-spec.js +21 -28
- package/dist/api/surface/arg-spec.js.map +1 -1
- package/dist/api/surface-face/index.d.ts.map +1 -1
- package/dist/api/surface-face/index.js +5 -0
- package/dist/api/surface-face/index.js.map +1 -1
- package/dist/api/surface.d.ts.map +1 -1
- package/dist/api/surface.js +1 -0
- package/dist/api/surface.js.map +1 -1
- package/dist/api/sweep-advanced.d.ts +117 -0
- package/dist/api/sweep-advanced.d.ts.map +1 -0
- package/dist/api/sweep-advanced.js +94 -0
- package/dist/api/sweep-advanced.js.map +1 -0
- package/dist/api/sweep.d.ts +18 -76
- package/dist/api/sweep.d.ts.map +1 -1
- package/dist/api/sweep.js +27 -28
- package/dist/api/sweep.js.map +1 -1
- package/dist/api/thicken.d.ts.map +1 -1
- package/dist/api/thicken.js +12 -2
- package/dist/api/thicken.js.map +1 -1
- package/dist/api/transform.d.ts +3 -3
- package/dist/api/transform.d.ts.map +1 -1
- package/dist/api/transform.js +49 -17
- package/dist/api/transform.js.map +1 -1
- package/dist/api/wire.d.ts.map +1 -1
- package/dist/api/wire.js +1 -0
- package/dist/api/wire.js.map +1 -1
- package/dist/boolean/cross-section.d.ts +7 -6
- package/dist/boolean/cross-section.d.ts.map +1 -1
- package/dist/boolean/cross-section.js +38 -27
- package/dist/boolean/cross-section.js.map +1 -1
- package/dist/boolean/deriveNormals.d.ts +5 -5
- package/dist/boolean/deriveNormals.d.ts.map +1 -1
- package/dist/boolean/deriveNormals.js +18 -18
- package/dist/boolean/deriveNormals.js.map +1 -1
- package/dist/boolean/extrude-helpers.d.ts +6 -6
- package/dist/boolean/extrude-helpers.d.ts.map +1 -1
- package/dist/boolean/extrude-helpers.js +6 -6
- package/dist/boolean/extrude-helpers.js.map +1 -1
- package/dist/boolean/geo-convert.d.ts +11 -8
- package/dist/boolean/geo-convert.d.ts.map +1 -1
- package/dist/boolean/geo-convert.js +17 -73
- package/dist/boolean/geo-convert.js.map +1 -1
- package/dist/boolean/index.d.ts +23 -0
- package/dist/boolean/index.d.ts.map +1 -0
- package/dist/boolean/index.js +27 -0
- package/dist/boolean/index.js.map +1 -0
- package/dist/brep/brep-chain.d.ts +1 -19
- package/dist/brep/brep-chain.d.ts.map +1 -1
- package/dist/brep/brep-chain.js +0 -1
- package/dist/brep/brep-chain.js.map +1 -1
- package/dist/brep/brep-ops.d.ts +9 -6
- package/dist/brep/brep-ops.d.ts.map +1 -1
- package/dist/brep/brep-ops.js +51 -47
- package/dist/brep/brep-ops.js.map +1 -1
- package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
- package/dist/brep/engine/adapters/brep-mock.js +24 -3
- package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
- package/dist/brep/engine/adapters/brepkit.d.ts +4 -3
- package/dist/brep/engine/adapters/brepkit.d.ts.map +1 -1
- package/dist/brep/engine/adapters/brepkit.js +4 -98
- package/dist/brep/engine/adapters/brepkit.js.map +1 -1
- package/dist/brep/engine/adapters/occt.d.ts.map +1 -1
- package/dist/brep/engine/adapters/occt.js +0 -144
- package/dist/brep/engine/adapters/occt.js.map +1 -1
- package/dist/brep/engine/native-history.d.ts +27 -0
- package/dist/brep/engine/native-history.d.ts.map +1 -0
- package/dist/brep/engine/native-history.js +54 -0
- package/dist/brep/engine/native-history.js.map +1 -0
- package/dist/brep/engine/primitives.d.ts +30 -0
- 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 +2 -4
- package/dist/brep/engine/registry.d.ts.map +1 -1
- package/dist/brep/engine/registry.js +1 -1
- package/dist/brep/engine/registry.js.map +1 -1
- package/dist/brep/engine/types.d.ts +35 -77
- package/dist/brep/engine/types.d.ts.map +1 -1
- package/dist/brep/engine/types.js.map +1 -1
- package/dist/brep/export/export-model.d.ts +21 -0
- package/dist/brep/export/export-model.d.ts.map +1 -1
- package/dist/brep/export/export-model.js +171 -73
- package/dist/brep/export/export-model.js.map +1 -1
- package/dist/brep/export/step.d.ts +17 -1
- package/dist/brep/export/step.d.ts.map +1 -1
- package/dist/brep/export/step.js +133 -0
- package/dist/brep/export/step.js.map +1 -1
- package/dist/brep/export/stl.d.ts +22 -1
- package/dist/brep/export/stl.d.ts.map +1 -1
- package/dist/brep/export/stl.js +58 -10
- package/dist/brep/export/stl.js.map +1 -1
- package/dist/brep/export/transform12.d.ts +47 -0
- package/dist/brep/export/transform12.d.ts.map +1 -0
- package/dist/brep/export/transform12.js +87 -0
- package/dist/brep/export/transform12.js.map +1 -0
- package/dist/brep/face-evolution.d.ts +53 -0
- package/dist/brep/face-evolution.d.ts.map +1 -1
- package/dist/brep/face-evolution.js +65 -0
- package/dist/brep/face-evolution.js.map +1 -1
- package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
- package/dist/brepkit-kernel/brepkitKernel.js +138 -0
- package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
- package/dist/browser-host/index.d.ts +4 -1
- package/dist/browser-host/index.d.ts.map +1 -1
- package/dist/browser-host/index.js +7 -1
- package/dist/browser-host/index.js.map +1 -1
- package/dist/browser.d.ts +4 -8
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +4 -26
- package/dist/browser.js.map +1 -1
- package/dist/cad-runtime/backend-dispatch.d.ts +13 -58
- package/dist/cad-runtime/backend-dispatch.d.ts.map +1 -1
- package/dist/cad-runtime/backend-dispatch.js +22 -80
- package/dist/cad-runtime/backend-dispatch.js.map +1 -1
- package/dist/cad-runtime/content-key.d.ts +3 -3
- package/dist/cad-runtime/content-key.js +3 -3
- package/dist/cad-runtime/content-key.js.map +1 -1
- package/dist/cad-runtime/ports.d.ts +28 -0
- package/dist/cad-runtime/ports.d.ts.map +1 -1
- package/dist/cad-runtime/ports.js.map +1 -1
- package/dist/cad-runtime/runtime.d.ts +33 -12
- package/dist/cad-runtime/runtime.d.ts.map +1 -1
- package/dist/cad-runtime/runtime.js +49 -50
- package/dist/cad-runtime/runtime.js.map +1 -1
- package/dist/define-op.d.ts +22 -18
- package/dist/define-op.d.ts.map +1 -1
- package/dist/define-op.js +5 -20
- 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/index.d.ts +14 -64
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -75
- package/dist/index.js.map +1 -1
- package/dist/lang/codegen.d.ts +14 -3
- package/dist/lang/codegen.d.ts.map +1 -1
- package/dist/lang/codegen.js +80 -5
- package/dist/lang/codegen.js.map +1 -1
- package/dist/lang/metadata-extractor.d.ts +10 -3
- package/dist/lang/metadata-extractor.d.ts.map +1 -1
- package/dist/lang/metadata-extractor.js +160 -65
- package/dist/lang/metadata-extractor.js.map +1 -1
- package/dist/lang/symbol-table.generated.d.ts +20 -0
- package/dist/lang/symbol-table.generated.d.ts.map +1 -1
- package/dist/lang/symbol-table.generated.js +20 -0
- package/dist/lang/symbol-table.generated.js.map +1 -1
- package/dist/math3d/Box3.d.ts +86 -0
- package/dist/math3d/Box3.d.ts.map +1 -0
- package/dist/math3d/Box3.js +149 -0
- package/dist/math3d/Box3.js.map +1 -0
- package/dist/math3d/Euler.d.ts +64 -0
- package/dist/math3d/Euler.d.ts.map +1 -0
- package/dist/math3d/Euler.js +94 -0
- package/dist/math3d/Euler.js.map +1 -0
- package/dist/math3d/Mat4.d.ts +196 -0
- package/dist/math3d/Mat4.d.ts.map +1 -0
- package/dist/math3d/Mat4.js +518 -0
- package/dist/math3d/Mat4.js.map +1 -0
- package/dist/math3d/Plane.d.ts +67 -0
- package/dist/math3d/Plane.d.ts.map +1 -0
- package/dist/math3d/Plane.js +90 -0
- package/dist/math3d/Plane.js.map +1 -0
- package/dist/math3d/Quat.d.ts +163 -0
- package/dist/math3d/Quat.d.ts.map +1 -0
- package/dist/math3d/Quat.js +408 -0
- package/dist/math3d/Quat.js.map +1 -0
- package/dist/math3d/Vec2.d.ts +185 -0
- package/dist/math3d/Vec2.d.ts.map +1 -0
- package/dist/math3d/Vec2.js +276 -0
- package/dist/math3d/Vec2.js.map +1 -0
- package/dist/math3d/Vec3.d.ts +326 -0
- package/dist/math3d/Vec3.d.ts.map +1 -0
- package/dist/math3d/Vec3.js +521 -0
- package/dist/math3d/Vec3.js.map +1 -0
- package/dist/math3d/index.d.ts +19 -0
- package/dist/math3d/index.d.ts.map +1 -0
- package/dist/math3d/index.js +19 -0
- package/dist/math3d/index.js.map +1 -0
- package/dist/mesh/decoration-provider.d.ts +2 -2
- package/dist/mesh/decoration-provider.d.ts.map +1 -1
- package/dist/mesh/decoration-provider.js.map +1 -1
- package/dist/mesh/engrave.d.ts.map +1 -1
- package/dist/mesh/engrave.js +36 -37
- package/dist/mesh/engrave.js.map +1 -1
- package/dist/mesh/index.d.ts +18 -23
- package/dist/mesh/index.d.ts.map +1 -1
- package/dist/mesh/index.js +18 -20
- package/dist/mesh/index.js.map +1 -1
- package/dist/mesh/io.d.ts +42 -14
- package/dist/mesh/io.d.ts.map +1 -1
- package/dist/mesh/io.js +83 -20
- package/dist/mesh/io.js.map +1 -1
- package/dist/mesh/knurl/KnurlGenerator.d.ts +8 -7
- package/dist/mesh/knurl/KnurlGenerator.d.ts.map +1 -1
- package/dist/mesh/knurl/KnurlGenerator.js +9 -9
- package/dist/mesh/knurl/KnurlGenerator.js.map +1 -1
- package/dist/mesh/knurl/displacement.d.ts +7 -6
- package/dist/mesh/knurl/displacement.d.ts.map +1 -1
- package/dist/mesh/knurl/displacement.js +29 -29
- package/dist/mesh/knurl/displacement.js.map +1 -1
- package/dist/mesh/knurl/subdivision.d.ts +3 -3
- package/dist/mesh/knurl/subdivision.d.ts.map +1 -1
- package/dist/mesh/knurl/subdivision.js +21 -15
- package/dist/mesh/knurl/subdivision.js.map +1 -1
- package/dist/mesh/knurl/textureLoader.d.ts +3 -3
- package/dist/mesh/knurl/textureLoader.d.ts.map +1 -1
- package/dist/mesh/knurl/textureLoader.js.map +1 -1
- package/dist/mesh/meshdata/index.d.ts +12 -0
- package/dist/mesh/meshdata/index.d.ts.map +1 -0
- package/dist/mesh/meshdata/index.js +12 -0
- package/dist/mesh/meshdata/index.js.map +1 -0
- package/dist/mesh/meshdata/ops.d.ts +62 -0
- package/dist/mesh/meshdata/ops.d.ts.map +1 -0
- package/dist/mesh/meshdata/ops.js +160 -0
- package/dist/mesh/meshdata/ops.js.map +1 -0
- package/dist/mesh/meshdata/parametric.d.ts +70 -0
- package/dist/mesh/meshdata/parametric.d.ts.map +1 -0
- package/dist/mesh/meshdata/parametric.js +213 -0
- package/dist/mesh/meshdata/parametric.js.map +1 -0
- package/dist/mesh/meshdata/weld.d.ts +21 -0
- package/dist/mesh/meshdata/weld.d.ts.map +1 -0
- package/dist/mesh/meshdata/weld.js +50 -0
- package/dist/mesh/meshdata/weld.js.map +1 -0
- package/dist/mesh/primitives.d.ts +1 -1
- package/dist/mesh/primitives.d.ts.map +1 -1
- package/dist/mesh/primitives.js +38 -39
- package/dist/mesh/primitives.js.map +1 -1
- package/dist/mesh/query.js +11 -11
- package/dist/mesh/query.js.map +1 -1
- package/dist/mesh/stl-loader.d.ts +7 -7
- package/dist/mesh/stl-loader.d.ts.map +1 -1
- package/dist/mesh/stl-loader.js +12 -24
- package/dist/mesh/stl-loader.js.map +1 -1
- package/dist/mesh/threemf-loader.d.ts +38 -4
- package/dist/mesh/threemf-loader.d.ts.map +1 -1
- package/dist/mesh/threemf-loader.js +115 -34
- package/dist/mesh/threemf-loader.js.map +1 -1
- package/dist/mesh/threemf-view.d.ts +11 -11
- package/dist/mesh/threemf-view.d.ts.map +1 -1
- package/dist/mesh/threemf-view.js +10 -10
- package/dist/mesh/threemf-view.js.map +1 -1
- package/dist/mesh/transform.d.ts +14 -8
- package/dist/mesh/transform.d.ts.map +1 -1
- package/dist/mesh/transform.js +18 -13
- package/dist/mesh/transform.js.map +1 -1
- package/dist/mesh/types.d.ts +32 -0
- package/dist/mesh/types.d.ts.map +1 -1
- package/dist/mesh/types.js.map +1 -1
- package/dist/node-host/execute-script.d.ts +2 -1
- package/dist/node-host/execute-script.d.ts.map +1 -1
- package/dist/node-host/execute-script.js +5 -4
- package/dist/node-host/execute-script.js.map +1 -1
- package/dist/node-host/index.d.ts +1 -0
- package/dist/node-host/index.d.ts.map +1 -1
- package/dist/node-host/index.js +4 -0
- package/dist/node-host/index.js.map +1 -1
- package/dist/occt-kernel/occt-primitives.d.ts.map +1 -1
- package/dist/occt-kernel/occt-primitives.js +20 -0
- package/dist/occt-kernel/occt-primitives.js.map +1 -1
- package/dist/primitives/brep-primitives.d.ts +8 -12
- package/dist/primitives/brep-primitives.d.ts.map +1 -1
- package/dist/primitives/brep-primitives.js +10 -28
- package/dist/primitives/brep-primitives.js.map +1 -1
- package/dist/primitives/index.d.ts +19 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +21 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/primitives/mesh-primitives.d.ts +10 -10
- package/dist/primitives/mesh-primitives.d.ts.map +1 -1
- package/dist/primitives/mesh-primitives.js +29 -76
- package/dist/primitives/mesh-primitives.js.map +1 -1
- package/dist/primitives/screw/screw.d.ts +3 -3
- package/dist/primitives/screw/screw.d.ts.map +1 -1
- package/dist/primitives/screw/screw.js +10 -9
- package/dist/primitives/screw/screw.js.map +1 -1
- package/dist/runtime-state.d.ts +63 -29
- package/dist/runtime-state.d.ts.map +1 -1
- package/dist/runtime-state.js +57 -0
- package/dist/runtime-state.js.map +1 -1
- package/dist/sdf/index.d.ts +12 -0
- package/dist/sdf/index.d.ts.map +1 -0
- package/dist/sdf/index.js +13 -0
- package/dist/sdf/index.js.map +1 -0
- package/dist/sdk.d.ts +0 -1
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js.map +1 -1
- package/dist/units.d.ts +40 -0
- package/dist/units.d.ts.map +1 -1
- package/dist/units.js.map +1 -1
- package/dist/weapp.d.ts +2 -2
- package/dist/weapp.d.ts.map +1 -1
- package/dist/weapp.js +1 -1
- package/dist/weapp.js.map +1 -1
- package/package.json +277 -38
- package/dist/api/brep-mirror/booleanFns.d.ts +0 -40
- package/dist/api/brep-mirror/booleanFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/booleanFns.js +0 -104
- package/dist/api/brep-mirror/booleanFns.js.map +0 -1
- package/dist/api/brep-mirror/brepHelpers.d.ts +0 -55
- package/dist/api/brep-mirror/brepHelpers.d.ts.map +0 -1
- package/dist/api/brep-mirror/brepHelpers.js +0 -131
- package/dist/api/brep-mirror/brepHelpers.js.map +0 -1
- package/dist/api/brep-mirror/compoundFns.d.ts +0 -47
- package/dist/api/brep-mirror/compoundFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/compoundFns.js +0 -300
- package/dist/api/brep-mirror/compoundFns.js.map +0 -1
- package/dist/api/brep-mirror/healingFns.d.ts +0 -78
- package/dist/api/brep-mirror/healingFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/healingFns.js +0 -294
- package/dist/api/brep-mirror/healingFns.js.map +0 -1
- package/dist/api/brep-mirror/hullFns.d.ts +0 -20
- package/dist/api/brep-mirror/hullFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/hullFns.js +0 -46
- package/dist/api/brep-mirror/hullFns.js.map +0 -1
- package/dist/api/brep-mirror/joinery-brep.d.ts +0 -172
- package/dist/api/brep-mirror/joinery-brep.d.ts.map +0 -1
- package/dist/api/brep-mirror/joinery-brep.js +0 -463
- package/dist/api/brep-mirror/joinery-brep.js.map +0 -1
- package/dist/api/brep-mirror/patternFns.d.ts +0 -43
- package/dist/api/brep-mirror/patternFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/patternFns.js +0 -178
- package/dist/api/brep-mirror/patternFns.js.map +0 -1
- package/dist/api/brep-mirror/primitiveFns.d.ts +0 -42
- package/dist/api/brep-mirror/primitiveFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/primitiveFns.js +0 -104
- package/dist/api/brep-mirror/primitiveFns.js.map +0 -1
- package/dist/api/brep-mirror/roofFns.d.ts +0 -24
- package/dist/api/brep-mirror/roofFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/roofFns.js +0 -229
- package/dist/api/brep-mirror/roofFns.js.map +0 -1
- package/dist/api/brep-mirror/straightSkeleton.d.ts +0 -36
- package/dist/api/brep-mirror/straightSkeleton.d.ts.map +0 -1
- package/dist/api/brep-mirror/straightSkeleton.js +0 -443
- package/dist/api/brep-mirror/straightSkeleton.js.map +0 -1
- package/dist/api/brep-mirror/sweepFns.d.ts +0 -55
- package/dist/api/brep-mirror/sweepFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/sweepFns.js +0 -200
- package/dist/api/brep-mirror/sweepFns.js.map +0 -1
- package/dist/api/brep-mirror/threadFns.d.ts +0 -83
- package/dist/api/brep-mirror/threadFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/threadFns.js +0 -138
- package/dist/api/brep-mirror/threadFns.js.map +0 -1
- package/dist/api/brep-mirror/topologyFns.d.ts +0 -74
- package/dist/api/brep-mirror/topologyFns.d.ts.map +0 -1
- package/dist/api/brep-mirror/topologyFns.js +0 -276
- package/dist/api/brep-mirror/topologyFns.js.map +0 -1
- package/dist/api/brepjs-compat/constants.d.ts +0 -11
- package/dist/api/brepjs-compat/constants.d.ts.map +0 -1
- package/dist/api/brepjs-compat/constants.js +0 -11
- package/dist/api/brepjs-compat/constants.js.map +0 -1
- package/dist/api/brepjs-compat/index.d.ts +0 -21
- package/dist/api/brepjs-compat/index.d.ts.map +0 -1
- package/dist/api/brepjs-compat/index.js +0 -22
- package/dist/api/brepjs-compat/index.js.map +0 -1
- package/dist/api/brepjs-compat/planeOps.d.ts +0 -98
- package/dist/api/brepjs-compat/planeOps.d.ts.map +0 -1
- package/dist/api/brepjs-compat/planeOps.js +0 -170
- package/dist/api/brepjs-compat/planeOps.js.map +0 -1
- package/dist/api/brepjs-compat/planeTypes.d.ts +0 -24
- package/dist/api/brepjs-compat/planeTypes.d.ts.map +0 -1
- package/dist/api/brepjs-compat/planeTypes.js +0 -8
- package/dist/api/brepjs-compat/planeTypes.js.map +0 -1
- package/dist/api/brepjs-compat/types.d.ts +0 -64
- package/dist/api/brepjs-compat/types.d.ts.map +0 -1
- package/dist/api/brepjs-compat/types.js +0 -48
- package/dist/api/brepjs-compat/types.js.map +0 -1
- package/dist/api/brepjs-compat/vecOps.d.ts +0 -124
- package/dist/api/brepjs-compat/vecOps.d.ts.map +0 -1
- package/dist/api/brepjs-compat/vecOps.js +0 -202
- package/dist/api/brepjs-compat/vecOps.js.map +0 -1
- package/dist/api/generated/brepjs/index.d.ts +0 -310
- package/dist/api/generated/brepjs/index.d.ts.map +0 -1
- package/dist/api/generated/brepjs/index.js +0 -195
- package/dist/api/generated/brepjs/index.js.map +0 -1
- package/dist/api/generated/cad/script-face.d.ts +0 -12
- package/dist/api/generated/cad/script-face.d.ts.map +0 -1
- package/dist/api/generated/cad/script-face.js +0 -146
- package/dist/api/generated/cad/script-face.js.map +0 -1
- package/dist/api/internal/compat-projection.d.ts +0 -55
- package/dist/api/internal/compat-projection.d.ts.map +0 -1
- package/dist/api/internal/compat-projection.js +0 -75
- package/dist/api/internal/compat-projection.js.map +0 -1
- package/dist/api/occt-kernel-bridge.d.ts +0 -118
- package/dist/api/occt-kernel-bridge.d.ts.map +0 -1
- package/dist/api/occt-kernel-bridge.js +0 -283
- package/dist/api/occt-kernel-bridge.js.map +0 -1
- package/dist/api/sketch.d.ts +0 -80
- package/dist/api/sketch.d.ts.map +0 -1
- package/dist/api/sketch.js +0 -155
- package/dist/api/sketch.js.map +0 -1
- package/dist/api/surface/projection-overrides.d.ts +0 -38
- package/dist/api/surface/projection-overrides.d.ts.map +0 -1
- package/dist/api/surface/projection-overrides.js +0 -169
- package/dist/api/surface/projection-overrides.js.map +0 -1
- package/dist/brepjs-compat.d.ts +0 -20
- package/dist/brepjs-compat.d.ts.map +0 -1
- package/dist/brepjs-compat.js +0 -20
- package/dist/brepjs-compat.js.map +0 -1
- package/dist/cad-runtime/createRuntimeWithCad.d.ts +0 -22
- package/dist/cad-runtime/createRuntimeWithCad.d.ts.map +0 -1
- package/dist/cad-runtime/createRuntimeWithCad.js +0 -29
- package/dist/cad-runtime/createRuntimeWithCad.js.map +0 -1
- package/dist/fcstd/attachment.d.ts +0 -72
- package/dist/fcstd/attachment.d.ts.map +0 -1
- package/dist/fcstd/attachment.js +0 -93
- package/dist/fcstd/attachment.js.map +0 -1
- package/dist/fcstd/build-fai-zip.d.ts +0 -40
- package/dist/fcstd/build-fai-zip.d.ts.map +0 -1
- package/dist/fcstd/build-fai-zip.js +0 -111
- package/dist/fcstd/build-fai-zip.js.map +0 -1
- package/dist/fcstd/cli.d.ts +0 -3
- package/dist/fcstd/cli.d.ts.map +0 -1
- package/dist/fcstd/cli.js +0 -37
- package/dist/fcstd/cli.js.map +0 -1
- package/dist/fcstd/codegen.d.ts +0 -79
- package/dist/fcstd/codegen.d.ts.map +0 -1
- package/dist/fcstd/codegen.js +0 -605
- package/dist/fcstd/codegen.js.map +0 -1
- package/dist/fcstd/container.d.ts +0 -75
- package/dist/fcstd/container.d.ts.map +0 -1
- package/dist/fcstd/container.js +0 -36
- package/dist/fcstd/container.js.map +0 -1
- package/dist/fcstd/contour.d.ts +0 -43
- package/dist/fcstd/contour.d.ts.map +0 -1
- package/dist/fcstd/contour.js +0 -96
- package/dist/fcstd/contour.js.map +0 -1
- package/dist/fcstd/convert.d.ts +0 -63
- package/dist/fcstd/convert.d.ts.map +0 -1
- package/dist/fcstd/convert.js +0 -274
- package/dist/fcstd/convert.js.map +0 -1
- package/dist/fcstd/document.d.ts +0 -48
- package/dist/fcstd/document.d.ts.map +0 -1
- package/dist/fcstd/document.js +0 -140
- package/dist/fcstd/document.js.map +0 -1
- package/dist/fcstd/expressions.d.ts +0 -74
- package/dist/fcstd/expressions.d.ts.map +0 -1
- package/dist/fcstd/expressions.js +0 -157
- package/dist/fcstd/expressions.js.map +0 -1
- package/dist/fcstd/external-geo.d.ts +0 -49
- package/dist/fcstd/external-geo.d.ts.map +0 -1
- package/dist/fcstd/external-geo.js +0 -140
- package/dist/fcstd/external-geo.js.map +0 -1
- package/dist/fcstd/feature-translate.d.ts +0 -189
- package/dist/fcstd/feature-translate.d.ts.map +0 -1
- package/dist/fcstd/feature-translate.js +0 -968
- package/dist/fcstd/feature-translate.js.map +0 -1
- package/dist/fcstd/index.d.ts +0 -23
- package/dist/fcstd/index.d.ts.map +0 -1
- package/dist/fcstd/index.js +0 -19
- package/dist/fcstd/index.js.map +0 -1
- package/dist/fcstd/placement.d.ts +0 -93
- package/dist/fcstd/placement.d.ts.map +0 -1
- package/dist/fcstd/placement.js +0 -117
- package/dist/fcstd/placement.js.map +0 -1
- package/dist/fcstd/planegcs-backend.d.ts +0 -34
- package/dist/fcstd/planegcs-backend.d.ts.map +0 -1
- package/dist/fcstd/planegcs-backend.js +0 -626
- package/dist/fcstd/planegcs-backend.js.map +0 -1
- package/dist/fcstd/sketch-parse.d.ts +0 -181
- package/dist/fcstd/sketch-parse.d.ts.map +0 -1
- package/dist/fcstd/sketch-parse.js +0 -227
- package/dist/fcstd/sketch-parse.js.map +0 -1
- package/dist/fcstd/sketch-solver.d.ts +0 -63
- package/dist/fcstd/sketch-solver.d.ts.map +0 -1
- package/dist/fcstd/sketch-solver.js +0 -28
- package/dist/fcstd/sketch-solver.js.map +0 -1
- package/dist/fcstd/sketch-verify.d.ts +0 -43
- package/dist/fcstd/sketch-verify.d.ts.map +0 -1
- package/dist/fcstd/sketch-verify.js +0 -62
- package/dist/fcstd/sketch-verify.js.map +0 -1
- package/dist/fcstd/structural-types.d.ts +0 -83
- package/dist/fcstd/structural-types.d.ts.map +0 -1
- package/dist/fcstd/structural-types.js +0 -121
- package/dist/fcstd/structural-types.js.map +0 -1
- package/dist/fcstd/unpack.d.ts +0 -44
- package/dist/fcstd/unpack.d.ts.map +0 -1
- package/dist/fcstd/unpack.js +0 -64
- package/dist/fcstd/unpack.js.map +0 -1
- package/dist/fcstd-convert.d.ts +0 -30
- package/dist/fcstd-convert.d.ts.map +0 -1
- package/dist/fcstd-convert.js +0 -27
- package/dist/fcstd-convert.js.map +0 -1
- package/dist/mesh/creased-normals.d.ts +0 -50
- package/dist/mesh/creased-normals.d.ts.map +0 -1
- package/dist/mesh/creased-normals.js +0 -114
- package/dist/mesh/creased-normals.js.map +0 -1
- package/dist/occt-kernel/generated/occtPlatform.generated.d.ts +0 -260
- package/dist/occt-kernel/generated/occtPlatform.generated.d.ts.map +0 -1
- package/dist/occt-kernel/generated/occtPlatform.generated.js +0 -875
- package/dist/occt-kernel/generated/occtPlatform.generated.js.map +0 -1
- package/dist/occt-kernel/stepMetaParser.d.ts +0 -44
- package/dist/occt-kernel/stepMetaParser.d.ts.map +0 -1
- package/dist/occt-kernel/stepMetaParser.js +0 -166
- package/dist/occt-kernel/stepMetaParser.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/baseSketcher2d.d.ts +0 -106
- package/dist/vendored/brepjs/2d/blueprints/baseSketcher2d.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/baseSketcher2d.js +0 -341
- package/dist/vendored/brepjs/2d/blueprints/baseSketcher2d.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprint.d.ts +0 -185
- package/dist/vendored/brepjs/2d/blueprints/blueprint.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprint.js +0 -361
- package/dist/vendored/brepjs/2d/blueprints/blueprint.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintApproximations.d.ts +0 -15
- package/dist/vendored/brepjs/2d/blueprints/blueprintApproximations.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintApproximations.js +0 -28
- package/dist/vendored/brepjs/2d/blueprints/blueprintApproximations.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintCustomCorners.d.ts +0 -29
- package/dist/vendored/brepjs/2d/blueprints/blueprintCustomCorners.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintCustomCorners.js +0 -86
- package/dist/vendored/brepjs/2d/blueprints/blueprintCustomCorners.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintFns.d.ts +0 -57
- package/dist/vendored/brepjs/2d/blueprints/blueprintFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintFns.js +0 -92
- package/dist/vendored/brepjs/2d/blueprints/blueprintFns.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintOffset.d.ts +0 -58
- package/dist/vendored/brepjs/2d/blueprints/blueprintOffset.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintOffset.js +0 -346
- package/dist/vendored/brepjs/2d/blueprints/blueprintOffset.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintSketcher.d.ts +0 -30
- package/dist/vendored/brepjs/2d/blueprints/blueprintSketcher.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprintSketcher.js +0 -45
- package/dist/vendored/brepjs/2d/blueprints/blueprintSketcher.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprints.d.ts +0 -68
- package/dist/vendored/brepjs/2d/blueprints/blueprints.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/blueprints.js +0 -116
- package/dist/vendored/brepjs/2d/blueprints/blueprints.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/boolean2D.d.ts +0 -68
- package/dist/vendored/brepjs/2d/blueprints/boolean2D.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/boolean2D.js +0 -362
- package/dist/vendored/brepjs/2d/blueprints/boolean2D.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/booleanHelpers.d.ts +0 -34
- package/dist/vendored/brepjs/2d/blueprints/booleanHelpers.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/booleanHelpers.js +0 -176
- package/dist/vendored/brepjs/2d/blueprints/booleanHelpers.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/booleanOperations.d.ts +0 -55
- package/dist/vendored/brepjs/2d/blueprints/booleanOperations.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/booleanOperations.js +0 -110
- package/dist/vendored/brepjs/2d/blueprints/booleanOperations.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/cannedBlueprints.d.ts +0 -41
- package/dist/vendored/brepjs/2d/blueprints/cannedBlueprints.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/cannedBlueprints.js +0 -90
- package/dist/vendored/brepjs/2d/blueprints/cannedBlueprints.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/compoundBlueprint.d.ts +0 -85
- package/dist/vendored/brepjs/2d/blueprints/compoundBlueprint.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/compoundBlueprint.js +0 -136
- package/dist/vendored/brepjs/2d/blueprints/compoundBlueprint.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/ellipseUtils.d.ts +0 -48
- package/dist/vendored/brepjs/2d/blueprints/ellipseUtils.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/ellipseUtils.js +0 -154
- package/dist/vendored/brepjs/2d/blueprints/ellipseUtils.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/genericSketcher.d.ts +0 -342
- package/dist/vendored/brepjs/2d/blueprints/genericSketcher.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/genericSketcher.js +0 -32
- package/dist/vendored/brepjs/2d/blueprints/genericSketcher.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/index.d.ts +0 -16
- package/dist/vendored/brepjs/2d/blueprints/index.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/index.js +0 -13
- package/dist/vendored/brepjs/2d/blueprints/index.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/intersectionSegments.d.ts +0 -18
- package/dist/vendored/brepjs/2d/blueprints/intersectionSegments.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/intersectionSegments.js +0 -230
- package/dist/vendored/brepjs/2d/blueprints/intersectionSegments.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/lib.d.ts +0 -73
- package/dist/vendored/brepjs/2d/blueprints/lib.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/lib.js +0 -103
- package/dist/vendored/brepjs/2d/blueprints/lib.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/segmentAssembly.d.ts +0 -31
- package/dist/vendored/brepjs/2d/blueprints/segmentAssembly.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/segmentAssembly.js +0 -226
- package/dist/vendored/brepjs/2d/blueprints/segmentAssembly.js.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/svg.d.ts +0 -22
- package/dist/vendored/brepjs/2d/blueprints/svg.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/blueprints/svg.js +0 -30
- package/dist/vendored/brepjs/2d/blueprints/svg.js.map +0 -1
- package/dist/vendored/brepjs/2d/curve2dGeometryFns.d.ts +0 -124
- package/dist/vendored/brepjs/2d/curve2dGeometryFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/curve2dGeometryFns.js +0 -235
- package/dist/vendored/brepjs/2d/curve2dGeometryFns.js.map +0 -1
- package/dist/vendored/brepjs/2d/curves.d.ts +0 -45
- package/dist/vendored/brepjs/2d/curves.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/curves.js +0 -139
- package/dist/vendored/brepjs/2d/curves.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/approximations.d.ts +0 -47
- package/dist/vendored/brepjs/2d/lib/approximations.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/approximations.js +0 -82
- package/dist/vendored/brepjs/2d/lib/approximations.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/boundingBox2d.d.ts +0 -39
- package/dist/vendored/brepjs/2d/lib/boundingBox2d.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/boundingBox2d.js +0 -88
- package/dist/vendored/brepjs/2d/lib/boundingBox2d.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/curve2D.d.ts +0 -82
- package/dist/vendored/brepjs/2d/lib/curve2D.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/curve2D.js +0 -258
- package/dist/vendored/brepjs/2d/lib/curve2D.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/curve2dFns.d.ts +0 -53
- package/dist/vendored/brepjs/2d/lib/curve2dFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/curve2dFns.js +0 -69
- package/dist/vendored/brepjs/2d/lib/curve2dFns.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/customCorners.d.ts +0 -29
- package/dist/vendored/brepjs/2d/lib/customCorners.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/customCorners.js +0 -237
- package/dist/vendored/brepjs/2d/lib/customCorners.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/definitions.d.ts +0 -12
- package/dist/vendored/brepjs/2d/lib/definitions.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/definitions.js +0 -19
- package/dist/vendored/brepjs/2d/lib/definitions.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/ellipseArcFlags.d.ts +0 -21
- package/dist/vendored/brepjs/2d/lib/ellipseArcFlags.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/ellipseArcFlags.js +0 -71
- package/dist/vendored/brepjs/2d/lib/ellipseArcFlags.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/index.d.ts +0 -14
- package/dist/vendored/brepjs/2d/lib/index.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/index.js +0 -14
- package/dist/vendored/brepjs/2d/lib/index.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/intersections.d.ts +0 -34
- package/dist/vendored/brepjs/2d/lib/intersections.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/intersections.js +0 -77
- package/dist/vendored/brepjs/2d/lib/intersections.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/makeCurves.d.ts +0 -63
- package/dist/vendored/brepjs/2d/lib/makeCurves.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/makeCurves.js +0 -117
- package/dist/vendored/brepjs/2d/lib/makeCurves.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/offset.d.ts +0 -30
- package/dist/vendored/brepjs/2d/lib/offset.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/offset.js +0 -109
- package/dist/vendored/brepjs/2d/lib/offset.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/precision.d.ts +0 -12
- package/dist/vendored/brepjs/2d/lib/precision.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/precision.js +0 -12
- package/dist/vendored/brepjs/2d/lib/precision.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/stitching.d.ts +0 -15
- package/dist/vendored/brepjs/2d/lib/stitching.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/stitching.js +0 -67
- package/dist/vendored/brepjs/2d/lib/stitching.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/svgPath.d.ts +0 -4
- package/dist/vendored/brepjs/2d/lib/svgPath.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/svgPath.js +0 -114
- package/dist/vendored/brepjs/2d/lib/svgPath.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/utils.d.ts +0 -11
- package/dist/vendored/brepjs/2d/lib/utils.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/utils.js +0 -24
- package/dist/vendored/brepjs/2d/lib/utils.js.map +0 -1
- package/dist/vendored/brepjs/2d/lib/vectorOperations.d.ts +0 -19
- package/dist/vendored/brepjs/2d/lib/vectorOperations.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d/lib/vectorOperations.js +0 -26
- package/dist/vendored/brepjs/2d/lib/vectorOperations.js.map +0 -1
- package/dist/vendored/brepjs/2d.d.ts +0 -26
- package/dist/vendored/brepjs/2d.d.ts.map +0 -1
- package/dist/vendored/brepjs/2d.js +0 -33
- package/dist/vendored/brepjs/2d.js.map +0 -1
- package/dist/vendored/brepjs/core/constants.d.ts +0 -7
- package/dist/vendored/brepjs/core/constants.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/constants.js +0 -7
- package/dist/vendored/brepjs/core/constants.js.map +0 -1
- package/dist/vendored/brepjs/core/curve2dHandle.d.ts +0 -35
- package/dist/vendored/brepjs/core/curve2dHandle.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/curve2dHandle.js +0 -48
- package/dist/vendored/brepjs/core/curve2dHandle.js.map +0 -1
- package/dist/vendored/brepjs/core/dimensionTypes.d.ts +0 -61
- package/dist/vendored/brepjs/core/dimensionTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/dimensionTypes.js +0 -54
- package/dist/vendored/brepjs/core/dimensionTypes.js.map +0 -1
- package/dist/vendored/brepjs/core/disposal.d.ts +0 -136
- package/dist/vendored/brepjs/core/disposal.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/disposal.js +0 -441
- package/dist/vendored/brepjs/core/disposal.js.map +0 -1
- package/dist/vendored/brepjs/core/errors.d.ts +0 -191
- package/dist/vendored/brepjs/core/errors.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/errors.js +0 -238
- package/dist/vendored/brepjs/core/errors.js.map +0 -1
- package/dist/vendored/brepjs/core/kernelBoundary.d.ts +0 -40
- package/dist/vendored/brepjs/core/kernelBoundary.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/kernelBoundary.js +0 -99
- package/dist/vendored/brepjs/core/kernelBoundary.js.map +0 -1
- package/dist/vendored/brepjs/core/kernelCall.d.ts +0 -48
- package/dist/vendored/brepjs/core/kernelCall.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/kernelCall.js +0 -154
- package/dist/vendored/brepjs/core/kernelCall.js.map +0 -1
- package/dist/vendored/brepjs/core/kernelErrorTranslation.d.ts +0 -17
- package/dist/vendored/brepjs/core/kernelErrorTranslation.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/kernelErrorTranslation.js +0 -98
- package/dist/vendored/brepjs/core/kernelErrorTranslation.js.map +0 -1
- package/dist/vendored/brepjs/core/planeOps.d.ts +0 -62
- package/dist/vendored/brepjs/core/planeOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/planeOps.js +0 -148
- package/dist/vendored/brepjs/core/planeOps.js.map +0 -1
- package/dist/vendored/brepjs/core/planeTypes.d.ts +0 -22
- package/dist/vendored/brepjs/core/planeTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/planeTypes.js +0 -6
- package/dist/vendored/brepjs/core/planeTypes.js.map +0 -1
- package/dist/vendored/brepjs/core/result.d.ts +0 -85
- package/dist/vendored/brepjs/core/result.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/result.js +0 -212
- package/dist/vendored/brepjs/core/result.js.map +0 -1
- package/dist/vendored/brepjs/core/shapeTypeCache.d.ts +0 -27
- package/dist/vendored/brepjs/core/shapeTypeCache.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/shapeTypeCache.js +0 -40
- package/dist/vendored/brepjs/core/shapeTypeCache.js.map +0 -1
- package/dist/vendored/brepjs/core/shapeTypes.d.ts +0 -199
- package/dist/vendored/brepjs/core/shapeTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/shapeTypes.js +0 -267
- package/dist/vendored/brepjs/core/shapeTypes.js.map +0 -1
- package/dist/vendored/brepjs/core/typeDiscriminants.d.ts +0 -25
- package/dist/vendored/brepjs/core/typeDiscriminants.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/typeDiscriminants.js +0 -50
- package/dist/vendored/brepjs/core/typeDiscriminants.js.map +0 -1
- package/dist/vendored/brepjs/core/types.d.ts +0 -51
- package/dist/vendored/brepjs/core/types.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/types.js +0 -35
- package/dist/vendored/brepjs/core/types.js.map +0 -1
- package/dist/vendored/brepjs/core/validityTypes.d.ts +0 -143
- package/dist/vendored/brepjs/core/validityTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/validityTypes.js +0 -174
- package/dist/vendored/brepjs/core/validityTypes.js.map +0 -1
- package/dist/vendored/brepjs/core/vecOps.d.ts +0 -53
- package/dist/vendored/brepjs/core/vecOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/vecOps.js +0 -131
- package/dist/vendored/brepjs/core/vecOps.js.map +0 -1
- package/dist/vendored/brepjs/core.d.ts +0 -17
- package/dist/vendored/brepjs/core.d.ts.map +0 -1
- package/dist/vendored/brepjs/core.js +0 -13
- package/dist/vendored/brepjs/core.js.map +0 -1
- package/dist/vendored/brepjs/gear/gearFns.d.ts +0 -148
- package/dist/vendored/brepjs/gear/gearFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/gear/gearFns.js +0 -479
- package/dist/vendored/brepjs/gear/gearFns.js.map +0 -1
- package/dist/vendored/brepjs/gear/gearMath.d.ts +0 -89
- package/dist/vendored/brepjs/gear/gearMath.d.ts.map +0 -1
- package/dist/vendored/brepjs/gear/gearMath.js +0 -195
- package/dist/vendored/brepjs/gear/gearMath.js.map +0 -1
- package/dist/vendored/brepjs/gear/gearProfile.d.ts +0 -17
- package/dist/vendored/brepjs/gear/gearProfile.d.ts.map +0 -1
- package/dist/vendored/brepjs/gear/gearProfile.js +0 -159
- package/dist/vendored/brepjs/gear/gearProfile.js.map +0 -1
- package/dist/vendored/brepjs/gear/index.d.ts +0 -4
- package/dist/vendored/brepjs/gear/index.d.ts.map +0 -1
- package/dist/vendored/brepjs/gear/index.js +0 -4
- package/dist/vendored/brepjs/gear/index.js.map +0 -1
- package/dist/vendored/brepjs/index.d.ts +0 -152
- package/dist/vendored/brepjs/index.d.ts.map +0 -1
- package/dist/vendored/brepjs/index.js +0 -195
- package/dist/vendored/brepjs/index.js.map +0 -1
- package/dist/vendored/brepjs/io/dxfExportFns.d.ts +0 -74
- package/dist/vendored/brepjs/io/dxfExportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/dxfExportFns.js +0 -134
- package/dist/vendored/brepjs/io/dxfExportFns.js.map +0 -1
- package/dist/vendored/brepjs/io/dxfImportFns.d.ts +0 -20
- package/dist/vendored/brepjs/io/dxfImportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/dxfImportFns.js +0 -132
- package/dist/vendored/brepjs/io/dxfImportFns.js.map +0 -1
- package/dist/vendored/brepjs/io/gltfExportFns.d.ts +0 -97
- package/dist/vendored/brepjs/io/gltfExportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/gltfExportFns.js +0 -460
- package/dist/vendored/brepjs/io/gltfExportFns.js.map +0 -1
- package/dist/vendored/brepjs/io/gltfImportFns.d.ts +0 -21
- package/dist/vendored/brepjs/io/gltfImportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/gltfImportFns.js +0 -33
- package/dist/vendored/brepjs/io/gltfImportFns.js.map +0 -1
- package/dist/vendored/brepjs/io/importFns.d.ts +0 -56
- package/dist/vendored/brepjs/io/importFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/importFns.js +0 -108
- package/dist/vendored/brepjs/io/importFns.js.map +0 -1
- package/dist/vendored/brepjs/io/ioUtils.d.ts +0 -22
- package/dist/vendored/brepjs/io/ioUtils.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/ioUtils.js +0 -56
- package/dist/vendored/brepjs/io/ioUtils.js.map +0 -1
- package/dist/vendored/brepjs/io/objExportFns.d.ts +0 -23
- package/dist/vendored/brepjs/io/objExportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/objExportFns.js +0 -67
- package/dist/vendored/brepjs/io/objExportFns.js.map +0 -1
- package/dist/vendored/brepjs/io/objImportFns.d.ts +0 -26
- package/dist/vendored/brepjs/io/objImportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/objImportFns.js +0 -96
- package/dist/vendored/brepjs/io/objImportFns.js.map +0 -1
- package/dist/vendored/brepjs/io/stepConfigFns.d.ts +0 -30
- package/dist/vendored/brepjs/io/stepConfigFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/stepConfigFns.js +0 -30
- package/dist/vendored/brepjs/io/stepConfigFns.js.map +0 -1
- package/dist/vendored/brepjs/io/svgImportFns.d.ts +0 -58
- package/dist/vendored/brepjs/io/svgImportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/svgImportFns.js +0 -394
- package/dist/vendored/brepjs/io/svgImportFns.js.map +0 -1
- package/dist/vendored/brepjs/io/threemfExportFns.d.ts +0 -48
- package/dist/vendored/brepjs/io/threemfExportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/threemfExportFns.js +0 -345
- package/dist/vendored/brepjs/io/threemfExportFns.js.map +0 -1
- package/dist/vendored/brepjs/io/threemfImportFns.d.ts +0 -22
- package/dist/vendored/brepjs/io/threemfImportFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/io/threemfImportFns.js +0 -350
- package/dist/vendored/brepjs/io/threemfImportFns.js.map +0 -1
- package/dist/vendored/brepjs/io.d.ts +0 -17
- package/dist/vendored/brepjs/io.d.ts.map +0 -1
- package/dist/vendored/brepjs/io.js +0 -20
- package/dist/vendored/brepjs/io.js.map +0 -1
- package/dist/vendored/brepjs/kernel/capabilities.d.ts +0 -36
- package/dist/vendored/brepjs/kernel/capabilities.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/capabilities.js +0 -35
- package/dist/vendored/brepjs/kernel/capabilities.js.map +0 -1
- package/dist/vendored/brepjs/kernel/geometry2d.d.ts +0 -96
- package/dist/vendored/brepjs/kernel/geometry2d.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/geometry2d.js +0 -885
- package/dist/vendored/brepjs/kernel/geometry2d.js.map +0 -1
- package/dist/vendored/brepjs/kernel/hullGeometry.d.ts +0 -23
- package/dist/vendored/brepjs/kernel/hullGeometry.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/hullGeometry.js +0 -312
- package/dist/vendored/brepjs/kernel/hullGeometry.js.map +0 -1
- package/dist/vendored/brepjs/kernel/index.d.ts +0 -73
- package/dist/vendored/brepjs/kernel/index.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/index.js +0 -161
- package/dist/vendored/brepjs/kernel/index.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/booleanOps.d.ts +0 -44
- package/dist/vendored/brepjs/kernel/interfaces/booleanOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/booleanOps.js +0 -11
- package/dist/vendored/brepjs/kernel/interfaces/booleanOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/builderOps.d.ts +0 -67
- package/dist/vendored/brepjs/kernel/interfaces/builderOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/builderOps.js +0 -12
- package/dist/vendored/brepjs/kernel/interfaces/builderOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/core.d.ts +0 -46
- package/dist/vendored/brepjs/kernel/interfaces/core.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/core.js +0 -11
- package/dist/vendored/brepjs/kernel/interfaces/core.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/curveOps.d.ts +0 -53
- package/dist/vendored/brepjs/kernel/interfaces/curveOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/curveOps.js +0 -12
- package/dist/vendored/brepjs/kernel/interfaces/curveOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/evolutionOps.d.ts +0 -32
- package/dist/vendored/brepjs/kernel/interfaces/evolutionOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/evolutionOps.js +0 -14
- package/dist/vendored/brepjs/kernel/interfaces/evolutionOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/index.d.ts +0 -43
- package/dist/vendored/brepjs/kernel/interfaces/index.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/index.js +0 -12
- package/dist/vendored/brepjs/kernel/interfaces/index.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/ioOps.d.ts +0 -65
- package/dist/vendored/brepjs/kernel/interfaces/ioOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/ioOps.js +0 -9
- package/dist/vendored/brepjs/kernel/interfaces/ioOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/measureOps.d.ts +0 -55
- package/dist/vendored/brepjs/kernel/interfaces/measureOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/measureOps.js +0 -9
- package/dist/vendored/brepjs/kernel/interfaces/measureOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/meshOps.d.ts +0 -25
- package/dist/vendored/brepjs/kernel/interfaces/meshOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/meshOps.js +0 -8
- package/dist/vendored/brepjs/kernel/interfaces/meshOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/modifierOps.d.ts +0 -53
- package/dist/vendored/brepjs/kernel/interfaces/modifierOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/modifierOps.js +0 -10
- package/dist/vendored/brepjs/kernel/interfaces/modifierOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/primitiveOps.d.ts +0 -22
- package/dist/vendored/brepjs/kernel/interfaces/primitiveOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/primitiveOps.js +0 -11
- package/dist/vendored/brepjs/kernel/interfaces/primitiveOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/repairOps.d.ts +0 -43
- package/dist/vendored/brepjs/kernel/interfaces/repairOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/repairOps.js +0 -9
- package/dist/vendored/brepjs/kernel/interfaces/repairOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/surfaceOps.d.ts +0 -72
- package/dist/vendored/brepjs/kernel/interfaces/surfaceOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/surfaceOps.js +0 -13
- package/dist/vendored/brepjs/kernel/interfaces/surfaceOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/sweepOps.d.ts +0 -73
- package/dist/vendored/brepjs/kernel/interfaces/sweepOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/sweepOps.js +0 -11
- package/dist/vendored/brepjs/kernel/interfaces/sweepOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/topologyOps.d.ts +0 -62
- package/dist/vendored/brepjs/kernel/interfaces/topologyOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/topologyOps.js +0 -9
- package/dist/vendored/brepjs/kernel/interfaces/topologyOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/transformOps.d.ts +0 -80
- package/dist/vendored/brepjs/kernel/interfaces/transformOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/interfaces/transformOps.js +0 -11
- package/dist/vendored/brepjs/kernel/interfaces/transformOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/kernel2dTypes.d.ts +0 -145
- package/dist/vendored/brepjs/kernel/kernel2dTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/kernel2dTypes.js +0 -18
- package/dist/vendored/brepjs/kernel/kernel2dTypes.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occt/wasmTypes/externals.d.ts +0 -41
- package/dist/vendored/brepjs/kernel/occt/wasmTypes/externals.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occt/wasmTypes/externals.js +0 -2
- package/dist/vendored/brepjs/kernel/occt/wasmTypes/externals.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/adapterShims.d.ts +0 -17
- package/dist/vendored/brepjs/kernel/occtWasm/adapterShims.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/adapterShims.js +0 -75
- package/dist/vendored/brepjs/kernel/occtWasm/adapterShims.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/booleanOps.d.ts +0 -36
- package/dist/vendored/brepjs/kernel/occtWasm/booleanOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/booleanOps.js +0 -116
- package/dist/vendored/brepjs/kernel/occtWasm/booleanOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/constructionOps.d.ts +0 -43
- package/dist/vendored/brepjs/kernel/occtWasm/constructionOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/constructionOps.js +0 -292
- package/dist/vendored/brepjs/kernel/occtWasm/constructionOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/curveOps.d.ts +0 -34
- package/dist/vendored/brepjs/kernel/occtWasm/curveOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/curveOps.js +0 -164
- package/dist/vendored/brepjs/kernel/occtWasm/curveOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/evolutionOps.d.ts +0 -26
- package/dist/vendored/brepjs/kernel/occtWasm/evolutionOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/evolutionOps.js +0 -256
- package/dist/vendored/brepjs/kernel/occtWasm/evolutionOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/helpers.d.ts +0 -42
- package/dist/vendored/brepjs/kernel/occtWasm/helpers.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/helpers.js +0 -146
- package/dist/vendored/brepjs/kernel/occtWasm/helpers.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/hullOps.d.ts +0 -17
- package/dist/vendored/brepjs/kernel/occtWasm/hullOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/hullOps.js +0 -55
- package/dist/vendored/brepjs/kernel/occtWasm/hullOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/ioOps.d.ts +0 -58
- package/dist/vendored/brepjs/kernel/occtWasm/ioOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/ioOps.js +0 -303
- package/dist/vendored/brepjs/kernel/occtWasm/ioOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/kernel2dOps.d.ts +0 -113
- package/dist/vendored/brepjs/kernel/occtWasm/kernel2dOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/kernel2dOps.js +0 -731
- package/dist/vendored/brepjs/kernel/occtWasm/kernel2dOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/measureOps.d.ts +0 -62
- package/dist/vendored/brepjs/kernel/occtWasm/measureOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/measureOps.js +0 -338
- package/dist/vendored/brepjs/kernel/occtWasm/measureOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/meshOps.d.ts +0 -12
- package/dist/vendored/brepjs/kernel/occtWasm/meshOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/meshOps.js +0 -120
- package/dist/vendored/brepjs/kernel/occtWasm/meshOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/modifierOps.d.ts +0 -20
- package/dist/vendored/brepjs/kernel/occtWasm/modifierOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/modifierOps.js +0 -187
- package/dist/vendored/brepjs/kernel/occtWasm/modifierOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/occtWasmAdapter.d.ts +0 -513
- package/dist/vendored/brepjs/kernel/occtWasm/occtWasmAdapter.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/occtWasmAdapter.js +0 -1016
- package/dist/vendored/brepjs/kernel/occtWasm/occtWasmAdapter.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/occtWasmTypes.d.ts +0 -332
- package/dist/vendored/brepjs/kernel/occtWasm/occtWasmTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/occtWasmTypes.js +0 -10
- package/dist/vendored/brepjs/kernel/occtWasm/occtWasmTypes.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/primitiveOps.d.ts +0 -16
- package/dist/vendored/brepjs/kernel/occtWasm/primitiveOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/primitiveOps.js +0 -64
- package/dist/vendored/brepjs/kernel/occtWasm/primitiveOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/repairOps.d.ts +0 -16
- package/dist/vendored/brepjs/kernel/occtWasm/repairOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/repairOps.js +0 -38
- package/dist/vendored/brepjs/kernel/occtWasm/repairOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/surfaceOps.d.ts +0 -56
- package/dist/vendored/brepjs/kernel/occtWasm/surfaceOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/surfaceOps.js +0 -247
- package/dist/vendored/brepjs/kernel/occtWasm/surfaceOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/sweepOps.d.ts +0 -56
- package/dist/vendored/brepjs/kernel/occtWasm/sweepOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/sweepOps.js +0 -235
- package/dist/vendored/brepjs/kernel/occtWasm/sweepOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/topologyOps.d.ts +0 -25
- package/dist/vendored/brepjs/kernel/occtWasm/topologyOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/topologyOps.js +0 -127
- package/dist/vendored/brepjs/kernel/occtWasm/topologyOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/transformOps.d.ts +0 -40
- package/dist/vendored/brepjs/kernel/occtWasm/transformOps.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/occtWasm/transformOps.js +0 -275
- package/dist/vendored/brepjs/kernel/occtWasm/transformOps.js.map +0 -1
- package/dist/vendored/brepjs/kernel/quality.d.ts +0 -28
- package/dist/vendored/brepjs/kernel/quality.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/quality.js +0 -40
- package/dist/vendored/brepjs/kernel/quality.js.map +0 -1
- package/dist/vendored/brepjs/kernel/solverAdapter.d.ts +0 -50
- package/dist/vendored/brepjs/kernel/solverAdapter.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/solverAdapter.js +0 -330
- package/dist/vendored/brepjs/kernel/solverAdapter.js.map +0 -1
- package/dist/vendored/brepjs/kernel/stlBuilder.d.ts +0 -21
- package/dist/vendored/brepjs/kernel/stlBuilder.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/stlBuilder.js +0 -106
- package/dist/vendored/brepjs/kernel/stlBuilder.js.map +0 -1
- package/dist/vendored/brepjs/kernel/types.d.ts +0 -214
- package/dist/vendored/brepjs/kernel/types.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/types.js +0 -22
- package/dist/vendored/brepjs/kernel/types.js.map +0 -1
- package/dist/vendored/brepjs/kernel/unsupported.d.ts +0 -15
- package/dist/vendored/brepjs/kernel/unsupported.d.ts.map +0 -1
- package/dist/vendored/brepjs/kernel/unsupported.js +0 -25
- package/dist/vendored/brepjs/kernel/unsupported.js.map +0 -1
- package/dist/vendored/brepjs/measurement/interferenceFns.d.ts +0 -68
- package/dist/vendored/brepjs/measurement/interferenceFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/measurement/interferenceFns.js +0 -102
- package/dist/vendored/brepjs/measurement/interferenceFns.js.map +0 -1
- package/dist/vendored/brepjs/measurement/measureCache.d.ts +0 -20
- package/dist/vendored/brepjs/measurement/measureCache.d.ts.map +0 -1
- package/dist/vendored/brepjs/measurement/measureCache.js +0 -28
- package/dist/vendored/brepjs/measurement/measureCache.js.map +0 -1
- package/dist/vendored/brepjs/measurement/measureFns.d.ts +0 -92
- package/dist/vendored/brepjs/measurement/measureFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/measurement/measureFns.js +0 -239
- package/dist/vendored/brepjs/measurement/measureFns.js.map +0 -1
- package/dist/vendored/brepjs/measurement/measureTypes.d.ts +0 -35
- package/dist/vendored/brepjs/measurement/measureTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/measurement/measureTypes.js +0 -7
- package/dist/vendored/brepjs/measurement/measureTypes.js.map +0 -1
- package/dist/vendored/brepjs/measurement.d.ts +0 -5
- package/dist/vendored/brepjs/measurement.d.ts.map +0 -1
- package/dist/vendored/brepjs/measurement.js +0 -5
- package/dist/vendored/brepjs/measurement.js.map +0 -1
- package/dist/vendored/brepjs/ns/booleans.d.ts +0 -11
- package/dist/vendored/brepjs/ns/booleans.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/booleans.js +0 -11
- package/dist/vendored/brepjs/ns/booleans.js.map +0 -1
- package/dist/vendored/brepjs/ns/construction.d.ts +0 -10
- package/dist/vendored/brepjs/ns/construction.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/construction.js +0 -10
- package/dist/vendored/brepjs/ns/construction.js.map +0 -1
- package/dist/vendored/brepjs/ns/ioNs.d.ts +0 -18
- package/dist/vendored/brepjs/ns/ioNs.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/ioNs.js +0 -20
- package/dist/vendored/brepjs/ns/ioNs.js.map +0 -1
- package/dist/vendored/brepjs/ns/measurement.d.ts +0 -6
- package/dist/vendored/brepjs/ns/measurement.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/measurement.js +0 -6
- package/dist/vendored/brepjs/ns/measurement.js.map +0 -1
- package/dist/vendored/brepjs/ns/modifiers.d.ts +0 -6
- package/dist/vendored/brepjs/ns/modifiers.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/modifiers.js +0 -6
- package/dist/vendored/brepjs/ns/modifiers.js.map +0 -1
- package/dist/vendored/brepjs/ns/patterns.d.ts +0 -5
- package/dist/vendored/brepjs/ns/patterns.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/patterns.js +0 -5
- package/dist/vendored/brepjs/ns/patterns.js.map +0 -1
- package/dist/vendored/brepjs/ns/primitives.d.ts +0 -7
- package/dist/vendored/brepjs/ns/primitives.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/primitives.js +0 -7
- package/dist/vendored/brepjs/ns/primitives.js.map +0 -1
- package/dist/vendored/brepjs/ns/query.d.ts +0 -6
- package/dist/vendored/brepjs/ns/query.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/query.js +0 -6
- package/dist/vendored/brepjs/ns/query.js.map +0 -1
- package/dist/vendored/brepjs/ns/transforms.d.ts +0 -5
- package/dist/vendored/brepjs/ns/transforms.d.ts.map +0 -1
- package/dist/vendored/brepjs/ns/transforms.js +0 -5
- package/dist/vendored/brepjs/ns/transforms.js.map +0 -1
- package/dist/vendored/brepjs/operations/api.d.ts +0 -39
- package/dist/vendored/brepjs/operations/api.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/api.js +0 -41
- package/dist/vendored/brepjs/operations/api.js.map +0 -1
- package/dist/vendored/brepjs/operations/assemblyFns.d.ts +0 -54
- package/dist/vendored/brepjs/operations/assemblyFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/assemblyFns.js +0 -91
- package/dist/vendored/brepjs/operations/assemblyFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/compoundOpsFns.d.ts +0 -43
- package/dist/vendored/brepjs/operations/compoundOpsFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/compoundOpsFns.js +0 -368
- package/dist/vendored/brepjs/operations/compoundOpsFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/convexHullFns.d.ts +0 -27
- package/dist/vendored/brepjs/operations/convexHullFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/convexHullFns.js +0 -50
- package/dist/vendored/brepjs/operations/convexHullFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/dhFns.d.ts +0 -47
- package/dist/vendored/brepjs/operations/dhFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/dhFns.js +0 -53
- package/dist/vendored/brepjs/operations/dhFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/exporterFns.d.ts +0 -47
- package/dist/vendored/brepjs/operations/exporterFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/exporterFns.js +0 -66
- package/dist/vendored/brepjs/operations/exporterFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/exporterUtils.d.ts +0 -6
- package/dist/vendored/brepjs/operations/exporterUtils.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/exporterUtils.js +0 -5
- package/dist/vendored/brepjs/operations/exporterUtils.js.map +0 -1
- package/dist/vendored/brepjs/operations/exporters.d.ts +0 -59
- package/dist/vendored/brepjs/operations/exporters.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/exporters.js +0 -74
- package/dist/vendored/brepjs/operations/exporters.js.map +0 -1
- package/dist/vendored/brepjs/operations/extrudeFns.d.ts +0 -47
- package/dist/vendored/brepjs/operations/extrudeFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/extrudeFns.js +0 -119
- package/dist/vendored/brepjs/operations/extrudeFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/extrudeUtils.d.ts +0 -63
- package/dist/vendored/brepjs/operations/extrudeUtils.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/extrudeUtils.js +0 -33
- package/dist/vendored/brepjs/operations/extrudeUtils.js.map +0 -1
- package/dist/vendored/brepjs/operations/guidedSweepFns.d.ts +0 -6
- package/dist/vendored/brepjs/operations/guidedSweepFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/guidedSweepFns.js +0 -6
- package/dist/vendored/brepjs/operations/guidedSweepFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/historyFns.d.ts +0 -83
- package/dist/vendored/brepjs/operations/historyFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/historyFns.js +0 -256
- package/dist/vendored/brepjs/operations/historyFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/ikFns.d.ts +0 -74
- package/dist/vendored/brepjs/operations/ikFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/ikFns.js +0 -320
- package/dist/vendored/brepjs/operations/ikFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/instanceFns.d.ts +0 -76
- package/dist/vendored/brepjs/operations/instanceFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/instanceFns.js +0 -128
- package/dist/vendored/brepjs/operations/instanceFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/jointFns.d.ts +0 -176
- package/dist/vendored/brepjs/operations/jointFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/jointFns.js +0 -298
- package/dist/vendored/brepjs/operations/jointFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/loftFns.d.ts +0 -60
- package/dist/vendored/brepjs/operations/loftFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/loftFns.js +0 -112
- package/dist/vendored/brepjs/operations/loftFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/mateFns.d.ts +0 -53
- package/dist/vendored/brepjs/operations/mateFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/mateFns.js +0 -142
- package/dist/vendored/brepjs/operations/mateFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/multiSweepFns.d.ts +0 -6
- package/dist/vendored/brepjs/operations/multiSweepFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/multiSweepFns.js +0 -6
- package/dist/vendored/brepjs/operations/multiSweepFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/patternFns.d.ts +0 -46
- package/dist/vendored/brepjs/operations/patternFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/patternFns.js +0 -126
- package/dist/vendored/brepjs/operations/patternFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/roofFns.d.ts +0 -25
- package/dist/vendored/brepjs/operations/roofFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/roofFns.js +0 -250
- package/dist/vendored/brepjs/operations/roofFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/straightSkeleton.d.ts +0 -29
- package/dist/vendored/brepjs/operations/straightSkeleton.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/straightSkeleton.js +0 -440
- package/dist/vendored/brepjs/operations/straightSkeleton.js.map +0 -1
- package/dist/vendored/brepjs/operations/sweepFns.d.ts +0 -121
- package/dist/vendored/brepjs/operations/sweepFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/sweepFns.js +0 -438
- package/dist/vendored/brepjs/operations/sweepFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/threadFns.d.ts +0 -57
- package/dist/vendored/brepjs/operations/threadFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/threadFns.js +0 -145
- package/dist/vendored/brepjs/operations/threadFns.js.map +0 -1
- package/dist/vendored/brepjs/operations/urdfFns.d.ts +0 -48
- package/dist/vendored/brepjs/operations/urdfFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations/urdfFns.js +0 -171
- package/dist/vendored/brepjs/operations/urdfFns.js.map +0 -1
- package/dist/vendored/brepjs/operations.d.ts +0 -20
- package/dist/vendored/brepjs/operations.d.ts.map +0 -1
- package/dist/vendored/brepjs/operations.js +0 -26
- package/dist/vendored/brepjs/operations.js.map +0 -1
- package/dist/vendored/brepjs/projection/cameraFns.d.ts +0 -63
- package/dist/vendored/brepjs/projection/cameraFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/projection/cameraFns.js +0 -89
- package/dist/vendored/brepjs/projection/cameraFns.js.map +0 -1
- package/dist/vendored/brepjs/projection/makeProjectedEdges.d.ts +0 -14
- package/dist/vendored/brepjs/projection/makeProjectedEdges.d.ts.map +0 -1
- package/dist/vendored/brepjs/projection/makeProjectedEdges.js +0 -111
- package/dist/vendored/brepjs/projection/makeProjectedEdges.js.map +0 -1
- package/dist/vendored/brepjs/projection/projectionPlanes.d.ts +0 -18
- package/dist/vendored/brepjs/projection/projectionPlanes.d.ts.map +0 -1
- package/dist/vendored/brepjs/projection/projectionPlanes.js +0 -23
- package/dist/vendored/brepjs/projection/projectionPlanes.js.map +0 -1
- package/dist/vendored/brepjs/projection.d.ts +0 -12
- package/dist/vendored/brepjs/projection.d.ts.map +0 -1
- package/dist/vendored/brepjs/projection.js +0 -12
- package/dist/vendored/brepjs/projection.js.map +0 -1
- package/dist/vendored/brepjs/query/cornerFinder.d.ts +0 -54
- package/dist/vendored/brepjs/query/cornerFinder.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/cornerFinder.js +0 -73
- package/dist/vendored/brepjs/query/cornerFinder.js.map +0 -1
- package/dist/vendored/brepjs/query/directionUtils.d.ts +0 -9
- package/dist/vendored/brepjs/query/directionUtils.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/directionUtils.js +0 -18
- package/dist/vendored/brepjs/query/directionUtils.js.map +0 -1
- package/dist/vendored/brepjs/query/edgeFinder.d.ts +0 -5
- package/dist/vendored/brepjs/query/edgeFinder.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/edgeFinder.js +0 -5
- package/dist/vendored/brepjs/query/edgeFinder.js.map +0 -1
- package/dist/vendored/brepjs/query/faceFinder.d.ts +0 -5
- package/dist/vendored/brepjs/query/faceFinder.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/faceFinder.js +0 -5
- package/dist/vendored/brepjs/query/faceFinder.js.map +0 -1
- package/dist/vendored/brepjs/query/finderCore.d.ts +0 -49
- package/dist/vendored/brepjs/query/finderCore.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/finderCore.js +0 -120
- package/dist/vendored/brepjs/query/finderCore.js.map +0 -1
- package/dist/vendored/brepjs/query/finderFns.d.ts +0 -25
- package/dist/vendored/brepjs/query/finderFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/finderFns.js +0 -25
- package/dist/vendored/brepjs/query/finderFns.js.map +0 -1
- package/dist/vendored/brepjs/query/helpers.d.ts +0 -11
- package/dist/vendored/brepjs/query/helpers.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/helpers.js +0 -17
- package/dist/vendored/brepjs/query/helpers.js.map +0 -1
- package/dist/vendored/brepjs/query/shapeDistanceFilter.d.ts +0 -15
- package/dist/vendored/brepjs/query/shapeDistanceFilter.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/shapeDistanceFilter.js +0 -21
- package/dist/vendored/brepjs/query/shapeDistanceFilter.js.map +0 -1
- package/dist/vendored/brepjs/query/shapeFinders.d.ts +0 -39
- package/dist/vendored/brepjs/query/shapeFinders.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/shapeFinders.js +0 -82
- package/dist/vendored/brepjs/query/shapeFinders.js.map +0 -1
- package/dist/vendored/brepjs/query/vertexFinder.d.ts +0 -19
- package/dist/vendored/brepjs/query/vertexFinder.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/vertexFinder.js +0 -73
- package/dist/vendored/brepjs/query/vertexFinder.js.map +0 -1
- package/dist/vendored/brepjs/query/wireFinder.d.ts +0 -5
- package/dist/vendored/brepjs/query/wireFinder.d.ts.map +0 -1
- package/dist/vendored/brepjs/query/wireFinder.js +0 -5
- package/dist/vendored/brepjs/query/wireFinder.js.map +0 -1
- package/dist/vendored/brepjs/query.d.ts +0 -6
- package/dist/vendored/brepjs/query.d.ts.map +0 -1
- package/dist/vendored/brepjs/query.js +0 -6
- package/dist/vendored/brepjs/query.js.map +0 -1
- package/dist/vendored/brepjs/result.d.ts +0 -7
- package/dist/vendored/brepjs/result.d.ts.map +0 -1
- package/dist/vendored/brepjs/result.js +0 -7
- package/dist/vendored/brepjs/result.js.map +0 -1
- package/dist/vendored/brepjs/shapeRef.d.ts +0 -13
- package/dist/vendored/brepjs/shapeRef.d.ts.map +0 -1
- package/dist/vendored/brepjs/shapeRef.js +0 -13
- package/dist/vendored/brepjs/shapeRef.js.map +0 -1
- package/dist/vendored/brepjs/sketching/cannedSketches.d.ts +0 -144
- package/dist/vendored/brepjs/sketching/cannedSketches.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/cannedSketches.js +0 -327
- package/dist/vendored/brepjs/sketching/cannedSketches.js.map +0 -1
- package/dist/vendored/brepjs/sketching/compoundSketch.d.ts +0 -70
- package/dist/vendored/brepjs/sketching/compoundSketch.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/compoundSketch.js +0 -87
- package/dist/vendored/brepjs/sketching/compoundSketch.js.map +0 -1
- package/dist/vendored/brepjs/sketching/draw3d.d.ts +0 -22
- package/dist/vendored/brepjs/sketching/draw3d.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/draw3d.js +0 -150
- package/dist/vendored/brepjs/sketching/draw3d.js.map +0 -1
- package/dist/vendored/brepjs/sketching/drawFns.d.ts +0 -122
- package/dist/vendored/brepjs/sketching/drawFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/drawFns.js +0 -129
- package/dist/vendored/brepjs/sketching/drawFns.js.map +0 -1
- package/dist/vendored/brepjs/sketching/drawing.d.ts +0 -128
- package/dist/vendored/brepjs/sketching/drawing.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/drawing.js +0 -275
- package/dist/vendored/brepjs/sketching/drawing.js.map +0 -1
- package/dist/vendored/brepjs/sketching/drawingFactories.d.ts +0 -95
- package/dist/vendored/brepjs/sketching/drawingFactories.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/drawingFactories.js +0 -125
- package/dist/vendored/brepjs/sketching/drawingFactories.js.map +0 -1
- package/dist/vendored/brepjs/sketching/drawingPen.d.ts +0 -35
- package/dist/vendored/brepjs/sketching/drawingPen.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/drawingPen.js +0 -57
- package/dist/vendored/brepjs/sketching/drawingPen.js.map +0 -1
- package/dist/vendored/brepjs/sketching/faceSketcher.d.ts +0 -53
- package/dist/vendored/brepjs/sketching/faceSketcher.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/faceSketcher.js +0 -167
- package/dist/vendored/brepjs/sketching/faceSketcher.js.map +0 -1
- package/dist/vendored/brepjs/sketching/shortcuts.d.ts +0 -16
- package/dist/vendored/brepjs/sketching/shortcuts.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/shortcuts.js +0 -24
- package/dist/vendored/brepjs/sketching/shortcuts.js.map +0 -1
- package/dist/vendored/brepjs/sketching/sketch.d.ts +0 -157
- package/dist/vendored/brepjs/sketching/sketch.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/sketch.js +0 -151
- package/dist/vendored/brepjs/sketching/sketch.js.map +0 -1
- package/dist/vendored/brepjs/sketching/sketchFns.d.ts +0 -89
- package/dist/vendored/brepjs/sketching/sketchFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/sketchFns.js +0 -266
- package/dist/vendored/brepjs/sketching/sketchFns.js.map +0 -1
- package/dist/vendored/brepjs/sketching/sketcher.d.ts +0 -70
- package/dist/vendored/brepjs/sketching/sketcher.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/sketcher.js +0 -181
- package/dist/vendored/brepjs/sketching/sketcher.js.map +0 -1
- package/dist/vendored/brepjs/sketching/sketches.d.ts +0 -70
- package/dist/vendored/brepjs/sketching/sketches.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching/sketches.js +0 -91
- package/dist/vendored/brepjs/sketching/sketches.js.map +0 -1
- package/dist/vendored/brepjs/sketching.d.ts +0 -28
- package/dist/vendored/brepjs/sketching.d.ts.map +0 -1
- package/dist/vendored/brepjs/sketching.js +0 -30
- package/dist/vendored/brepjs/sketching.js.map +0 -1
- package/dist/vendored/brepjs/text/fontRegistry.d.ts +0 -23
- package/dist/vendored/brepjs/text/fontRegistry.d.ts.map +0 -1
- package/dist/vendored/brepjs/text/fontRegistry.js +0 -61
- package/dist/vendored/brepjs/text/fontRegistry.js.map +0 -1
- package/dist/vendored/brepjs/text/sketchText.d.ts +0 -31
- package/dist/vendored/brepjs/text/sketchText.d.ts.map +0 -1
- package/dist/vendored/brepjs/text/sketchText.js +0 -30
- package/dist/vendored/brepjs/text/sketchText.js.map +0 -1
- package/dist/vendored/brepjs/text/textBlueprints.d.ts +0 -19
- package/dist/vendored/brepjs/text/textBlueprints.d.ts.map +0 -1
- package/dist/vendored/brepjs/text/textBlueprints.js +0 -61
- package/dist/vendored/brepjs/text/textBlueprints.js.map +0 -1
- package/dist/vendored/brepjs/text/textMetrics.d.ts +0 -40
- package/dist/vendored/brepjs/text/textMetrics.d.ts.map +0 -1
- package/dist/vendored/brepjs/text/textMetrics.js +0 -43
- package/dist/vendored/brepjs/text/textMetrics.js.map +0 -1
- package/dist/vendored/brepjs/text.d.ts +0 -13
- package/dist/vendored/brepjs/text.d.ts.map +0 -1
- package/dist/vendored/brepjs/text.js +0 -13
- package/dist/vendored/brepjs/text.js.map +0 -1
- package/dist/vendored/brepjs/topology/adjacencyFns.d.ts +0 -89
- package/dist/vendored/brepjs/topology/adjacencyFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/adjacencyFns.js +0 -411
- package/dist/vendored/brepjs/topology/adjacencyFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/api.d.ts +0 -145
- package/dist/vendored/brepjs/topology/api.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/api.js +0 -282
- package/dist/vendored/brepjs/topology/api.js.map +0 -1
- package/dist/vendored/brepjs/topology/apiTypes.d.ts +0 -135
- package/dist/vendored/brepjs/topology/apiTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/apiTypes.js +0 -24
- package/dist/vendored/brepjs/topology/apiTypes.js.map +0 -1
- package/dist/vendored/brepjs/topology/booleanBatchFns.d.ts +0 -52
- package/dist/vendored/brepjs/topology/booleanBatchFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/booleanBatchFns.js +0 -164
- package/dist/vendored/brepjs/topology/booleanBatchFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/booleanDiagnosticFns.d.ts +0 -21
- package/dist/vendored/brepjs/topology/booleanDiagnosticFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/booleanDiagnosticFns.js +0 -23
- package/dist/vendored/brepjs/topology/booleanDiagnosticFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/booleanFns.d.ts +0 -155
- package/dist/vendored/brepjs/topology/booleanFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/booleanFns.js +0 -600
- package/dist/vendored/brepjs/topology/booleanFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/cast.d.ts +0 -48
- package/dist/vendored/brepjs/topology/cast.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/cast.js +0 -113
- package/dist/vendored/brepjs/topology/cast.js.map +0 -1
- package/dist/vendored/brepjs/topology/chamferAngleFns.d.ts +0 -24
- package/dist/vendored/brepjs/topology/chamferAngleFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/chamferAngleFns.js +0 -64
- package/dist/vendored/brepjs/topology/chamferAngleFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/compoundOpsFns.d.ts +0 -6
- package/dist/vendored/brepjs/topology/compoundOpsFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/compoundOpsFns.js +0 -6
- package/dist/vendored/brepjs/topology/compoundOpsFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/curveBuilders.d.ts +0 -90
- package/dist/vendored/brepjs/topology/curveBuilders.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/curveBuilders.js +0 -125
- package/dist/vendored/brepjs/topology/curveBuilders.js.map +0 -1
- package/dist/vendored/brepjs/topology/curveFns.d.ts +0 -96
- package/dist/vendored/brepjs/topology/curveFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/curveFns.js +0 -191
- package/dist/vendored/brepjs/topology/curveFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/evolutionFns.d.ts +0 -78
- package/dist/vendored/brepjs/topology/evolutionFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/evolutionFns.js +0 -271
- package/dist/vendored/brepjs/topology/evolutionFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/faceFns.d.ts +0 -86
- package/dist/vendored/brepjs/topology/faceFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/faceFns.js +0 -169
- package/dist/vendored/brepjs/topology/faceFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/healingFns.d.ts +0 -98
- package/dist/vendored/brepjs/topology/healingFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/healingFns.js +0 -338
- package/dist/vendored/brepjs/topology/healingFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/hullFns.d.ts +0 -21
- package/dist/vendored/brepjs/topology/hullFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/hullFns.js +0 -60
- package/dist/vendored/brepjs/topology/hullFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/index.d.ts +0 -14
- package/dist/vendored/brepjs/topology/index.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/index.js +0 -17
- package/dist/vendored/brepjs/topology/index.js.map +0 -1
- package/dist/vendored/brepjs/topology/meshCache.d.ts +0 -68
- package/dist/vendored/brepjs/topology/meshCache.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/meshCache.js +0 -117
- package/dist/vendored/brepjs/topology/meshCache.js.map +0 -1
- package/dist/vendored/brepjs/topology/meshFns.d.ts +0 -179
- package/dist/vendored/brepjs/topology/meshFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/meshFns.js +0 -393
- package/dist/vendored/brepjs/topology/meshFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/metadata/colorFns.d.ts +0 -41
- package/dist/vendored/brepjs/topology/metadata/colorFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/metadata/colorFns.js +0 -128
- package/dist/vendored/brepjs/topology/metadata/colorFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/metadata/faceTagFns.d.ts +0 -44
- package/dist/vendored/brepjs/topology/metadata/faceTagFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/metadata/faceTagFns.js +0 -168
- package/dist/vendored/brepjs/topology/metadata/faceTagFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/metadata/metadataPropagation.d.ts +0 -59
- package/dist/vendored/brepjs/topology/metadata/metadataPropagation.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/metadata/metadataPropagation.js +0 -109
- package/dist/vendored/brepjs/topology/metadata/metadataPropagation.js.map +0 -1
- package/dist/vendored/brepjs/topology/metadata/originTrackingFns.d.ts +0 -43
- package/dist/vendored/brepjs/topology/metadata/originTrackingFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/metadata/originTrackingFns.js +0 -270
- package/dist/vendored/brepjs/topology/metadata/originTrackingFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/minkowskiFns.d.ts +0 -26
- package/dist/vendored/brepjs/topology/minkowskiFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/minkowskiFns.js +0 -136
- package/dist/vendored/brepjs/topology/minkowskiFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/modifierFns.d.ts +0 -87
- package/dist/vendored/brepjs/topology/modifierFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/modifierFns.js +0 -446
- package/dist/vendored/brepjs/topology/modifierFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/nurbsFns.d.ts +0 -13
- package/dist/vendored/brepjs/topology/nurbsFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/nurbsFns.js +0 -22
- package/dist/vendored/brepjs/topology/nurbsFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/polyhedronFns.d.ts +0 -11
- package/dist/vendored/brepjs/topology/polyhedronFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/polyhedronFns.js +0 -47
- package/dist/vendored/brepjs/topology/polyhedronFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/positionFns.d.ts +0 -18
- package/dist/vendored/brepjs/topology/positionFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/positionFns.js +0 -34
- package/dist/vendored/brepjs/topology/positionFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/primitiveFns.d.ts +0 -244
- package/dist/vendored/brepjs/topology/primitiveFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/primitiveFns.js +0 -361
- package/dist/vendored/brepjs/topology/primitiveFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeBooleans.d.ts +0 -14
- package/dist/vendored/brepjs/topology/shapeBooleans.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeBooleans.js +0 -24
- package/dist/vendored/brepjs/topology/shapeBooleans.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeFns.d.ts +0 -30
- package/dist/vendored/brepjs/topology/shapeFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeFns.js +0 -50
- package/dist/vendored/brepjs/topology/shapeFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeHelpers.d.ts +0 -9
- package/dist/vendored/brepjs/topology/shapeHelpers.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeHelpers.js +0 -14
- package/dist/vendored/brepjs/topology/shapeHelpers.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeModifiers.d.ts +0 -33
- package/dist/vendored/brepjs/topology/shapeModifiers.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeModifiers.js +0 -28
- package/dist/vendored/brepjs/topology/shapeModifiers.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/derivedFaceRefFns.d.ts +0 -29
- package/dist/vendored/brepjs/topology/shapeRef/derivedFaceRefFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/derivedFaceRefFns.js +0 -135
- package/dist/vendored/brepjs/topology/shapeRef/derivedFaceRefFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/edgeRefFns.d.ts +0 -25
- package/dist/vendored/brepjs/topology/shapeRef/edgeRefFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/edgeRefFns.js +0 -123
- package/dist/vendored/brepjs/topology/shapeRef/edgeRefFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/index.d.ts +0 -11
- package/dist/vendored/brepjs/topology/shapeRef/index.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/index.js +0 -10
- package/dist/vendored/brepjs/topology/shapeRef/index.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/refResolveFns.d.ts +0 -66
- package/dist/vendored/brepjs/topology/shapeRef/refResolveFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/refResolveFns.js +0 -128
- package/dist/vendored/brepjs/topology/shapeRef/refResolveFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/roleLookup.d.ts +0 -18
- package/dist/vendored/brepjs/topology/shapeRef/roleLookup.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/roleLookup.js +0 -51
- package/dist/vendored/brepjs/topology/shapeRef/roleLookup.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/scoring.d.ts +0 -20
- package/dist/vendored/brepjs/topology/shapeRef/scoring.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/scoring.js +0 -65
- package/dist/vendored/brepjs/topology/shapeRef/scoring.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/shapeRefFns.d.ts +0 -59
- package/dist/vendored/brepjs/topology/shapeRef/shapeRefFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/shapeRefFns.js +0 -266
- package/dist/vendored/brepjs/topology/shapeRef/shapeRefFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/shapeRefTypes.d.ts +0 -153
- package/dist/vendored/brepjs/topology/shapeRef/shapeRefTypes.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/shapeRefTypes.js +0 -6
- package/dist/vendored/brepjs/topology/shapeRef/shapeRefTypes.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/vertexRefFns.d.ts +0 -24
- package/dist/vendored/brepjs/topology/shapeRef/vertexRefFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeRef/vertexRefFns.js +0 -128
- package/dist/vendored/brepjs/topology/shapeRef/vertexRefFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/shapeUtils.d.ts +0 -16
- package/dist/vendored/brepjs/topology/shapeUtils.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/shapeUtils.js +0 -28
- package/dist/vendored/brepjs/topology/shapeUtils.js.map +0 -1
- package/dist/vendored/brepjs/topology/solidBuilders.d.ts +0 -74
- package/dist/vendored/brepjs/topology/solidBuilders.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/solidBuilders.js +0 -173
- package/dist/vendored/brepjs/topology/solidBuilders.js.map +0 -1
- package/dist/vendored/brepjs/topology/surfaceBuilders.d.ts +0 -47
- package/dist/vendored/brepjs/topology/surfaceBuilders.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/surfaceBuilders.js +0 -162
- package/dist/vendored/brepjs/topology/surfaceBuilders.js.map +0 -1
- package/dist/vendored/brepjs/topology/surfaceFns.d.ts +0 -41
- package/dist/vendored/brepjs/topology/surfaceFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/surfaceFns.js +0 -178
- package/dist/vendored/brepjs/topology/surfaceFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/threeHelpers.d.ts +0 -124
- package/dist/vendored/brepjs/topology/threeHelpers.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/threeHelpers.js +0 -118
- package/dist/vendored/brepjs/topology/threeHelpers.js.map +0 -1
- package/dist/vendored/brepjs/topology/topologyQueryFns.d.ts +0 -100
- package/dist/vendored/brepjs/topology/topologyQueryFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/topologyQueryFns.js +0 -307
- package/dist/vendored/brepjs/topology/topologyQueryFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/transformFns.d.ts +0 -69
- package/dist/vendored/brepjs/topology/transformFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/transformFns.js +0 -235
- package/dist/vendored/brepjs/topology/transformFns.js.map +0 -1
- package/dist/vendored/brepjs/topology/wrapperFns.d.ts +0 -169
- package/dist/vendored/brepjs/topology/wrapperFns.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology/wrapperFns.js +0 -291
- package/dist/vendored/brepjs/topology/wrapperFns.js.map +0 -1
- package/dist/vendored/brepjs/topology.d.ts +0 -28
- package/dist/vendored/brepjs/topology.d.ts.map +0 -1
- package/dist/vendored/brepjs/topology.js +0 -39
- package/dist/vendored/brepjs/topology.js.map +0 -1
- package/dist/vendored/brepjs/utils/arrayAccess.d.ts +0 -12
- package/dist/vendored/brepjs/utils/arrayAccess.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/arrayAccess.js +0 -25
- package/dist/vendored/brepjs/utils/arrayAccess.js.map +0 -1
- package/dist/vendored/brepjs/utils/bug.d.ts +0 -15
- package/dist/vendored/brepjs/utils/bug.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/bug.js +0 -21
- package/dist/vendored/brepjs/utils/bug.js.map +0 -1
- package/dist/vendored/brepjs/utils/ioFilename.d.ts +0 -3
- package/dist/vendored/brepjs/utils/ioFilename.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/ioFilename.js +0 -7
- package/dist/vendored/brepjs/utils/ioFilename.js.map +0 -1
- package/dist/vendored/brepjs/utils/precisionRound.d.ts +0 -11
- package/dist/vendored/brepjs/utils/precisionRound.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/precisionRound.js +0 -19
- package/dist/vendored/brepjs/utils/precisionRound.js.map +0 -1
- package/dist/vendored/brepjs/utils/quaternion.d.ts +0 -18
- package/dist/vendored/brepjs/utils/quaternion.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/quaternion.js +0 -68
- package/dist/vendored/brepjs/utils/quaternion.js.map +0 -1
- package/dist/vendored/brepjs/utils/range.d.ts +0 -3
- package/dist/vendored/brepjs/utils/range.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/range.js +0 -5
- package/dist/vendored/brepjs/utils/range.js.map +0 -1
- package/dist/vendored/brepjs/utils/uuid.d.ts +0 -3
- package/dist/vendored/brepjs/utils/uuid.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/uuid.js +0 -7
- package/dist/vendored/brepjs/utils/uuid.js.map +0 -1
- package/dist/vendored/brepjs/utils/vec2d.d.ts +0 -62
- package/dist/vendored/brepjs/utils/vec2d.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/vec2d.js +0 -107
- package/dist/vendored/brepjs/utils/vec2d.js.map +0 -1
- package/dist/vendored/brepjs/utils/vec3.d.ts +0 -32
- package/dist/vendored/brepjs/utils/vec3.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/vec3.js +0 -35
- package/dist/vendored/brepjs/utils/vec3.js.map +0 -1
- package/dist/vendored/brepjs/utils/zip.d.ts +0 -5
- package/dist/vendored/brepjs/utils/zip.d.ts.map +0 -1
- package/dist/vendored/brepjs/utils/zip.js +0 -8
- package/dist/vendored/brepjs/utils/zip.js.map +0 -1
- package/dist/vendored/brepjs/vectors.d.ts +0 -11
- package/dist/vendored/brepjs/vectors.d.ts.map +0 -1
- package/dist/vendored/brepjs/vectors.js +0 -9
- package/dist/vendored/brepjs/vectors.js.map +0 -1
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
* - E2E 测试通过:hasNaN: false, bounds 正确
|
|
34
34
|
* - 原始 bounds [0,0,0]~[150,120,90] → knurl 后 [-0.5,-0.5,0]~[150.5,120.5,90.5]
|
|
35
35
|
*/
|
|
36
|
-
import
|
|
36
|
+
import { toNonIndexed as shapeToNonIndexed } from '../meshdata/ops.js';
|
|
37
37
|
import { QuantizedPointMap } from './meshIndex.js';
|
|
38
38
|
// 10μm 顶点去重网格
|
|
39
39
|
const QUANTISE = 1e5;
|
|
@@ -92,8 +92,9 @@ function makeVertStore(initialCap, hasWeights, hasCanon) {
|
|
|
92
92
|
export async function subdivide(geometry, maxEdgeLength, onProgress, faceWeights = null) {
|
|
93
93
|
// 确保 geometry 是 non-indexed(toIndexed 假设输入是 flat 的)
|
|
94
94
|
let workingGeo = geometry;
|
|
95
|
-
if (geometry.
|
|
96
|
-
|
|
95
|
+
if (geometry.indices.length > 0) {
|
|
96
|
+
const ni = shapeToNonIndexed(geometry);
|
|
97
|
+
workingGeo = { positions: ni.positions, indices: ni.indices };
|
|
97
98
|
}
|
|
98
99
|
// 在 toIndexed 之前推导每面排除标记
|
|
99
100
|
let initialFaceExcluded = null;
|
|
@@ -365,15 +366,15 @@ function getMidpoint(verts, cache, a, b, posCanonMap) {
|
|
|
365
366
|
return idx;
|
|
366
367
|
}
|
|
367
368
|
function toIndexed(geometry, nonIndexedWeights = null) {
|
|
368
|
-
const
|
|
369
|
-
const n =
|
|
369
|
+
const positions = geometry.positions;
|
|
370
|
+
const n = positions.length / 3;
|
|
370
371
|
// 预计算每个面的法线(单位 + 原始叉积)
|
|
371
372
|
const faceNrmUnit = new Float32Array(n * 3);
|
|
372
373
|
const faceNrmRaw = new Float32Array(n * 3);
|
|
373
374
|
for (let t = 0; t < n; t += 3) {
|
|
374
|
-
const ax =
|
|
375
|
-
const bx =
|
|
376
|
-
const cx =
|
|
375
|
+
const ax = positions[t * 3], ay = positions[t * 3 + 1], az = positions[t * 3 + 2];
|
|
376
|
+
const bx = positions[(t + 1) * 3], by = positions[(t + 1) * 3 + 1], bz = positions[(t + 1) * 3 + 2];
|
|
377
|
+
const cx = positions[(t + 2) * 3], cy = positions[(t + 2) * 3 + 1], cz = positions[(t + 2) * 3 + 2];
|
|
377
378
|
const e1x = bx - ax, e1y = by - ay, e1z = bz - az;
|
|
378
379
|
const e2x = cx - ax, e2y = cy - ay, e2z = cz - az;
|
|
379
380
|
const rx = e1y * e2z - e1z * e2y;
|
|
@@ -397,9 +398,9 @@ function toIndexed(geometry, nonIndexedWeights = null) {
|
|
|
397
398
|
// canonical ID → cluster list at that position
|
|
398
399
|
const clustersByCanon = new Map();
|
|
399
400
|
for (let i = 0; i < n; i++) {
|
|
400
|
-
const px =
|
|
401
|
-
const py =
|
|
402
|
-
const pz =
|
|
401
|
+
const px = positions[i * 3];
|
|
402
|
+
const py = positions[i * 3 + 1];
|
|
403
|
+
const pz = positions[i * 3 + 2];
|
|
403
404
|
const fnUx = faceNrmUnit[i * 3], fnUy = faceNrmUnit[i * 3 + 1], fnUz = faceNrmUnit[i * 3 + 2];
|
|
404
405
|
const fnRx = faceNrmRaw[i * 3], fnRy = faceNrmRaw[i * 3 + 1], fnRz = faceNrmRaw[i * 3 + 2];
|
|
405
406
|
// 第一个到达此位置的顶点成为 canonical ID
|
|
@@ -507,11 +508,16 @@ function toNonIndexed(verts, indices, faceExcluded = null) {
|
|
|
507
508
|
wgtArray[t * 3 + v] = faceW !== null ? faceW : weights[vidx];
|
|
508
509
|
}
|
|
509
510
|
}
|
|
510
|
-
const
|
|
511
|
-
|
|
512
|
-
|
|
511
|
+
const seqIndices = new Uint32Array(triCount * 3);
|
|
512
|
+
for (let i = 0; i < seqIndices.length; i++)
|
|
513
|
+
seqIndices[i] = i;
|
|
514
|
+
const geo = {
|
|
515
|
+
positions: posArray,
|
|
516
|
+
indices: seqIndices,
|
|
517
|
+
normals: nrmArray,
|
|
518
|
+
};
|
|
513
519
|
if (wgtArray)
|
|
514
|
-
geo.
|
|
520
|
+
geo.excludeWeight = wgtArray;
|
|
515
521
|
return geo;
|
|
516
522
|
}
|
|
517
523
|
//# sourceMappingURL=subdivision.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subdivision.js","sourceRoot":"","sources":["../../../src/mesh/knurl/subdivision.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * subdivision.ts — 自适应边细分,从 stlTexturizer/js/subdivision.js 移植为 TS。\n *\n * 细分直到每条边 ≤ maxEdgeLength。\n *\n * 关键特性:\n * - toIndexed (export path): 锐边分裂 — 同位置但法线夹角 > 30° 的顶点分开存储\n * - 确保水密性\n *\n * 管线:\n * toIndexed(geometry) → 索引化 + 顶点去重 + 锐边分裂\n * 循环细分:标记长边 → 按标记数量分裂三角形\n * toNonIndexed(verts, indices) → 输出 non-indexed BufferGeometry\n *\n * Bug 修复记录 (2026-07-22):\n * 问题: 检测到 knurl 后的 mesh 出现 NaN 值和错误 bounds\n * (bounds 从 [-0.5, 0.5] 变成 [-17, 17],且 hasNaN: true)\n *\n * 根因分析:\n * 1. box_boss.3mf 是 indexed geometry (530 vertices, 1548 indices)\n * 2. toIndexed() 函数假设输入是 non-indexed (flat triangles)\n * 3. 当传入 indexed geometry 时,toIndexed() 错误处理顶点数据:\n * - n = posAttr.count = 530 (顶点数)\n * - 但代码按 triangle count = n/3 = 176 处理\n * - 导致顶点索引越界,读取错误位置的数据\n * 4. 细分后顶点位置完全错误,进而导致 displacement 计算产生 NaN\n *\n * 修复方案:\n * 在 subdivide() 入口添加 indexed → non-indexed 转换:\n * if (geometry.index) { workingGeo = geometry.toNonIndexed() }\n *\n * 验证:\n * - E2E 测试通过:hasNaN: false, bounds 正确\n * - 原始 bounds [0,0,0]~[150,120,90] → knurl 后 [-0.5,-0.5,0]~[150.5,120.5,90.5]\n */\n\nimport * as THREE from 'three'\nimport { QuantizedPointMap } from './meshIndex'\n\n// 10μm 顶点去重网格\nconst QUANTISE = 1e5\n// 安全上限\nconst SAFETY_CAP =\n typeof navigator !== 'undefined' &&\n (navigator as Navigator & { deviceMemory?: number }).deviceMemory !== undefined &&\n (navigator as Navigator & { deviceMemory?: number }).deviceMemory! >= 8\n ? 32_000_000\n : 16_000_000\n\n// 锐边角度阈值(度)— 法线夹角超过此值的顶点在索引化时分裂\nconst SHARP_ANGLE_DEG = 30\nconst SHARP_COS = Math.cos(SHARP_ANGLE_DEG * Math.PI / 180)\n\n// ── 可增长类型化顶点存储 ──\n\ninterface VertStore {\n cap: number\n count: number\n pos: Float64Array\n nrm: Float64Array\n wgt: Float64Array | null\n canon: Int32Array | null // 规范位置 ID(准确模式)\n grow(): void\n}\n\nfunction makeVertStore(initialCap: number, hasWeights: boolean, hasCanon: boolean): VertStore {\n return {\n cap: initialCap,\n count: 0,\n pos: new Float64Array(initialCap * 3),\n nrm: new Float64Array(initialCap * 3),\n wgt: hasWeights ? new Float64Array(initialCap) : null,\n canon: hasCanon ? new Int32Array(initialCap) : null,\n grow() {\n this.cap *= 2\n const np = new Float64Array(this.cap * 3)\n np.set(this.pos)\n this.pos = np\n const nn = new Float64Array(this.cap * 3)\n nn.set(this.nrm)\n this.nrm = nn\n if (this.wgt) {\n const nw = new Float64Array(this.cap)\n nw.set(this.wgt)\n this.wgt = nw\n }\n if (this.canon) {\n const nc = new Int32Array(this.cap)\n nc.set(this.canon)\n this.canon = nc\n }\n },\n }\n}\n\n// ── 公共入口 ──\n\n/**\n * Adaptively subdivide a geometry until every edge is ≤ maxEdgeLength.\n * Indexed inputs are expanded to non-indexed form first; sharp edges are\n * split at vertices whose face-normal angle exceeds the threshold so each\n * surface keeps its own normal direction and the result stays watertight.\n * Faces marked by `faceWeights` are excluded from refinement.\n *\n * @param geometry - the source geometry (position attribute; may be indexed).\n * @param maxEdgeLength - maximum allowed edge length in millimeters.\n * @param onProgress - optional callback receiving progress, triangle count, and longest edge.\n * @param faceWeights - optional per-face exclusion weights (non-indexed triangle soup layout).\n * @returns the subdivided non-indexed geometry and whether the safety cap was reached.\n */\nexport async function subdivide(\n geometry: THREE.BufferGeometry,\n maxEdgeLength: number,\n onProgress?: (p: number, triCount: number, longestEdge: number) => void,\n faceWeights: Float32Array | null = null,\n): Promise<{\n geometry: THREE.BufferGeometry\n safetyCapHit: boolean\n}> {\n // 确保 geometry 是 non-indexed(toIndexed 假设输入是 flat 的)\n let workingGeo = geometry\n if (geometry.index) {\n workingGeo = geometry.toNonIndexed()\n }\n\n // 在 toIndexed 之前推导每面排除标记\n let initialFaceExcluded: Uint8Array | null = null\n if (faceWeights) {\n const triCount = faceWeights.length / 3\n initialFaceExcluded = new Uint8Array(triCount)\n for (let i = 0; i < triCount; i++) {\n if (faceWeights[i * 3] > 0.99) initialFaceExcluded[i] = 1\n }\n }\n\n // 使用准确模式(带锐边分裂的 toIndexed)\n const { verts, indices, posCanonMap } = toIndexed(workingGeo, faceWeights)\n\n const maxIterations = 12\n let currentIndices = indices\n let currentFaceExcluded = initialFaceExcluded\n let safetyCapHit = false\n\n for (let iter = 0; iter < maxIterations; iter++) {\n const triCount = currentIndices.length / 3\n if (triCount >= SAFETY_CAP) {\n safetyCapHit = true\n break\n }\n\n const { newIndices, newFaceExcluded, changed, capped } = subdividePass(\n verts,\n currentIndices,\n maxEdgeLength,\n SAFETY_CAP,\n currentFaceExcluded,\n posCanonMap,\n )\n currentIndices = newIndices\n if (newFaceExcluded) currentFaceExcluded = newFaceExcluded\n\n if (capped || newIndices.length / 3 >= SAFETY_CAP) safetyCapHit = true\n\n const positions = verts.pos\n let maxEdgeLenSq = 0\n for (let t = 0; t < currentIndices.length; t += 3) {\n const a = currentIndices[t],\n b = currentIndices[t + 1],\n c = currentIndices[t + 2]\n const ab = edgeLenSq(positions, a, b)\n const bc = edgeLenSq(positions, b, c)\n const ca = edgeLenSq(positions, c, a)\n if (ab > maxEdgeLenSq) maxEdgeLenSq = ab\n if (bc > maxEdgeLenSq) maxEdgeLenSq = bc\n if (ca > maxEdgeLenSq) maxEdgeLenSq = ca\n }\n const longestEdge = Math.sqrt(maxEdgeLenSq)\n\n const newTriCount = newIndices.length / 3\n if (onProgress) onProgress(Math.min(0.95, (iter + 1) / maxIterations), newTriCount, longestEdge)\n await new Promise((r) => setTimeout(r, 0))\n if (!changed || safetyCapHit) break\n }\n\n return {\n geometry: toNonIndexed(verts, currentIndices, currentFaceExcluded),\n safetyCapHit,\n }\n}\n\n// ── 一次细分 pass ──\n\nfunction subdividePass(\n verts: VertStore,\n indices: Uint32Array,\n maxEdgeLength: number,\n safetyCap: number,\n faceExcluded: Uint8Array | null = null,\n posCanonMap: QuantizedPointMap | null = null,\n): {\n newIndices: Uint32Array\n newFaceExcluded: Uint8Array | null\n changed: boolean\n capped?: boolean\n} {\n const maxSq = maxEdgeLength * maxEdgeLength\n const midCache = new QuantizedPointMap(1, 1 << 16)\n const positions = verts.pos\n const canonIdx = verts.canon\n\n const splitEdges = new QuantizedPointMap(1, 1 << 16)\n const markEdge = (a: number, b: number) => {\n const u = canonIdx ? canonIdx[a] : a,\n v = canonIdx ? canonIdx[b] : b\n if (u < v) splitEdges.getOrSet(u, v, 0, 1)\n else splitEdges.getOrSet(v, u, 0, 1)\n }\n const isMarked = (a: number, b: number) => {\n const u = canonIdx ? canonIdx[a] : a,\n v = canonIdx ? canonIdx[b] : b\n return (u < v ? splitEdges.get(u, v, 0) : splitEdges.get(v, u, 0)) !== -1\n }\n\n // Step 1: 标记需要分裂的边\n for (let t = 0; t < indices.length; t += 3) {\n if (faceExcluded && faceExcluded[t / 3]) continue\n const a = indices[t],\n b = indices[t + 1],\n c = indices[t + 2]\n if (edgeLenSq(positions, a, b) > maxSq) markEdge(a, b)\n if (edgeLenSq(positions, b, c) > maxSq) markEdge(b, c)\n if (edgeLenSq(positions, c, a) > maxSq) markEdge(c, a)\n }\n\n if (splitEdges.size === 0)\n return { newIndices: indices, newFaceExcluded: faceExcluded, changed: false }\n\n // Step 1.5: 预测分裂后三角形数量\n let predictedTris = 0\n for (let t = 0; t < indices.length; t += 3) {\n const a = indices[t],\n b = indices[t + 1],\n c = indices[t + 2]\n const sAB = isMarked(a, b)\n const sBC = isMarked(b, c)\n const sCA = isMarked(c, a)\n const n = (sAB ? 1 : 0) + (sBC ? 1 : 0) + (sCA ? 1 : 0)\n predictedTris += n === 0 ? 1 : n + 1\n }\n if (predictedTris > safetyCap) {\n return { newIndices: indices, newFaceExcluded: faceExcluded, changed: false, capped: true }\n }\n\n // Step 2: 重建索引列表\n const nextIndices = new Uint32Array(predictedTris * 3)\n const nextFaceExcluded = faceExcluded ? new Uint8Array(predictedTris) : null\n let wi = 0\n let fi = 0\n\n for (let t = 0; t < indices.length; t += 3) {\n const a = indices[t],\n b = indices[t + 1],\n c = indices[t + 2]\n const fIdx = t / 3\n const excl = faceExcluded ? faceExcluded[fIdx] : 0\n const sAB = isMarked(a, b)\n const sBC = isMarked(b, c)\n const sCA = isMarked(c, a)\n const n = (sAB ? 1 : 0) + (sBC ? 1 : 0) + (sCA ? 1 : 0)\n\n if (n === 0) {\n nextIndices[wi++] = a\n nextIndices[wi++] = b\n nextIndices[wi++] = c\n if (nextFaceExcluded) nextFaceExcluded[fi] = excl\n fi++\n } else if (n === 3) {\n const mAB = getMidpoint(verts, midCache, a, b, posCanonMap)\n const mBC = getMidpoint(verts, midCache, b, c, posCanonMap)\n const mCA = getMidpoint(verts, midCache, c, a, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = mAB\n nextIndices[wi++] = mCA\n nextIndices[wi++] = mAB\n nextIndices[wi++] = b\n nextIndices[wi++] = mBC\n nextIndices[wi++] = mCA\n nextIndices[wi++] = mBC\n nextIndices[wi++] = c\n nextIndices[wi++] = mAB\n nextIndices[wi++] = mBC\n nextIndices[wi++] = mCA\n for (let k = 0; k < 4; k++) {\n if (nextFaceExcluded) nextFaceExcluded[fi] = excl\n fi++\n }\n } else if (n === 1) {\n if (sAB) {\n const m = getMidpoint(verts, midCache, a, b, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = m\n nextIndices[wi++] = c\n nextIndices[wi++] = m\n nextIndices[wi++] = b\n nextIndices[wi++] = c\n } else if (sBC) {\n const m = getMidpoint(verts, midCache, b, c, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = b\n nextIndices[wi++] = m\n nextIndices[wi++] = a\n nextIndices[wi++] = m\n nextIndices[wi++] = c\n } else {\n const m = getMidpoint(verts, midCache, c, a, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = b\n nextIndices[wi++] = m\n nextIndices[wi++] = m\n nextIndices[wi++] = b\n nextIndices[wi++] = c\n }\n for (let k = 0; k < 2; k++) {\n if (nextFaceExcluded) nextFaceExcluded[fi] = excl\n fi++\n }\n } else {\n // n === 2: 3 sub-triangles, fan from the untouched-edge vertex\n if (!sAB) {\n // sBC + sCA: fan from C\n const mBC = getMidpoint(verts, midCache, b, c, posCanonMap)\n const mCA = getMidpoint(verts, midCache, c, a, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = b\n nextIndices[wi++] = mBC\n nextIndices[wi++] = a\n nextIndices[wi++] = mBC\n nextIndices[wi++] = mCA\n nextIndices[wi++] = c\n nextIndices[wi++] = mCA\n nextIndices[wi++] = mBC\n } else if (!sBC) {\n // sAB + sCA: fan from A\n const mAB = getMidpoint(verts, midCache, a, b, posCanonMap)\n const mCA = getMidpoint(verts, midCache, c, a, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = mAB\n nextIndices[wi++] = mCA\n nextIndices[wi++] = mAB\n nextIndices[wi++] = b\n nextIndices[wi++] = c\n nextIndices[wi++] = mAB\n nextIndices[wi++] = c\n nextIndices[wi++] = mCA\n } else {\n // sAB + sBC: fan from B\n const mAB = getMidpoint(verts, midCache, a, b, posCanonMap)\n const mBC = getMidpoint(verts, midCache, b, c, posCanonMap)\n nextIndices[wi++] = b\n nextIndices[wi++] = mBC\n nextIndices[wi++] = mAB\n nextIndices[wi++] = a\n nextIndices[wi++] = mAB\n nextIndices[wi++] = mBC\n nextIndices[wi++] = a\n nextIndices[wi++] = mBC\n nextIndices[wi++] = c\n }\n for (let k = 0; k < 3; k++) {\n if (nextFaceExcluded) nextFaceExcluded[fi] = excl\n fi++\n }\n }\n }\n\n return { newIndices: nextIndices, newFaceExcluded: nextFaceExcluded, changed: true }\n}\n\n// ── 辅助函数 ──\n\nfunction edgeLenSq(pos: Float64Array, a: number, b: number): number {\n const dx = pos[a * 3] - pos[b * 3]\n const dy = pos[a * 3 + 1] - pos[b * 3 + 1]\n const dz = pos[a * 3 + 2] - pos[b * 3 + 2]\n return dx * dx + dy * dy + dz * dz\n}\n\nfunction getMidpoint(\n verts: VertStore,\n cache: QuantizedPointMap,\n a: number,\n b: number,\n posCanonMap: QuantizedPointMap | null,\n): number {\n const lo = a < b ? a : b,\n hi = a < b ? b : a\n const cached = cache.get(lo, hi, 0)\n if (cached !== -1) return cached\n\n const pos = verts.pos,\n nrm = verts.nrm\n\n const mx = (pos[a * 3] + pos[b * 3]) / 2\n const my = (pos[a * 3 + 1] + pos[b * 3 + 1]) / 2\n const mz = (pos[a * 3 + 2] + pos[b * 3 + 2]) / 2\n\n const nx = nrm[a * 3] + nrm[b * 3]\n const ny = nrm[a * 3 + 1] + nrm[b * 3 + 1]\n const nz = nrm[a * 3 + 2] + nrm[b * 3 + 2]\n const nl = Math.sqrt(nx * nx + ny * ny + nz * nz) || 1\n\n const idx = verts.count\n if (idx === verts.cap) verts.grow()\n verts.pos[idx * 3] = mx\n verts.pos[idx * 3 + 1] = my\n verts.pos[idx * 3 + 2] = mz\n verts.nrm[idx * 3] = nx / nl\n verts.nrm[idx * 3 + 1] = ny / nl\n verts.nrm[idx * 3 + 2] = nz / nl\n if (verts.wgt) verts.wgt[idx] = (verts.wgt[a] + verts.wgt[b]) / 2\n // 维护规范位置 ID\n if (verts.canon && posCanonMap) {\n verts.canon[idx] = posCanonMap.getOrSet(mx, my, mz, idx)\n }\n verts.count = idx + 1\n\n cache.getOrSet(lo, hi, 0, idx)\n return idx\n}\n\n// ── 准确模式:非 indexed → indexed(带锐边分裂) ──\n//\n// 关键:同一位置但法线夹角 > SHARP_ANGLE_DEG 的顶点会被分裂成不同的 indexed vertex。\n// 这确保立方体的每个面保持独立的法线方向,位移后不会产生破面。\n\ninterface ClusterInfo {\n idx: number\n fnU: [number, number, number] // 面法线单位向量(运行平均值)\n}\n\nfunction toIndexed(\n geometry: THREE.BufferGeometry,\n nonIndexedWeights: Float32Array | null = null,\n): { verts: VertStore; indices: Uint32Array; posCanonMap: QuantizedPointMap } {\n const posAttr = geometry.attributes.position\n const n = posAttr.count\n\n // 预计算每个面的法线(单位 + 原始叉积)\n const faceNrmUnit = new Float32Array(n * 3)\n const faceNrmRaw = new Float32Array(n * 3)\n for (let t = 0; t < n; t += 3) {\n const ax = posAttr.getX(t),\n ay = posAttr.getY(t),\n az = posAttr.getZ(t)\n const bx = posAttr.getX(t + 1),\n by = posAttr.getY(t + 1),\n bz = posAttr.getZ(t + 1)\n const cx = posAttr.getX(t + 2),\n cy = posAttr.getY(t + 2),\n cz = posAttr.getZ(t + 2)\n const e1x = bx - ax,\n e1y = by - ay,\n e1z = bz - az\n const e2x = cx - ax,\n e2y = cy - ay,\n e2z = cz - az\n const rx = e1y * e2z - e1z * e2y\n const ry = e1z * e2x - e1x * e2z\n const rz = e1x * e2y - e1y * e2x\n const len = Math.sqrt(rx * rx + ry * ry + rz * rz) || 1\n const ux = rx / len,\n uy = ry / len,\n uz = rz / len\n for (let v = 0; v < 3; v++) {\n faceNrmUnit[(t + v) * 3] = ux\n faceNrmUnit[(t + v) * 3 + 1] = uy\n faceNrmUnit[(t + v) * 3 + 2] = uz\n faceNrmRaw[(t + v) * 3] = rx\n faceNrmRaw[(t + v) * 3 + 1] = ry\n faceNrmRaw[(t + v) * 3 + 2] = rz\n }\n }\n\n const indices = new Uint32Array(n)\n const verts = makeVertStore(Math.max(16, Math.min(1 << 16, n)), !!nonIndexedWeights, true)\n // position → first vertex idx at that position (canonical ID)\n const posCanonMap = new QuantizedPointMap(QUANTISE, Math.min(n, 1 << 22))\n // canonical ID → cluster list at that position\n const clustersByCanon = new Map<number, ClusterInfo[]>()\n\n for (let i = 0; i < n; i++) {\n const px = posAttr.getX(i)\n const py = posAttr.getY(i)\n const pz = posAttr.getZ(i)\n const fnUx = faceNrmUnit[i * 3],\n fnUy = faceNrmUnit[i * 3 + 1],\n fnUz = faceNrmUnit[i * 3 + 2]\n const fnRx = faceNrmRaw[i * 3],\n fnRy = faceNrmRaw[i * 3 + 1],\n fnRz = faceNrmRaw[i * 3 + 2]\n\n // 第一个到达此位置的顶点成为 canonical ID\n const canonId = posCanonMap.getOrSet(px, py, pz, verts.count)\n const clusters = posCanonMap.inserted ? undefined : clustersByCanon.get(canonId)\n\n if (clusters) {\n let matched = false\n for (const cl of clusters) {\n const dot = cl.fnU[0] * fnUx + cl.fnU[1] * fnUy + cl.fnU[2] * fnUz\n if (dot >= SHARP_COS) {\n // 同一 smooth group — 累加面积加权法线\n const idx = cl.idx\n verts.nrm[idx * 3] += fnRx\n verts.nrm[idx * 3 + 1] += fnRy\n verts.nrm[idx * 3 + 2] += fnRz\n if (verts.wgt && nonIndexedWeights && nonIndexedWeights[i] > verts.wgt[idx]) {\n verts.wgt[idx] = nonIndexedWeights[i]\n }\n // 更新 cluster 代表法线为运行平均值\n cl.fnU[0] += fnUx\n cl.fnU[1] += fnUy\n cl.fnU[2] += fnUz\n const rl =\n Math.sqrt(cl.fnU[0] * cl.fnU[0] + cl.fnU[1] * cl.fnU[1] + cl.fnU[2] * cl.fnU[2]) || 1\n cl.fnU[0] /= rl\n cl.fnU[1] /= rl\n cl.fnU[2] /= rl\n indices[i] = idx\n matched = true\n break\n }\n }\n if (!matched) {\n // 此位置的新 cluster(锐边分裂)\n const idx = verts.count\n if (idx === verts.cap) verts.grow()\n verts.pos[idx * 3] = px\n verts.pos[idx * 3 + 1] = py\n verts.pos[idx * 3 + 2] = pz\n verts.nrm[idx * 3] = fnRx\n verts.nrm[idx * 3 + 1] = fnRy\n verts.nrm[idx * 3 + 2] = fnRz\n if (verts.wgt && nonIndexedWeights) verts.wgt[idx] = nonIndexedWeights[i]\n if (verts.canon) verts.canon[idx] = canonId\n verts.count++\n clusters.push({ idx, fnU: [fnUx, fnUy, fnUz] })\n indices[i] = idx\n }\n } else {\n // 此位置的第一个顶点\n const idx = verts.count // === canonId\n if (idx === verts.cap) verts.grow()\n verts.pos[idx * 3] = px\n verts.pos[idx * 3 + 1] = py\n verts.pos[idx * 3 + 2] = pz\n verts.nrm[idx * 3] = fnRx\n verts.nrm[idx * 3 + 1] = fnRy\n verts.nrm[idx * 3 + 2] = fnRz\n if (verts.wgt && nonIndexedWeights) verts.wgt[idx] = nonIndexedWeights[i]\n if (verts.canon) verts.canon[idx] = canonId\n verts.count++\n clustersByCanon.set(canonId, [{ idx, fnU: [fnUx, fnUy, fnUz] }])\n indices[i] = idx\n }\n }\n\n normalizeStoreNormals(verts)\n return { verts, indices, posCanonMap }\n}\n\nfunction normalizeStoreNormals(verts: VertStore): void {\n const nrm = verts.nrm\n for (let i = 0; i < verts.count; i++) {\n const nx = nrm[i * 3]\n const ny = nrm[i * 3 + 1]\n const nz = nrm[i * 3 + 2]\n const len = Math.sqrt(nx * nx + ny * ny + nz * nz) || 1\n nrm[i * 3] = nx / len\n nrm[i * 3 + 1] = ny / len\n nrm[i * 3 + 2] = nz / len\n }\n}\n\n// ── Indexed → non-indexed ──\n\nfunction toNonIndexed(\n verts: VertStore,\n indices: Uint32Array,\n faceExcluded: Uint8Array | null = null,\n): THREE.BufferGeometry {\n const positions = verts.pos,\n normals = verts.nrm,\n weights = verts.wgt\n const triCount = indices.length / 3\n const posArray = new Float32Array(triCount * 9)\n const nrmArray = new Float32Array(triCount * 9)\n const wgtArray = faceExcluded || weights ? new Float32Array(triCount * 3) : null\n\n for (let t = 0; t < triCount; t++) {\n const faceW = faceExcluded ? (faceExcluded[t] ? 1.0 : 0.0) : null\n for (let v = 0; v < 3; v++) {\n const vidx = indices[t * 3 + v]\n posArray[t * 9 + v * 3] = positions[vidx * 3]\n posArray[t * 9 + v * 3 + 1] = positions[vidx * 3 + 1]\n posArray[t * 9 + v * 3 + 2] = positions[vidx * 3 + 2]\n\n nrmArray[t * 9 + v * 3] = normals[vidx * 3]\n nrmArray[t * 9 + v * 3 + 1] = normals[vidx * 3 + 1]\n nrmArray[t * 9 + v * 3 + 2] = normals[vidx * 3 + 2]\n\n if (wgtArray) wgtArray[t * 3 + v] = faceW !== null ? faceW : weights![vidx]\n }\n }\n\n const geo = new THREE.BufferGeometry()\n geo.setAttribute('position', new THREE.BufferAttribute(posArray, 3))\n geo.setAttribute('normal', new THREE.BufferAttribute(nrmArray, 3))\n if (wgtArray) geo.setAttribute('excludeWeight', new THREE.BufferAttribute(wgtArray, 1))\n return geo\n}\n"]}
|
|
1
|
+
{"version":3,"file":"subdivision.js","sourceRoot":"","sources":["../../../src/mesh/knurl/subdivision.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * subdivision.ts — 自适应边细分,从 stlTexturizer/js/subdivision.js 移植为 TS。\n *\n * 细分直到每条边 ≤ maxEdgeLength。\n *\n * 关键特性:\n * - toIndexed (export path): 锐边分裂 — 同位置但法线夹角 > 30° 的顶点分开存储\n * - 确保水密性\n *\n * 管线:\n * toIndexed(geometry) → 索引化 + 顶点去重 + 锐边分裂\n * 循环细分:标记长边 → 按标记数量分裂三角形\n * toNonIndexed(verts, indices) → 输出 non-indexed BufferGeometry\n *\n * Bug 修复记录 (2026-07-22):\n * 问题: 检测到 knurl 后的 mesh 出现 NaN 值和错误 bounds\n * (bounds 从 [-0.5, 0.5] 变成 [-17, 17],且 hasNaN: true)\n *\n * 根因分析:\n * 1. box_boss.3mf 是 indexed geometry (530 vertices, 1548 indices)\n * 2. toIndexed() 函数假设输入是 non-indexed (flat triangles)\n * 3. 当传入 indexed geometry 时,toIndexed() 错误处理顶点数据:\n * - n = posAttr.count = 530 (顶点数)\n * - 但代码按 triangle count = n/3 = 176 处理\n * - 导致顶点索引越界,读取错误位置的数据\n * 4. 细分后顶点位置完全错误,进而导致 displacement 计算产生 NaN\n *\n * 修复方案:\n * 在 subdivide() 入口添加 indexed → non-indexed 转换:\n * if (geometry.index) { workingGeo = geometry.toNonIndexed() }\n *\n * 验证:\n * - E2E 测试通过:hasNaN: false, bounds 正确\n * - 原始 bounds [0,0,0]~[150,120,90] → knurl 后 [-0.5,-0.5,0]~[150.5,120.5,90.5]\n */\n\nimport type { Shape } from '../types'\nimport { toNonIndexed as shapeToNonIndexed } from '../meshdata/ops'\nimport { QuantizedPointMap } from './meshIndex'\n\n// 10μm 顶点去重网格\nconst QUANTISE = 1e5\n// 安全上限\nconst SAFETY_CAP =\n typeof navigator !== 'undefined' &&\n (navigator as Navigator & { deviceMemory?: number }).deviceMemory !== undefined &&\n (navigator as Navigator & { deviceMemory?: number }).deviceMemory! >= 8\n ? 32_000_000\n : 16_000_000\n\n// 锐边角度阈值(度)— 法线夹角超过此值的顶点在索引化时分裂\nconst SHARP_ANGLE_DEG = 30\nconst SHARP_COS = Math.cos(SHARP_ANGLE_DEG * Math.PI / 180)\n\n// ── 可增长类型化顶点存储 ──\n\ninterface VertStore {\n cap: number\n count: number\n pos: Float64Array\n nrm: Float64Array\n wgt: Float64Array | null\n canon: Int32Array | null // 规范位置 ID(准确模式)\n grow(): void\n}\n\nfunction makeVertStore(initialCap: number, hasWeights: boolean, hasCanon: boolean): VertStore {\n return {\n cap: initialCap,\n count: 0,\n pos: new Float64Array(initialCap * 3),\n nrm: new Float64Array(initialCap * 3),\n wgt: hasWeights ? new Float64Array(initialCap) : null,\n canon: hasCanon ? new Int32Array(initialCap) : null,\n grow() {\n this.cap *= 2\n const np = new Float64Array(this.cap * 3)\n np.set(this.pos)\n this.pos = np\n const nn = new Float64Array(this.cap * 3)\n nn.set(this.nrm)\n this.nrm = nn\n if (this.wgt) {\n const nw = new Float64Array(this.cap)\n nw.set(this.wgt)\n this.wgt = nw\n }\n if (this.canon) {\n const nc = new Int32Array(this.cap)\n nc.set(this.canon)\n this.canon = nc\n }\n },\n }\n}\n\n// ── 公共入口 ──\n\n/**\n * Adaptively subdivide a geometry until every edge is ≤ maxEdgeLength.\n * Indexed inputs are expanded to non-indexed form first; sharp edges are\n * split at vertices whose face-normal angle exceeds the threshold so each\n * surface keeps its own normal direction and the result stays watertight.\n * Faces marked by `faceWeights` are excluded from refinement.\n *\n * @param geometry - the source geometry (position attribute; may be indexed).\n * @param maxEdgeLength - maximum allowed edge length in millimeters.\n * @param onProgress - optional callback receiving progress, triangle count, and longest edge.\n * @param faceWeights - optional per-face exclusion weights (non-indexed triangle soup layout).\n * @returns the subdivided non-indexed geometry and whether the safety cap was reached.\n */\nexport async function subdivide(\n geometry: Shape,\n maxEdgeLength: number,\n onProgress?: (p: number, triCount: number, longestEdge: number) => void,\n faceWeights: Float32Array | null = null,\n): Promise<{\n geometry: Shape\n safetyCapHit: boolean\n}> {\n // 确保 geometry 是 non-indexed(toIndexed 假设输入是 flat 的)\n let workingGeo: Shape = geometry\n if (geometry.indices.length > 0) {\n const ni = shapeToNonIndexed(geometry)\n workingGeo = { positions: ni.positions, indices: ni.indices }\n }\n\n // 在 toIndexed 之前推导每面排除标记\n let initialFaceExcluded: Uint8Array | null = null\n if (faceWeights) {\n const triCount = faceWeights.length / 3\n initialFaceExcluded = new Uint8Array(triCount)\n for (let i = 0; i < triCount; i++) {\n if (faceWeights[i * 3] > 0.99) initialFaceExcluded[i] = 1\n }\n }\n\n // 使用准确模式(带锐边分裂的 toIndexed)\n const { verts, indices, posCanonMap } = toIndexed(workingGeo, faceWeights)\n\n const maxIterations = 12\n let currentIndices = indices\n let currentFaceExcluded = initialFaceExcluded\n let safetyCapHit = false\n\n for (let iter = 0; iter < maxIterations; iter++) {\n const triCount = currentIndices.length / 3\n if (triCount >= SAFETY_CAP) {\n safetyCapHit = true\n break\n }\n\n const { newIndices, newFaceExcluded, changed, capped } = subdividePass(\n verts,\n currentIndices,\n maxEdgeLength,\n SAFETY_CAP,\n currentFaceExcluded,\n posCanonMap,\n )\n currentIndices = newIndices\n if (newFaceExcluded) currentFaceExcluded = newFaceExcluded\n\n if (capped || newIndices.length / 3 >= SAFETY_CAP) safetyCapHit = true\n\n const positions = verts.pos\n let maxEdgeLenSq = 0\n for (let t = 0; t < currentIndices.length; t += 3) {\n const a = currentIndices[t],\n b = currentIndices[t + 1],\n c = currentIndices[t + 2]\n const ab = edgeLenSq(positions, a, b)\n const bc = edgeLenSq(positions, b, c)\n const ca = edgeLenSq(positions, c, a)\n if (ab > maxEdgeLenSq) maxEdgeLenSq = ab\n if (bc > maxEdgeLenSq) maxEdgeLenSq = bc\n if (ca > maxEdgeLenSq) maxEdgeLenSq = ca\n }\n const longestEdge = Math.sqrt(maxEdgeLenSq)\n\n const newTriCount = newIndices.length / 3\n if (onProgress) onProgress(Math.min(0.95, (iter + 1) / maxIterations), newTriCount, longestEdge)\n await new Promise((r) => setTimeout(r, 0))\n if (!changed || safetyCapHit) break\n }\n\n return {\n geometry: toNonIndexed(verts, currentIndices, currentFaceExcluded),\n safetyCapHit,\n }\n}\n\n// ── 一次细分 pass ──\n\nfunction subdividePass(\n verts: VertStore,\n indices: Uint32Array,\n maxEdgeLength: number,\n safetyCap: number,\n faceExcluded: Uint8Array | null = null,\n posCanonMap: QuantizedPointMap | null = null,\n): {\n newIndices: Uint32Array\n newFaceExcluded: Uint8Array | null\n changed: boolean\n capped?: boolean\n} {\n const maxSq = maxEdgeLength * maxEdgeLength\n const midCache = new QuantizedPointMap(1, 1 << 16)\n const positions = verts.pos\n const canonIdx = verts.canon\n\n const splitEdges = new QuantizedPointMap(1, 1 << 16)\n const markEdge = (a: number, b: number) => {\n const u = canonIdx ? canonIdx[a] : a,\n v = canonIdx ? canonIdx[b] : b\n if (u < v) splitEdges.getOrSet(u, v, 0, 1)\n else splitEdges.getOrSet(v, u, 0, 1)\n }\n const isMarked = (a: number, b: number) => {\n const u = canonIdx ? canonIdx[a] : a,\n v = canonIdx ? canonIdx[b] : b\n return (u < v ? splitEdges.get(u, v, 0) : splitEdges.get(v, u, 0)) !== -1\n }\n\n // Step 1: 标记需要分裂的边\n for (let t = 0; t < indices.length; t += 3) {\n if (faceExcluded && faceExcluded[t / 3]) continue\n const a = indices[t],\n b = indices[t + 1],\n c = indices[t + 2]\n if (edgeLenSq(positions, a, b) > maxSq) markEdge(a, b)\n if (edgeLenSq(positions, b, c) > maxSq) markEdge(b, c)\n if (edgeLenSq(positions, c, a) > maxSq) markEdge(c, a)\n }\n\n if (splitEdges.size === 0)\n return { newIndices: indices, newFaceExcluded: faceExcluded, changed: false }\n\n // Step 1.5: 预测分裂后三角形数量\n let predictedTris = 0\n for (let t = 0; t < indices.length; t += 3) {\n const a = indices[t],\n b = indices[t + 1],\n c = indices[t + 2]\n const sAB = isMarked(a, b)\n const sBC = isMarked(b, c)\n const sCA = isMarked(c, a)\n const n = (sAB ? 1 : 0) + (sBC ? 1 : 0) + (sCA ? 1 : 0)\n predictedTris += n === 0 ? 1 : n + 1\n }\n if (predictedTris > safetyCap) {\n return { newIndices: indices, newFaceExcluded: faceExcluded, changed: false, capped: true }\n }\n\n // Step 2: 重建索引列表\n const nextIndices = new Uint32Array(predictedTris * 3)\n const nextFaceExcluded = faceExcluded ? new Uint8Array(predictedTris) : null\n let wi = 0\n let fi = 0\n\n for (let t = 0; t < indices.length; t += 3) {\n const a = indices[t],\n b = indices[t + 1],\n c = indices[t + 2]\n const fIdx = t / 3\n const excl = faceExcluded ? faceExcluded[fIdx] : 0\n const sAB = isMarked(a, b)\n const sBC = isMarked(b, c)\n const sCA = isMarked(c, a)\n const n = (sAB ? 1 : 0) + (sBC ? 1 : 0) + (sCA ? 1 : 0)\n\n if (n === 0) {\n nextIndices[wi++] = a\n nextIndices[wi++] = b\n nextIndices[wi++] = c\n if (nextFaceExcluded) nextFaceExcluded[fi] = excl\n fi++\n } else if (n === 3) {\n const mAB = getMidpoint(verts, midCache, a, b, posCanonMap)\n const mBC = getMidpoint(verts, midCache, b, c, posCanonMap)\n const mCA = getMidpoint(verts, midCache, c, a, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = mAB\n nextIndices[wi++] = mCA\n nextIndices[wi++] = mAB\n nextIndices[wi++] = b\n nextIndices[wi++] = mBC\n nextIndices[wi++] = mCA\n nextIndices[wi++] = mBC\n nextIndices[wi++] = c\n nextIndices[wi++] = mAB\n nextIndices[wi++] = mBC\n nextIndices[wi++] = mCA\n for (let k = 0; k < 4; k++) {\n if (nextFaceExcluded) nextFaceExcluded[fi] = excl\n fi++\n }\n } else if (n === 1) {\n if (sAB) {\n const m = getMidpoint(verts, midCache, a, b, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = m\n nextIndices[wi++] = c\n nextIndices[wi++] = m\n nextIndices[wi++] = b\n nextIndices[wi++] = c\n } else if (sBC) {\n const m = getMidpoint(verts, midCache, b, c, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = b\n nextIndices[wi++] = m\n nextIndices[wi++] = a\n nextIndices[wi++] = m\n nextIndices[wi++] = c\n } else {\n const m = getMidpoint(verts, midCache, c, a, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = b\n nextIndices[wi++] = m\n nextIndices[wi++] = m\n nextIndices[wi++] = b\n nextIndices[wi++] = c\n }\n for (let k = 0; k < 2; k++) {\n if (nextFaceExcluded) nextFaceExcluded[fi] = excl\n fi++\n }\n } else {\n // n === 2: 3 sub-triangles, fan from the untouched-edge vertex\n if (!sAB) {\n // sBC + sCA: fan from C\n const mBC = getMidpoint(verts, midCache, b, c, posCanonMap)\n const mCA = getMidpoint(verts, midCache, c, a, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = b\n nextIndices[wi++] = mBC\n nextIndices[wi++] = a\n nextIndices[wi++] = mBC\n nextIndices[wi++] = mCA\n nextIndices[wi++] = c\n nextIndices[wi++] = mCA\n nextIndices[wi++] = mBC\n } else if (!sBC) {\n // sAB + sCA: fan from A\n const mAB = getMidpoint(verts, midCache, a, b, posCanonMap)\n const mCA = getMidpoint(verts, midCache, c, a, posCanonMap)\n nextIndices[wi++] = a\n nextIndices[wi++] = mAB\n nextIndices[wi++] = mCA\n nextIndices[wi++] = mAB\n nextIndices[wi++] = b\n nextIndices[wi++] = c\n nextIndices[wi++] = mAB\n nextIndices[wi++] = c\n nextIndices[wi++] = mCA\n } else {\n // sAB + sBC: fan from B\n const mAB = getMidpoint(verts, midCache, a, b, posCanonMap)\n const mBC = getMidpoint(verts, midCache, b, c, posCanonMap)\n nextIndices[wi++] = b\n nextIndices[wi++] = mBC\n nextIndices[wi++] = mAB\n nextIndices[wi++] = a\n nextIndices[wi++] = mAB\n nextIndices[wi++] = mBC\n nextIndices[wi++] = a\n nextIndices[wi++] = mBC\n nextIndices[wi++] = c\n }\n for (let k = 0; k < 3; k++) {\n if (nextFaceExcluded) nextFaceExcluded[fi] = excl\n fi++\n }\n }\n }\n\n return { newIndices: nextIndices, newFaceExcluded: nextFaceExcluded, changed: true }\n}\n\n// ── 辅助函数 ──\n\nfunction edgeLenSq(pos: Float64Array, a: number, b: number): number {\n const dx = pos[a * 3] - pos[b * 3]\n const dy = pos[a * 3 + 1] - pos[b * 3 + 1]\n const dz = pos[a * 3 + 2] - pos[b * 3 + 2]\n return dx * dx + dy * dy + dz * dz\n}\n\nfunction getMidpoint(\n verts: VertStore,\n cache: QuantizedPointMap,\n a: number,\n b: number,\n posCanonMap: QuantizedPointMap | null,\n): number {\n const lo = a < b ? a : b,\n hi = a < b ? b : a\n const cached = cache.get(lo, hi, 0)\n if (cached !== -1) return cached\n\n const pos = verts.pos,\n nrm = verts.nrm\n\n const mx = (pos[a * 3] + pos[b * 3]) / 2\n const my = (pos[a * 3 + 1] + pos[b * 3 + 1]) / 2\n const mz = (pos[a * 3 + 2] + pos[b * 3 + 2]) / 2\n\n const nx = nrm[a * 3] + nrm[b * 3]\n const ny = nrm[a * 3 + 1] + nrm[b * 3 + 1]\n const nz = nrm[a * 3 + 2] + nrm[b * 3 + 2]\n const nl = Math.sqrt(nx * nx + ny * ny + nz * nz) || 1\n\n const idx = verts.count\n if (idx === verts.cap) verts.grow()\n verts.pos[idx * 3] = mx\n verts.pos[idx * 3 + 1] = my\n verts.pos[idx * 3 + 2] = mz\n verts.nrm[idx * 3] = nx / nl\n verts.nrm[idx * 3 + 1] = ny / nl\n verts.nrm[idx * 3 + 2] = nz / nl\n if (verts.wgt) verts.wgt[idx] = (verts.wgt[a] + verts.wgt[b]) / 2\n // 维护规范位置 ID\n if (verts.canon && posCanonMap) {\n verts.canon[idx] = posCanonMap.getOrSet(mx, my, mz, idx)\n }\n verts.count = idx + 1\n\n cache.getOrSet(lo, hi, 0, idx)\n return idx\n}\n\n// ── 准确模式:非 indexed → indexed(带锐边分裂) ──\n//\n// 关键:同一位置但法线夹角 > SHARP_ANGLE_DEG 的顶点会被分裂成不同的 indexed vertex。\n// 这确保立方体的每个面保持独立的法线方向,位移后不会产生破面。\n\ninterface ClusterInfo {\n idx: number\n fnU: [number, number, number] // 面法线单位向量(运行平均值)\n}\n\nfunction toIndexed(\n geometry: Shape,\n nonIndexedWeights: Float32Array | null = null,\n): { verts: VertStore; indices: Uint32Array; posCanonMap: QuantizedPointMap } {\n const positions = geometry.positions\n const n = positions.length / 3\n\n // 预计算每个面的法线(单位 + 原始叉积)\n const faceNrmUnit = new Float32Array(n * 3)\n const faceNrmRaw = new Float32Array(n * 3)\n for (let t = 0; t < n; t += 3) {\n const ax = positions[t * 3],\n ay = positions[t * 3 + 1],\n az = positions[t * 3 + 2]\n const bx = positions[(t + 1) * 3],\n by = positions[(t + 1) * 3 + 1],\n bz = positions[(t + 1) * 3 + 2]\n const cx = positions[(t + 2) * 3],\n cy = positions[(t + 2) * 3 + 1],\n cz = positions[(t + 2) * 3 + 2]\n const e1x = bx - ax,\n e1y = by - ay,\n e1z = bz - az\n const e2x = cx - ax,\n e2y = cy - ay,\n e2z = cz - az\n const rx = e1y * e2z - e1z * e2y\n const ry = e1z * e2x - e1x * e2z\n const rz = e1x * e2y - e1y * e2x\n const len = Math.sqrt(rx * rx + ry * ry + rz * rz) || 1\n const ux = rx / len,\n uy = ry / len,\n uz = rz / len\n for (let v = 0; v < 3; v++) {\n faceNrmUnit[(t + v) * 3] = ux\n faceNrmUnit[(t + v) * 3 + 1] = uy\n faceNrmUnit[(t + v) * 3 + 2] = uz\n faceNrmRaw[(t + v) * 3] = rx\n faceNrmRaw[(t + v) * 3 + 1] = ry\n faceNrmRaw[(t + v) * 3 + 2] = rz\n }\n }\n\n const indices = new Uint32Array(n)\n const verts = makeVertStore(Math.max(16, Math.min(1 << 16, n)), !!nonIndexedWeights, true)\n // position → first vertex idx at that position (canonical ID)\n const posCanonMap = new QuantizedPointMap(QUANTISE, Math.min(n, 1 << 22))\n // canonical ID → cluster list at that position\n const clustersByCanon = new Map<number, ClusterInfo[]>()\n\n for (let i = 0; i < n; i++) {\n const px = positions[i * 3]\n const py = positions[i * 3 + 1]\n const pz = positions[i * 3 + 2]\n const fnUx = faceNrmUnit[i * 3],\n fnUy = faceNrmUnit[i * 3 + 1],\n fnUz = faceNrmUnit[i * 3 + 2]\n const fnRx = faceNrmRaw[i * 3],\n fnRy = faceNrmRaw[i * 3 + 1],\n fnRz = faceNrmRaw[i * 3 + 2]\n\n // 第一个到达此位置的顶点成为 canonical ID\n const canonId = posCanonMap.getOrSet(px, py, pz, verts.count)\n const clusters = posCanonMap.inserted ? undefined : clustersByCanon.get(canonId)\n\n if (clusters) {\n let matched = false\n for (const cl of clusters) {\n const dot = cl.fnU[0] * fnUx + cl.fnU[1] * fnUy + cl.fnU[2] * fnUz\n if (dot >= SHARP_COS) {\n // 同一 smooth group — 累加面积加权法线\n const idx = cl.idx\n verts.nrm[idx * 3] += fnRx\n verts.nrm[idx * 3 + 1] += fnRy\n verts.nrm[idx * 3 + 2] += fnRz\n if (verts.wgt && nonIndexedWeights && nonIndexedWeights[i] > verts.wgt[idx]) {\n verts.wgt[idx] = nonIndexedWeights[i]\n }\n // 更新 cluster 代表法线为运行平均值\n cl.fnU[0] += fnUx\n cl.fnU[1] += fnUy\n cl.fnU[2] += fnUz\n const rl =\n Math.sqrt(cl.fnU[0] * cl.fnU[0] + cl.fnU[1] * cl.fnU[1] + cl.fnU[2] * cl.fnU[2]) || 1\n cl.fnU[0] /= rl\n cl.fnU[1] /= rl\n cl.fnU[2] /= rl\n indices[i] = idx\n matched = true\n break\n }\n }\n if (!matched) {\n // 此位置的新 cluster(锐边分裂)\n const idx = verts.count\n if (idx === verts.cap) verts.grow()\n verts.pos[idx * 3] = px\n verts.pos[idx * 3 + 1] = py\n verts.pos[idx * 3 + 2] = pz\n verts.nrm[idx * 3] = fnRx\n verts.nrm[idx * 3 + 1] = fnRy\n verts.nrm[idx * 3 + 2] = fnRz\n if (verts.wgt && nonIndexedWeights) verts.wgt[idx] = nonIndexedWeights[i]\n if (verts.canon) verts.canon[idx] = canonId\n verts.count++\n clusters.push({ idx, fnU: [fnUx, fnUy, fnUz] })\n indices[i] = idx\n }\n } else {\n // 此位置的第一个顶点\n const idx = verts.count // === canonId\n if (idx === verts.cap) verts.grow()\n verts.pos[idx * 3] = px\n verts.pos[idx * 3 + 1] = py\n verts.pos[idx * 3 + 2] = pz\n verts.nrm[idx * 3] = fnRx\n verts.nrm[idx * 3 + 1] = fnRy\n verts.nrm[idx * 3 + 2] = fnRz\n if (verts.wgt && nonIndexedWeights) verts.wgt[idx] = nonIndexedWeights[i]\n if (verts.canon) verts.canon[idx] = canonId\n verts.count++\n clustersByCanon.set(canonId, [{ idx, fnU: [fnUx, fnUy, fnUz] }])\n indices[i] = idx\n }\n }\n\n normalizeStoreNormals(verts)\n return { verts, indices, posCanonMap }\n}\n\nfunction normalizeStoreNormals(verts: VertStore): void {\n const nrm = verts.nrm\n for (let i = 0; i < verts.count; i++) {\n const nx = nrm[i * 3]\n const ny = nrm[i * 3 + 1]\n const nz = nrm[i * 3 + 2]\n const len = Math.sqrt(nx * nx + ny * ny + nz * nz) || 1\n nrm[i * 3] = nx / len\n nrm[i * 3 + 1] = ny / len\n nrm[i * 3 + 2] = nz / len\n }\n}\n\n// ── Indexed → non-indexed ──\n\nfunction toNonIndexed(\n verts: VertStore,\n indices: Uint32Array,\n faceExcluded: Uint8Array | null = null,\n): Shape {\n const positions = verts.pos,\n normals = verts.nrm,\n weights = verts.wgt\n const triCount = indices.length / 3\n const posArray = new Float32Array(triCount * 9)\n const nrmArray = new Float32Array(triCount * 9)\n const wgtArray = faceExcluded || weights ? new Float32Array(triCount * 3) : null\n\n for (let t = 0; t < triCount; t++) {\n const faceW = faceExcluded ? (faceExcluded[t] ? 1.0 : 0.0) : null\n for (let v = 0; v < 3; v++) {\n const vidx = indices[t * 3 + v]\n posArray[t * 9 + v * 3] = positions[vidx * 3]\n posArray[t * 9 + v * 3 + 1] = positions[vidx * 3 + 1]\n posArray[t * 9 + v * 3 + 2] = positions[vidx * 3 + 2]\n\n nrmArray[t * 9 + v * 3] = normals[vidx * 3]\n nrmArray[t * 9 + v * 3 + 1] = normals[vidx * 3 + 1]\n nrmArray[t * 9 + v * 3 + 2] = normals[vidx * 3 + 2]\n\n if (wgtArray) wgtArray[t * 3 + v] = faceW !== null ? faceW : weights![vidx]\n }\n }\n\n const seqIndices = new Uint32Array(triCount * 3)\n for (let i = 0; i < seqIndices.length; i++) seqIndices[i] = i\n const geo: Shape = {\n positions: posArray,\n indices: seqIndices,\n normals: nrmArray,\n }\n if (wgtArray) (geo as Shape & { excludeWeight?: Float32Array }).excludeWeight = wgtArray\n return geo\n}\n"]}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* 在整个浏览器页面中,滚花纹理只应加载一次。
|
|
10
10
|
* 多个 CadRuntime 实例共享同一个纹理加载器是正确的行为。
|
|
11
11
|
*/
|
|
12
|
-
import
|
|
12
|
+
import type { Box3 } from '../../math3d/index.js';
|
|
13
13
|
/**
|
|
14
14
|
* Raw RGBA pixel data plus the pixel dimensions of a loaded texture.
|
|
15
15
|
*/
|
|
@@ -33,6 +33,6 @@ export declare function setKnurlTextureLoader(loader: (() => Promise<TextureData
|
|
|
33
33
|
export declare function loadKnurlingTexture(): Promise<TextureData | null>;
|
|
34
34
|
/** Dispose the knurl preview material; a no-op in the headless engine. */
|
|
35
35
|
export declare function disposeKnurlPreviewMaterial(): void;
|
|
36
|
-
/** Bounds type shared with the knurl preview path (a
|
|
37
|
-
export type KnurlPreviewBounds =
|
|
36
|
+
/** Bounds type shared with the knurl preview path (a math3d Box3). */
|
|
37
|
+
export type KnurlPreviewBounds = Box3;
|
|
38
38
|
//# sourceMappingURL=textureLoader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textureLoader.d.ts","sourceRoot":"","sources":["../../../src/mesh/knurl/textureLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"textureLoader.d.ts","sourceRoot":"","sources":["../../../src/mesh/knurl/textureLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAExC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,iBAAiB,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAKD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,CAAC,MAAM,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAE9F;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAOvE;AAED,0EAA0E;AAC1E,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAED,sEAAsE;AACtE,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textureLoader.js","sourceRoot":"","sources":["../../../src/mesh/knurl/textureLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,8BAA8B;AAC9B,IAAI,sBAAsB,GAA+C,IAAI,CAAA;AAE7E;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAkD;IACtF,sBAAsB,GAAG,MAAM,CAAA;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,IAAI,sBAAsB,EAAE,CAAC;QAC3B,OAAO,sBAAsB,EAAE,CAAA;IACjC,CAAC;IACD,yEAAyE;IACzE,yEAAyE;IACzE,OAAO,IAAI,CAAA;AACb,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,2BAA2B;IACzC,oBAAoB;AACtB,CAAC","sourcesContent":["/**\n * textureLoader — 滚花纹理加载器\n *\n * 浏览器环境:由 host 通过 setKnurlTextureLoader() 注入纹理加载器。\n * Node 环境:返回 null(由 TextureSampler port 提供纹理)。\n *\n * F5 设计意图说明:\n * _textureLoaderOverride 是环境级单例,不是实例级。\n * 在整个浏览器页面中,滚花纹理只应加载一次。\n * 多个 CadRuntime 实例共享同一个纹理加载器是正确的行为。\n */\n\nimport
|
|
1
|
+
{"version":3,"file":"textureLoader.js","sourceRoot":"","sources":["../../../src/mesh/knurl/textureLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,8BAA8B;AAC9B,IAAI,sBAAsB,GAA+C,IAAI,CAAA;AAE7E;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAkD;IACtF,sBAAsB,GAAG,MAAM,CAAA;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,IAAI,sBAAsB,EAAE,CAAC;QAC3B,OAAO,sBAAsB,EAAE,CAAA;IACjC,CAAC;IACD,yEAAyE;IACzE,yEAAyE;IACzE,OAAO,IAAI,CAAA;AACb,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,2BAA2B;IACzC,oBAAoB;AACtB,CAAC","sourcesContent":["/**\n * textureLoader — 滚花纹理加载器\n *\n * 浏览器环境:由 host 通过 setKnurlTextureLoader() 注入纹理加载器。\n * Node 环境:返回 null(由 TextureSampler port 提供纹理)。\n *\n * F5 设计意图说明:\n * _textureLoaderOverride 是环境级单例,不是实例级。\n * 在整个浏览器页面中,滚花纹理只应加载一次。\n * 多个 CadRuntime 实例共享同一个纹理加载器是正确的行为。\n */\n\nimport type { Box3 } from '../../math3d'\n\n/**\n * Raw RGBA pixel data plus the pixel dimensions of a loaded texture.\n */\nexport interface TextureData {\n data: Uint8ClampedArray\n width: number\n height: number\n}\n\n/** 纹理加载器覆盖函数(由浏览器 host 注入) */\nlet _textureLoaderOverride: (() => Promise<TextureData | null>) | null = null\n\n/**\n * Set the knurling texture loader (injected by the browser host at startup).\n *\n * @param loader - the loader to use, or null to clear the override.\n */\nexport function setKnurlTextureLoader(loader: (() => Promise<TextureData | null>) | null): void {\n _textureLoaderOverride = loader\n}\n\n/**\n * Load the knurling texture. Uses the injected host loader when present;\n * otherwise returns null (the texture is supplied through the port).\n *\n * @returns the texture data, or null when no loader is available.\n */\nexport async function loadKnurlingTexture(): Promise<TextureData | null> {\n if (_textureLoaderOverride) {\n return _textureLoaderOverride()\n }\n // In the faijs engine the texture is provided through the TextureSampler\n // port; this function only serves as a fallback when no override is set.\n return null\n}\n\n/** Dispose the knurl preview material; a no-op in the headless engine. */\nexport function disposeKnurlPreviewMaterial(): void {\n // no-op in headless\n}\n\n/** Bounds type shared with the knurl preview path (a math3d Box3). */\nexport type KnurlPreviewBounds = Box3\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* meshdata — core 自有的 mesh 容器与参数化几何(three `BufferGeometry` 与
|
|
3
|
+
* `Box/Cylinder/Cone/SphereGeometry` 的替代)。
|
|
4
|
+
*
|
|
5
|
+
* 纯函数集作用于对外类型 `Shape`(不挂方法);参数化几何逐位复刻 three r162
|
|
6
|
+
* 的顶点/索引顺序以保 `faceRanges` 面序契约(MIT License, © 2010-2024 three.js
|
|
7
|
+
* authors)。与既有 `mesh/query.ts`(boundingBox/volume 等查询)职责不重叠。
|
|
8
|
+
*/
|
|
9
|
+
export { weldMesh, type MeshData } from './weld.js';
|
|
10
|
+
export { boxGeometry, cylinderGeometry, coneGeometry, sphereGeometry, type GeoData, } from './parametric.js';
|
|
11
|
+
export { shapeFromMesh, toNonIndexed, transformShape, translateShape, computeVertexNormals, mergeShapes, type MatrixLike, } from './ops.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mesh/meshdata/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAChD,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,KAAK,OAAO,GACb,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,WAAW,EACX,KAAK,UAAU,GAChB,MAAM,OAAO,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* meshdata — core 自有的 mesh 容器与参数化几何(three `BufferGeometry` 与
|
|
3
|
+
* `Box/Cylinder/Cone/SphereGeometry` 的替代)。
|
|
4
|
+
*
|
|
5
|
+
* 纯函数集作用于对外类型 `Shape`(不挂方法);参数化几何逐位复刻 three r162
|
|
6
|
+
* 的顶点/索引顺序以保 `faceRanges` 面序契约(MIT License, © 2010-2024 three.js
|
|
7
|
+
* authors)。与既有 `mesh/query.ts`(boundingBox/volume 等查询)职责不重叠。
|
|
8
|
+
*/
|
|
9
|
+
export { weldMesh } from './weld.js';
|
|
10
|
+
export { boxGeometry, cylinderGeometry, coneGeometry, sphereGeometry, } from './parametric.js';
|
|
11
|
+
export { shapeFromMesh, toNonIndexed, transformShape, translateShape, computeVertexNormals, mergeShapes, } from './ops.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mesh/meshdata/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAiB,MAAM,QAAQ,CAAA;AAChD,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,cAAc,GAEf,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,WAAW,GAEZ,MAAM,OAAO,CAAA","sourcesContent":["/**\r\n * meshdata — core 自有的 mesh 容器与参数化几何(three `BufferGeometry` 与\r\n * `Box/Cylinder/Cone/SphereGeometry` 的替代)。\r\n *\r\n * 纯函数集作用于对外类型 `Shape`(不挂方法);参数化几何逐位复刻 three r162\r\n * 的顶点/索引顺序以保 `faceRanges` 面序契约(MIT License, © 2010-2024 three.js\r\n * authors)。与既有 `mesh/query.ts`(boundingBox/volume 等查询)职责不重叠。\r\n */\r\n\r\nexport { weldMesh, type MeshData } from './weld'\r\nexport {\r\n boxGeometry,\r\n cylinderGeometry,\r\n coneGeometry,\r\n sphereGeometry,\r\n type GeoData,\r\n} from './parametric'\r\nexport {\r\n shapeFromMesh,\r\n toNonIndexed,\r\n transformShape,\r\n translateShape,\r\n computeVertexNormals,\r\n mergeShapes,\r\n type MatrixLike,\r\n} from './ops'"]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* meshdata/ops — 作用在 Shape / 原始数组上的纯函数几何操作(L1 容器操作)。
|
|
3
|
+
*
|
|
4
|
+
* 替代 three `BufferGeometry` 的少量方法面(`toNonIndexed`、`computeVertexNormals`、
|
|
5
|
+
* `applyMatrix4`/`translate`、`clone`、merge)——**纯函数集,不给对外 `Shape` 挂方法**
|
|
6
|
+
* (与设计 §3.3 一致)。不重复 `mesh/query.ts` 已有的 `boundingBox`/`volume` 等查询。
|
|
7
|
+
*/
|
|
8
|
+
import { type MatrixLike } from '../../math3d/index.js';
|
|
9
|
+
import type { Shape } from '../types.js';
|
|
10
|
+
import { type MeshData } from './weld.js';
|
|
11
|
+
export type { MatrixLike };
|
|
12
|
+
/**
|
|
13
|
+
* Weld raw positions+indices into a mesh Shape (same behaviour as the old
|
|
14
|
+
* `geoToManifoldMesh` on a position-only geometry).
|
|
15
|
+
* @param positions - flat position array (x, y, z, ...).
|
|
16
|
+
* @param indices - triangle index array into `positions`.
|
|
17
|
+
* @param extra - optional extra Shape fields to attach (e.g. `faceRanges`).
|
|
18
|
+
* @returns the welded Shape.
|
|
19
|
+
*/
|
|
20
|
+
export declare function shapeFromMesh(positions: ArrayLike<number>, indices: ArrayLike<number>, extra?: Partial<Shape>): Shape;
|
|
21
|
+
/**
|
|
22
|
+
* Expand an indexed Shape to non-indexed (each triangle gets its own vertices),
|
|
23
|
+
* mirroring three `BufferGeometry.toNonIndexed`.
|
|
24
|
+
* @param shape - the indexed shape.
|
|
25
|
+
* @returns a non-indexed copy of the shape.
|
|
26
|
+
*/
|
|
27
|
+
export declare function toNonIndexed(shape: Shape): MeshData;
|
|
28
|
+
/**
|
|
29
|
+
* Apply a 4x4 matrix to a Shape's vertices (bakes the transform).
|
|
30
|
+
* @param shape - the source shape.
|
|
31
|
+
* @param m - column-major 4x4 matrix.
|
|
32
|
+
* @returns a new shape with transformed vertices (indices/other fields preserved).
|
|
33
|
+
*/
|
|
34
|
+
export declare function transformShape(shape: Shape, m: MatrixLike): Shape;
|
|
35
|
+
/**
|
|
36
|
+
* Translate a Shape's vertices by (x, y, z).
|
|
37
|
+
* @param shape - the source shape.
|
|
38
|
+
* @param x - X offset.
|
|
39
|
+
* @param y - Y offset.
|
|
40
|
+
* @param z - Z offset.
|
|
41
|
+
* @returns a new shape with translated vertices.
|
|
42
|
+
*/
|
|
43
|
+
export declare function translateShape(shape: Shape, x: number, y: number, z?: number): Shape;
|
|
44
|
+
/**
|
|
45
|
+
* Compute per-vertex normals with three `BufferGeometry.computeVertexNormals`
|
|
46
|
+
* semantics (face normals averaged across shared vertices).
|
|
47
|
+
*
|
|
48
|
+
* **折边红线提醒**:在索引(共享顶点)几何上这会把棱边"磨圆"——core 的派生法线
|
|
49
|
+
* 一律走 `boolean/creased-normals.ts`(`deriveNormals`)。本函数只为替换 three 的
|
|
50
|
+
* **罕见**直调用点而保留,返回纯数据,不改变 Shape。
|
|
51
|
+
* @param shape - the source shape.
|
|
52
|
+
* @returns a Float32Array of per-vertex normals.
|
|
53
|
+
*/
|
|
54
|
+
export declare function computeVertexNormals(shape: Shape): Float32Array;
|
|
55
|
+
/**
|
|
56
|
+
* Merge several Shapes into one indexed Shape (position + index concatenation,
|
|
57
|
+
* mirroring the old `mergeBufferGeometries`).
|
|
58
|
+
* @param shapes - the shapes to merge.
|
|
59
|
+
* @returns the merged Shape.
|
|
60
|
+
*/
|
|
61
|
+
export declare function mergeShapes(shapes: Shape[]): Shape;
|
|
62
|
+
//# sourceMappingURL=ops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ops.d.ts","sourceRoot":"","sources":["../../../src/mesh/meshdata/ops.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAEhD,YAAY,EAAE,UAAU,EAAE,CAAA;AAE1B;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,EAC5B,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,EAC1B,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,GACrB,KAAK,CAGP;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAanD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,GAAG,KAAK,CAWjE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,SAAI,GAAG,KAAK,CAS/E;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAuC/D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAwBlD"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* meshdata/ops — 作用在 Shape / 原始数组上的纯函数几何操作(L1 容器操作)。
|
|
3
|
+
*
|
|
4
|
+
* 替代 three `BufferGeometry` 的少量方法面(`toNonIndexed`、`computeVertexNormals`、
|
|
5
|
+
* `applyMatrix4`/`translate`、`clone`、merge)——**纯函数集,不给对外 `Shape` 挂方法**
|
|
6
|
+
* (与设计 §3.3 一致)。不重复 `mesh/query.ts` 已有的 `boundingBox`/`volume` 等查询。
|
|
7
|
+
*/
|
|
8
|
+
import { Vec3 } from '../../math3d/index.js';
|
|
9
|
+
import { weldMesh } from './weld.js';
|
|
10
|
+
/**
|
|
11
|
+
* Weld raw positions+indices into a mesh Shape (same behaviour as the old
|
|
12
|
+
* `geoToManifoldMesh` on a position-only geometry).
|
|
13
|
+
* @param positions - flat position array (x, y, z, ...).
|
|
14
|
+
* @param indices - triangle index array into `positions`.
|
|
15
|
+
* @param extra - optional extra Shape fields to attach (e.g. `faceRanges`).
|
|
16
|
+
* @returns the welded Shape.
|
|
17
|
+
*/
|
|
18
|
+
export function shapeFromMesh(positions, indices, extra) {
|
|
19
|
+
const mesh = weldMesh(positions, indices);
|
|
20
|
+
return { positions: mesh.positions, indices: mesh.indices, ...extra };
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Expand an indexed Shape to non-indexed (each triangle gets its own vertices),
|
|
24
|
+
* mirroring three `BufferGeometry.toNonIndexed`.
|
|
25
|
+
* @param shape - the indexed shape.
|
|
26
|
+
* @returns a non-indexed copy of the shape.
|
|
27
|
+
*/
|
|
28
|
+
export function toNonIndexed(shape) {
|
|
29
|
+
const positions = shape.positions;
|
|
30
|
+
const indices = shape.indices;
|
|
31
|
+
const out = new Float32Array(indices.length * 3);
|
|
32
|
+
for (let i = 0; i < indices.length; i++) {
|
|
33
|
+
const v = indices[i] * 3;
|
|
34
|
+
out[i * 3] = positions[v];
|
|
35
|
+
out[i * 3 + 1] = positions[v + 1];
|
|
36
|
+
out[i * 3 + 2] = positions[v + 2];
|
|
37
|
+
}
|
|
38
|
+
const seq = new Uint32Array(indices.length);
|
|
39
|
+
for (let i = 0; i < indices.length; i++)
|
|
40
|
+
seq[i] = i;
|
|
41
|
+
return { positions: out, indices: seq };
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Apply a 4x4 matrix to a Shape's vertices (bakes the transform).
|
|
45
|
+
* @param shape - the source shape.
|
|
46
|
+
* @param m - column-major 4x4 matrix.
|
|
47
|
+
* @returns a new shape with transformed vertices (indices/other fields preserved).
|
|
48
|
+
*/
|
|
49
|
+
export function transformShape(shape, m) {
|
|
50
|
+
const out = new Float32Array(shape.positions.length);
|
|
51
|
+
const v = new Vec3();
|
|
52
|
+
for (let i = 0; i < shape.positions.length; i += 3) {
|
|
53
|
+
v.set(shape.positions[i], shape.positions[i + 1], shape.positions[i + 2]);
|
|
54
|
+
v.applyMatrix4(m);
|
|
55
|
+
out[i] = v.x;
|
|
56
|
+
out[i + 1] = v.y;
|
|
57
|
+
out[i + 2] = v.z;
|
|
58
|
+
}
|
|
59
|
+
return { ...shape, positions: out };
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Translate a Shape's vertices by (x, y, z).
|
|
63
|
+
* @param shape - the source shape.
|
|
64
|
+
* @param x - X offset.
|
|
65
|
+
* @param y - Y offset.
|
|
66
|
+
* @param z - Z offset.
|
|
67
|
+
* @returns a new shape with translated vertices.
|
|
68
|
+
*/
|
|
69
|
+
export function translateShape(shape, x, y, z = 0) {
|
|
70
|
+
if (x === 0 && y === 0 && z === 0)
|
|
71
|
+
return { ...shape };
|
|
72
|
+
const out = new Float32Array(shape.positions);
|
|
73
|
+
for (let i = 0; i < out.length; i += 3) {
|
|
74
|
+
out[i] += x;
|
|
75
|
+
out[i + 1] += y;
|
|
76
|
+
out[i + 2] += z;
|
|
77
|
+
}
|
|
78
|
+
return { ...shape, positions: out };
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Compute per-vertex normals with three `BufferGeometry.computeVertexNormals`
|
|
82
|
+
* semantics (face normals averaged across shared vertices).
|
|
83
|
+
*
|
|
84
|
+
* **折边红线提醒**:在索引(共享顶点)几何上这会把棱边"磨圆"——core 的派生法线
|
|
85
|
+
* 一律走 `boolean/creased-normals.ts`(`deriveNormals`)。本函数只为替换 three 的
|
|
86
|
+
* **罕见**直调用点而保留,返回纯数据,不改变 Shape。
|
|
87
|
+
* @param shape - the source shape.
|
|
88
|
+
* @returns a Float32Array of per-vertex normals.
|
|
89
|
+
*/
|
|
90
|
+
export function computeVertexNormals(shape) {
|
|
91
|
+
const positions = shape.positions;
|
|
92
|
+
const indices = shape.indices;
|
|
93
|
+
const normals = new Float32Array(positions.length);
|
|
94
|
+
const pA = new Vec3();
|
|
95
|
+
const pB = new Vec3();
|
|
96
|
+
const pC = new Vec3();
|
|
97
|
+
const cb = new Vec3();
|
|
98
|
+
const ab = new Vec3();
|
|
99
|
+
for (let i = 0; i < indices.length; i += 3) {
|
|
100
|
+
const a = indices[i] * 3;
|
|
101
|
+
const b = indices[i + 1] * 3;
|
|
102
|
+
const c = indices[i + 2] * 3;
|
|
103
|
+
pA.set(positions[a], positions[a + 1], positions[a + 2]);
|
|
104
|
+
pB.set(positions[b], positions[b + 1], positions[b + 2]);
|
|
105
|
+
pC.set(positions[c], positions[c + 1], positions[c + 2]);
|
|
106
|
+
cb.subVectors(pC, pB);
|
|
107
|
+
ab.subVectors(pA, pB);
|
|
108
|
+
cb.cross(ab);
|
|
109
|
+
normals[a] += cb.x;
|
|
110
|
+
normals[a + 1] += cb.y;
|
|
111
|
+
normals[a + 2] += cb.z;
|
|
112
|
+
normals[b] += cb.x;
|
|
113
|
+
normals[b + 1] += cb.y;
|
|
114
|
+
normals[b + 2] += cb.z;
|
|
115
|
+
normals[c] += cb.x;
|
|
116
|
+
normals[c + 1] += cb.y;
|
|
117
|
+
normals[c + 2] += cb.z;
|
|
118
|
+
}
|
|
119
|
+
const v = new Vec3();
|
|
120
|
+
for (let i = 0; i < normals.length; i += 3) {
|
|
121
|
+
v.set(normals[i], normals[i + 1], normals[i + 2]).normalize();
|
|
122
|
+
normals[i] = v.x;
|
|
123
|
+
normals[i + 1] = v.y;
|
|
124
|
+
normals[i + 2] = v.z;
|
|
125
|
+
}
|
|
126
|
+
return normals;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Merge several Shapes into one indexed Shape (position + index concatenation,
|
|
130
|
+
* mirroring the old `mergeBufferGeometries`).
|
|
131
|
+
* @param shapes - the shapes to merge.
|
|
132
|
+
* @returns the merged Shape.
|
|
133
|
+
*/
|
|
134
|
+
export function mergeShapes(shapes) {
|
|
135
|
+
if (shapes.length === 1) {
|
|
136
|
+
const s = shapes[0];
|
|
137
|
+
return { positions: new Float32Array(s.positions), indices: new Uint32Array(s.indices) };
|
|
138
|
+
}
|
|
139
|
+
let posLen = 0;
|
|
140
|
+
let idxLen = 0;
|
|
141
|
+
for (const s of shapes) {
|
|
142
|
+
posLen += s.positions.length;
|
|
143
|
+
idxLen += s.indices.length;
|
|
144
|
+
}
|
|
145
|
+
const positions = new Float32Array(posLen);
|
|
146
|
+
const indices = new Uint32Array(idxLen);
|
|
147
|
+
let po = 0;
|
|
148
|
+
let io = 0;
|
|
149
|
+
let vertexOffset = 0;
|
|
150
|
+
for (const s of shapes) {
|
|
151
|
+
positions.set(s.positions, po);
|
|
152
|
+
po += s.positions.length;
|
|
153
|
+
for (let i = 0; i < s.indices.length; i++)
|
|
154
|
+
indices[io + i] = s.indices[i] + vertexOffset;
|
|
155
|
+
io += s.indices.length;
|
|
156
|
+
vertexOffset += s.positions.length / 3;
|
|
157
|
+
}
|
|
158
|
+
return { positions, indices };
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=ops.js.map
|