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>
96 lines
6.7 KiB
Markdown
96 lines
6.7 KiB
Markdown
# Face-attached sketches
|
|
|
|
New face-attached sketches store the selected source body, its creating feature, an exact
|
|
face certificate, and the source and author occurrence paths. The sketch's picked origin
|
|
and orientation are stored in the source face's canonical plane. Editing the source height
|
|
or moving its placement therefore updates the sketch plane while preserving its local
|
|
geometry and dimensions.
|
|
|
|
Supported planar sources are exact Box faces, untapered New Body and Join Extrude caps and
|
|
straight sketch sides, and planar faces of immutable STEP imports. Extrude caps also identify their
|
|
outer boundary and holes by source curve IDs. Reordering profiles cannot substitute another
|
|
profile's cap. A profile drawn over a face sketch's projected boundary (a rectangle
|
|
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.
|
|
|
|
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>`)
|
|
and finds it again after every rebuild, unfold and refold. If that panel no longer exists the
|
|
sketch reports a lost attachment, as above. See the sheet metal guide.
|
|
|
|
## Create and repair
|
|
|
|
Select a supported planar face and create a sketch. The desktop selection supplies the exact
|
|
body and face index, including its occurrence path. Command callers can use
|
|
`sketch.create` with `plane: {face: [x,y,z], body: "world body key", index: face_index}`;
|
|
the point is in world coordinates. A point-only face request must find a unique supported
|
|
source. An unsupported or ambiguous request fails with an explanation instead of creating
|
|
an attachment with weaker identity.
|
|
|
|
When a source is suppressed, deleted, replaced, or loses its certificate, the sketch reports
|
|
a lost attachment. Its saved plane is only a visible repair guide: it does not produce a
|
|
healthy solved sketch or let downstream features build at a substitute face.
|
|
|
|
Use **Redefine Sketch Plane** to select a new supported face explicitly. The draft can be
|
|
reviewed before applying it; cancellation leaves the existing attachment intact. Reattachment
|
|
keeps existing sketch geometry, IDs, and dimensions. When the selected source changes, its
|
|
previous automatically projected boundary becomes ordinary geometry on the new plane;
|
|
it is not replaced by a newly projected boundary. Rebinding to the same certified source
|
|
retains its live boundary. Manually created projection links retain their own sources.
|
|
|
|
Choose an explicit fixed plane to detach the sketch. This preserves its current local
|
|
geometry and dimensions and converts only its automatically projected face boundary to
|
|
ordinary geometry. Manual projection links remain attached to their own sources. A fresh
|
|
fixed-plane sketch has no live face auto-projection.
|
|
|
|
## Occurrences, pending positions, and files
|
|
|
|
The selected source occurrence and the sketch's author occurrence are separate identities.
|
|
Repeated instances therefore cannot silently switch an attachment to the first placement.
|
|
A missing author path also requires explicit repair. Reattachment and creation capture
|
|
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. 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
|
|
fixed plane. Imported attachments also bind the exact STEP payload digest, item entity, and
|
|
face entity: replacing the payload cannot reuse an old attachment merely because a face
|
|
index or shape looks the same.
|
|
|
|
## Profiles generated by face modelling commands
|
|
|
|
Extrude, Revolve, and Press Pull can generate an internal sketch from a selected planar face. Supported
|
|
sources use the same certified attachment and live boundary as an ordinary attached sketch.
|
|
For modified faces without a construction certificate, these commands retain their historical
|
|
named-face and linked-boundary behaviour through a private compatibility path. Initial capture
|
|
uses the selected body and face index. These helper sketches do not have the stronger saved
|
|
identity guarantee of a certified attachment. This compatibility path does not change the
|
|
requirements for creating an ordinary face-attached sketch.
|