pub struct ClippingProcessor {
pub epsilon: f64,
/* private fields */
}Expand description
CSG Clipping Processor
Fields§
§epsilon: f64Epsilon for floating point comparisons
Implementations§
Source§impl ClippingProcessor
impl ClippingProcessor
Sourcepub fn take_failures(&self) -> Vec<BoolFailure>
pub fn take_failures(&self) -> Vec<BoolFailure>
Drain and return the failures recorded by this processor since its
creation (or the last take_failures call). The processor’s internal
log is cleared.
Sourcepub fn failure_count(&self) -> usize
pub fn failure_count(&self) -> usize
Number of failures currently buffered (without draining).
Sourcepub fn clip_triangle(&self, triangle: &Triangle, plane: &Plane) -> ClipResult
pub fn clip_triangle(&self, triangle: &Triangle, plane: &Plane) -> ClipResult
Clip a triangle against a plane Returns triangles that are in front of the plane
Sourcepub fn subtract_mesh(
&self,
host_mesh: &Mesh,
opening_mesh: &Mesh,
) -> Result<Mesh>
pub fn subtract_mesh( &self, host_mesh: &Mesh, opening_mesh: &Mesh, ) -> Result<Mesh>
Subtract opening mesh from host mesh using CSG boolean operations on the pure-Rust exact mesh-arrangement kernel.
On any failure path the host is returned un-cut and a BoolFailure
record is appended to the processor’s failure log (drainable via
Self::take_failures). An empty host returns an empty mesh without
recording a failure (it’s a fast path, not a fallback).
Sourcepub fn subtract_mesh_many(
&self,
host_mesh: &Mesh,
cutters: &[&Mesh],
) -> Result<Mesh>
pub fn subtract_mesh_many( &self, host_mesh: &Mesh, cutters: &[&Mesh], ) -> Result<Mesh>
Subtract a GROUP of pairwise-disjoint opening cutters from the host in ONE conforming arrangement (disjoint-cutter batching).
A REJECTED group (the N-ary arrangement could not fully conform, or no
cutter overlaps the host) returns the host UN-CUT and records NO
failure: rejection is the expected, handled outcome — the router’s
per-opening sequential loop (with the full #635 fallback machinery and
its own diagnostics) immediately takes over for the group’s members, so
a failure record here would be pure noise on elements whose voids end
up perfectly cut (the issue-582/583 zero-CSG-failure bar). Only a
genuinely invalid kernel OUTPUT records, exactly like
Self::subtract_mesh.
Sourcepub fn union_mesh(&self, mesh_a: &Mesh, mesh_b: &Mesh) -> Result<Mesh>
pub fn union_mesh(&self, mesh_a: &Mesh, mesh_b: &Mesh) -> Result<Mesh>
Union two meshes together using CSG boolean operations on the pure-Rust exact kernel.
Empty operands are handled silently — they have a unique correct answer.
Sourcepub fn intersection_mesh(&self, mesh_a: &Mesh, mesh_b: &Mesh) -> Result<Mesh>
pub fn intersection_mesh(&self, mesh_a: &Mesh, mesh_b: &Mesh) -> Result<Mesh>
Intersect two meshes using CSG boolean operations on the pure-Rust exact kernel.
Returns the intersection of two meshes (the volume where both overlap).
Sourcepub fn union_meshes(&self, meshes: &[Mesh]) -> Result<Mesh>
pub fn union_meshes(&self, meshes: &[Mesh]) -> Result<Mesh>
Union multiple meshes together
Convenience method that sequentially unions all non-empty meshes. Skips empty meshes to avoid unnecessary CSG operations.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for ClippingProcessor
impl !RefUnwindSafe for ClippingProcessor
impl !Sync for ClippingProcessor
impl Send for ClippingProcessor
impl Unpin for ClippingProcessor
impl UnsafeUnpin for ClippingProcessor
impl UnwindSafe for ClippingProcessor
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
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>
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>
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>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
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
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.