pub struct BooleanClippingProcessor { /* private fields */ }Expand description
BooleanResult processor Handles IfcBooleanResult and IfcBooleanClippingResult - CSG operations
Supports all IFC boolean operations:
- DIFFERENCE: Subtracts second operand from first (wall clipped by roof, openings, etc.)
- Uses efficient plane clipping for IfcHalfSpaceSolid operands
- Uses full 3D CSG for solid-solid operations (e.g., roof/slab clipping)
- UNION: Combines two solids into one
- INTERSECTION: Returns the overlapping volume of two solids
Performance notes:
- HalfSpaceSolid clipping is very fast (simple plane-based triangle clipping)
- Solid-solid CSG only invoked when actually needed (no overhead for simple geometry)
- Graceful fallback to first operand if CSG fails on degenerate meshes
Implementations§
Source§impl BooleanClippingProcessor
impl BooleanClippingProcessor
pub fn new() -> Self
Sourcepub fn with_skip_small_cuts(skip_small_cuts: bool) -> Self
pub fn with_skip_small_cuts(skip_small_cuts: bool) -> Self
Construct with the per-build small-cut skip set (see
Self::skip_small_cuts). The router injects the build’s value here;
nested boolean operands reuse the same self, and the only cross-
processor boolean construction site (CsgSolidProcessor) forwards its
own field so a whole CSG tree shares one scoped value.
Sourcepub fn take_failures(&self) -> Vec<BoolFailure>
pub fn take_failures(&self) -> Vec<BoolFailure>
Drain the boolean-failure log accumulated since this processor was
created (or the last take_failures call).
Trait Implementations§
Source§impl Default for BooleanClippingProcessor
impl Default for BooleanClippingProcessor
Source§impl GeometryProcessor for BooleanClippingProcessor
impl GeometryProcessor for BooleanClippingProcessor
Source§fn process(
&self,
entity: &DecodedEntity,
decoder: &mut EntityDecoder<'_>,
schema: &IfcSchema,
quality: TessellationQuality,
) -> Result<Mesh>
fn process( &self, entity: &DecodedEntity, decoder: &mut EntityDecoder<'_>, schema: &IfcSchema, quality: TessellationQuality, ) -> Result<Mesh>
Process entity into mesh. Read more
Source§fn supported_types(&self) -> Vec<IfcType>
fn supported_types(&self) -> Vec<IfcType>
Get supported IFC types
Auto Trait Implementations§
impl !Freeze for BooleanClippingProcessor
impl !RefUnwindSafe for BooleanClippingProcessor
impl !Sync for BooleanClippingProcessor
impl Send for BooleanClippingProcessor
impl Unpin for BooleanClippingProcessor
impl UnsafeUnpin for BooleanClippingProcessor
impl UnwindSafe for BooleanClippingProcessor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.