Sketch on cut walls, chamfers, pattern copies, join-merged sides and split faces (#625)

A flat face that no construction certificate names on its own now attaches by its exact history name (a new lineage face certificate): cut walls and floors, chamfer faces, each pattern or mirror copy, side walls a Join merged, and the pieces a later feature split a face into. Construction certificates still come first; a seed keeps its certificate when it is patterned. Two flush extrudes of one outline joined end to end keep their exact history in the prism boolean. Face sketch 52% -> 71%, offset plane 52% -> 71%, press-pull/extrude from face 41% -> 60% in the action matrix; baseline blessed.

Fixes #491, fixes #492, fixes #493, fixes #557.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
bherbruckandClaude Opus 5.5 authored and GitHub committed 2026-10-13 05:26:29 -04:00
1 parent 27f20f97cb
commit 6d5df4b9b3
18 files changed
+786 -381

No files matched your search

+25 -7
View File
@@ -13,12 +13,28 @@ profile's cap. A profile drawn over a face sketch's projected boundary (a rectan
traced over the whole face, or a strip whose sides lie on the face's edges) is identified by
the drawn curves: where a drawn curve and a projected one cover the same edge, the drawn curve
is the source. Two drawn curves, or two projections, over one edge remain ambiguous. Curved surfaces cannot host a planar sketch through this workflow.
Edited surfaces without retained construction provenance, ambiguous sources, and unsupported
generators require an explicit fixed plane instead. A face that a Join merged from two features' coplanar
faces belongs to neither, so it also needs a fixed plane. 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.
Every other flat face is attached by its exact history name (a `lineage` certificate) when it
has one: the persistent name the kernel's face history gives it, which says what made the face
and follows it through every later feature. That covers a Cut's walls and floor
(`F5:side:l1`, `F5:top`), a chamfer face (`F7:blend:…`), each copy a pattern or mirror makes
(`F4:top@F6.2`: the seed's face and the copy's instance), a side wall a Join merged from two
features (named after the first, answering to the other), and the pieces a later feature split
a face into (all pieces of one name on one oriented plane are that face). A lineage face's
plane is its current exact plane, measured in a frame that depends on the plane alone: its
origin where the definition origin projects onto it, its x axis the first of the definition's
X, Y and Z axes not steep to it (`|cos| < 0.6`), projected. The construction certificates
above still come first; a lineage certificate is used where none names the face alone. Copies
carry their seed's construction certificate, so a sketch attached to the seed before it was
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**,
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>`)
@@ -58,7 +74,9 @@ A missing author path also requires explicit repair. Reattachment and creation c
pending positions only on the involved source and author paths. Failed commands restore
those pending positions; undo restores the previous attachment and placement state.
File format 11 introduced these optional attachments, which format 12 also preserves. Existing designs with face references
File format 11 introduced these optional attachments, which format 12 also preserves. Format 16
adds the `lineage` certificate (older readers ask for an update rather than meeting an unknown
kind); anchors saved with construction certificates resolve as before. Existing designs with face references
without an attachment retain their legacy geometry and lookup behavior when opened; they
are not silently upgraded. Redefining such a sketch onto a supported selected face creates
the stronger attachment. Unsupported legacy geometry can instead be retained on an explicit