Skip to main content

delete_faces_and_heal

Function delete_faces_and_heal 

Source
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.