forgecad 0.9.16 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dist/assets/{AdminPage-CXvls4-J.js → AdminPage-DwYHz72L.js} +1 -1
  2. package/dist/assets/{BenchmarkPage-B27zk8xL.js → BenchmarkPage-a9_f-1US.js} +1 -1
  3. package/dist/assets/{BlogPage-CMAVvgQL.js → BlogPage-DodHpvmf.js} +1 -1
  4. package/dist/assets/{DocsPage-knf4I4h7.js → DocsPage-B5LePEuj.js} +8 -858
  5. package/dist/assets/EditorApp-QXsAISLR.js +16307 -0
  6. package/dist/assets/{EmbedViewer-D7ZGlFjx.js → EmbedViewer-DdEHGUMU.js} +2 -2
  7. package/dist/assets/{LandingPageProofDriven-CnevhTE8.js → LandingPageProofDriven-yhhOodbf.js} +1 -1
  8. package/dist/assets/{LegalPage-BPTUmqeg.js → LegalPage-5RbKRGYK.js} +1 -1
  9. package/dist/assets/{PricingPage-B0D4goG_.js → PricingPage-E3Rma7aV.js} +1 -1
  10. package/dist/assets/{SettingsPage-CFF-UgjI.js → SettingsPage-BJZcM97j.js} +1 -1
  11. package/dist/assets/{app-T0pDcSX4.js → app-DSYrDg0V.js} +733 -205
  12. package/dist/assets/cli/{render-C5pcIISc.js → render-ZMHR9HkV.js} +19 -46
  13. package/dist/assets/{constructionHistoryWorker-Ba2Hm58b.js → constructionHistoryWorker-AwMMWSxg.js} +1103 -349
  14. package/dist/assets/{evalWorker-vkx310U2.js → evalWorker-DbNs7Dkp.js} +3798 -1622
  15. package/dist/assets/{inspectWorker-BuTJDVX6.js → inspectWorker-CZsCFtQT.js} +1163 -409
  16. package/dist/assets/{jointPose-B_Cgedn9.js → jointPose-DO6mnXn_.js} +1 -1
  17. package/dist/assets/{manifold-BWgsjmAM.js → manifold-BGlQBBH9.js} +1 -1
  18. package/dist/assets/{manifold-rZexZI0G.js → manifold-BU-tJwQh.js} +1 -1
  19. package/dist/assets/{manifold-D6IFSkhH.js → manifold-fy2MV7K1.js} +2 -2
  20. package/dist/assets/{reportWorker-0AGij1Ru.js → reportWorker-DO6hcQbh.js} +7155 -2437
  21. package/dist/assets/{scalar-sampling-budget-J5cuzxT1.js → scalar-sampling-budget-o90NSNmF.js} +3940 -1742
  22. package/dist/assets/{scanProxyWorker-Vl4Wxa1y.js → scanProxyWorker-2GtDLk-R.js} +1 -1
  23. package/dist/assets/{javascript-1kQXfVaz.js → typescript-DBQ6RN5l.js} +874 -22
  24. package/dist/cli/render.html +1 -1
  25. package/dist/docs/index.html +3 -3
  26. package/dist/docs-raw/AI/usage.md +1 -1
  27. package/dist/docs-raw/CLI.md +63 -241
  28. package/dist/docs-raw/README.md +6 -0
  29. package/dist/docs-raw/component-model.md +17 -150
  30. package/dist/docs-raw/generated/assembly.md +139 -598
  31. package/dist/docs-raw/generated/concepts.md +245 -3501
  32. package/dist/docs-raw/generated/core.md +277 -1251
  33. package/dist/docs-raw/generated/curves.md +387 -1608
  34. package/dist/docs-raw/generated/legacy.md +162 -0
  35. package/dist/docs-raw/generated/lib.md +227 -85
  36. package/dist/docs-raw/generated/output.md +38 -73
  37. package/dist/docs-raw/generated/runtime-names.md +23 -23
  38. package/dist/docs-raw/generated/sdf.md +68 -284
  39. package/dist/docs-raw/generated/sheet-metal.md +68 -335
  40. package/dist/docs-raw/generated/sketch.md +240 -1161
  41. package/dist/docs-raw/generated/viewport.md +75 -316
  42. package/dist/docs-raw/generated/wood.md +21 -49
  43. package/dist/docs-raw/guides/coordinate-system.md +4 -42
  44. package/dist/docs-raw/guides/inspection-bundles.md +44 -442
  45. package/dist/docs-raw/guides/joint-design.md +18 -79
  46. package/dist/docs-raw/guides/positioning.md +21 -143
  47. package/dist/docs-raw/guides/scene-presentation.md +89 -0
  48. package/dist/docs-raw/skills/forgecad-3d-reconstruction.md +25 -111
  49. package/dist/docs-raw/skills/forgecad-blockout-model.md +20 -117
  50. package/dist/docs-raw/skills/forgecad-component-model.md +23 -107
  51. package/dist/docs-raw/skills/forgecad-high-level-spec.md +47 -155
  52. package/dist/docs-raw/skills/forgecad-image-replicator.md +26 -143
  53. package/dist/docs-raw/skills/forgecad-lld.md +19 -113
  54. package/dist/docs-raw/skills/forgecad-make-a-model.md +112 -532
  55. package/dist/docs-raw/skills/forgecad-model-grader.md +38 -108
  56. package/dist/docs-raw/skills/forgecad-prepare-prompt.md +24 -211
  57. package/dist/docs-raw/skills/forgecad-project.md +13 -131
  58. package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +42 -134
  59. package/dist/docs-raw/skills/forgecad-render-inspect.md +27 -174
  60. package/dist/docs-raw/skills/forgecad-visual-spec.md +32 -112
  61. package/dist/docs-raw/skills/forgecad.md +19 -18
  62. package/dist/docs-raw/skills/index.md +2 -0
  63. package/dist/docs-raw/welcome.md +2 -2
  64. package/dist/index.html +1 -1
  65. package/dist/llms.txt +1 -2
  66. package/dist/sitemap.xml +13 -13
  67. package/dist-cli/{check-compiler-SYQ2PWOB.js → check-compiler-JTVBITCR.js} +1 -1
  68. package/dist-cli/{check-query-propagation-HIAGV62W.js → check-query-propagation-3FFLSMVN.js} +1 -1
  69. package/dist-cli/{chunk-SPZE3DUY.js → chunk-OAN5T4XD.js} +4412 -2212
  70. package/dist-cli/forgecad.js +507 -179
  71. package/dist-skill/CONTEXT.md +2172 -8377
  72. package/dist-skill/SKILL.md +15 -15
  73. package/dist-skill/docs/API/core/concepts.md +27 -157
  74. package/dist-skill/docs/CLI.md +63 -241
  75. package/dist-skill/docs/generated/assembly.md +138 -549
  76. package/dist-skill/docs/generated/core.md +277 -1251
  77. package/dist-skill/docs/generated/curves.md +387 -1609
  78. package/dist-skill/docs/generated/lib.md +227 -85
  79. package/dist-skill/docs/generated/output.md +38 -73
  80. package/dist-skill/docs/generated/runtime-names.md +16 -21
  81. package/dist-skill/docs/generated/sdf.md +68 -284
  82. package/dist-skill/docs/generated/sheet-metal.md +68 -335
  83. package/dist-skill/docs/generated/sketch.md +240 -1160
  84. package/dist-skill/docs/generated/viewport.md +75 -223
  85. package/dist-skill/docs/generated/wood.md +21 -49
  86. package/dist-skill/docs/guides/coordinate-system.md +4 -42
  87. package/dist-skill/docs/guides/inspection-bundles.md +44 -442
  88. package/dist-skill/docs/guides/joint-design.md +18 -79
  89. package/dist-skill/docs/guides/positioning.md +21 -143
  90. package/dist-skill/docs/guides/scene-presentation.md +89 -0
  91. package/dist-skill/docs/guides/surface-members.md +26 -0
  92. package/dist-skill/library/forgecad-3d-reconstruction/SKILL.md +23 -111
  93. package/dist-skill/library/forgecad-blockout-model/SKILL.md +18 -117
  94. package/dist-skill/library/forgecad-component-model/SKILL.md +21 -107
  95. package/dist-skill/library/forgecad-high-level-spec/SKILL.md +45 -155
  96. package/dist-skill/library/forgecad-image-replicator/SKILL.md +24 -143
  97. package/dist-skill/library/forgecad-lld/SKILL.md +17 -113
  98. package/dist-skill/library/forgecad-make-a-model/SKILL.md +110 -532
  99. package/dist-skill/library/forgecad-model-grader/SKILL.md +36 -108
  100. package/dist-skill/library/forgecad-prepare-prompt/SKILL.md +35 -224
  101. package/dist-skill/library/forgecad-prepare-prompt/references/default-profiles.md +43 -271
  102. package/dist-skill/library/forgecad-prepare-prompt/references/master-prompt.md +30 -99
  103. package/dist-skill/library/forgecad-project/SKILL.md +13 -133
  104. package/dist-skill/library/forgecad-reconstruction-benchmark/SKILL.md +29 -123
  105. package/dist-skill/library/forgecad-render-inspect/SKILL.md +25 -174
  106. package/dist-skill/library/forgecad-visual-spec/SKILL.md +30 -111
  107. package/dist-skill/website/skills/forgecad-3d-reconstruction.md +58 -0
  108. package/dist-skill/website/skills/forgecad-blockout-model.md +49 -0
  109. package/dist-skill/website/skills/forgecad-component-model.md +53 -0
  110. package/dist-skill/website/skills/forgecad-high-level-spec.md +101 -0
  111. package/dist-skill/website/skills/forgecad-image-replicator.md +63 -0
  112. package/dist-skill/website/skills/forgecad-lld.md +41 -0
  113. package/dist-skill/website/skills/forgecad-make-a-model.md +186 -0
  114. package/dist-skill/website/skills/forgecad-model-grader.md +82 -0
  115. package/dist-skill/website/skills/forgecad-prepare-prompt.md +63 -0
  116. package/dist-skill/website/skills/forgecad-project.md +26 -0
  117. package/dist-skill/website/skills/forgecad-reconstruction-benchmark.md +60 -0
  118. package/dist-skill/website/skills/forgecad-render-inspect.md +80 -0
  119. package/dist-skill/website/skills/forgecad-visual-spec.md +71 -0
  120. package/dist-skill/website/skills/forgecad.md +122 -0
  121. package/dist-skill/website/skills/index.md +26 -0
  122. package/examples/api/comparison-imported-sphere-candidate.forge.js +1 -1
  123. package/examples/api/conformal-product-ribbon.forge.js +1 -1
  124. package/examples/api/exact-sheet-shell-assembly.forge.js +1 -1
  125. package/examples/api/extrude-options.forge.js +4 -2
  126. package/examples/api/field-loft-drive-tip.forge.js +40 -0
  127. package/examples/api/guided-loft-olive-oil-bottle.forge.js +1 -1
  128. package/examples/api/highlight-debug.forge.js +10 -10
  129. package/examples/api/mesh-import-slats.forge.js +1 -1
  130. package/examples/api/real-product-curves.forge.js +1 -1
  131. package/examples/api/sculpt-box-circle-booleans.forge.js +1 -1
  132. package/examples/api/sdf-shapes.forge.js +2 -5
  133. package/examples/api/sketch-rounding-strategies.forge.js +6 -6
  134. package/examples/api/surface-member-bottle-cage.forge.js +3 -3
  135. package/examples/api/surface-member-conformal-product-ribbon.forge.js +3 -3
  136. package/examples/api/surface-member-razor-inlay.forge.js +1 -1
  137. package/examples/api/variable-sweep-test.forge.js +3 -3
  138. package/examples/mechanical/airplane-propeller.forge.js +74 -39
  139. package/examples/nurbs-surface.forge.js +1 -1
  140. package/examples/products/iphone.forge.js +1 -1
  141. package/package.json +1 -1
  142. package/dist/assets/EditorApp-BHMQlJ-D.js +0 -14686
  143. package/dist/docs-raw/guides/geometry-conventions.md +0 -52
  144. package/dist/docs-raw/guides/modeling-recipes.md +0 -78
  145. package/dist-skill/docs/guides/geometry-conventions.md +0 -52
  146. package/dist-skill/docs/guides/modeling-recipes.md +0 -78
  147. package/dist-skill/library/forgecad-visual-spec/references/prompt-template.md +0 -79
@@ -1,52 +0,0 @@
1
- ---
2
- skill-group: geometry
3
- skill-order: 2
4
- ---
5
-
6
- # Geometry Conventions
7
-
8
- ForgeCAD wraps Manifold (mesh kernel) and Three.js (Y-up renderer). This doc captures convention mismatches and how ForgeCAD resolves them.
9
-
10
- ## Winding Order
11
-
12
- CCW = positive area, CW = empty in Manifold's `CrossSection`. ForgeCAD auto-fixes at all entry points:
13
- - `polygon(points)` — computes signed area (shoelace), reverses if CW
14
- - `path().close()` — same fix
15
-
16
- **Rule for new code:** Any function accepting user point arrays that creates a `CrossSection` MUST auto-fix winding.
17
-
18
- ## Coordinate System (Z-up vs Y-up)
19
-
20
- Three.js is Y-up; ForgeCAD is Z-up. Fix applied at camera level (`camera.up = (0,0,1)`) — geometry coordinates are native Z-up. Never swap Y/Z in geometry.
21
-
22
- ## Revolution Axis
23
-
24
- `Sketch.revolve()` produces a world Z-axis solid of revolution. Profile X = radial distance from the Z axis, Profile Y = world Z height after revolution. Profile should stay at X > 0 unless intentionally touching the axis.
25
-
26
- ## Boolean Winding (3D)
27
-
28
- Manifold requires consistent outward face normals. ForgeCAD only creates meshes through Manifold's own constructors, which guarantee correct normals.
29
-
30
- ## Transform Order
31
-
32
- Transforms apply left-to-right. `Sketch.rotate()`, `scale()`, and `mirror()` operate around bounding-box center. For 3D `Shape` / `ShapeGroup`, `scale()` and `mirror()` operate around bounding-box center, while `rotate()` remains origin-based unless you pass `options.pivot` or use `rotateAroundAxis(...)`.
33
-
34
- For explicit transform objects: `A.mul(B)` = apply A then B; `composeChain(A, B, C)` = A→B→C.
35
-
36
- ## Assembly Frame Composition
37
-
38
- ```ts
39
- childWorld = composeChain(childBase, jointMotion, jointFrame, parentWorld)
40
- ```
41
-
42
- Prefer `composeChain(...)` over manual `.mul(...).mul(...)` in kinematics code to avoid order mistakes.
43
-
44
- ## Summary
45
-
46
- | Convention | User sees | Kernel needs | Where we fix it |
47
- |---|---|---|---|
48
- | Winding | Any point order | CCW | `polygon()`, `path().close()` |
49
- | Up axis | Z-up | Y-up (Three.js) | `camera.up`, gizmo labels |
50
- | Revolution | "revolve this profile" | Profile X = radius, Profile Y = world Z height | Documented and regression-tested |
51
- | Face normals | Doesn't think about it | Outward-pointing | Manifold constructors |
52
- | Transform order | Left-to-right chain | Post-multiply | Native match |
@@ -1,78 +0,0 @@
1
- ---
2
- skill-group: recipes
3
- skill-order: 1
4
- ---
5
-
6
- # Modeling Recipes
7
-
8
- ## Iteration Bias
9
-
10
- - Default to a buildable first pass instead of a long proposal.
11
- - Replace a broken model wholesale when that is faster than incremental patching.
12
- - Validate early with `forgecad run <file>`.
13
-
14
- ## Common Patterns
15
-
16
- ### Hollow Shell
17
- ```javascript
18
- const innerSize = outer - 2 * wall;
19
- const outerBox = box(outer, outer, outer).placeReference('center', [0, 0, 0]);
20
- const innerBox = box(innerSize, innerSize, innerSize).placeReference('center', [0, 0, 0]);
21
- return outerBox.subtract(innerBox);
22
- ```
23
-
24
- ### Sketch-Based Twist
25
- ```javascript
26
- const outer = ngon(sides, radius);
27
- const inner = ngon(sides, radius - wall);
28
- return outer.subtract(inner).extrude(height, { twist: 45, divisions: 32 });
29
- ```
30
-
31
- ### Rounded Profiles
32
- ```javascript
33
- // All convex corners — offset trick
34
- const base = rect(50, 30).offset(-3, 'Round').offset(3, 'Round');
35
-
36
- // Selected corners only
37
- const roof = filletCorners(roofPoints, [
38
- { index: 3, radius: 19 },
39
- { index: 4, radius: 19 },
40
- { index: 5, radius: 19 },
41
- ]);
42
- ```
43
-
44
- ### Choosing the right sketch-rounding tool
45
-
46
- - `offset(-r).offset(+r)` — round every convex corner of a closed outline
47
- - `stroke(points, width, 'Round')` — centerline-based geometry (ribs, traces)
48
- - `filletCorners(points, ...)` — selective true-corner fillets on mixed profiles
49
-
50
- ## Best Practices
51
-
52
- - All dimensions in millimeters; angles in degrees.
53
- - Primitives are centered on XY, base at Z=0. Use `placeReference('center', [0,0,0])` to center on all axes.
54
- - Prefer named intermediate values over deeply nested one-liners.
55
- - `union2d`, `difference2d`, `intersection2d` batch faster than chained `.add()` / `.subtract()`.
56
-
57
- ## Debugging
58
-
59
- ```javascript
60
- console.log("Volume:", shape.volume());
61
- ```
62
-
63
- For sketch-heavy work, compare the raw profile and rounded profile side-by-side before extruding:
64
-
65
- ```javascript
66
- return [
67
- { name: "Raw", sketch: polygon(roofPoints) },
68
- { name: "Rounded", sketch: filletCorners(roofPoints, [...]).translate(120, 0) },
69
- ];
70
- ```
71
-
72
- ## Common Errors
73
-
74
- - `"Kernel not initialized"` — internal/runtime issue, reload the app
75
- - zero dimensions or self-intersecting sketches → invalid geometry
76
- - wrong variable name → `"Cannot read property of undefined"`
77
-
78
- For deeper API coverage, load the relevant generated doc group from the skill source map instead of reaching for repo examples by default.
@@ -1,52 +0,0 @@
1
- ---
2
- skill-group: geometry
3
- skill-order: 2
4
- ---
5
-
6
- # Geometry Conventions
7
-
8
- ForgeCAD wraps Manifold (mesh kernel) and Three.js (Y-up renderer). This doc captures convention mismatches and how ForgeCAD resolves them.
9
-
10
- ## Winding Order
11
-
12
- CCW = positive area, CW = empty in Manifold's `CrossSection`. ForgeCAD auto-fixes at all entry points:
13
- - `polygon(points)` — computes signed area (shoelace), reverses if CW
14
- - `path().close()` — same fix
15
-
16
- **Rule for new code:** Any function accepting user point arrays that creates a `CrossSection` MUST auto-fix winding.
17
-
18
- ## Coordinate System (Z-up vs Y-up)
19
-
20
- Three.js is Y-up; ForgeCAD is Z-up. Fix applied at camera level (`camera.up = (0,0,1)`) — geometry coordinates are native Z-up. Never swap Y/Z in geometry.
21
-
22
- ## Revolution Axis
23
-
24
- `Sketch.revolve()` produces a world Z-axis solid of revolution. Profile X = radial distance from the Z axis, Profile Y = world Z height after revolution. Profile should stay at X > 0 unless intentionally touching the axis.
25
-
26
- ## Boolean Winding (3D)
27
-
28
- Manifold requires consistent outward face normals. ForgeCAD only creates meshes through Manifold's own constructors, which guarantee correct normals.
29
-
30
- ## Transform Order
31
-
32
- Transforms apply left-to-right. `Sketch.rotate()`, `scale()`, and `mirror()` operate around bounding-box center. For 3D `Shape` / `ShapeGroup`, `scale()` and `mirror()` operate around bounding-box center, while `rotate()` remains origin-based unless you pass `options.pivot` or use `rotateAroundAxis(...)`.
33
-
34
- For explicit transform objects: `A.mul(B)` = apply A then B; `composeChain(A, B, C)` = A→B→C.
35
-
36
- ## Assembly Frame Composition
37
-
38
- ```ts
39
- childWorld = composeChain(childBase, jointMotion, jointFrame, parentWorld)
40
- ```
41
-
42
- Prefer `composeChain(...)` over manual `.mul(...).mul(...)` in kinematics code to avoid order mistakes.
43
-
44
- ## Summary
45
-
46
- | Convention | User sees | Kernel needs | Where we fix it |
47
- |---|---|---|---|
48
- | Winding | Any point order | CCW | `polygon()`, `path().close()` |
49
- | Up axis | Z-up | Y-up (Three.js) | `camera.up`, gizmo labels |
50
- | Revolution | "revolve this profile" | Profile X = radius, Profile Y = world Z height | Documented and regression-tested |
51
- | Face normals | Doesn't think about it | Outward-pointing | Manifold constructors |
52
- | Transform order | Left-to-right chain | Post-multiply | Native match |
@@ -1,78 +0,0 @@
1
- ---
2
- skill-group: recipes
3
- skill-order: 1
4
- ---
5
-
6
- # Modeling Recipes
7
-
8
- ## Iteration Bias
9
-
10
- - Default to a buildable first pass instead of a long proposal.
11
- - Replace a broken model wholesale when that is faster than incremental patching.
12
- - Validate early with `forgecad run <file>`.
13
-
14
- ## Common Patterns
15
-
16
- ### Hollow Shell
17
- ```javascript
18
- const innerSize = outer - 2 * wall;
19
- const outerBox = box(outer, outer, outer).placeReference('center', [0, 0, 0]);
20
- const innerBox = box(innerSize, innerSize, innerSize).placeReference('center', [0, 0, 0]);
21
- return outerBox.subtract(innerBox);
22
- ```
23
-
24
- ### Sketch-Based Twist
25
- ```javascript
26
- const outer = ngon(sides, radius);
27
- const inner = ngon(sides, radius - wall);
28
- return outer.subtract(inner).extrude(height, { twist: 45, divisions: 32 });
29
- ```
30
-
31
- ### Rounded Profiles
32
- ```javascript
33
- // All convex corners — offset trick
34
- const base = rect(50, 30).offset(-3, 'Round').offset(3, 'Round');
35
-
36
- // Selected corners only
37
- const roof = filletCorners(roofPoints, [
38
- { index: 3, radius: 19 },
39
- { index: 4, radius: 19 },
40
- { index: 5, radius: 19 },
41
- ]);
42
- ```
43
-
44
- ### Choosing the right sketch-rounding tool
45
-
46
- - `offset(-r).offset(+r)` — round every convex corner of a closed outline
47
- - `stroke(points, width, 'Round')` — centerline-based geometry (ribs, traces)
48
- - `filletCorners(points, ...)` — selective true-corner fillets on mixed profiles
49
-
50
- ## Best Practices
51
-
52
- - All dimensions in millimeters; angles in degrees.
53
- - Primitives are centered on XY, base at Z=0. Use `placeReference('center', [0,0,0])` to center on all axes.
54
- - Prefer named intermediate values over deeply nested one-liners.
55
- - `union2d`, `difference2d`, `intersection2d` batch faster than chained `.add()` / `.subtract()`.
56
-
57
- ## Debugging
58
-
59
- ```javascript
60
- console.log("Volume:", shape.volume());
61
- ```
62
-
63
- For sketch-heavy work, compare the raw profile and rounded profile side-by-side before extruding:
64
-
65
- ```javascript
66
- return [
67
- { name: "Raw", sketch: polygon(roofPoints) },
68
- { name: "Rounded", sketch: filletCorners(roofPoints, [...]).translate(120, 0) },
69
- ];
70
- ```
71
-
72
- ## Common Errors
73
-
74
- - `"Kernel not initialized"` — internal/runtime issue, reload the app
75
- - zero dimensions or self-intersecting sketches → invalid geometry
76
- - wrong variable name → `"Cannot read property of undefined"`
77
-
78
- For deeper API coverage, load the relevant generated doc group from the skill source map instead of reaching for repo examples by default.
@@ -1,79 +0,0 @@
1
- # Prompt Template
2
-
3
- Use this as a fill-in structure, not as fixed text.
4
-
5
- ## Block Order
6
-
7
- 1. Artifact identity
8
- 2. Mechanical / build truth
9
- 3. Material and color truth
10
- 4. Pose and shot
11
- 5. Render style
12
- 6. Negative constraints
13
-
14
- ## Skeleton
15
-
16
- ```text
17
- A [artifact identity and scale], designed as a real buildable CAD-driven object, not a fantasy concept. [Major subassemblies and mechanism truth]. [Materials, colors, finish, and visible hardware truth]. Show it in [pose / state]. [Shot, camera, background, and lighting]. It should look physically buildable and mechanically honest, with visible part boundaries and serviceable architecture. No [negative 1], no [negative 2], no [negative 3].
18
- ```
19
-
20
- ## Default Prompt Shape
21
-
22
- Use this for most first-pass prompts:
23
-
24
- - artifact identity:
25
- compact benchtop robot arm, printable gripper, modular fixture, shop tool, enclosure, etc.
26
- - mechanism truth:
27
- weighted base, exposed belt reductions, mounted motor, support shafts, guide rods, removable cover, jaw mechanism, hinge stack, etc.
28
- - materials:
29
- PETG, TPU, aluminum shaft, brass pinion, black belt, matte plastic, realistic metal
30
- - shot:
31
- front-left three-quarter view
32
- - render style:
33
- clean premium studio product render, neutral background, soft diffused lighting, crisp soft shadows
34
- - negatives:
35
- fake sleek shell, hidden mechanics, over-smoothed geometry, text, labels, humans
36
-
37
- ## Shot Suffixes
38
-
39
- Useful one-line suffixes:
40
-
41
- - `front-left three-quarter hero view, eye-level product camera`
42
- - `rear-right three-quarter view showing motor placement and belt routing`
43
- - `pure side view showing the reach silhouette and joint stack clearly`
44
- - `close-up on the wrist and end effector showing the mechanism clearly`
45
-
46
- ## Mode Swaps
47
-
48
- ### Honest Hero Render
49
-
50
- Add phrases like:
51
-
52
- - `clean premium studio product render`
53
- - `show the final artifact clearly`
54
- - `physically buildable and mechanically honest`
55
- - `visible part boundaries and serviceable architecture`
56
-
57
- ### Builder-First Mechanical Render
58
-
59
- Add phrases like:
60
-
61
- - `emphasizing how it would actually be built`
62
- - `clear visibility of interfaces, seams, and subsystem boundaries`
63
- - `serious prototype, not a polished consumer shell`
64
-
65
- ### Mild Exploded Assembly Render
66
-
67
- Add phrases like:
68
-
69
- - `major modules separated by small clean gaps`
70
- - `reveal the build logic without chaotic disassembly`
71
- - `no tiny floating fragments, no labels, no arrows`
72
-
73
- ### Workshop Prototype Realism
74
-
75
- Add phrases like:
76
-
77
- - `realistic workshop photo`
78
- - `visible print lines and honest surface texture`
79
- - `believable but uncluttered engineering bench background`