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:
1 parent
27f20f97cb
commit
6d5df4b9b3
18 files changed
+786
-381
No files matched your search
@@ -263,10 +263,10 @@ make a legacy face sketch there).
|
||||
| 2 | | A helix edge projected along its axis is a point (expected) | `edge.project` 2 | 1 | oracle/50-sweep-tight-bend `Bend/F3:side:c1#1\|F3:side:c1#2~2` |
|
||||
|
||||
Where the face history stands (`crates/kernel/src/history.rs`, [face attachments](face-attachments.md)):
|
||||
a face takes an attached sketch only when the body carries an exact source certificate for it.
|
||||
Extrude caps and sides, boxes, shells' inner walls, STEP faces and sheet metal panels have one,
|
||||
and booleans, fillets and shells pass untouched faces' sources through. Everything that makes or
|
||||
reshapes faces without recording one (cut walls, holes, chamfers, revolves, lofts, sweeps, drafts,
|
||||
tapers, splits, intersects, shell rims, pattern and mirror copies, sheet metal rims) leaves faces
|
||||
that refuse a sketch, and press-pull and extrude-from-face then fall back to a legacy face sketch
|
||||
that is found again by a point. Together they are the largest group of failures.
|
||||
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.
|
||||
@@ -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
|
||||
|
||||
Reference in new issue
Block a user