Skip to main content

split_solid_by_surface

Function split_solid_by_surface 

Source
pub fn split_solid_by_surface(
    solid: &BrepSolid,
    tool: &SplitSurface,
) -> Result<Vec<BrepSolid>, String>
Expand description

Split solid into pieces by an analytic tool surface (Golovanov §6.4).

For the Plane tool this is exactly split_solid_by_plane, returned as [below, above]. For a closed analytic tool region (cylinder / sphere / cone / torus) the two pieces are [inside, outside] where inside = solid ∩ tool and outside = solid − tool. Both pieces are guaranteed non-empty and valid; their volumes sum to the original.

Contract: when the tool does not actually divide the body into two non-degenerate pieces (it misses the body, or wholly contains / is wholly contained so one side is empty), this returns a clear Err rather than a degenerate/empty piece.