pub fn delete_faces_and_heal(
solid: &BrepSolid,
face_ids: &[u64],
) -> Result<BrepSolid, String>Expand description
Delete a SET of faces and heal, in one operation.
Two lanes, chosen by the selection’s own shape (see the module docs):
- a PATCH — a set whose free boundary consumes whole hole loops of the faces around it (a pocket’s walls + floor, a boss’s wall + top, a bore’s wall) — is CAPPED: the patch and those loops go, and nothing else is touched;
- anything else is healed one face at a time by
delete_face_and_heal, which extends and re-intersects each face’s neighbours. Face ids are stable across a heal, so the chain re-uses the ids it was given.
A single-face selection is put to the SAME gate, in full, and falls through
to the chain when it does not hold — see [delete_one_face]. A lone face
can be a patch on its own: a bore’s wall is one, and so is a bore whose
mouth is tangent to something, where the rim arrives as runs of two
pinch-split faces’ loops instead of as a hole loop.
A selection can be BOTH — holes and fillets picked together — and then it is neither lane as a whole. Such a selection is split into edge-connected components and each component takes the lane its own shape asks for; the caps run before the chain (see the module docs). A selection that IS one patch never reaches that split, so every set the gate already accepted is answered by exactly the code it was answered by before.