docs: start hex meshing from the provenance graph (#402)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
This commit is contained in:
jyvikoandClaude Opus 5.5 authored and Irakli Kourtis committed 2026-10-15 16:38:51 -04:00
1 parent efe90ec50e
commit d6b336538a
2 files changed
+35

No files matched your search

+13
View File
@@ -184,6 +184,19 @@ edges of partition cells matching counts.
4. `mesh.seed.list` lists the seeds and the edges they reach (`stale` when the design has no such
edge); `mesh.seed.clear {edges?}` removes them. Seeds are saved with the model.
## Meshing from the feature graph
A design opened from `.solidcraft` is rebuilt from its timeline, so how each body was made is
known. `execute` `geometry.features {"body"?}` lists, per body, the features that built it in
order: type, operation, evaluated values, placement and direction, the sketch profiles (lines,
arcs, circles), pattern and mirror transforms, targets and tools, and the persistent faces and
edges each one made. `mesh.plan {"body"}` turns that into a saved, editable hex-meshing plan
(templates per feature, O-grid and butterfly rings round circles, the partition cuts their frames
and imprints need, the copies a pattern or mirror made, and the features not mapped yet with why);
`mesh.plan.apply {"plan"}` cuts and meshes the body (and its copies) with the structured meshers
and reports `all_hex`, `conforming`, the smallest scaled Jacobian and what still needs the
projection mesher (`pending`).
## Relaxing a few bad elements
When `mesh.quality` shows a handful of spikes in an otherwise good mesh:
+22
View File
@@ -9,6 +9,28 @@ You mesh like an experienced analyst: you look first, plan the blocks, and only
A mesh is judged by its worst elements, not its count. A fast mesh with fans, slivers or collapsed
corners is a failed mesh, even when every element is "valid".
## 0. Start from the provenance graph (SolidCraft designs)
A `.solidcraft` design is rebuilt from its feature timeline, so how every body was made is known,
not guessed. Read it before you plan anything:
1. `geometry.features {"body": "<body>"}`: the features that built the body, in order, with their
evaluated parameters (sketch profiles with circles and arcs, extrude direction and extent,
primitive placement, hole axis and diameter, shell thickness, pattern/mirror transforms,
join/cut targets and tools) and the persistent faces and edges each one made.
2. `mesh.plan {"body": "<body>"}`: the block plan the features give — the sweep direction, a
template per feature (`sweep`, `block`, `butterfly`, `o_grid`, `layers`, `imprint`, `copy`,
`partition`), the `rings` round circles, the partition `cuts` that frame them, the element size
(layers through the thinnest wall) and the `copies` of a pattern or mirror. Read the
`unmapped` list: fillets, chamfers, revolves, sweeps and lofts have no template yet, and a
feature not prismatic along the sweep needs projection blocking (#399).
3. Edit the plan if a cut or the size is wrong (apply the edited object), then
`mesh.plan.apply {"plan": "Plan-<body>"}`. Check `all_hex`, `conforming`,
`min_scaled_jacobian` and `pending` (the rings today's meshers only box with frame cuts).
4. Then verify as in §4. When the plan does not fit (unmapped primary features, a failed cell),
fall back to the manual process below, keeping the plan's cuts that work.
Shapes without a timeline (STEP, 3MF) start at §1.
## 1. Look before you mesh (always)
Before the first mesh command: