pub struct StepExportReport {
pub text: String,
pub pcurves_written: usize,
pub pcurves_omitted: usize,
pub surface_curves: usize,
pub seam_curves: usize,
pub bare_curves: usize,
pub vertex_loops: usize,
pub max_pcurve_deviation: f64,
pub worst_omitted_deviation: f64,
}Expand description
The AP214 document plus what the writer measured while producing it.
The pcurve counters are the honest half of the verify-or-omit contract in
step/pcurve.rs: a pcurve is written only when the emitted 2D geometry was
proved to reproduce the emitted 3D curve, and every one that could not be
proved is COUNTED here rather than guessed into the file. A reader
reprojects an omitted pcurve exactly as it must reproject every pcurve in
the files this exporter wrote before curve-on-surface geometry existed.
Fields§
§text: StringThe Part 21 text.
pcurves_written: usizePCURVE entities written — at most one per coedge use of a
non-degenerate edge.
pcurves_omitted: usizeCoedge uses left without a pcurve because no candidate 2D geometry verified inside the export band.
surface_curves: usizeEdges written as SURFACE_CURVE (their two uses sit on two surfaces).
seam_curves: usizeEdges written as SEAM_CURVE (both uses on ONE surface — a periodic
seam, the case an importer otherwise has to re-detect geometrically).
bare_curves: usizeEdges that kept a bare 3D curve for edge_geometry, because no pcurve
survived (or a seam lost one of the pair it is required to carry).
vertex_loops: usizeCollapsed face boundaries written as VERTEX_LOOP — cone apexes and
sphere poles, which this writer used to drop entirely.
max_pcurve_deviation: f64Largest verified ‖S(c₂d(s)) − c₃d(s)‖ among the pcurves actually written, in model units.
worst_omitted_deviation: f64Largest deviation among the BEST candidate for each OMITTED pcurve — how far the closest miss was, so an omission can be diagnosed as “a candidate applied and missed the band by this much” rather than only counted. Zero when nothing was omitted.
It is infinite when ANY omission had no candidate proposed at all, which then hides the finite misses behind it — the two omission classes share one counter. Splitting them is a follow-up; the max is the useful half, because it is the finite value that says whether widening the band would have helped.
Trait Implementations§
Source§impl Clone for StepExportReport
impl Clone for StepExportReport
Source§fn clone(&self) -> StepExportReport
fn clone(&self) -> StepExportReport
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more