pub struct TangentSectionRecord {
pub first: FaceKey,
pub second: FaceKey,
pub start: Vec3,
pub end: Vec3,
pub length: f64,
pub closed: bool,
pub stations: usize,
pub planar: bool,
pub faces: Vec<FaceKey>,
pub piece_ids: Vec<u64>,
pub grazing: Vec<(Vec3, f64)>,
}Expand description
One extended tangential contact the imprint recognised (see
ImprintResultRecord::tangent_sections).
Fields§
§first: FaceKey§second: FaceKey§start: Vec3Ends of the longest run of the traced contact inside both trims (the contact point itself when the contact was not traced).
end: Vec3§length: f64Chord length of that run.
closed: boolThe run is the whole traced curve and the curve closed on itself.
stations: usizeStations of the run.
planar: boolOne carrier is a plane: the branch the lane traces. false names a
curved/curved contact the lane recognises but does not trace.
faces: Vec<FaceKey>The faces the contact INVOLVES: the two carriers’ faces, and every face of either operand that shares an edge the run’s ends lie on (the through-bore’s contact line ends on the wall’s top and bottom edges, so the box’s top and bottom faces are involved; a blind pocket’s ends lie on the bore’s cap rings, so the caps are). The boolean’s attribution rewrites a refusal only when a face it names is in here.
piece_ids: Vec<u64>The section pieces the contact was imprinted as
(ImprintOptions::tangent_curve_imprint): process_curve’s pieces
on the clipped run, in mint order. Empty when the section was recorded
only. The assembler pairs the coedges of these pieces by material side.
Appended at the end of the struct (2026-10-11).
grazing: Vec<(Vec3, f64)>GRAZING PIERCES WITHOUT A SECTION (2026-10-17, the revolve-into-bore
report): a trim edge of one face pierces the other carrier INSIDE both
trims, but at an angle below the seed gate, and the march found no
branch for the pair. The pierce proves a section crosses the faces
there; the empty march says the crossing is too near tangency to walk
(a third-order contact: the branch is born tangent to a contact curve
on a shared boundary, boolean::attribute_to_tangent_node). Each
entry is the pierce point and its |edge_tangent · normal|. Such a
record is attribution only — nothing is imprinted — and names the
contact when the assembly tears downstream of it. Appended at the end
of the struct.
Implementations§
Source§impl TangentSectionRecord
impl TangentSectionRecord
Sourcepub fn pierce_only(&self) -> bool
pub fn pierce_only(&self) -> bool
A record standing on its grazing pierces ALONE — the lane found no
contact to name, so the driver set its ends to the pierces (its
start IS the first pierce, bit for bit, and nothing was traced). The
boolean’s attribution reads such a record only as a fallback: a
contact the lane found, or a tangent node the imprint classified, is
the nearer cause and keeps its own wording.