Split Body: the face a plane split cuts takes an attachment that follows the plane (#565) (#1746)

Thanks @SychPL.
This commit is contained in:
Mateusz Sych authored and GitHub committed 2026-10-16 13:26:11 -04:00
1 parent e2667b749d
commit 31b2ddc0cf
7 files changed
+131 -36

No files matched your search

+4 -4
View File
@@ -257,7 +257,7 @@ resolves; it is recorded as `<action>+edit`.
## Causes
Every failure, grouped by cause (5017 in all). Faces that can't take an attached sketch fail four
Every failure, grouped by cause (5013 in all). Faces that can't take an attached sketch fail four
actions each (`face.sketch`, `face.offset_plane`, and `face.press_pull` and `face.extrude`, which
make a legacy face sketch there).
@@ -286,7 +286,6 @@ make a legacy face sketch there).
| 9 | #568 | Construction geometry on model edges, faces and vertices is lost when a parameter moves it | `vertex.plane_three_points+edit` 5, `edge.normal_plane+edit` 2, `face.midplane+edit` 1, `face.shell+edit` 1 | 4 | demo/enclosure_steps `Enclosure/v[F2:top & F4:inner:F2:side:l4 & F4:inner:F3:blend:F2:side:l` |
| 9 | | Axis through a face the kernel sees as a cylinder that the command doesn't (sensor enclosure slot ends; not filed yet) | `curved.axis` 9 | 1 | examples/sensor_enclosure `Lid/F15:blend:F14:side:l2\|F14:side:l3` |
| 7 | | Other failures in the edit round: the hole cut and blend sizes above, and an extrude from the M0 box's top face whose profile isn't found again (not filed yet) | `face.hole+edit` 3, `face.extrude+edit` 1, `face.press_pull+edit` 1, `edge.chamfer+edit` 1 | 4 | corpus/m0-box-fillet-hole `Body1/F2:top` |
| 4 | #565 | The face a Split Body cuts has no source (the faces it leaves whole keep theirs) | `face.offset_plane` 2, `face.sketch` 2 | 1 | oracle/22-split-body `Cyl (1)/F4:face:3` |
| 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)):
@@ -297,5 +296,6 @@ chamfers, pattern and mirror copies, sides a Join merged, revolves, lofts, sweep
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, the face a Split Body cuts): press-pull and
extrude-from-face then fall back to a legacy face sketch found again by a point.
without recording their history (some cuts, the face a Split Body cuts with another body's
face): press-pull and extrude-from-face then fall back to a legacy face sketch found again by a
point.
+4 -2
View File
@@ -24,8 +24,10 @@ has one: the persistent name the kernel's face history gives it, which says what
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
features (named after the first, answering to the other), the pieces a later feature split
a face into (all pieces of one name on one oriented plane are that face), and the face Split Body
cuts with a plane (`F4:section` on each part: a construction plane, a sketch line or a plane given
outright, so a sketch on it follows the plane when a parameter moves it). 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