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.