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.