Sheet metal rims and holes, plastic features, lofts, raised pieces and merged walls take face attachments (#677)

Sheet metal rims and bend ends attach by name (<panel>:rim.<edge>, <flange>:rim.bend0/1), as do face profiles from sheet faces. A plain or counterbored Hole square to a panel is machined into the flat pattern. Boss, Lip, Rest and Snap Fit keep the body's history and name their own faces. Hole tools name their faces by the part they cut, and pattern copies as copies. A pattern's repeated fillets keep the body's history. Loft sides are named by their section curves. A piece Offset Face moved off its face's plane attaches by its own qualified name. Sides of a profile grown to overlap a flush body keep their sketch line's name, so walls a Join merged take a sketch (#681). Face sketch 75% -> 90%, offset plane 75% -> 90%, press-pull/extrude 64% -> 85% in the action matrix; baseline blessed.

Fixes #494, fixes #495, fixes #560, fixes #561, fixes #563, fixes #564, fixes #681.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
bherbruckandClaude Opus 5.5 authored and GitHub committed 2026-10-13 09:13:09 -04:00
1 parent e30f3c9ebe
commit 5ef1dcba8e
15 files changed
+2882 -1503

No files matched your search

+6 -4
View File
@@ -268,7 +268,9 @@ Where the face history stands (`crates/kernel/src/history.rs`, [face attachments
a flat face takes an attached sketch when the body carries an exact source certificate for it
(extrude caps and sides, boxes, shells' inner walls, STEP faces, sheet metal panels), or else
when its persistent name follows exact history (a `lineage` certificate): cut walls and floors,
chamfers, pattern and mirror copies, sides a Join merged, and pieces of a split face. What still
refuses a sketch is what makes faces without recording their history (revolves in some cases,
Offset Face, the plastic features, lofts, sweeps, drafts, tapers, shell rims, sheet metal rims):
press-pull and extrude-from-face then fall back to a legacy face sketch found again by a point.
chamfers, pattern and mirror copies, sides a Join merged, revolves, lofts, sweeps, drafts, tapers,
shell rims, the plastic features' faces and the faces around them, and pieces of a split face (by
the piece's own name where Offset Face moved it off the others' plane). Sheet metal panels, their
rims and the flat ends of bends attach by name. What still refuses a sketch is what makes faces
without recording their history (some cuts, Split Body, Intersect): press-pull and
extrude-from-face then fall back to a legacy face sketch found again by a point.
+18 -5
View File
@@ -29,16 +29,29 @@ carry their seed's construction certificate, so a sketch attached to the seed be
patterned keeps resolving to the seed: of the faces carrying one certificate, the producing
feature's own face is the one whose name is not a copy's.
Faces whose history is not exact (Offset Face, the plastic features, sheet metal rims, faces a
feature rebuilt without reporting its history), ambiguous sources, and the pieces of a face
split on purpose with Split Face (each piece is its own face) require an explicit fixed plane
instead. The error says why, and the Create Sketch dialog then offers **Use fixed plane**,
Where the pieces of one name no longer share a plane (Offset Face raised one piece of a top a
cut had split), each piece is attached by its own name: the face's, qualified by the faces
around it (`F2:top#[F2:side:l4,F4:side:l4]`). The plastic features (Boss, Lip, Rest, Snap Fit)
keep the history of the body they go on and name their own faces by the part they make
(`F4:post:top`, `F5:rest:side:0`, `F6:arm:top`), so those take attachments too. A side an extrude grew to
overlap a flush body before joining it (its neighbours lengthened past the sketch's corners) is
still named by the sketch line it runs along, so a wall a Join merged from two extrudes' walls
attaches by the first one's name and answers to the other's.
Faces whose history is not exact (faces a feature rebuilt without reporting its history),
ambiguous sources, and the pieces of a face split on purpose with Split Face (each piece is its
own face) require an explicit fixed plane instead. The error says why, and the Create Sketch dialog then offers **Use fixed plane**,
which places the sketch on that face's current plane without following later changes. A
nearby or parallel face is never used to repair a new attachment automatically.
The flat faces of a sheet metal body are the exception: they have no construction
certificate, so a sketch on one attaches to its panel by name (`sheet:<body>:<panel>:<side>`)
and finds it again after every rebuild, unfold and refold. If that panel no longer exists the
and finds it again after every rebuild, unfold and refold. The rims (the sheet's thickness
along a panel's straight edge) attach the same way, by the edge they run along
(`<panel>:rim.l3` for a base sketch line, `<flange>:rim.far`, `rim.side0`, `rim.side1`), and so
do the flat ends of a bend (`<flange>:rim.bend0`, `rim.bend1`); a rim's plane faces out of the
panel, its x along the edge and its y across the thickness. Extrude and Press Pull from a sheet
face use the same attachment. If that panel no longer exists the
sketch reports a lost attachment, as above. See the sheet metal guide.
## Create and repair