pub struct HostOpeningDiagnostic {
pub host_type: String,
pub openings: Vec<OpeningDiagnostic>,
pub csg_failure_count: usize,
pub first_failure_label: Option<String>,
pub tris_before: Option<usize>,
pub tris_after: Option<usize>,
pub rect_boxes_processed: usize,
pub host_bounds: Option<((f32, f32, f32), (f32, f32, f32))>,
}Expand description
Per-host opening diagnostic captured during void processing.
Populated incrementally: classify_openings fills in host_type and
the per-opening classification list; apply_void_context adds the
CSG failure tally drained from the kernel. Surfaced through
GeometryRouter::take_host_opening_diagnostics for the WASM
bindings to forward to JS.
Fields§
§host_type: StringStringified IFC type of the host (e.g. "IfcWallStandardCase").
openings: Vec<OpeningDiagnostic>Per-opening classification record.
csg_failure_count: usizeNumber of BoolFailure records the kernel emitted while
processing this host’s voids.
first_failure_label: Option<String>First BoolFailure reason recorded for this host, as a short
string label. Useful for grouping at a glance.
tris_before: Option<usize>Triangle count of the host’s mesh BEFORE void subtraction.
None until apply_void_context runs (or doesn’t, if there
were no openings to apply).
tris_after: Option<usize>Triangle count AFTER void subtraction. Compare with
tris_before to spot “cuts attempted, no effect” cases — the
classic silent-no-op signature when an opening box doesn’t
actually intersect the host mesh.
rect_boxes_processed: usizeNumber of axis-aligned rectangular openings synthesised into penetrating
box cutters and subtracted (exactly) for this host. Compare against
tris_before == tris_after to detect the “ran cuts, geometry unchanged”
silent-no-op.
host_bounds: Option<((f32, f32, f32), (f32, f32, f32))>Bounding box of the host mesh (min, max) in world coords. Useful for confirming that an opening box should overlap.
Trait Implementations§
Source§impl Clone for HostOpeningDiagnostic
impl Clone for HostOpeningDiagnostic
Source§fn clone(&self) -> HostOpeningDiagnostic
fn clone(&self) -> HostOpeningDiagnostic
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for HostOpeningDiagnostic
impl Debug for HostOpeningDiagnostic
Source§impl Default for HostOpeningDiagnostic
impl Default for HostOpeningDiagnostic
Source§fn default() -> HostOpeningDiagnostic
fn default() -> HostOpeningDiagnostic
Auto Trait Implementations§
impl Freeze for HostOpeningDiagnostic
impl RefUnwindSafe for HostOpeningDiagnostic
impl Send for HostOpeningDiagnostic
impl Sync for HostOpeningDiagnostic
impl Unpin for HostOpeningDiagnostic
impl UnwindSafe for HostOpeningDiagnostic
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read moreSource§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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§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).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.