forked from 1b-agent/fieldcraft-upstream
engine: mesh.size.* commands, honoured by every mesher (#435)
mesh.size.set adds a size control on faces, bodies, a box or a sphere; mesh.size.growth sets the growth rate; mesh.size.clear and mesh.size.list. The tet mesher bakes the controls into its graded field, the hex meshers, cells and the octree take the graded RegionSize, and the block projection and mesh plans divide their edges by it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
This commit is contained in:
1 parent
c611080182
commit
b62be1ada6
20 files changed
+591
-25
No files matched your search
+2
-1
@@ -6,7 +6,7 @@ Every entry is a toolbar button. **Ready** entries run their command; **coming s
|
||||
shown greyed with the roadmap milestone that brings them (ROADMAP.md). Scripts, the command line,
|
||||
the control channel and AI agents over MCP (docs/mcp.md) run the same commands.
|
||||
|
||||
82 ready, 37 coming soon.
|
||||
83 ready, 37 coming soon.
|
||||
|
||||
## Geometry
|
||||
|
||||
@@ -34,6 +34,7 @@ the control channel and AI agents over MCP (docs/mcp.md) run the same commands.
|
||||
|---|---|---|---|
|
||||
| Size | Global Size — One element size for the whole part | coming soon (M2) | |
|
||||
| Size | Seed Edges — Element counts or sizes per design edge, with bias and an exact, minimum or free constraint; the meshers honour them | ready | `mesh.seed.edge`, `mesh.seed.clear`, `mesh.seed.list` |
|
||||
| Size | Local Size — Element size on faces or bodies, in a box or in a sphere, growing away at a set rate; every mesher honours it | ready | `mesh.size.set`, `mesh.size.growth`, `mesh.size.clear`, `mesh.size.list` |
|
||||
| Size | Curvature — Refine by curvature and proximity | coming soon (M2) | |
|
||||
| Tet | Tet Mesh — Quality tet4 or tet10 mesh of a body to a size: refined, smoothed and improved, boundary on the B-rep faces, faces tagged | ready | `mesh.tet.generate` |
|
||||
| Tet | Quadratic — Second-order elements with mid-side nodes on the geometry | coming soon (M2) | |
|
||||
|
||||
+21
@@ -185,6 +185,27 @@ 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.
|
||||
|
||||
## Size controls
|
||||
|
||||
Ask for a local element size where the answer is decided (a fillet, a hole's wall, a contact
|
||||
patch) instead of making the whole part fine.
|
||||
|
||||
1. `execute` `mesh.size.set {name, size, faces: [{body, face}] | bodies: [...] | box: {min, max} |
|
||||
sphere: {center, radius}}` adds the control (or replaces the one of that name). Faces are
|
||||
named as `inspect_model` lists them.
|
||||
2. `mesh.size.growth {rate}` sets how fast the size grows away from a control (the largest
|
||||
change of element size per unit length; 0.3 by default, 0.05 to 2).
|
||||
3. Mesh: every mesher honours the controls. The size at a point is the smallest of the mesh
|
||||
command's `size` and, over the controls, a control's size plus the growth rate times the
|
||||
distance to it. The tet mesher refines to that field; the structured hex meshers, the block
|
||||
projection and mesh plans divide their edges by it (a structured mesh carries a count across
|
||||
its block, so the refinement spans the row or layer); the octree refines its cells to it (a
|
||||
size that needs more levels than `max_depth` is refused before meshing). A control on whole
|
||||
bodies is their size in place of the command's.
|
||||
4. `mesh.size.list` lists the controls, what each covers in the open design (`stale` when the
|
||||
design no longer has a face it names) and the growth rate; `mesh.size.clear {names?}` removes
|
||||
them. Controls 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
|
||||
|
||||
Reference in new issue
Block a user