Skip to main content

merge_faces_within

Function merge_faces_within 

Source
pub fn merge_faces_within(
    solid: &BrepSolid,
    tolerance: f64,
    group: &[u64],
) -> Result<(BrepSolid, Vec<(u64, u64)>), KernelRefusal>
Expand description

Merge edge-adjacent faces of group that ride the same carrier — the pairs merge_same_surface_faces would merge, at the same tolerance, plus two lanes only a user’s selection opts into: cone patches, and two half-turn patches closing a ring on a shared axial edge (see MergeLanes) — and nothing else: a face outside group is never touched, however cosurface with a neighbour.

Cancelling a shared edge leaves its end vertices between two pieces of one rim (the two half circles a split bore’s halves each bounded); those pieces are joined into one edge where they continue each other exactly (merge_curve_continuation_edges_at, at those vertices only), so the merged face carries the closed rims a face built whole carries.

The surviving face of each merged pair is the one in the lower shell slot; it keeps its id and name. Returns the merged solid and, for every face id of group (sorted, deduplicated), the pair (face, carrier) naming the face that now carries it (itself when it did not merge). The result passes the validating merge’s Euler and validate() checks, scoped to the merged faces, or the call refuses.

Push Face uses it to treat the halves of a split carrier the user selected together (an imported bore written as two half cylinders) as the one face the push moves: a half pushed alone can never meet its unmoved sibling.