forgecad 0.9.14 → 0.9.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +6 -4
- package/README.md +8 -4
- package/dist/assets/{AdminPage-eWGs2K6H.js → AdminPage-CXvls4-J.js} +2 -2
- package/dist/assets/{BenchmarkPage-CTrLKfpo.js → BenchmarkPage-B27zk8xL.js} +4 -15
- package/dist/assets/{BlogPage-5nPesyds.js → BlogPage-CMAVvgQL.js} +2 -2
- package/dist/assets/{DocsPage-C4Y3nbYc.js → DocsPage-knf4I4h7.js} +9 -3
- package/dist/assets/EditorApp-BHMQlJ-D.js +14686 -0
- package/dist/assets/{EditorApp-BAnckbsk.css → EditorApp-BpjZgzk0.css} +846 -0
- package/dist/assets/{EmbedViewer-C8fB4n5U.js → EmbedViewer-D7ZGlFjx.js} +3 -3
- package/dist/assets/{LandingPageProofDriven-jSz0LaMM.js → LandingPageProofDriven-CnevhTE8.js} +36 -38
- package/dist/assets/LegalPage-BPTUmqeg.js +39 -0
- package/dist/assets/LegalPage-BRlScr9A.css +91 -0
- package/dist/assets/{PricingPage-B83B90zh.js → PricingPage-B0D4goG_.js} +19 -19
- package/dist/assets/{PricingPage-BMedqFef.css → PricingPage-BPF6HKyO.css} +25 -0
- package/dist/assets/{SettingsPage-DY889pcu.js → SettingsPage-CFF-UgjI.js} +2 -2
- package/dist/assets/app-CE3sYcV7.css +3890 -0
- package/dist/assets/{app-bEww1ic4.js → app-T0pDcSX4.js} +3382 -1069
- package/dist/assets/cli/{render-Cho2uKG_.js → render-C5pcIISc.js} +477 -29
- package/dist/assets/{constructionHistoryWorker-HYwzJY4m.js → constructionHistoryWorker-Ba2Hm58b.js} +928 -243
- package/dist/assets/{evalWorker-CjQwJSE-.js → evalWorker-vkx310U2.js} +8883 -6040
- package/dist/assets/{forgecad_geometry-CH2nvuLA.js → forgecad_geometry-Dgceylq9.js} +43 -1
- package/dist/assets/forgecad_geometry_bg-dD4RNQF1.wasm +0 -0
- package/dist/assets/{inspectWorker-DeRnMVv1.js → inspectWorker-BuTJDVX6.js} +1179 -273
- package/dist/assets/{javascript-70-4uGcz.js → javascript-1kQXfVaz.js} +1 -1
- package/dist/assets/{targets-D6PWsv6X.js → jointPose-B_Cgedn9.js} +71 -3
- package/dist/assets/landing-proof-driven-DiGqdtWa.js +18 -0
- package/dist/assets/{landing-proof-driven-oFYW6mjz.css → landing-proof-driven-ORyigZ6p.css} +13 -7
- package/dist/assets/legalContent-ZfFGMmi4.js +251 -0
- package/dist/assets/{manifold-rmfAcdwF.js → manifold-BWgsjmAM.js} +1 -1
- package/dist/assets/{manifold-uRzgk5O8.js → manifold-D6IFSkhH.js} +2 -2
- package/dist/assets/{manifold-CG9Fokx-.js → manifold-rZexZI0G.js} +1 -1
- package/dist/assets/{reportWorker-4cW_ZpoS.js → reportWorker-0AGij1Ru.js} +8659 -12771
- package/dist/assets/{scalar-sampling-budget-CfDiFvh7.js → scalar-sampling-budget-J5cuzxT1.js} +8050 -6203
- package/dist/assets/{scanProxyWorker-Bs2TDgLw.js → scanProxyWorker-Vl4Wxa1y.js} +50 -6
- package/dist/assets/{solver-DuJAO8S6.js → solver-BZ9LPTHs.js} +1 -1
- package/dist/assets/solver_bg-DAHZJ_rw.wasm +0 -0
- package/dist/assets/{vendor-react-Da3A2QmU.js → vendor-react-6j1Kke-Y.js} +6 -5
- package/dist/cli/render.html +1 -1
- package/dist/docs/index.html +2 -2
- package/dist/docs-raw/AI/ai-native-cad.md +50 -0
- package/dist/docs-raw/AI/usage.md +5 -12
- package/dist/docs-raw/CLI.md +34 -10
- package/dist/docs-raw/component-model.md +27 -11
- package/dist/docs-raw/generated/assembly.md +374 -187
- package/dist/docs-raw/generated/concepts.md +245 -237
- package/dist/docs-raw/generated/core.md +283 -6
- package/dist/docs-raw/generated/curves.md +274 -361
- package/dist/docs-raw/generated/lib.md +9 -19
- package/dist/docs-raw/generated/output.md +29 -4
- package/dist/docs-raw/generated/runtime-names.md +49 -0
- package/dist/docs-raw/generated/sdf.md +31 -0
- package/dist/docs-raw/generated/sheet-metal.md +9 -0
- package/dist/docs-raw/generated/sketch.md +44 -1
- package/dist/docs-raw/generated/viewport.md +11 -3
- package/dist/docs-raw/guides/coordinate-system.md +20 -16
- package/dist/docs-raw/guides/geometry-conventions.md +2 -2
- package/dist/docs-raw/guides/inspection-bundles.md +2 -1
- package/dist/docs-raw/guides/joint-design.md +24 -0
- package/dist/docs-raw/guides/positioning.md +13 -3
- package/dist/docs-raw/legal/privacy.md +63 -0
- package/dist/docs-raw/legal/software-license.md +55 -0
- package/dist/docs-raw/legal/terms.md +87 -0
- package/dist/docs-raw/skills/forgecad-3d-reconstruction.md +1 -1
- package/dist/docs-raw/skills/forgecad-blockout-model.md +1 -1
- package/dist/docs-raw/skills/forgecad-component-model.md +11 -2
- package/dist/docs-raw/skills/forgecad-high-level-spec.md +1 -1
- package/dist/docs-raw/skills/forgecad-image-replicator.md +8 -8
- package/dist/docs-raw/skills/forgecad-lld.md +1 -1
- package/dist/docs-raw/skills/forgecad-make-a-model.md +40 -39
- package/dist/docs-raw/skills/forgecad-model-grader.md +2 -2
- package/dist/docs-raw/skills/forgecad-prepare-prompt.md +2 -2
- package/dist/docs-raw/skills/forgecad-project.md +3 -1
- package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +1 -1
- package/dist/docs-raw/skills/forgecad-render-inspect.md +4 -2
- package/dist/docs-raw/skills/forgecad-visual-spec.md +1 -1
- package/dist/docs-raw/skills/forgecad.md +4 -3
- package/dist/docs-raw/welcome.md +2 -0
- package/dist/index.html +40 -12
- package/dist/llms.txt +8 -0
- package/dist/site.webmanifest +1 -1
- package/dist/sitemap.xml +49 -13
- package/dist-cli/{check-compiler-U5SOPN7X.js → check-compiler-SYQ2PWOB.js} +1 -2
- package/dist-cli/{check-query-propagation-XOKNSSYU.js → check-query-propagation-HIAGV62W.js} +1 -2
- package/dist-cli/{chunk-EXWGNL6K.js → chunk-SPZE3DUY.js} +20659 -17930
- package/dist-cli/forgecad.js +3568 -1250
- package/dist-cli/{forgecad_geometry-GYVNKPIE.js → forgecad_geometry-QOQIIP53.js} +42 -1
- package/dist-cli/forgecad_geometry_bg.wasm +0 -0
- package/dist-cli/{solver-46FFSK2U.js → solver-OK4HECRH.js} +0 -1
- package/dist-cli/solver_bg.wasm +0 -0
- package/dist-skill/CONTEXT.md +1192 -725
- package/dist-skill/SKILL.md +3 -2
- package/dist-skill/docs/API/core/concepts.md +64 -1
- package/dist-skill/docs/CLI.md +34 -10
- package/dist-skill/docs/generated/assembly.md +339 -213
- package/dist-skill/docs/generated/core.md +283 -6
- package/dist-skill/docs/generated/curves.md +272 -362
- package/dist-skill/docs/generated/lib.md +9 -19
- package/dist-skill/docs/generated/output.md +29 -4
- package/dist-skill/docs/generated/runtime-names.md +40 -0
- package/dist-skill/docs/generated/sdf.md +31 -0
- package/dist-skill/docs/generated/sheet-metal.md +9 -0
- package/dist-skill/docs/generated/sketch.md +44 -2
- package/dist-skill/docs/generated/viewport.md +2 -87
- package/dist-skill/docs/guides/coordinate-system.md +20 -16
- package/dist-skill/docs/guides/geometry-conventions.md +2 -2
- package/dist-skill/docs/guides/inspection-bundles.md +2 -1
- package/dist-skill/docs/guides/joint-design.md +24 -0
- package/dist-skill/docs/guides/positioning.md +13 -3
- package/dist-skill/library/forgecad-component-model/SKILL.md +10 -1
- package/dist-skill/library/forgecad-image-replicator/SKILL.md +6 -6
- package/dist-skill/library/forgecad-image-replicator/scripts/compare_images.py +166 -0
- package/dist-skill/library/forgecad-make-a-model/SKILL.md +39 -38
- package/dist-skill/library/forgecad-model-grader/SKILL.md +1 -1
- package/dist-skill/library/forgecad-prepare-prompt/SKILL.md +1 -1
- package/dist-skill/library/forgecad-project/SKILL.md +2 -0
- package/dist-skill/library/forgecad-render-inspect/SKILL.md +3 -1
- package/examples/api/assembly-kinematics-foundation.forge.js +65 -0
- package/examples/api/assembly-kinematics-four-bar.forge.js +115 -0
- package/examples/api/assembly-kinematics-limb.forge.js +116 -0
- package/examples/api/connector-frame-rig-chain.forge.js +102 -0
- package/examples/api/exact-sheet-shell-assembly.forge.js +0 -2
- package/examples/api/exact-surface-studio.forge.js +6 -8
- package/examples/api/helix-basics.forge.js +8 -8
- package/examples/api/lean-foundations/README.md +12 -0
- package/examples/api/lean-foundations/curve-blend-exact.forge.js +22 -0
- package/examples/api/lean-foundations/curve-fit-interpolation.forge.js +18 -0
- package/examples/api/lean-foundations/curve-helix-canonicalization.forge.js +27 -0
- package/examples/api/lean-foundations/curve-route-canonicalization.forge.js +16 -0
- package/examples/api/lean-foundations/curve-trim-reverse.forge.js +24 -0
- package/examples/api/lean-foundations/exact-curve-arc.forge.js +36 -0
- package/examples/api/mixed-edge-finishes-proof.forge.js +8 -11
- package/examples/api/route3d-elbow.forge.js +71 -0
- package/examples/api/transition-curves.forge.js +44 -15
- package/examples/api/variable-sweep-test.forge.js +3 -1
- package/examples/api/y-blend-corner-showcase.forge.js +0 -2
- package/examples/generative/coral-vase.forge.js +1 -1
- package/examples/nurbs-tube.forge.js +1 -1
- package/package.json +17 -13
- package/dist/assets/EditorApp-lXv53A1m.js +0 -13610
- package/dist/assets/app-CsHnaBWt.css +0 -1789
- package/dist/assets/forgecad_geometry_bg-C5_E9Oa9.wasm +0 -0
- package/dist/assets/solver_bg-CWvv4lnN.wasm +0 -0
- package/dist/docs-raw/API/README.md +0 -16
- package/dist/docs-raw/API/core/concepts.md +0 -118
- package/dist/docs-raw/INDEX.md +0 -138
- package/dist/docs-raw/RELEASING.md +0 -87
- package/dist/docs-raw/agent-native-api.md +0 -27
- package/dist/docs-raw/beta-deployment.md +0 -304
- package/dist/docs-raw/beta-operations.md +0 -325
- package/dist/docs-raw/blueprint-first.md +0 -145
- package/dist/docs-raw/cli-monetization.md +0 -112
- package/dist/docs-raw/coding-best-practices.md +0 -120
- package/dist/docs-raw/coding.md +0 -340
- package/dist/docs-raw/deployment.md +0 -374
- package/dist/docs-raw/guides/skill-maintenance.md +0 -161
- package/dist/docs-raw/guides/surface-members.md +0 -82
- package/dist/docs-raw/harbor-cli.md +0 -854
- package/dist/docs-raw/internals/backend-vocabulary.md +0 -35
- package/dist/docs-raw/internals/compiler.md +0 -307
- package/dist/docs-raw/internals/constraint-solver-quality.md +0 -161
- package/dist/docs-raw/internals/constraint-solver.md +0 -176
- package/dist/docs-raw/internals/shape-from-slices.md +0 -152
- package/dist/docs-raw/internals/sketch-2d-pipeline.md +0 -108
- package/dist/docs-raw/platform/admin.md +0 -45
- package/dist/docs-raw/platform/architecture.md +0 -82
- package/dist/docs-raw/platform/auth.md +0 -139
- package/dist/docs-raw/platform/email.md +0 -67
- package/dist/docs-raw/platform/google-oauth-setup.md +0 -88
- package/dist/docs-raw/platform/observability.md +0 -197
- package/dist/docs-raw/platform/projects.md +0 -111
- package/dist/docs-raw/platform/sharing.md +0 -90
- package/dist/docs-raw/product/README.md +0 -39
- package/dist/docs-raw/product/api-as-product-language.md +0 -13
- package/dist/docs-raw/product/business-model.md +0 -15
- package/dist/docs-raw/product/competitive-positioning.md +0 -17
- package/dist/docs-raw/product/creative-manufacturing.md +0 -15
- package/dist/docs-raw/product/founder-story.md +0 -11
- package/dist/docs-raw/product/manufacturing-workflows.md +0 -15
- package/dist/docs-raw/product/onboarding-first-experience.md +0 -256
- package/dist/docs-raw/product/product-loop.md +0 -17
- package/dist/docs-raw/product/strategic-decisions.md +0 -22
- package/dist/docs-raw/product/user-outreach-email-templates.md +0 -161
- package/dist/docs-raw/product/user-segments.md +0 -15
- package/dist/docs-raw/product/vision.md +0 -26
- package/dist/docs-raw/rl-environments.md +0 -350
- package/dist/docs-raw/runbook.md +0 -611
- package/dist-cli/check-compiler-U5SOPN7X.js.map +0 -1
- package/dist-cli/check-query-propagation-XOKNSSYU.js.map +0 -1
- package/dist-cli/chunk-EXWGNL6K.js.map +0 -1
- package/dist-cli/forgecad.js.map +0 -1
- package/dist-cli/forgecad_geometry-GYVNKPIE.js.map +0 -1
- package/dist-cli/solver-46FFSK2U.js.map +0 -1
- package/dist-skill/SKILL-dev.md +0 -145
- package/dist-skill/docs-dev/API/core/concepts.md +0 -118
- package/dist-skill/docs-dev/CLI.md +0 -677
- package/dist-skill/docs-dev/agent-native-api.md +0 -27
- package/dist-skill/docs-dev/blueprint-first.md +0 -145
- package/dist-skill/docs-dev/coding-best-practices.md +0 -120
- package/dist-skill/docs-dev/coding.md +0 -340
- package/dist-skill/docs-dev/component-model.md +0 -164
- package/dist-skill/docs-dev/generated/assembly.md +0 -794
- package/dist-skill/docs-dev/generated/core.md +0 -2117
- package/dist-skill/docs-dev/generated/curves.md +0 -2583
- package/dist-skill/docs-dev/generated/lib.md +0 -169
- package/dist-skill/docs-dev/generated/output.md +0 -247
- package/dist-skill/docs-dev/generated/sdf.md +0 -446
- package/dist-skill/docs-dev/generated/sheet-metal.md +0 -504
- package/dist-skill/docs-dev/generated/sketch.md +0 -1811
- package/dist-skill/docs-dev/generated/viewport.md +0 -585
- package/dist-skill/docs-dev/generated/wood.md +0 -108
- package/dist-skill/docs-dev/guides/coordinate-system.md +0 -46
- package/dist-skill/docs-dev/guides/geometry-conventions.md +0 -52
- package/dist-skill/docs-dev/guides/inspection-bundles.md +0 -485
- package/dist-skill/docs-dev/guides/joint-design.md +0 -78
- package/dist-skill/docs-dev/guides/modeling-recipes.md +0 -78
- package/dist-skill/docs-dev/guides/positioning.md +0 -161
- package/dist-skill/docs-dev/guides/skill-maintenance.md +0 -161
- package/dist-skill/docs-dev/internals/backend-vocabulary.md +0 -35
- package/dist-skill/docs-dev/internals/compiler.md +0 -307
- package/dist-skill/docs-dev/internals/constraint-solver-quality.md +0 -161
- package/dist-skill/docs-dev/internals/constraint-solver.md +0 -176
- package/dist-skill/docs-dev/internals/sketch-2d-pipeline.md +0 -108
- package/dist-skill/library/forgecad-image-replicator/scripts/compare_images.mjs +0 -289
- package/examples/api/bolted-service-cover.forge.js +0 -17
- package/examples/api/cable-gland-anchor.forge.js +0 -14
- package/examples/api/captured-cartridge-guide.forge.js +0 -14
- package/examples/api/captured-linear-slide.forge.js +0 -13
- package/examples/api/clevis-pin-joint.forge.js +0 -13
- package/examples/api/datum-enclosure.forge.js +0 -16
- package/examples/api/hose-barb-port.forge.js +0 -14
- package/examples/api/knuckled-hinge-assembly.forge.js +0 -15
- package/examples/api/living-hinge-cover.forge.js +0 -14
- package/examples/api/pcb-terminal-block.forge.js +0 -22
- package/examples/api/pinned-lever-pivot-stack.forge.js +0 -14
- package/examples/api/retained-shaft-knob-stack.forge.js +0 -15
- package/examples/api/routed-tube-clip.forge.js +0 -15
- package/examples/api/seated-bearing-stack.forge.js +0 -30
- package/examples/api/snap-latch-cover.forge.js +0 -14
- package/examples/api/thumb-screw-clamp.forge.js +0 -15
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../geometry/pkg/forgecad_geometry.js"],"sourcesContent":["/* @ts-self-types=\"./forgecad_geometry.d.ts\" */\n\n/**\n * @param {string} handles_json\n * @param {string} op\n * @returns {number}\n */\nexport function geometry_boolean(handles_json, op) {\n const ptr0 = passStringToWasm0(handles_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(op, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_boolean(ptr0, len0, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @returns {string}\n */\nexport function geometry_capabilities() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.geometry_capabilities();\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n}\n\n/**\n * @param {number} handle\n * @param {string} spec_json\n * @returns {number}\n */\nexport function geometry_chamfer_edges(handle, spec_json) {\n const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_chamfer_edges(handle, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {number} handle\n * @returns {number}\n */\nexport function geometry_clone(handle) {\n const ret = wasm.geometry_clone(handle);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {number} width\n * @param {number} depth\n * @param {number} height\n * @returns {number}\n */\nexport function geometry_create_box(width, depth, height) {\n const ret = wasm.geometry_create_box(width, depth, height);\n return ret >>> 0;\n}\n\n/**\n * @param {number} height\n * @param {number} radius\n * @param {number} radius_top\n * @param {number} segments\n * @returns {number}\n */\nexport function geometry_create_cylinder(height, radius, radius_top, segments) {\n const ret = wasm.geometry_create_cylinder(height, radius, radius_top, segments);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @returns {number}\n */\nexport function geometry_create_empty() {\n const ret = wasm.geometry_create_empty();\n return ret >>> 0;\n}\n\n/**\n * @param {string} points_json\n * @param {number} height\n * @param {string} scale_top_json\n * @returns {number}\n */\nexport function geometry_create_extruded_polygon(points_json, height, scale_top_json) {\n const ptr0 = passStringToWasm0(points_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(scale_top_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_extruded_polygon(ptr0, len0, height, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} regions_json\n * @param {number} height\n * @param {string} scale_top_json\n * @returns {number}\n */\nexport function geometry_create_extruded_regions(regions_json, height, scale_top_json) {\n const ptr0 = passStringToWasm0(regions_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(scale_top_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_extruded_regions(ptr0, len0, height, ptr1, len1);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} spec_json\n * @returns {number}\n */\nexport function geometry_create_imported_triangle_mesh(spec_json) {\n const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_imported_triangle_mesh(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} spec_json\n * @returns {number}\n */\nexport function geometry_create_layered_regions(spec_json) {\n const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_layered_regions(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} stations_json\n * @returns {number}\n */\nexport function geometry_create_lofted_regions(stations_json) {\n const ptr0 = passStringToWasm0(stations_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_lofted_regions(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} spec_json\n * @returns {number}\n */\nexport function geometry_create_nurbs_curve(spec_json) {\n const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_nurbs_curve(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} spec_json\n * @returns {number}\n */\nexport function geometry_create_nurbs_surface(spec_json) {\n const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_nurbs_surface(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {number} handle\n * @returns {number}\n */\nexport function geometry_create_nurbs_surface_from_handle(handle) {\n const ret = wasm.geometry_create_nurbs_surface_from_handle(handle);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} spec_json\n * @returns {number}\n */\nexport function geometry_create_nurbs_surface_handle(spec_json) {\n const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_nurbs_surface_handle(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} spec_json\n * @returns {number}\n */\nexport function geometry_create_path_swept_regions(spec_json) {\n const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_path_swept_regions(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} regions_json\n * @param {number} degrees\n * @param {number} segments\n * @returns {number}\n */\nexport function geometry_create_revolved_regions(regions_json, degrees, segments) {\n const ptr0 = passStringToWasm0(regions_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_revolved_regions(ptr0, len0, degrees, segments);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} spec_json\n * @returns {number}\n */\nexport function geometry_create_side_profile_cut(spec_json) {\n const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_side_profile_cut(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {number} radius\n * @param {number} segments\n * @returns {number}\n */\nexport function geometry_create_sphere(radius, segments) {\n const ret = wasm.geometry_create_sphere(radius, segments);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} spec_json\n * @returns {number}\n */\nexport function geometry_create_surface_grid(spec_json) {\n const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_surface_grid(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} regions_json\n * @param {number} height\n * @param {string} scale_top_json\n * @param {number} twist_degrees\n * @param {number} segments\n * @returns {number}\n */\nexport function geometry_create_swept_regions(regions_json, height, scale_top_json, twist_degrees, segments) {\n const ptr0 = passStringToWasm0(regions_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(scale_top_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_swept_regions(ptr0, len0, height, ptr1, len1, twist_degrees, segments);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} spec_json\n * @param {number} thickness\n * @returns {number}\n */\nexport function geometry_create_thickened_nurbs_surface(spec_json, thickness) {\n const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_thickened_nurbs_surface(ptr0, len0, thickness);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {number} handle\n * @param {number} thickness\n * @returns {number}\n */\nexport function geometry_create_thickened_nurbs_surface_from_handle(handle, thickness) {\n const ret = wasm.geometry_create_thickened_nurbs_surface_from_handle(handle, thickness);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} spec_json\n * @param {number} thickness\n * @returns {number}\n */\nexport function geometry_create_thickened_surface_grid(spec_json, thickness) {\n const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_thickened_surface_grid(ptr0, len0, thickness);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {number} major_radius\n * @param {number} minor_radius\n * @param {number} segments\n * @returns {number}\n */\nexport function geometry_create_torus(major_radius, minor_radius, segments) {\n const ret = wasm.geometry_create_torus(major_radius, minor_radius, segments);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} spec_json\n * @returns {number}\n */\nexport function geometry_create_variable_path_swept_regions(spec_json) {\n const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_variable_path_swept_regions(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} spec_json\n * @returns {number}\n */\nexport function geometry_create_vertical_prism_difference(spec_json) {\n const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_create_vertical_prism_difference(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {number} handle\n */\nexport function geometry_delete(handle) {\n wasm.geometry_delete(handle);\n}\n\n/**\n * @param {number} handle\n */\nexport function geometry_delete_nurbs_curve(handle) {\n wasm.geometry_delete_nurbs_curve(handle);\n}\n\n/**\n * @param {number} handle\n */\nexport function geometry_delete_nurbs_surface(handle) {\n wasm.geometry_delete_nurbs_surface(handle);\n}\n\n/**\n * @param {number} handle\n * @param {string} spec_json\n * @returns {number}\n */\nexport function geometry_fillet_edges(handle, spec_json) {\n const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_fillet_edges(handle, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {number} handle\n * @returns {string}\n */\nexport function geometry_mesh(handle) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.geometry_mesh(handle);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n}\n\n/**\n * @param {number} handle\n * @returns {string}\n */\nexport function geometry_metrics(handle) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.geometry_metrics(handle);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n}\n\n/**\n * @param {number} handle\n * @returns {string}\n */\nexport function geometry_nurbs_curve_payload(handle) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.geometry_nurbs_curve_payload(handle);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n}\n\n/**\n * @param {number} handle\n * @param {number} t\n * @returns {string}\n */\nexport function geometry_nurbs_curve_point(handle, t) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.geometry_nurbs_curve_point(handle, t);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n}\n\n/**\n * @param {number} handle\n * @param {number} t\n * @returns {string}\n */\nexport function geometry_nurbs_curve_tangent(handle, t) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.geometry_nurbs_curve_tangent(handle, t);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n}\n\n/**\n * @param {number} handle\n * @returns {string}\n */\nexport function geometry_nurbs_surface_handle_tessellation(handle) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.geometry_nurbs_surface_handle_tessellation(handle);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n}\n\n/**\n * @param {number} handle\n * @returns {string}\n */\nexport function geometry_nurbs_surface_payload(handle) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.geometry_nurbs_surface_payload(handle);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n}\n\n/**\n * @param {number} handle\n * @param {number} u\n * @param {number} v\n * @returns {string}\n */\nexport function geometry_nurbs_surface_point(handle, u, v) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.geometry_nurbs_surface_point(handle, u, v);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n}\n\n/**\n * @param {string} spec_json\n * @returns {string}\n */\nexport function geometry_nurbs_surface_tessellation(spec_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(spec_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_nurbs_surface_tessellation(ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\n/**\n * @param {number} handle\n * @param {number} samples\n * @returns {string}\n */\nexport function geometry_sample_nurbs_curve(handle, samples) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.geometry_sample_nurbs_curve(handle, samples);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n}\n\n/**\n * @param {number} handle\n * @param {number} u_samples\n * @param {number} v_samples\n * @returns {string}\n */\nexport function geometry_sample_nurbs_surface(handle, u_samples, v_samples) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.geometry_sample_nurbs_surface(handle, u_samples, v_samples);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n}\n\n/**\n * @param {number} handle\n * @param {string} query_json\n * @returns {string}\n */\nexport function geometry_select_edges(handle, query_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(query_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_select_edges(handle, ptr0, len0);\n var ptr2 = ret[0];\n var len2 = ret[1];\n if (ret[3]) {\n ptr2 = 0; len2 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\n/**\n * @param {number} handle\n * @returns {string}\n */\nexport function geometry_topology(handle) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ret = wasm.geometry_topology(handle);\n var ptr1 = ret[0];\n var len1 = ret[1];\n if (ret[3]) {\n ptr1 = 0; len1 = 0;\n throw takeFromExternrefTable0(ret[2]);\n }\n deferred2_0 = ptr1;\n deferred2_1 = len1;\n return getStringFromWasm0(ptr1, len1);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n}\n\n/**\n * @param {number} handle\n * @param {string} matrix_json\n * @returns {number}\n */\nexport function geometry_transform(handle, matrix_json) {\n const ptr0 = passStringToWasm0(matrix_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_transform(handle, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {string} handles_json\n * @returns {number}\n */\nexport function geometry_union(handles_json) {\n const ptr0 = passStringToWasm0(handles_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_union(ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {number} handle\n * @param {number} index\n * @param {string} point_json\n * @returns {number}\n */\nexport function geometry_update_nurbs_curve_control_point(handle, index, point_json) {\n const ptr0 = passStringToWasm0(point_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_update_nurbs_curve_control_point(handle, index, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {number} handle\n * @param {number} index\n * @param {number} weight\n * @returns {number}\n */\nexport function geometry_update_nurbs_curve_weight(handle, index, weight) {\n const ret = wasm.geometry_update_nurbs_curve_weight(handle, index, weight);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {number} handle\n * @param {number} u_index\n * @param {number} v_index\n * @param {string} point_json\n * @returns {number}\n */\nexport function geometry_update_nurbs_surface_control_point(handle, u_index, v_index, point_json) {\n const ptr0 = passStringToWasm0(point_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.geometry_update_nurbs_surface_control_point(handle, u_index, v_index, ptr0, len0);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\n\n/**\n * @param {number} handle\n * @param {number} u_index\n * @param {number} v_index\n * @param {number} weight\n * @returns {number}\n */\nexport function geometry_update_nurbs_surface_weight(handle, u_index, v_index, weight) {\n const ret = wasm.geometry_update_nurbs_surface_weight(handle, u_index, v_index, weight);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return ret[0] >>> 0;\n}\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbindgen_cast_0000000000000001: function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./forgecad_geometry_bg.js\": import0,\n };\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return decodeText(ptr >>> 0, len);\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasmInstance, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasmInstance = instance;\n wasm = instance.exports;\n wasmModule = module;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (module_or_path === undefined) {\n module_or_path = new URL('forgecad_geometry_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n"],"mappings":"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","names":["ptr"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../solver/pkg/solver.js"],"sourcesContent":["/* @ts-self-types=\"./solver.d.ts\" */\n\n/**\n * Return the profiling data from the last solve call as JSON.\n * @returns {string}\n */\nexport function get_last_profile() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.get_last_profile();\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n}\n\n/**\n * Run only the deterministic presolve stages and return the updated geometry.\n * @param {string} problem_json\n * @returns {string}\n */\nexport function presolve(problem_json) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ptr0 = passStringToWasm0(problem_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.presolve(ptr0, len0);\n deferred2_0 = ret[0];\n deferred2_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n}\n\n/**\n * Run the targeted presolve hook for one constraint and return the updated geometry.\n * @param {string} problem_json\n * @param {string} constraint_id\n * @returns {string}\n */\nexport function presolve_single(problem_json, constraint_id) {\n let deferred3_0;\n let deferred3_1;\n try {\n const ptr0 = passStringToWasm0(problem_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(constraint_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.presolve_single(ptr0, len0, ptr1, len1);\n deferred3_0 = ret[0];\n deferred3_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);\n }\n}\n\n/**\n * Add an arc to the session.\n * @param {number} handle\n * @param {string} id\n * @param {string} center\n * @param {string} start\n * @param {string} end\n * @param {number} radius\n * @param {boolean} clockwise\n * @param {boolean} fixed_radius\n */\nexport function session_add_arc(handle, id, center, start, end, radius, clockwise, fixed_radius) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(center, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(start, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(end, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len3 = WASM_VECTOR_LEN;\n wasm.session_add_arc(handle, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, radius, clockwise, fixed_radius);\n}\n\n/**\n * Add a circle to the session.\n * @param {number} handle\n * @param {string} id\n * @param {string} center\n * @param {number} radius\n * @param {boolean} fixed_radius\n */\nexport function session_add_circle(handle, id, center, radius, fixed_radius) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(center, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n wasm.session_add_circle(handle, ptr0, len0, ptr1, len1, radius, fixed_radius);\n}\n\n/**\n * Add a constraint to the session and optionally run a seed step.\n * constraint_json is a single serialized Constraint.\n * If seed is true, runs a mini-solve after adding.\n * Returns the max error after the step (or -1 on error).\n * @param {number} handle\n * @param {string} constraint_json\n * @param {boolean} seed\n * @returns {number}\n */\nexport function session_add_constraint(handle, constraint_json, seed) {\n const ptr0 = passStringToWasm0(constraint_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.session_add_constraint(handle, ptr0, len0, seed);\n return ret;\n}\n\n/**\n * Add a group to the session.\n * @param {number} handle\n * @param {string} group_json\n */\nexport function session_add_group(handle, group_json) {\n const ptr0 = passStringToWasm0(group_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.session_add_group(handle, ptr0, len0);\n}\n\n/**\n * Add a line to the session.\n * @param {number} handle\n * @param {string} id\n * @param {string} a\n * @param {string} b\n */\nexport function session_add_line(handle, id, a, b) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(a, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(b, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n wasm.session_add_line(handle, ptr0, len0, ptr1, len1, ptr2, len2);\n}\n\n/**\n * Add a point to the session.\n * @param {number} handle\n * @param {string} id\n * @param {number} x\n * @param {number} y\n * @param {boolean} fixed\n */\nexport function session_add_point(handle, id, x, y, fixed) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.session_add_point(handle, ptr0, len0, x, y, fixed);\n}\n\n/**\n * Add a shape to the session.\n * @param {number} handle\n * @param {string} id\n * @param {string} line_ids_json\n */\nexport function session_add_shape(handle, id, line_ids_json) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(line_ids_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n wasm.session_add_shape(handle, ptr0, len0, ptr1, len1);\n}\n\n/**\n * Create a new solver session. Returns an opaque handle (u32).\n * @returns {number}\n */\nexport function session_create() {\n const ret = wasm.session_create();\n return ret >>> 0;\n}\n\n/**\n * Destroy a solver session and free its memory.\n * @param {number} handle\n */\nexport function session_destroy(handle) {\n wasm.session_destroy(handle);\n}\n\n/**\n * Get the current positions of all points in the session as JSON.\n * Lightweight alternative to session_solve for reading state after seed steps.\n * @param {number} handle\n * @returns {string}\n */\nexport function session_get_points(handle) {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.session_get_points(handle);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n}\n\n/**\n * Run the full solver on the session's current state.\n * Returns the solve result as JSON (same format as the stateless solve()).\n * @param {number} handle\n * @param {string} options_json\n * @returns {string}\n */\nexport function session_solve(handle, options_json) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ptr0 = passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.session_solve(handle, ptr0, len0);\n deferred2_0 = ret[0];\n deferred2_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n}\n\n/**\n * Solve a constraint system from JSON.\n * @param {string} problem_json\n * @returns {string}\n */\nexport function solve(problem_json) {\n let deferred2_0;\n let deferred2_1;\n try {\n const ptr0 = passStringToWasm0(problem_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.solve(ptr0, len0);\n deferred2_0 = ret[0];\n deferred2_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);\n }\n}\n\n/**\n * Set up the panic hook once on WASM init so panics surface in the browser console.\n */\nexport function start() {\n wasm.start();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_error_a6fa202b58aa1cd3: function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n },\n __wbg_new_227d7c05414eb861: function() {\n const ret = new Error();\n return ret;\n },\n __wbg_now_ad02950eb3803b74: function() {\n const ret = performance.now();\n return ret;\n },\n __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg_warn_9af3f8834368e552: function(arg0, arg1) {\n console.warn(getStringFromWasm0(arg0, arg1));\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./solver_bg.js\": import0,\n };\n}\n\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (module_or_path === undefined) {\n module_or_path = new URL('solver_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n"],"mappings":"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","names":["start","ptr"]}
|
package/dist-skill/SKILL-dev.md
DELETED
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: forgecad
|
|
3
|
-
description: ForgeCAD development skill — model authoring plus compiler internals, solver architecture, coding conventions, and skill maintenance. Use when developing ForgeCAD itself.
|
|
4
|
-
forgecad-public: true
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# ForgeCAD
|
|
8
|
-
|
|
9
|
-
Author or modify ForgeCAD models, sketches, assemblies, and CLI workflows. Prefer documented primitives, import rules, placement strategies, and CLI commands over inventing new APIs.
|
|
10
|
-
|
|
11
|
-
## Workflow
|
|
12
|
-
|
|
13
|
-
1. Identify the artifact: `.forge.js`, SVG asset, or CLI/export task.
|
|
14
|
-
2. **If the model has any moving parts, load the `assembly` group AND the `joint-design.md` recipe upfront** — do not defer the kinematic structure to a refactor pass.
|
|
15
|
-
3. Load only the docs the task needs (see Source Map below). Start from the top group, add others as needed.
|
|
16
|
-
4. If any two parts are intended to touch or mate in the final model, load the positioning guide immediately and default to connectors + `matchTo()`.
|
|
17
|
-
5. Default to a concrete first pass — easy iteration beats speculative design review.
|
|
18
|
-
6. If an existing model is broken, replace the weak structure rather than preserving bad architecture.
|
|
19
|
-
7. Validate with `forgecad run <file>` (add `--debug-imports` for import chain issues, and pass `--backend manifold|occt|truck` when the backend matters).
|
|
20
|
-
8. For `jointsView()` animations, keep wrapped revolute tracks continuous across branch cuts; do not assume the viewport will auto-fix `-180/180` jumps.
|
|
21
|
-
9. Model the physical artifact, not an educational diagram. Do not add explanatory labels, arrows, legends, or text plaques unless the user explicitly asks for a presentation or teaching view. Product markings are allowed only when they would exist on the real object.
|
|
22
|
-
10. Build the real closed CAD first. Do not bake cutaways, sectioned shells, permanently exploded layouts, or hidden-parts views into the default model just to show internals. Use viewer-only cut planes, `explodeView`, object hiding, transparency, or `inspect sections` after the artifact exists.
|
|
23
|
-
|
|
24
|
-
### Import and Composition
|
|
25
|
-
|
|
26
|
-
- Always include the extension in relative imports: `require("./file.forge.js", { Param: value })` for model files and `require("./helpers.js")` for plain helper modules. Do not write extensionless imports such as `require("./file")`; ForgeCAD resolves project imports by exact path.
|
|
27
|
-
- ForgeCAD APIs are injected globals in `.forge.js` files. Use `bom()`, `box()`, `scene()`, `Shape`, etc. directly; do not destructure those names from helpers with patterns like `const { bom } = require("./bom.js")`. If a helper file is needed, import it under a project-specific name such as `const bomHelpers = require("./bom.js")`.
|
|
28
|
-
- For static multi-part models, connectors + `matchTo()` are the default way to assemble touching parts.
|
|
29
|
-
- Top-level scripts can return `Assembly` or `SolvedAssembly` directly. Do not call `.toGroup()` just to render an assembly; use `.toGroup()` only when you need `ShapeGroup` composition, transforms, or named-child lookup.
|
|
30
|
-
- `importSvgSketch()` for SVG files (file format loader, not a module import).
|
|
31
|
-
- `.placeReference('bottom', [0,0,0])` to align any built-in anchor to a world coordinate; also works with custom `.withReferences()`.
|
|
32
|
-
- Plain `.js` modules for shared helpers/constants (not model imports).
|
|
33
|
-
|
|
34
|
-
## Source Map
|
|
35
|
-
|
|
36
|
-
Load groups top-to-bottom, stopping when you have what the task needs.
|
|
37
|
-
|
|
38
|
-
### 1. Core API (always read first)
|
|
39
|
-
|
|
40
|
-
Execution model, colors, coordinate system, primitives, booleans, patterns, imports, parameters, topology, edge queries.
|
|
41
|
-
|
|
42
|
-
- `{{SKILL_DIR}}/docs/API/core/concepts.md`
|
|
43
|
-
- `{{SKILL_DIR}}/docs/generated/core.md`
|
|
44
|
-
|
|
45
|
-
### 2. Static Assembly and Positioning (for any multi-part model)
|
|
46
|
-
|
|
47
|
-
Axis conventions, winding rules, and placement strategy. If parts should touch in the final model, read this group before writing placement code. Connectors + `matchTo()` are the default for mating interfaces; raw `translate()` and `rotate()` are for free offsets, not assembly contracts.
|
|
48
|
-
|
|
49
|
-
- `{{SKILL_DIR}}/docs/guides/coordinate-system.md`
|
|
50
|
-
- `{{SKILL_DIR}}/docs/guides/geometry-conventions.md`
|
|
51
|
-
- `{{SKILL_DIR}}/docs/guides/positioning.md`
|
|
52
|
-
|
|
53
|
-
### 3. Sketch APIs
|
|
54
|
-
|
|
55
|
-
2D construction, transforms, booleans, paths, on-face sketching, extrusion, anchors, text, regions.
|
|
56
|
-
|
|
57
|
-
- `{{SKILL_DIR}}/docs/generated/sketch.md`
|
|
58
|
-
|
|
59
|
-
### 4. Curves and Surfacing (for lofts, sweeps, splines)
|
|
60
|
-
|
|
61
|
-
Smooth curves, Hermite splines, lofted and swept solids. For straps, inlays, guards, brace members, vents, or physical bands that live on a carrier surface, use `Carrier` + `SurfaceBody` surface-member primitives before reaching for `variableSweep`, SDF sculpting, or manual boolean overlap recipes.
|
|
62
|
-
|
|
63
|
-
- `{{SKILL_DIR}}/docs/generated/curves.md`
|
|
64
|
-
|
|
65
|
-
### 5. Assemblies and Mechanisms (for joints or kinematics)
|
|
66
|
-
|
|
67
|
-
Assembly graph, joint types, couplings, validation, robot export.
|
|
68
|
-
|
|
69
|
-
- `{{SKILL_DIR}}/docs/generated/assembly.md`
|
|
70
|
-
|
|
71
|
-
### 6. Sheet Metal (for bent parts, K-factor, flat patterns)
|
|
72
|
-
|
|
73
|
-
Bend operations, flat pattern unfolding, K-factor configuration.
|
|
74
|
-
|
|
75
|
-
- `{{SKILL_DIR}}/docs/generated/sheet-metal.md`
|
|
76
|
-
|
|
77
|
-
### 7. Output and Export (for STL/3MF/STEP, BOM, dimensions)
|
|
78
|
-
|
|
79
|
-
Mesh export, exact geometry export, bill of materials, dimension annotations.
|
|
80
|
-
|
|
81
|
-
- `{{SKILL_DIR}}/docs/generated/output.md`
|
|
82
|
-
|
|
83
|
-
### 8. Toolbox (fasteners and standard parts)
|
|
84
|
-
|
|
85
|
-
Parametric bolts, nuts, washers, standard hardware, gears, pipes, and structural profiles.
|
|
86
|
-
|
|
87
|
-
- `{{SKILL_DIR}}/docs/generated/lib.md`
|
|
88
|
-
- `{{SKILL_DIR}}/docs/generated/wood.md`
|
|
89
|
-
|
|
90
|
-
### 9. Runtime Viewport APIs (for cut planes, exploded views, hiding, and animation playback)
|
|
91
|
-
|
|
92
|
-
Viewer-only APIs such as cutPlane, explodeView, jointsView, and animation behavior.
|
|
93
|
-
|
|
94
|
-
- `{{SKILL_DIR}}/docs/generated/viewport.md`
|
|
95
|
-
|
|
96
|
-
### 10. Recipes and Debugging (for patterns and troubleshooting)
|
|
97
|
-
|
|
98
|
-
Modeling patterns, debugging tactics, copyable snippets.
|
|
99
|
-
|
|
100
|
-
- `{{SKILL_DIR}}/docs/guides/modeling-recipes.md`
|
|
101
|
-
- `{{SKILL_DIR}}/docs/guides/joint-design.md`
|
|
102
|
-
|
|
103
|
-
### 11. CLI (for validation/render/export tasks)
|
|
104
|
-
|
|
105
|
-
Test-run, export pipelines, debug flags.
|
|
106
|
-
|
|
107
|
-
- `{{SKILL_DIR}}/docs/CLI.md`
|
|
108
|
-
- `{{SKILL_DIR}}/docs/guides/inspection-bundles.md`
|
|
109
|
-
|
|
110
|
-
### SDF Modeling (smooth booleans, TPMS, deformations, fromFunction)
|
|
111
|
-
|
|
112
|
-
Primitives, smooth booleans, TPMS lattices, twist/bend/displace, morph, custom functions, gotchas. SDF is inherently implicit and sampled, not B-rep/exact geometry; use caution for precision-critical parts and exact export workflows.
|
|
113
|
-
|
|
114
|
-
- `{{SKILL_DIR}}/docs/generated/sdf.md`
|
|
115
|
-
|
|
116
|
-
### 12. Internals — Compiler & Geometry Pipeline (for ForgeCAD developers)
|
|
117
|
-
|
|
118
|
-
Semantic feature graphs, lowering strategy, compile plans. Read when working on the compiler or geometry backends.
|
|
119
|
-
|
|
120
|
-
- `{{SKILL_DIR}}/docs/internals/backend-vocabulary.md`
|
|
121
|
-
- `{{SKILL_DIR}}/docs/internals/compiler.md`
|
|
122
|
-
- `{{SKILL_DIR}}/docs/internals/sketch-2d-pipeline.md`
|
|
123
|
-
|
|
124
|
-
### 13. Internals — Constraint Solver (for solver work)
|
|
125
|
-
|
|
126
|
-
Solver architecture, phases, Gauss-Seidel/Newton-Raphson, quality tuning.
|
|
127
|
-
|
|
128
|
-
- `{{SKILL_DIR}}/docs/internals/constraint-solver.md`
|
|
129
|
-
- `{{SKILL_DIR}}/docs/internals/constraint-solver-quality.md`
|
|
130
|
-
|
|
131
|
-
### 15. Project Conventions (coding standards, releases)
|
|
132
|
-
|
|
133
|
-
Coding best practices, PR guidelines, release checklist, deployment.
|
|
134
|
-
|
|
135
|
-
- `{{SKILL_DIR}}/docs/coding-best-practices.md`
|
|
136
|
-
- `{{SKILL_DIR}}/docs/coding.md`
|
|
137
|
-
- `{{SKILL_DIR}}/docs/agent-native-api.md`
|
|
138
|
-
- `{{SKILL_DIR}}/docs/blueprint-first.md`
|
|
139
|
-
- `{{SKILL_DIR}}/docs/component-model.md`
|
|
140
|
-
|
|
141
|
-
### 16. Skill System Maintenance
|
|
142
|
-
|
|
143
|
-
How to add docs, maintain standard vs dev skill, build and install flow.
|
|
144
|
-
|
|
145
|
-
- `{{SKILL_DIR}}/docs/guides/skill-maintenance.md`
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
skill-group: core
|
|
3
|
-
skill-order: 1
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# ForgeCAD Core Concepts
|
|
7
|
-
|
|
8
|
-
ForgeCAD scripts are JavaScript that returns geometry. The forge API is globally available — no imports needed.
|
|
9
|
-
|
|
10
|
-
```javascript
|
|
11
|
-
const width = param("Width", 50, { min: 20, max: 100, unit: "mm" });
|
|
12
|
-
return box(width, 30, 10);
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Injected Runtime Names
|
|
16
|
-
|
|
17
|
-
ForgeCAD API functions and classes are injected into every `.forge.js` script. Use them directly; do not import or destructure ForgeCAD API names from helper files.
|
|
18
|
-
|
|
19
|
-
```javascript
|
|
20
|
-
// BAD — `bom` and `bomToCsv` are already built-in runtime names.
|
|
21
|
-
const { bom, bomToCsv } = require("./bom.js");
|
|
22
|
-
|
|
23
|
-
// GOOD — use the built-in directly.
|
|
24
|
-
bom(4, "M4 bolt");
|
|
25
|
-
|
|
26
|
-
// GOOD — keep project helpers under their own local name.
|
|
27
|
-
const bomHelpers = require("./bom.js");
|
|
28
|
-
bomHelpers.addFasteners(...);
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Top-level declarations such as `const bom = ...`, `let scene = ...`, or `class Shape {}` collide with the injected runtime names. If you need a local helper, choose a project-specific name like `projectBom`, `sceneConfig`, or `makeShape`.
|
|
32
|
-
|
|
33
|
-
## Execution Model
|
|
34
|
-
|
|
35
|
-
- Scripts re-execute on every parameter change (400ms debounce)
|
|
36
|
-
- Geometry operations are **immutable** — shapes, sketches, groups, imported assemblies, and wood boards return new values instead of modifying in place
|
|
37
|
-
- Must return one of: `Shape`, `Sketch`, `ShapeGroup`, `Assembly`, `SolvedAssembly`, `SdfShape`, `Array` of renderables, `Array` of `{ name, tags?, shape?, sketch?, group?, color? }`, or a **metadata object** (see below)
|
|
38
|
-
|
|
39
|
-
Top-level assembly scripts can return an unsolved `Assembly` directly; ForgeCAD solves it at default joint values for display. Return `assembly.solve(state)` when you want a specific pose. Do not call `.toGroup()` just to make an assembly render — use `.toGroup()` only when you specifically need `ShapeGroup` composition, group-style transforms, or named-child lookup.
|
|
40
|
-
|
|
41
|
-
### Metadata Object Return
|
|
42
|
-
|
|
43
|
-
A script can return a plain object whose values include renderable geometry alongside non-renderable metadata. All renderable entries (Shape, Sketch, ShapeGroup, Assembly, SolvedAssembly, SdfShape, or Array of named objects) are rendered; non-renderable entries are silently skipped. This is useful for multi-file projects where a part needs to publish interface data (bolt positions, dimensions) to other files:
|
|
44
|
-
|
|
45
|
-
When importing project files, include the full extension in every relative path: `require('./motor-mount.forge.js')` for model files and `require('./helpers.js')` for plain helper modules. ForgeCAD resolves project imports by exact path and does not infer `.forge.js` or `.js` from `require('./motor-mount')`.
|
|
46
|
-
|
|
47
|
-
```javascript
|
|
48
|
-
// motor-mount.forge.js — renders standalone, exports metadata via require()
|
|
49
|
-
const holePositions = [[17, 15], [-29, 15], [17, -15], [-29, -15]];
|
|
50
|
-
return {
|
|
51
|
-
shape: mount.color('#556B2F'), // rendered
|
|
52
|
-
bolts: { dia: 5.3, pos: holePositions }, // metadata — skipped in render, available via require()
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
// base-body.forge.js — imports mount, accesses .bolts
|
|
56
|
-
const mount = require('./motor-mount.forge.js');
|
|
57
|
-
for (const [x, y] of mount.bolts.pos) { ... } // use metadata
|
|
58
|
-
// mount.shape is the Shape if you need it in an assembly
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Arrays inside the object are also rendered:
|
|
62
|
-
|
|
63
|
-
```javascript
|
|
64
|
-
return {
|
|
65
|
-
parts: [{ name: 'Left', shape: leftShape }, { name: 'Right', shape: rightShape }],
|
|
66
|
-
armWidth: 6, // metadata
|
|
67
|
-
};
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
Named return objects and named `group(...)` children can include `tags`. Tags are viewport metadata: they do not affect geometry, exports, face labels, or BOM rows, but the command palette can hide, show only, or focus every object with a selected tag.
|
|
71
|
-
|
|
72
|
-
```javascript
|
|
73
|
-
return [
|
|
74
|
-
{ name: 'Base Plate', tags: ['printed', 'structural'], shape: base },
|
|
75
|
-
{ name: 'M4 Bolt A', tags: 'fastener', shape: boltA },
|
|
76
|
-
{ name: 'M4 Bolt B', tags: 'fastener', shape: boltB },
|
|
77
|
-
];
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## Coordinate System
|
|
81
|
-
|
|
82
|
-
Z-up right-handed: X = left/right, Y = forward/back, Z = up/down.
|
|
83
|
-
|
|
84
|
-
## Colors
|
|
85
|
-
|
|
86
|
-
`.color(hex)` works on `Shape` and `Sketch`. Colors survive transforms. Boolean operations return a single result shape, so only the first operand's color survives.
|
|
87
|
-
|
|
88
|
-
**`union()` merges shapes into one solid mesh** — later operands do not keep separate colors or identities. Use `group(...)` or return named objects instead when you want separate parts:
|
|
89
|
-
|
|
90
|
-
```javascript
|
|
91
|
-
return [
|
|
92
|
-
{ name: "Base", shape: box(100, 100, 5), color: "#888888" },
|
|
93
|
-
{ name: "Column", shape: cylinder(50, 10).translate(50, 50, 5), color: "#4488cc" },
|
|
94
|
-
];
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
## Face Operations
|
|
98
|
-
|
|
99
|
-
Shapes carry semantic face labels through their lifecycle. The flow is:
|
|
100
|
-
|
|
101
|
-
1. **Primitives** assign canonical names — `box()` gives you `top`, `bottom`, `side-left`, etc.; `cylinder()` gives `top`, `bottom`, `side`.
|
|
102
|
-
2. **Extrusions** inherit labels from the sketch and add `top`/`bottom`.
|
|
103
|
-
3. **Transforms** (translate, rotate, scale, mirror) preserve all labels.
|
|
104
|
-
4. **Booleans** preserve labels from the first operand where geometry survives.
|
|
105
|
-
|
|
106
|
-
You resolve labels to geometry with `.face(name)` or `.face(query)` — see the Shape class docs for the full query API. Operations like `.pocket()`, `.boss()`, `.hole()`, and `faceProfile()` all consume face references.
|
|
107
|
-
|
|
108
|
-
## Text vs Viewport Labels
|
|
109
|
-
|
|
110
|
-
Default to no explanatory text inside CAD geometry. A ForgeCAD model should represent the physical artifact, not a labeled teaching diagram. Explain the design through file names, named return objects, comments, BOM entries, inspection bundles, and companion docs.
|
|
111
|
-
|
|
112
|
-
Use `text2d()` only when the letters are part of the real object: raised branding, engraving, serial plates, keyboard legends, gauge ticks, connector labels, service arrows, scale markings, or exported manufacturing markings. `text2d()` builds filled sketch geometry from font outlines, so it can make exact/OCCT workflows slower.
|
|
113
|
-
|
|
114
|
-
Use `Viewport.label(text, [x, y, z], options)` only for temporary review, debug, tutorial, or explicitly requested presentation views. Render labels are annotations only: they do not create meshes, do not export, do not enter the B-rep path, and do not add face labels. Do not use viewport labels to compensate for unclear geometry in the final model.
|
|
115
|
-
|
|
116
|
-
## SDF Modeling
|
|
117
|
-
|
|
118
|
-
For organic shapes, smooth blending, TPMS lattices, and surface deformations. Return `SdfShape` values directly, or return a plain object/array tree of SDF leaves, for native raymarch preview. Use `.toShape()` or `toShape(...)` only when you need mesh-backed CAD/export behavior. See [sdf-primitives.md](sdf-primitives.md).
|