Skip to main content

boolean_with_evolution

Function boolean_with_evolution 

Source
pub fn boolean_with_evolution(
    topo: &mut Topology,
    op: BooleanOp,
    a: SolidId,
    b: SolidId,
) -> Result<(SolidId, EvolutionMap), OperationsError>
Expand description

Perform a boolean operation and return an crate::evolution::EvolutionMap tracking face provenance.

Prefers faithful provenance from the GFA builder — each result face records the input face it was split/derived from (brepkit_algo::gfa::boolean_with_face_origins). Because that path runs the GFA directly, it can take a different route than boolean (which short-circuits some cases via AABB/containment fast paths), so its result is validated; on a GFA error or an invalid result — and for identical or fully-contained operand pairs (detect_trivial_relation) — it falls back to boolean with the geometry heuristic (normal + centroid). Either way, unmatched input faces are classified as “deleted”; synthesised result faces with no input origin are left unattributed.

§Errors

Returns the same errors as boolean.