forgecad 0.9.7 → 0.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/assets/{AdminPage-DX0mpSZT.js → AdminPage-CXaVLMiV.js} +1 -1
- package/dist/assets/{BlogPage-CI_P0_Pf.js → BlogPage-Crpr3JjH.js} +1 -1
- package/dist/assets/{DocsPage-DLhIIZyJ.js → DocsPage-CNBKuitP.js} +2 -2
- package/dist/assets/{EditorApp-DfFT2Dn8.css → EditorApp-D11wL4Qn.css} +51 -0
- package/dist/assets/{EditorApp-BujZvuwX.js → EditorApp-DVMnXOmO.js} +151 -9
- package/dist/assets/{EmbedViewer-0S0qXKog.js → EmbedViewer-KXFLSnpo.js} +2 -2
- package/dist/assets/{LandingPageProofDriven-O_yMtAri.js → LandingPageProofDriven-2q2sn7aW.js} +1 -1
- package/dist/assets/{PricingPage-DGkX3Ahr.js → PricingPage-CVvgdv0i.js} +1 -1
- package/dist/assets/{SettingsPage-DBsqTB_y.js → SettingsPage-BVj1FtEv.js} +1 -1
- package/dist/assets/__vite-browser-external-Dhvy_jtL.js +4 -0
- package/dist/assets/{app-BE2nD6Yz.js → app-Dn4EwHhN.js} +707 -458
- package/dist/assets/cli/{render-iP9qh475.js → render-BI3gLMXz.js} +1011 -145
- package/dist/assets/constructionHistoryWorker-z9_LGiRd.js +42984 -0
- package/dist/assets/{evalWorker-Ds5U4xtN.js → evalWorker-CtO7GsJR.js} +42 -9
- package/dist/assets/{inspectWorker-Dll4eVyD.js → inspectWorker-BZ2CkQZr.js} +785 -111
- package/dist/assets/{manifold-sJ-axdXM.js → manifold-BVi4_OeB.js} +1 -1
- package/dist/assets/{manifold-DjYsd7A_.js → manifold-C6-sZYQN.js} +2 -2
- package/dist/assets/manifold-Cp_dCC7i.js +3018 -0
- package/dist/assets/{manifold-Bk26ViCr.js → manifold-DAzn2Fsa.js} +1 -1
- package/dist/assets/{renderSceneState-Bngp5MrQ.js → renderSceneState-BIvOkPK3.js} +1 -1
- package/dist/assets/{reportWorker-CU8RZ4O0.js → reportWorker-Bz9tGiHb.js} +42 -9
- package/dist/assets/{sectionPlaneMath-BdTjyVfs.js → scalar-sampling-budget-iBAeF8RM.js} +483 -71
- package/dist/cli/render.html +1 -1
- package/dist/docs/index.html +1 -1
- package/dist/docs-raw/CLI.md +10 -10
- package/dist/docs-raw/coding-best-practices.md +1 -1
- package/dist/docs-raw/guides/inspection-bundles.md +77 -19
- package/dist/docs-raw/guides/skill-maintenance.md +1 -1
- package/dist/docs-raw/runbook.md +2 -2
- package/dist/docs-raw/skills/forgecad-make-a-model.md +11 -0
- package/dist/docs-raw/skills/forgecad-render-inspect.md +12 -6
- package/dist/docs-raw/skills/index.md +1 -1
- package/dist/index.html +1 -1
- package/dist/sitemap.xml +6 -6
- package/dist-cli/forgecad.js +596 -354
- package/dist-cli/forgecad.js.map +1 -1
- package/dist-skill/CONTEXT.md +77 -19
- package/dist-skill/docs/CLI.md +10 -10
- package/dist-skill/docs/guides/inspection-bundles.md +77 -19
- package/dist-skill/docs-dev/CLI.md +10 -10
- package/dist-skill/docs-dev/coding-best-practices.md +1 -1
- package/dist-skill/docs-dev/guides/inspection-bundles.md +77 -19
- package/dist-skill/docs-dev/guides/skill-maintenance.md +1 -1
- package/dist-skill/library/forgecad-make-a-model/SKILL.md +11 -0
- package/dist-skill/library/forgecad-render-inspect/SKILL.md +12 -6
- package/package.json +6 -3
package/dist/docs-raw/CLI.md
CHANGED
|
@@ -191,7 +191,7 @@ forgecad render views model.forge.js --json
|
|
|
191
191
|
|
|
192
192
|
Render a machine-readable inspection bundle with geometry channels and a manifest.
|
|
193
193
|
|
|
194
|
-
Launches the headless viewport renderer and writes a directory bundle for agent and automation workflows. Every channel is opt-in with `--channels`; there is no default bundle. Selected channels emit canonical `front`, `right`, `top`, and `iso` views for RGB, depth, normals, surface roughness, object masks, physical connectivity, rooted component distance, collisions, and wall thickness, or a principal-plane section atlas, plus a root `manifest.json` with scene metadata, filters, object visibility, and relative file paths.
|
|
194
|
+
Launches the headless viewport renderer and writes a directory bundle for agent and automation workflows. Every channel is opt-in with `--channels`; there is no default bundle. Selected channels emit canonical `front`, `right`, `top`, and `iso` views for RGB, depth, normals, Zebra surface-continuity stripes, surface roughness, object masks, physical connectivity, floating body highlights, rooted component distance, collisions, and wall thickness, or a principal-plane section atlas, plus a root `manifest.json` with scene metadata, filters, object visibility, and relative file paths.
|
|
195
195
|
|
|
196
196
|
Use `--focus` to isolate specific parts or hide mocks, and `--hide` to remove named clutter. Output defaults to `<script-name>-inspect/` next to the input file.
|
|
197
197
|
|
|
@@ -199,6 +199,7 @@ For bundle layout, channel encodings, and manifest semantics, see [Inspection Bu
|
|
|
199
199
|
|
|
200
200
|
```bash
|
|
201
201
|
forgecad render inspect examples/api/static-assembly-connectors.forge.js --channels rgb,mask
|
|
202
|
+
forgecad render inspect examples/api/static-assembly-connectors.forge.js --channels rgb,zebra,normals
|
|
202
203
|
forgecad render inspect examples/api/static-assembly-connectors.forge.js out/bench-inspect --channels collisions --focus "Bench.*"
|
|
203
204
|
forgecad render inspect examples/api/static-assembly-connectors.forge.js --channels rgb,mask,collisions --hide "Bench.Slat0" --force
|
|
204
205
|
```
|
|
@@ -299,21 +300,21 @@ forgecad render section examples/furniture/01-table.forge.js out/bold.svg --edge
|
|
|
299
300
|
| `--background <color>` | Canvas background override |
|
|
300
301
|
| `--render-mode <solid\|wireframe>` | Shaded solid (default) or wireframe only |
|
|
301
302
|
| `--edges <off\|thin\|bold>` | Edge overlay preset in solid mode (default: off) |
|
|
302
|
-
| `--render-style <classic\|studio\|fast\|glass>` | Visual render style (default: classic) |
|
|
303
|
+
| `--render-style <classic\|studio\|fast\|glass\|precision\|hybrid>` | Visual render style (default: classic) |
|
|
303
304
|
| `--port <n>` | Vite dev server port |
|
|
304
305
|
| `--fresh-server` | Start a fresh renderer instead of reusing an existing one |
|
|
305
306
|
| `--chrome-path <path>` | Chrome or Chromium executable path |
|
|
306
307
|
| `--output <path>` | Output file path |
|
|
307
308
|
| `--json` | Print machine-readable JSON |
|
|
308
309
|
| `--quality <default\|live\|high>` | Mesh quality preset |
|
|
309
|
-
| `--backend <manifold\|occt\|truck>` | Geometry backend |
|
|
310
|
-
| `--channels <rgb,depth,normals,roughness,mask,connectivity,distance,collisions,thickness,section>` | Required inspection channels to emit; no default |
|
|
310
|
+
| `--backend <manifold\|occt\|truck>` | Geometry backend (default: manifold) |
|
|
311
|
+
| `--channels <rgb,depth,normals,zebra,roughness,mask,connectivity,floating,distance,collisions,thickness,section>` | Required inspection channels to emit; no default |
|
|
311
312
|
| `--force` | Replace an existing bundle directory |
|
|
312
313
|
| `--min-thickness <mm>` | Critical thickness threshold in model units |
|
|
313
314
|
| `--warn-thickness <mm>` | Warning thickness threshold in model units |
|
|
314
315
|
| `--max-thickness <mm>` | Thick/blue heatmap threshold in model units |
|
|
315
|
-
| `--thickness-samples <n>` |
|
|
316
|
-
| `--roughness-samples <n>` |
|
|
316
|
+
| `--thickness-samples <n>` | Override default scene budget with max thickness point samples per object |
|
|
317
|
+
| `--roughness-samples <n>` | Override default scene budget with max roughness point samples per object |
|
|
317
318
|
| `--preset <name>` | Material/lighting preset |
|
|
318
319
|
| `--width <px>` | Output width in pixels |
|
|
319
320
|
| `--height <px>` | Output height in pixels |
|
|
@@ -400,7 +401,7 @@ forgecad export sdf rover.forge.js --output out/forge_scout
|
|
|
400
401
|
|--------|-------------|
|
|
401
402
|
| `--output <path>` | Output STEP path |
|
|
402
403
|
| `--quality <default\|live\|high>` | Forge quality preset |
|
|
403
|
-
| `--backend <manifold\|occt\|truck>` | Geometry backend |
|
|
404
|
+
| `--backend <manifold\|occt\|truck>` | Geometry backend (default: manifold) |
|
|
404
405
|
| `-o <path>` | Output file path |
|
|
405
406
|
| `--dim-angle-tol <deg>` | Dimension routing tolerance in degrees |
|
|
406
407
|
| `--sheet-width <mm>` | Stock sheet width in mm |
|
|
@@ -548,7 +549,7 @@ forgecad skill flattened-files ~/Desktop/forgecad-skills
|
|
|
548
549
|
|
|
549
550
|
## Validation
|
|
550
551
|
|
|
551
|
-
Check printability, test parameter ranges, and run
|
|
552
|
+
Check printability, test parameter ranges, and run focused model invariants.
|
|
552
553
|
|
|
553
554
|
### `forgecad check print`
|
|
554
555
|
|
|
@@ -601,7 +602,6 @@ forgecad check params path/to/model.forge.js --samples 12
|
|
|
601
602
|
|
|
602
603
|
| Command | Description |
|
|
603
604
|
|---------|-------------|
|
|
604
|
-
| `check suite` | Run the repo invariant suite, with smoke and full profiles for the fast merge lane vs the broader regression sweep. |
|
|
605
605
|
| `inspect mechanical-integrity` | Inspect generated ForgeCAD models for mechanical integrity failures. |
|
|
606
606
|
| `check runtime-globals` | Ensure the script sandbox does not add new lowercase injected globals. |
|
|
607
607
|
| `check transforms` | Run transform and assembly invariants. |
|
|
@@ -646,7 +646,7 @@ The CLI is free for core workflows and exports. Production outputs are free to r
|
|
|
646
646
|
|
|
647
647
|
| Free | Production outputs | Pro |
|
|
648
648
|
|------|--------------------|-----|
|
|
649
|
-
| `run`, `dev`, `studio`, `render 3d`, `export stl`, `export 3mf`, `export svg`, `check print`, `check params`, `inspect mechanical-integrity
|
|
649
|
+
| `run`, `dev`, `studio`, `render 3d`, `export stl`, `export 3mf`, `export svg`, `check print`, `check params`, `inspect mechanical-integrity` | `cut-list`, `export sketch-pdf`, `export step`, `export brep`, `export gcode`, `export sdf`, `export urdf`, `export report`, `export cutting-layout` are free to run; Pro covers commercial use. | `render hq`, `capture gif`, `capture mp4` |
|
|
650
650
|
|
|
651
651
|
```bash
|
|
652
652
|
forgecad license # Check signed-in account status
|
|
@@ -65,7 +65,7 @@ npm run lint:fix # auto-fix lint issues
|
|
|
65
65
|
npm run format # auto-format all files
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
Biome runs as part of `
|
|
68
|
+
Biome runs as part of `npm run check:suite`. Configuration lives in `biome.json` at the repo root.
|
|
69
69
|
|
|
70
70
|
## Self-Review Before Commit
|
|
71
71
|
|
|
@@ -7,9 +7,9 @@ skill-order: 2
|
|
|
7
7
|
|
|
8
8
|
`forgecad render inspect` writes a deterministic directory bundle for agents,
|
|
9
9
|
tests, and automation. Use it when a single shaded PNG is too ambiguous and the
|
|
10
|
-
consumer needs geometry-aware signals such as depth, normals,
|
|
11
|
-
part identity, physical connected components, collisions,
|
|
12
|
-
cross-sections.
|
|
10
|
+
consumer needs geometry-aware signals such as depth, normals, Zebra stripes,
|
|
11
|
+
surface roughness, part identity, physical connected components, collisions,
|
|
12
|
+
local thickness, or cross-sections.
|
|
13
13
|
|
|
14
14
|
## When To Use It
|
|
15
15
|
|
|
@@ -49,7 +49,7 @@ with patterns such as `Bench.*`.
|
|
|
49
49
|
|
|
50
50
|
## Bundle Layout
|
|
51
51
|
|
|
52
|
-
A bundle that asks for `--channels rgb,depth,normals,mask,section` has this
|
|
52
|
+
A bundle that asks for `--channels rgb,depth,normals,zebra,mask,section` has this
|
|
53
53
|
layout:
|
|
54
54
|
|
|
55
55
|
```text
|
|
@@ -71,6 +71,11 @@ model-inspect/
|
|
|
71
71
|
right.png
|
|
72
72
|
top.png
|
|
73
73
|
iso.png
|
|
74
|
+
zebra/
|
|
75
|
+
front.png
|
|
76
|
+
right.png
|
|
77
|
+
top.png
|
|
78
|
+
iso.png
|
|
74
79
|
mask/
|
|
75
80
|
front.png
|
|
76
81
|
right.png
|
|
@@ -96,13 +101,15 @@ implemented channel in one bundle:
|
|
|
96
101
|
|
|
97
102
|
```bash
|
|
98
103
|
forgecad render inspect model.forge.js --channels depth,normals
|
|
104
|
+
forgecad render inspect model.forge.js --channels rgb,zebra,normals
|
|
99
105
|
forgecad render inspect model.forge.js --channels rgb,roughness
|
|
100
106
|
forgecad render inspect model.forge.js --channels rgb,mask,collisions
|
|
101
107
|
forgecad render inspect model.forge.js --channels rgb,section,thickness
|
|
102
108
|
```
|
|
103
109
|
|
|
104
|
-
Supported channels are `rgb`, `depth`, `normals`, `roughness`, `mask`,
|
|
105
|
-
`connectivity`, `distance`, `collisions`, `thickness`, and
|
|
110
|
+
Supported channels are `rgb`, `depth`, `normals`, `zebra`, `roughness`, `mask`,
|
|
111
|
+
`connectivity`, `floating`, `distance`, `collisions`, `thickness`, and
|
|
112
|
+
`section`.
|
|
106
113
|
|
|
107
114
|
## Channel Semantics
|
|
108
115
|
|
|
@@ -129,6 +136,17 @@ normal = normalize((rgb / 255) * 2 - 1)
|
|
|
129
136
|
|
|
130
137
|
Background pixels are black and should be treated as `null`.
|
|
131
138
|
|
|
139
|
+
`zebra` emits reflective black-and-white stripe renders for visual
|
|
140
|
+
surface-continuity inspection. Stripes are generated from the visible
|
|
141
|
+
camera-view normal and simulated reflection direction, so smooth surfaces show
|
|
142
|
+
smooth flowing bands while normal discontinuities, faceting, and unexpected
|
|
143
|
+
creases kink or break the bands.
|
|
144
|
+
|
|
145
|
+
Use Zebra with `rgb` and `normals` when judging lofts, fillets, swept surfaces,
|
|
146
|
+
and skin-like forms. It is a human-readable shader diagnostic, not an exact
|
|
147
|
+
curvature-continuity proof; mesh tessellation quality and available smooth
|
|
148
|
+
normals determine how faithfully it represents the underlying surface.
|
|
149
|
+
|
|
132
150
|
`roughness` emits a mesh-dihedral surface-quality heatmap. Smooth and gently
|
|
133
151
|
curved triangles render as a faint translucent shadow over black, while
|
|
134
152
|
triangles adjacent to sharp, harsh, boundary, or non-manifold mesh edges render
|
|
@@ -170,21 +188,58 @@ Connectivity is computed from visible scene objects:
|
|
|
170
188
|
|
|
171
189
|
```text
|
|
172
190
|
bbox candidate = bbox interiors overlap or bbox contact gap <= 0.05 model units
|
|
173
|
-
|
|
174
|
-
|
|
191
|
+
mesh contact edge = minimum mesh-surface distance <= contactTolerance
|
|
192
|
+
overlap edge = exact boolean intersection volume > 0.1 model units^3 for positive-volume overlap
|
|
193
|
+
component = transitive closure over mesh contact and exact overlap edges
|
|
175
194
|
```
|
|
176
195
|
|
|
177
196
|
The manifest stores the edge list, component list, per-object body counts, and
|
|
178
|
-
warnings. Component colors group scene objects
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
197
|
+
warnings. Component colors group scene objects and mesh body entries. If one
|
|
198
|
+
scene object contains multiple disconnected mesh islands, those islands are
|
|
199
|
+
reported and colored separately as entries such as `Part body 1` and
|
|
200
|
+
`Part body 2`.
|
|
201
|
+
|
|
202
|
+
Connectivity uses bbox only as a broadphase. Bbox contact alone is not enough to
|
|
203
|
+
merge separate scene objects by default, but mesh surfaces within contact
|
|
204
|
+
tolerance count as physically connected. This keeps concave assemblies such as
|
|
205
|
+
cages and captive balls from being falsely colored as one component while still
|
|
206
|
+
allowing stacked or nearly touching parts to share a component. Use the
|
|
207
|
+
`collisions` channel when you need positive-volume overlap evidence as a defect
|
|
208
|
+
report rather than a component grouping.
|
|
209
|
+
|
|
210
|
+
`floating` emits one disconnected-body highlight image per view. Black is
|
|
211
|
+
background or ground-reachable geometry. The highlight color marks physical
|
|
212
|
+
components that have no contact path to the ground plane.
|
|
213
|
+
|
|
214
|
+
Floating body detection splits visible meshes into disconnected body islands,
|
|
215
|
+
links bodies only when their minimum mesh-surface distance is within contact
|
|
216
|
+
tolerance (or exact positive-volume overlap when only shape evidence is
|
|
217
|
+
available), treats any connected component whose lower Z reaches the viewport
|
|
218
|
+
ground plane plus bed tolerance as grounded, then highlights every ungrounded
|
|
219
|
+
component. The default ground plane is the visible model's minimum Z;
|
|
220
|
+
`scene({ ground: { offset } })` moves it below that by the configured offset.
|
|
182
221
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
222
|
+
```text
|
|
223
|
+
grounded = component bbox minZ <= groundZ + bedTolerance
|
|
224
|
+
floating body = !grounded
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
This means a `union()` result with two disconnected mesh islands is inspected as
|
|
228
|
+
two separate bodies instead of being treated as one safe object. Bbox overlap or
|
|
229
|
+
bbox face contact alone is not support evidence. Use `connectivity`, `distance`,
|
|
230
|
+
or `collisions` when you need the full physical graph, rooted gap distances, or
|
|
231
|
+
collision defects.
|
|
232
|
+
|
|
233
|
+
`thickness` emits one local wall-thickness heatmap per view. Black is
|
|
234
|
+
background. Red/orange pixels are below the configured critical/warning
|
|
235
|
+
thresholds, green-to-blue pixels are acceptable/thick, and gray means the local
|
|
236
|
+
raycast could not resolve an opposite surface.
|
|
237
|
+
|
|
238
|
+
Thickness uses the same physical-contact edges as `connectivity` and `floating`.
|
|
239
|
+
When a ray crosses from one object to a direct physical-contact neighbor, hits
|
|
240
|
+
within `contactTolerance` are treated as contact seams and the ray continues to
|
|
241
|
+
the next surface. This prevents a tiny modeled gap between touching parts from
|
|
242
|
+
being reported as a paper-thin wall.
|
|
188
243
|
|
|
189
244
|
`distance` emits one rooted physical-component-distance heatmap per view. Black
|
|
190
245
|
is background. Non-black pixels resolve through
|
|
@@ -233,6 +288,10 @@ with the ghosted source geometry. If `--focus PartA,PartB` is used, everything
|
|
|
233
288
|
except those objects is hidden, `PartA` and `PartB` are ghosted, and their
|
|
234
289
|
overlap volume is highlighted if present.
|
|
235
290
|
|
|
291
|
+
Collision broadphase prunes exact boolean checks when the bbox intersection
|
|
292
|
+
volume is already below the overlap threshold. This does not change findings:
|
|
293
|
+
the real intersection volume cannot exceed the bbox intersection volume.
|
|
294
|
+
|
|
236
295
|
`thickness` emits one local wall-thickness heatmap per view. The renderer places
|
|
237
296
|
deterministic area-weighted point samples across visible mesh surfaces, casts
|
|
238
297
|
through the object along each sample normal, and colors each point by the first
|
|
@@ -316,5 +375,4 @@ per-view depth ranges, and object-mask mappings live.
|
|
|
316
375
|
guarantee. Open meshes, concave geometry, very coarse tessellation, or low
|
|
317
376
|
`--thickness-samples` values can leave gray/unresolved or approximate regions.
|
|
318
377
|
- Section atlases use five default interior slices today.
|
|
319
|
-
- Zebra
|
|
320
|
-
bundle.
|
|
378
|
+
- Zebra is a shader-based visual continuity aid, not exact curvature analysis.
|
|
@@ -132,7 +132,7 @@ Use a `skill-group` with a `dev-` prefix (e.g. `dev-compiler`, `dev-solver`, `de
|
|
|
132
132
|
| Does a model author need this to build `.forge.js` files? | Standard |
|
|
133
133
|
| Does it describe internal architecture (compiler, solver, pipeline)? | Dev only |
|
|
134
134
|
| Does it cover team process (coding standards, releases, CI)? | Dev only |
|
|
135
|
-
| Is it
|
|
135
|
+
| Is it repo-only developer tooling (`npm run check:suite`, `sdf`, debug flags)? | Dev only |
|
|
136
136
|
|
|
137
137
|
## Orphan files
|
|
138
138
|
|
package/dist/docs-raw/runbook.md
CHANGED
|
@@ -239,6 +239,8 @@ npm run test:unit # vitest
|
|
|
239
239
|
npm test # smoke invariant suite
|
|
240
240
|
npm run test:smoke # same as npm test
|
|
241
241
|
npm run test:full # broader regression sweep
|
|
242
|
+
npm run check:suite # repo invariant suite
|
|
243
|
+
npm run check:suite -- --profile smoke
|
|
242
244
|
npm run test:examples # maintained fast example smoke lane
|
|
243
245
|
npm run test:examples:full # full example catalog sweep
|
|
244
246
|
```
|
|
@@ -246,8 +248,6 @@ npm run test:examples:full # full example catalog sweep
|
|
|
246
248
|
### Invariant checks (CLI)
|
|
247
249
|
|
|
248
250
|
```bash
|
|
249
|
-
node dist-cli/forgecad.js check suite
|
|
250
|
-
node dist-cli/forgecad.js check suite --profile smoke
|
|
251
251
|
node dist-cli/forgecad.js check examples
|
|
252
252
|
node dist-cli/forgecad.js check examples --profile smoke
|
|
253
253
|
node dist-cli/forgecad.js check examples --profile full
|
|
@@ -266,6 +266,17 @@ After the normal PNG render, run `forgecad render inspect` and read both the cha
|
|
|
266
266
|
forgecad render inspect model.forge.js /tmp/model-inspect --channels rgb,mask,collisions --force --size 700
|
|
267
267
|
```
|
|
268
268
|
|
|
269
|
+
#### Keep CLI inspection scenes small
|
|
270
|
+
|
|
271
|
+
When using CLI inspection commands, make the scene as few returned/named objects as the requirement allows. The goal is not to hide required geometry; it is to keep the evidence small enough that the agent can reason about it properly.
|
|
272
|
+
|
|
273
|
+
- Return one selected configuration, not every variant, option bundle, or debug lineup.
|
|
274
|
+
- Include only the parts, ghosts, and fixtures needed to prove the current risk. If a collision, clearance, thickness, or section check concerns three objects, inspect those three objects instead of the whole shop floor.
|
|
275
|
+
- Prefer `--focus` / `--hide` and parameter-selected diagnostic modes over adding permanent extra objects to the default scene.
|
|
276
|
+
- Collapse decorative or already-proven subassemblies into fewer named objects when their internal boundaries are irrelevant to the inspection. Keep separate names only where object identity matters for collisions, masks, clearances, BOM roles, or mechanical contracts.
|
|
277
|
+
|
|
278
|
+
Small inspection scenes make `manifest.json`, mask colors, collision pairs, component counts, and section images cognitively tractable. If the agent cannot hold the scene in its head, it cannot debug the model honestly.
|
|
279
|
+
|
|
269
280
|
For faster iteration, request the channels that match the current risk:
|
|
270
281
|
|
|
271
282
|
- `collisions` — final multi-part assemblies, fixtures, enclosures, ghost fit checks, moving clearances, and any parts intended to touch without overlapping. Visually inspect this channel; do not rely only on the count.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# forgecad-render-inspect
|
|
2
2
|
|
|
3
|
-
Run and interpret ForgeCAD `render inspect` bundles for model verification. Use when asked to inspect a ForgeCAD model, analyze an inspection bundle, validate collisions, wall thickness, connectivity, sections, masks, depth, normals, or choose inspection channels.
|
|
3
|
+
Run and interpret ForgeCAD `render inspect` bundles for model verification. Use when asked to inspect a ForgeCAD model, analyze an inspection bundle, validate collisions, wall thickness, connectivity, floating bodies, sections, masks, depth, normals, Zebra stripes, or choose inspection channels.
|
|
4
4
|
|
|
5
5
|
| Field | Value |
|
|
6
6
|
| --- | --- |
|
|
@@ -23,7 +23,7 @@ Use this skill for:
|
|
|
23
23
|
|
|
24
24
|
- inspecting an existing `.forge.js` model
|
|
25
25
|
- analyzing a previously generated inspection bundle
|
|
26
|
-
- validating collisions, wall thickness, section cuts, connectivity, distance, object masks, depth, or
|
|
26
|
+
- validating collisions, wall thickness, section cuts, connectivity, floating bodies, distance, object masks, depth, normals, or Zebra stripes
|
|
27
27
|
- deciding which `render inspect` channels to run
|
|
28
28
|
- producing evidence before calling a model complete
|
|
29
29
|
|
|
@@ -75,6 +75,7 @@ Routing:
|
|
|
75
75
|
jq '.channels.collisions | {collisionCount, collisions, warnings}' /tmp/model-inspect/manifest.json
|
|
76
76
|
jq '.channels.thickness.objects[] | {name, minThickness, p05Thickness, criticalAreaPercent, warningAreaPercent, unresolvedAreaPercent}' /tmp/model-inspect/manifest.json
|
|
77
77
|
jq '.channels.connectivity | {componentCount, edges, warnings}' /tmp/model-inspect/manifest.json
|
|
78
|
+
jq '.channels.floating | {floatingBodyCount, floatingObjectCount, warnings}' /tmp/model-inspect/manifest.json
|
|
78
79
|
```
|
|
79
80
|
|
|
80
81
|
6. Inspect the PNGs, not only the JSON.
|
|
@@ -95,9 +96,11 @@ Routing:
|
|
|
95
96
|
| Multi-part interference, fit checks, ghost parts, moving clearances | `rgb,mask,collisions` |
|
|
96
97
|
| Final multi-part mechanical or manufactured model | `rgb,mask,collisions` plus `section`, `thickness`, `connectivity`, or `distance` only when those risks apply |
|
|
97
98
|
| Printability, shell walls, ribs, bosses, snaps, slots | `rgb,section,thickness` |
|
|
98
|
-
|
|
|
99
|
+
| Parts without a mesh-contact path to the ground | `rgb,mask,floating` |
|
|
100
|
+
| Accidental fusion, connected solids | `rgb,mask,connectivity` |
|
|
99
101
|
| Air gaps between physical components | `rgb,mask,distance` |
|
|
100
102
|
| Surface orientation, occlusion, faceting, strange protrusions | `rgb,depth,normals` |
|
|
103
|
+
| Loft, fillet, skin, and sweep surface continuity | `rgb,zebra,normals` |
|
|
101
104
|
|
|
102
105
|
### Command Patterns
|
|
103
106
|
|
|
@@ -149,6 +152,7 @@ Manifest fields to check first:
|
|
|
149
152
|
- `channels.collisions.collisionCount`: investigate every unexpected positive-volume overlap.
|
|
150
153
|
- `channels.thickness.objects`: inspect `minThickness`, `p05Thickness`, critical/warning percentages, and unresolved area.
|
|
151
154
|
- `channels.connectivity.componentCount`: compare to the expected number of physical components.
|
|
155
|
+
- `channels.floating.floatingBodyCount`: investigate every body without a mesh-contact path to the ground plane, especially body entries from one unioned object.
|
|
152
156
|
- `channels.distance.maxRootDistance` and per-object `nearestGap`: check suspicious isolation or spacing.
|
|
153
157
|
- `channels.section.planes`: look for missing slices, wrong path counts, or empty internal cuts. These are inspection views, not instructions to section the returned production geometry.
|
|
154
158
|
|
|
@@ -163,11 +167,13 @@ PNG review order:
|
|
|
163
167
|
### Interpretation Rules
|
|
164
168
|
|
|
165
169
|
- Collision findings are positive-volume boolean overlaps. Face-touching is not a collision.
|
|
166
|
-
- Connectivity uses bbox as a broadphase, then
|
|
170
|
+
- Connectivity uses bbox as a broadphase, then shared physical-contact detection for component grouping: mesh surfaces within contact tolerance count as connected, exact positive-volume overlap is used when needed, and bbox-only contact does not merge separate scene objects by default. Use the collisions channel for positive-volume overlap evidence.
|
|
171
|
+
- Floating uses the same shared physical-contact detection plus scene-ground reachability. Mesh gaps within contact tolerance count as connected, bbox overlap or bbox face contact alone does not, and every component without a contact path to ground is reported. Disconnected mesh islands inside one object are inspected separately.
|
|
167
172
|
- Distance is a bbox-gap metric between physical components, not exact closest surface distance.
|
|
168
|
-
- Thickness is a mesh/raycast approximation. Gray or high unresolved area means the visual heatmap is incomplete, not that the model is safe.
|
|
173
|
+
- Thickness is a contact-aware mesh/raycast approximation. It uses the same physical-contact edges as connectivity/floating, so rays jump over direct-neighbor contact seams within contact tolerance before measuring the next surface. Gray or high unresolved area means the visual heatmap is incomplete, not that the model is safe.
|
|
169
174
|
- Depth is a visual heatmap, not raw floating-point depth data.
|
|
170
175
|
- Normals are camera-view normals, not world-space normals.
|
|
176
|
+
- Zebra is a reflective stripe shader for visual continuity inspection, not an exact curvature-continuity proof.
|
|
171
177
|
- Mask colors are stable within a bundle and resolved through the manifest.
|
|
172
178
|
|
|
173
179
|
### Source Map
|
|
@@ -182,7 +188,7 @@ Read these only when needed:
|
|
|
182
188
|
| Browser-side channel rendering | `cli/render.ts` |
|
|
183
189
|
| Collision semantics | `cli/collision-inspection.ts` |
|
|
184
190
|
| Thickness semantics | `cli/thickness-inspection.ts` |
|
|
185
|
-
| Connectivity and distance semantics | `cli/physical-connectivity.ts` and `cli/distance-inspection.ts` |
|
|
191
|
+
| Connectivity, floating, and distance semantics | `cli/physical-connectivity.ts`, `cli/floating-inspection.ts`, and `cli/distance-inspection.ts` |
|
|
186
192
|
|
|
187
193
|
|
|
188
194
|
## Bundled Files
|
|
@@ -17,5 +17,5 @@ forgecad skill install
|
|
|
17
17
|
| [forgecad-make-a-model](/docs/skills/forgecad-make-a-model) | `forgecad skill install` | Create manufacture-realistic prototype ForgeCAD (.forge.js) models in the active CAD project. Handles file placement, invokes the forgecad skill for API guidance, and validates the result. |
|
|
18
18
|
| [forgecad-prepare-prompt](/docs/skills/forgecad-prepare-prompt) | `forgecad skill install` | Turn a fuzzy physical product, mechanism, or CAD artifact request into a concrete manufacture-realistic prototype ForgeCAD build brief and a single master prompt for the modeling pass. Use when the engineering brief is incomplete, manufacturing/process choice is underspecified, or the work needs a specific operating story to avoid generic toy solutions. |
|
|
19
19
|
| [forgecad-project](/docs/skills/forgecad-project) | `forgecad skill install` | ForgeCAD project CLI workflow — creating, managing, syncing projects and files on forgecad.io. Covers init, push, pull, file operations, member management, publishing, and sharing. |
|
|
20
|
-
| [forgecad-render-inspect](/docs/skills/forgecad-render-inspect) | `forgecad skill install` | Run and interpret ForgeCAD `render inspect` bundles for model verification. Use when asked to inspect a ForgeCAD model, analyze an inspection bundle, validate collisions, wall thickness, connectivity, sections, masks, depth, normals, or choose inspection channels. |
|
|
20
|
+
| [forgecad-render-inspect](/docs/skills/forgecad-render-inspect) | `forgecad skill install` | Run and interpret ForgeCAD `render inspect` bundles for model verification. Use when asked to inspect a ForgeCAD model, analyze an inspection bundle, validate collisions, wall thickness, connectivity, floating bodies, sections, masks, depth, normals, Zebra stripes, or choose inspection channels. |
|
|
21
21
|
| [forgecad-visual-spec](/docs/skills/forgecad-visual-spec) | `forgecad skill install` | Turn a concrete ForgeCAD artifact, build brief, HLD, or existing model into builder-honest image prompts for AI image models. Use when the user wants visual-spec renders that show the final product while keeping mechanisms, seams, hardware, and build cues visible instead of drifting into concept art. |
|
package/dist/index.html
CHANGED
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
56
56
|
html, body, #root { width: 100%; min-height: 100%; background: var(--fc-bg); color: var(--fc-text); font-family: system-ui, -apple-system, sans-serif; }
|
|
57
57
|
</style>
|
|
58
|
-
<script type="module" crossorigin src="/assets/app-
|
|
58
|
+
<script type="module" crossorigin src="/assets/app-Dn4EwHhN.js"></script>
|
|
59
59
|
<link rel="stylesheet" crossorigin href="/assets/app-CsHnaBWt.css">
|
|
60
60
|
</head>
|
|
61
61
|
<body>
|
package/dist/sitemap.xml
CHANGED
|
@@ -2,37 +2,37 @@
|
|
|
2
2
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
3
3
|
<url>
|
|
4
4
|
<loc>https://forgecad.io/</loc>
|
|
5
|
-
<lastmod>2026-05-
|
|
5
|
+
<lastmod>2026-05-22</lastmod>
|
|
6
6
|
<changefreq>weekly</changefreq>
|
|
7
7
|
<priority>1.0</priority>
|
|
8
8
|
</url>
|
|
9
9
|
<url>
|
|
10
10
|
<loc>https://forgecad.io/docs</loc>
|
|
11
|
-
<lastmod>2026-05-
|
|
11
|
+
<lastmod>2026-05-22</lastmod>
|
|
12
12
|
<changefreq>weekly</changefreq>
|
|
13
13
|
<priority>0.8</priority>
|
|
14
14
|
</url>
|
|
15
15
|
<url>
|
|
16
16
|
<loc>https://forgecad.io/blog</loc>
|
|
17
|
-
<lastmod>2026-05-
|
|
17
|
+
<lastmod>2026-05-22</lastmod>
|
|
18
18
|
<changefreq>weekly</changefreq>
|
|
19
19
|
<priority>0.7</priority>
|
|
20
20
|
</url>
|
|
21
21
|
<url>
|
|
22
22
|
<loc>https://forgecad.io/pricing</loc>
|
|
23
|
-
<lastmod>2026-05-
|
|
23
|
+
<lastmod>2026-05-22</lastmod>
|
|
24
24
|
<changefreq>monthly</changefreq>
|
|
25
25
|
<priority>0.6</priority>
|
|
26
26
|
</url>
|
|
27
27
|
<url>
|
|
28
28
|
<loc>https://forgecad.io/examples</loc>
|
|
29
|
-
<lastmod>2026-05-
|
|
29
|
+
<lastmod>2026-05-22</lastmod>
|
|
30
30
|
<changefreq>weekly</changefreq>
|
|
31
31
|
<priority>0.6</priority>
|
|
32
32
|
</url>
|
|
33
33
|
<url>
|
|
34
34
|
<loc>https://forgecad.io/blog/hello-forgecad-io</loc>
|
|
35
|
-
<lastmod>2026-05-
|
|
35
|
+
<lastmod>2026-05-22</lastmod>
|
|
36
36
|
<changefreq>monthly</changefreq>
|
|
37
37
|
<priority>0.5</priority>
|
|
38
38
|
</url>
|