Skip to main content

Crate brep_kernel

Crate brep_kernel 

Source

Re-exports§

pub use feature_pipeline::execute_history_json;
pub use feature_pipeline::first_reference_name;
pub use feature_pipeline::reference_names;
pub use feature_pipeline::face_transform_pivot;
pub use feature_pipeline::clear_history_cache;
pub use feature_pipeline::execute_history;
pub use feature_pipeline::execute_history_observed;
pub use feature_pipeline::AddedSolid;
pub use feature_pipeline::Axis;
pub use feature_pipeline::ComponentRecord;
pub use feature_pipeline::FeatureDescriptor;
pub use feature_pipeline::FeatureRefusal;
pub use feature_pipeline::FeatureResult;
pub use feature_pipeline::Frame;
pub use feature_pipeline::Fulfilment;
pub use feature_pipeline::HistoryProgress;
pub use feature_pipeline::HistoryRequest;
pub use feature_pipeline::Rejected;
pub use feature_pipeline::RejectedKind;
pub use feature_pipeline::HistoryResult;
pub use feature_pipeline::PortKind;
pub use feature_pipeline::PortRecord;
pub use feature_pipeline::ProfileLoop;
pub use feature_pipeline::ScenePoint;
pub use feature_pipeline::SketchProfile;
pub use feature_pipeline::wire_harness::bundle_diameter;
pub use feature_pipeline::wire_harness::Attachment as SplineAttachment;
pub use feature_pipeline::wire_harness::BundleStatus;
pub use feature_pipeline::wire_harness::PortSide;
pub use feature_pipeline::wire_harness::RouteResult;
pub use feature_pipeline::wire_harness::RouteStatus;
pub use feature_pipeline::wire_harness::WireHarnessBundle;
pub use feature_pipeline::wire_harness::WireHarnessConnection;
pub use feature_pipeline::wire_harness::WireHarnessEndpoint;
pub use feature_pipeline::wire_harness::WireHarnessReport;
pub use feature_pipeline::wire_harness::WireHarnessState;
pub use feature_pipeline::wire_harness::BUNDLE_SOLID_PREFIX;
pub use feature_pipeline::wire_harness::WIRE_HARNESS_FEATURE_ID;
pub use feature_pipeline::wire_harness::WIRE_HARNESS_FEATURE_TYPE;
pub use feature_pipeline::part_pins::declarations as declared_ports;
pub use feature_pipeline::part_pins::declared_endpoints as declared_point_endpoints;
pub use feature_pipeline::part_pins::declared_points;
pub use feature_pipeline::part_pins::endpoint_occurrence;
pub use feature_pipeline::part_pins::follow_pin_edit;
pub use feature_pipeline::part_pins::follow_point_edit;
pub use feature_pipeline::part_pins::pin_labels;
pub use feature_pipeline::part_pins::pin_point_report;
pub use feature_pipeline::part_pins::pins;
pub use feature_pipeline::part_pins::point_renames;
pub use feature_pipeline::part_pins::port_group_for_unit;
pub use feature_pipeline::part_pins::resolve_component_pin;
pub use feature_pipeline::part_pins::resolve_part_pin;
pub use feature_pipeline::part_pins::unit_count as symbol_unit_count;
pub use feature_pipeline::part_pins::unit_groups;
pub use feature_pipeline::part_pins::DeclaredPin;
pub use feature_pipeline::part_pins::DeclaredPoint;
pub use feature_pipeline::part_pins::PinPoint;
pub use feature_pipeline::part_pins::PinPointChange;
pub use feature_pipeline::part_pins::PinPointProblem;
pub use feature_pipeline::part_pins::PinPointReport;
pub use feature_pipeline::part_pins::PointRenames;
pub use feature_pipeline::part_pins::DEFAULT_PORT_NAME;
pub use feature_pipeline::part_pins::DEFAULT_PORT_PURPOSE;
pub use feature_pipeline::part_pins::PADS_BLOCK;
pub use feature_pipeline::part_pins::SYMBOL_BLOCK;
pub use feature_pipeline::ports::address as port_address;
pub use feature_pipeline::ports::document_is_boundary;
pub use feature_pipeline::ports::seat_of as port_seat_of;
pub use feature_pipeline::ports::seat_point;
pub use feature_pipeline::ports::seat_vector;
pub use feature_pipeline::ports::seated_direction;
pub use feature_pipeline::ports::split_address;
pub use feature_pipeline::ports::unit_map;
pub use feature_pipeline::ports::unseat_point;
pub use feature_pipeline::ports::unseat_vector;
pub use feature_pipeline::ports::world_seat;
pub use feature_pipeline::ports::PortDeclaration;
pub use feature_pipeline::ports::PortPoint;
pub use feature_pipeline::ports::PortPointRow;
pub use feature_pipeline::ports::PortSeat;
pub use feature_pipeline::ports::PortsReport;
pub use feature_pipeline::ports::UnitProblem;
pub use feature_pipeline::ports::BOUNDARY_KEY;
pub use feature_pipeline::ports::PORTS_BLOCK;
pub use feature_pipeline::ports::PORTS_FEATURE_ID;
pub use feature_pipeline::ports::PORTS_FEATURE_TYPE;
pub use feature_pipeline::pmi::balloon_head as pmi_balloon_head;
pub use feature_pipeline::pmi::clamp_text_size;
pub use feature_pipeline::pmi::format_dimension;
pub use feature_pipeline::pmi::format_number;
pub use feature_pipeline::pmi::nearest_point_on_edge;
pub use feature_pipeline::pmi::nearest_point_on_solid;
pub use feature_pipeline::pmi::pmi_schema_catalogue;
pub use feature_pipeline::pmi::pmi_type;
pub use feature_pipeline::pmi::nearest_displayed_point;
pub use feature_pipeline::pmi::nearest_displayed_point_on_edge;
pub use feature_pipeline::pmi::pose_apply as pmi_pose_apply;
pub use feature_pipeline::pmi::pose_unapply as pmi_pose_unapply;
pub use feature_pipeline::pmi::resolve_state as pmi_resolve_state;
pub use feature_pipeline::pmi::entry_names_solid;
pub use feature_pipeline::pmi::BalloonAnchor;
pub use feature_pipeline::pmi::BalloonAnchorMode;
pub use feature_pipeline::pmi::FcfFrame;
pub use feature_pipeline::pmi::HalfSpace as PmiHalfSpace;
pub use feature_pipeline::pmi::HeadScope as PmiHeadScope;
pub use feature_pipeline::pmi::PmiAnnotation;
pub use feature_pipeline::pmi::PmiAnnotationReport;
pub use feature_pipeline::pmi::PmiCamera;
pub use feature_pipeline::pmi::PmiDisplay;
pub use feature_pipeline::pmi::PmiGeometry;
pub use feature_pipeline::pmi::PmiPlane;
pub use feature_pipeline::pmi::PmiPose;
pub use feature_pipeline::pmi::PmiProjection;
pub use feature_pipeline::pmi::PmiReport;
pub use feature_pipeline::pmi::PmiState;
pub use feature_pipeline::pmi::PmiStatus;
pub use feature_pipeline::pmi::PmiTypeDef;
pub use feature_pipeline::pmi::PmiView;
pub use feature_pipeline::pmi::PmiViewReport;
pub use feature_pipeline::pmi::SolidPoses as PmiSolidPoses;
pub use feature_pipeline::pmi::ToleranceBlock;
pub use feature_pipeline::pmi::ToleranceMode;
pub use feature_pipeline::pmi::PMI_TYPES;
pub use feature_pipeline::pmi::layout::present as pmi_present;
pub use feature_pipeline::pmi::layout::LayoutStyle as PmiLayoutStyle;
pub use feature_pipeline::pmi::layout::Presentation as PmiPresentation;
pub use feature_pipeline::pmi::annotations::fcf::characteristic as pmi_characteristic;
pub use feature_pipeline::pmi::annotations::fcf::Characteristic as PmiCharacteristic;
pub use feature_pipeline::pmi::annotations::fcf::CHARACTERISTICS as PMI_CHARACTERISTICS;
pub use feature_pipeline::assign_sketch_loop_ids;
pub use feature_pipeline::flat_pattern_dxf;
pub use feature_pipeline::flat_pattern_svg;
pub use feature_pipeline::is_sheet_metal_handle;
pub use feature_pipeline::pattern_component_instance;
pub use feature_pipeline::pattern_parse_suppressed;
pub use feature_pipeline::native_import_payload;
pub use feature_pipeline::native_import_payload_with_appearance;
pub use feature_pipeline::IsolatedSceneMetadata;
pub use feature_pipeline::scene_metadata_colors_json;
pub use feature_pipeline::family;
pub use feature_pipeline::add_part_to_library;
pub use feature_pipeline::add_part_to_library_impl;
pub use feature_pipeline::install_parts_library;
pub use feature_pipeline::missing_library_parts;
pub use feature_pipeline::parts_library_json;
pub use feature_pipeline::parts_library_map;
pub use feature_pipeline::parts_library_revision;
pub use feature_pipeline::refresh_library_entry;
pub use feature_pipeline::refresh_library_entry_impl;
pub use feature_pipeline::same_build;
pub use feature_pipeline::follow_saved_rows;
pub use feature_pipeline::follow_saved_rows_known;
pub use feature_pipeline::kernel_source_stamp;
pub use feature_pipeline::stable_json_hash;
pub use feature_pipeline::PartsLibraryEntry;
pub use feature_pipeline::PartsLibraryMap;
pub use feature_pipeline::assembly::assembly_add_constraint_json;
pub use feature_pipeline::assembly::assembly_apply_document_json;
pub use feature_pipeline::assembly::assembly_apply_inferred_constraints_json;
pub use feature_pipeline::assembly::assembly_component_entities_json;
pub use feature_pipeline::assembly::assembly_dof_json;
pub use feature_pipeline::assembly::assembly_infer_constraints_json;
pub use feature_pipeline::assembly::assembly_inferable_types_json;
pub use feature_pipeline::assembly::assembly_move_constraint_json;
pub use feature_pipeline::assembly::assembly_overlay_json;
pub use feature_pipeline::assembly::assembly_pose_updates_json;
pub use feature_pipeline::assembly::assembly_drag_solve_json;
pub use feature_pipeline::assembly::assembly_frame_solve_json;
pub use feature_pipeline::assembly::assembly_remove_constraint_json;
pub use feature_pipeline::assembly::assembly_resolve_refs_json;
pub use feature_pipeline::assembly::assembly_run_solve_json;
pub use feature_pipeline::assembly::assembly_set_constraint_enabled_json;
pub use feature_pipeline::assembly::assembly_set_constraint_open_json;
pub use feature_pipeline::assembly::assembly_state_json;
pub use feature_pipeline::assembly::assembly_statuses_json;
pub use feature_pipeline::assembly::assembly_update_constraint_json;
pub use feature_pipeline::assembly::constraint_hidden_params;
pub use feature_pipeline::assembly::constraint_schema_catalogue;
pub use feature_pipeline::assembly::assembly_add_constraint_impl;
pub use feature_pipeline::assembly::assembly_apply_document_impl;
pub use feature_pipeline::assembly::assembly_move_constraint_impl;
pub use feature_pipeline::assembly::assembly_drag_solve_impl;
pub use feature_pipeline::assembly::assembly_frame_solve_impl;
pub use feature_pipeline::assembly::assembly_flip_plan_json;
pub use feature_pipeline::assembly::assembly_rebase_mechanical_impl;
pub use feature_pipeline::assembly::assembly_remove_constraint_impl;
pub use feature_pipeline::assembly::assembly_run_solve_impl;
pub use feature_pipeline::assembly::assembly_set_constraint_enabled_impl;
pub use feature_pipeline::assembly::assembly_set_constraint_open_impl;
pub use feature_pipeline::assembly::assembly_update_constraint_impl;
pub use feature_pipeline::assembly::assembly_session_export;
pub use feature_pipeline::assembly::assembly_session_import;
pub use feature_pipeline::assembly::assembly_session_serial;
pub use feature_pipeline::assembly::RetiredSession;
pub use feature_pipeline::assembly::SessionTransfer;
pub use feature_pipeline::AssemblyState;
pub use feature_pipeline::ConstraintEntry;
pub use feature_pipeline::assembly::transform_to_pose_params;
pub use feature_pipeline::feature_schema_catalogue;
pub use feature_pipeline::feature_hidden_params;
pub use feature_pipeline::assembly::constraint_type;
pub use feature_pipeline::assembly::ConstraintTypeDef;
pub use feature_pipeline::assembly::CONSTRAINT_TYPES;
pub use feature_pipeline::feature_context_applicable;
pub use feature_pipeline::SelectionProbe;
pub use feature_pipeline::Env;
pub use classification::classify_point;
pub use classification::containment_lane;
pub use classification::horizon_cross_frame;
pub use classification::parameter_point_in_face;
pub use classification::trim_sample_count;
pub use classification::trim_station;
pub use classification::ContainmentLane;
pub use classification::PointClass;
pub use classification::PointClassification;
pub use classification::PolygonClass;
pub use classification::SolidClassifier;
pub use classification::COVERING_RIM_STRIP_SWITCH;
pub use classification::HORIZON_CONTAINMENT_SWITCH;
pub use classification::HORIZON_CROSS_FRAME_SWITCH;
pub use classification::HORIZON_SINGLE_LOOP_SWITCH;
pub use classification::NO_SPHERE_CHART_TRIM_SWITCH;
pub use classification::SEAM_BAND_MERGED_SWITCH;
pub use union_find::UnionFind;

Modules§

face_refusal_slugs
The slugs of the direct-edit refusals the app explains to a user (its face-transform help, BREP_render::face_transform_help), shared by each mint and by face_transform_reason.
feature_pipeline
Feature-history execution with exact name resolution and stable output names.
panic_hook
The wasm panic hook every #[wasm_bindgen] entry point installs. Replaces the console_error_panic_hook crate for the whole BREP family — reached as brep_kernel::panic_hook and, through the render engine’s re-export, as brep_render::brep_kernel::panic_hook. The wasm panic hook: a Rust panic reaches the browser console instead of the bare RuntimeError: unreachable wasm traps produce by default.
poly
Polynomial roots shared by geometric intersections.
polygon
refit_refusal_phrases
The phrases a Refit Faces refusal is recognised by (formatted into every refusal that carries it, so a reader and the mint share one definition).
text
Plain-text formats shared by the CAD app and the PLM server (text::delimited: CSV and tab-separated text). Plain-text formats the CAD app and the PLM server read the same way.
union_find

Macros§

debug_flag
One debug, trace or BREP_NO_* flag (consolidation S1): on when its variable is set to anything but 0, off or false. debug_flag!(live "BREP_X") reads it on every call.
mode_switch
One 0|off / check / on mode (consolidation X1): an [env_read::Mode]; unset, On when default_on and Off otherwise. mode_switch!(live "BREP_X", default_on) reads it on every call.
switch
One on/off switch (consolidation S1): switch!("BREP_X", default) reads BREP_X through its call site’s once-cell ([env_read::switch], kept for the process while BREP_ENV_READ_ONCE is on); switch!(live "BREP_X", default) reads it on every call, for a variable a probe sets at run time. One grammar (owner decision 2026-11-01): 0|off|false off, 1|on|true on, unset or anything else the default. In the kernel’s tests one keyed override (env_read::with_switch_for_test) forces either form.

Structs§

Aabb
AffineTransform
Approximation
A MEASURED approximation a SUCCESSFUL result carries: the result stands, and this says by how much, and why, it is not exact. Distinct from a refusal (the result does not stand) and from a fulfilment (what was done of what was asked) — the typed-refusal plan’s third kind of report.
ApproximationBudget
The spent budget of an unmet construction request, typed: why refinement stopped, and the rounds and stations it used against their limits.
ArenaCoedge
ArenaEdge
ArenaFace
ArenaLoop
ArenaShell
ArenaVertex
ArrangementPiece
ArrangementRegion
AssemblyBody
One rigid body of the assembly with its initial (guess) pose.
AssemblyMate
One mate between two distinct bodies of the assembly.
AssemblySolution
AssemblySolveOptions
BendStation
One station’s tight-bend reading: what the path does there and how far the section reaches into it.
BlendSelection
What a blend selection actually achieved.
BlendTiming
One ledger entry: the measure’s name, its accumulated milliseconds (zero for a count.* entry) and how many times it was recorded.
BodyAppearance
One imported body’s appearance: an optional body-wide colour plus an optional colour per FACE.
BodyFreedom
How free one body is left: free turns (rotations about its own origin) and the remaining free slides (pure translations). Both zero = fully defined.
BodyPose
Solved pose of one body (same order as the input bodies slice).
BooleanOptions
BrepSolid
Bvh
Static BVH over per-item boxes; queries return indices into the slice the tree was built from.
CarrierDeviation
Everything an offset carrier’s construction MEASURED about itself.
CarrierDimensions
A carrier’s classification and its named dimensions in display order (millimetres, or degrees for an angle key ending in Deg).
CarrierExtension
How far an offset carrier’s TRIM grows past the source face at each of its four parametric sides, in world units.
CellRecord
A declared closed region of a Cellular body. Face senses are relative to the body’s face records; a shared wall has opposite senses in its two cells. void distinguishes a void region from material.
CertificateScope
Explicit scope of an opt-in analytic pair scan. Original counters describe only examined pairs. Same-face fold work is retained in this first row.
CertifiedFacePair
Separating support of one omitted distinct-face pair. Bounds are signed coordinates on the named world axis; no adjacency inference is involved.
Chart
One cube-face chart: direction(s, t) = normal + s·tangent_s + t·tangent_t, with tangent_s × tangent_t = normal, so ∂p/∂s × ∂p/∂t points OUT of the sphere everywhere on the chart.
ChartSegment
One piece of a trim polyline, already confined to a single chart.
CoedgeId
CompatWork
What a compatibility pass had to do to one curve. Reported, never inferred: a caller that promises “bit for bit” needs to see a zero here.
ConnectivityReport
Outcome of solid_connectivity.
ControlCage
The cage: see the module docs for the layout.
CoonsReport
What the constructor had to do, and what it measured doing it.
CrossingRepairRecord
One self-crossing this module REPAIRED rather than refused.
CurveCurveIntersection
CurveProjection
CurveSurfaceIntersection
CycleUse
DensityMassProperties
Mass properties scaled to a physical density (Golovanov §8.11). The underlying FullMassProperties is a UNIT-density geometric result; here mass = density * volume and every inertia quantity scales linearly with density (inertia = density * geometric_inertia). The centroid and the principal AXES are density-independent; only the principal MOMENTS and the mass scale with density.
DiagnosticEvent
DisplaySolidPayload
Everything the native renderer needs to display one resident solid.
EdgeId
EdgeSplitRecord
EntityTolerances
Lazily-measured, capped per-entity tolerances for one solid.
EulerReport
Outcome of solid_euler.
FaceCrossing
One confirmed face-versus-face crossing.
FaceFold
One confirmed place a face FOLDS THROUGH ITSELF in 3D: its own surface carries two DISTINCT trimmed parameter feet to ONE point in space.
FaceFragmentRecord
FaceId
FaceImprints
FaceKey
FacePcurve
FaceRecord
FaceSetIdentity
The 128-bit content identity of a solid’s face set.
FaceVectorArea
One face’s vector area ∫ n dA, as its TRIMS claim it and as its EDGES claim it, and the difference between the two.
FragmentCoedge
FragmentLoop
FragmentOrder
What orders a face’s fragments (lane X, fillet-bore-notch): the outer area of the fragment’s region in the face’s parameter plane, the key the arrangement returns regions by, and the region’s topological key, the sorted (chain, segment) list of its outer loop, then the sorted lists of its holes. The topological key reads no coordinate.
FullMassProperties
GlbReport
What one written file contains — the counts a caller reports or asserts on.
GlbSolid
One solid to write: its display mesh plus the colours it is shown in.
GordonReport
What the constructor had to do, and what it measured doing it.
ImageCurve
The 3D image of a pcurve on a surface, plus the parameter range that matches the pcurve’s own domain fraction for fraction.
ImportedColor
An imported display colour: sRGB components in 0..=1, kept as read.
ImportedStep
What import_step_bodies returns: the bodies, their colours, and the typed approximations the closure gate attached to some of them.
ImprintOptions
ImprintPieceRecord
ImprintResultRecord
ImprintVertex
KernelDiagnostics
KernelOutcome
KernelRefusal
A kernel REFUSAL: the fail-safe contract’s carrier. The kernel never degrades a result; where it cannot certify one it refuses, and this is the refusal — a closed RefusalClass that consumers dispatch on (the boolean’s perturbation-retry gate, the CI baseline’s per-class diff), the stage that minted it, and the human text, which Display prints verbatim so every message a user or a test saw before typing is unchanged.
KernelTolerances
Ordered accuracy targets plus deliberately separate geometric search radii.
KindReport
Outcome of topology_kind: the kind and the census it was read from.
KnotVector
LoopCrossing
One place a face’s trim loop crosses ITSELF in the face’s parameter domain.
LoopCrossingReport
Outcome of loop_self_crossings.
LoopId
MassCaller
Names the call site for every integrator call made while it is alive, so the mass.identity line can say WHO paid for the integral rather than leaving a log reader to infer it from the neighbouring profile lines.
MassProperties
MassPropertiesCache
A bounded, per-solid memo for exact area and volume. Geometry edits are detected by the face-set content identity; callers never invalidate it. The contents are private so external code cannot supply a fabricated result.
MateAxis
An axis in a body’s local frame (origin + unit direction).
MateCurve
A curve a curve mate follows, in its body’s LOCAL frame: an edge’s carrier over the edge’s parameter range [t0, t1].
MatePlane
A plane in a body’s local frame (origin + unit normal).
MateResidualReport
Worst absolute residual row of one mate at the solution.
MeasuredOffsetSurface
A fitted offset carrier together with what its construction measured about itself.
MeasuredTolerance
A deviation measured between a constructed entity and the geometry that entity was built to reproduce, recorded next to the derived band it was judged against.
Mesh
MeshRegion
One smooth region of the mesh with its recognized carrier and fit residuals (residuals are zero for Freeform regions — no fit).
MeshRepairReport
What repair_triangle_soup had to change to close the input.
MeshSegmentation
Segmentation result: triangle_region_ids[t] is the region id of input triangle t (index into regions; UNASSIGNED_REGION for degenerate triangles with no assignable neighbor).
NurbsCurve
A rational B-spline curve.
NurbsSurface
A rational B-spline surface.
ObjReadResult
OffCarrierEdge
One edge whose built curve stands off one of its carriers, as an Approximation names it.
OffsetEvaluator
The pointwise offset evaluator, bound to one carrier and one orientation convention.
OffsetFaceCarrier
OffsetSample
One evaluation of the offset: the source point, the unit normal the offset rides, and the offset point itself.
OffsetShellFaceImageRecord
OffsetShellResultRecord
OracleReport
Outcome of boolean_semantic_disagreement.
PathJoint
ONE joint of a resolved path: which two segments meet there, how continuously (JointContinuity), and the two measurements that decided it.
PcurveFit
A fitted pcurve with what the fit achieved.
PcurveFitLedger
Per-operation tally of pcurve fits and how many missed their floor.
PcurveFitReport
What a pcurve fit ACHIEVED, returned beside the curve so a ceiling exit can never be mistaken for a met floor.
PcurveFitScope
An open tally of the pcurve fits made on this thread — see PcurveFitLedger. Open it where an operation starts, close it where the operation returns its diagnostics; a ? that unwinds past it drops the tally.
PointClassification
PolylineFit
PolylineFitLedger
Per-operation tally of polyline fits and how many missed their tolerance.
PolylineFitReport
What a polyline fit ACHIEVED, returned beside the curve so a budget exit can never be mistaken for a met tolerance.
PolylineFitScope
An open tally of the polyline fits made on this thread — see PolylineFitLedger. Open it where an operation starts, close it where the operation returns its diagnostics; a ? that unwinds past it drops the tally.
ProfileAnchor
The placement anchor a path sweep transplants its profile with: the plane frame (origin = boundary-sample centroid, normal, pu, pv) the station loop maps profile points through (local = p − origin → station + ri·(local ·pu) + si·(local·pv)). Extracted as data so a HOLE loop can sweep with its OUTER loop’s anchor — sweeping each loop with its OWN centroid would re-center every loop onto the path and lose the hole’s in-plane offset.
RadiusLaw
A composable radius law over cumulative abscissa [0, total_length].
RecognizedCircle
RefitReport
What a successful refit measured and built.
ResidualFusable
One boolean_residual_fusables finding.
RestoredSnapshot
The output of restore_solids: solids in snapshot order plus the captured scene-metadata records (entity name -> own record), NOT stamped into the store — see the metadata seam in the module doc.
RestoredSolid
One restored solid: its scene name plus the exact topology/geometry.
RevolutionFrame
RevolutionStructure
Frame, generatrix, and sweep of any surface built by make_revolution (full or partial), validated by exact reconstruction. Unlike AnalyticSurface this does not require the generatrix to be a line or classic quadric profile.
RibNames
What a rib calls its faces: the feature id every name starts with, and the source name of each profile curve ({sketchId}:G{gid} for a sketch segment), index-aligned with the profile.
RibbonReport
The measured continuity of a ribbon patch. Read Self::cross_derivative_residual before calling anything G1: it is the number that says whether the prescribed cross-derivative field was actually met.
RouteReading
What a Move Face would have to do to the TOPOLOGY, read off the motion before anything is built.
Segment2
SegmentOptions
Options for segment_mesh_faces. All tolerances are dimensionless or in degrees; distances derive from the region/mesh scale so the segmentation is size-invariant.
SelfIntersectionOptions
Knobs for solid_self_intersections. SelfIntersectionOptions::for_solid derives every one from the solid’s own size.
SelfIntersectionReport
Outcome of solid_self_intersections.
SemanticDisagreement
One point where the result’s membership contradicts the CSG expectation.
SewReport
ShellConnectivity
One shell’s connectivity: how many edge-connected pieces its faces form.
ShellId
ShellVectorArea
One shell’s vector-area closure: shell_vector_areas’ per-shell verdict.
Sketch3dConstraint
A 3D sketch constraint, kept as a transparent map so authoring metadata (expression text, label offsets) persists exactly.
Sketch3dConstraintType
One constraint type: its type string, how many point ids it takes, whether it carries a value, and a one-line meaning (the editor’s palette reads these; the solver dispatches on the string).
Sketch3dDiagnostics
The solver’s read-only diagnostics: the same shape the 2D sketch solver publishes (dof, rank, unknowns, equations, redundant, status, conflicting, conflictingConstraints, pointMobility, geometryMobility), so the editor’s readouts are shared.
Sketch3dDoc
The editable 3D sketch document.
Sketch3dGeometry
A 3D sketch geometry (see the module doc for the point layouts).
Sketch3dPoint
A 3D sketch point: world coordinates plus the role flags the solver tracks.
Sketch3dSolveOptions
SketchSolverSettings
Solver tuning knobs. Defaults mirror constraintDefinitions.
SolidClassifier
Point-in-solid classification with per-solid precomputation: face bounds, the solid box, and a face BVH are built once so repeated queries (boolean fragment selection asks once per fragment) prune to the few faces a probe point or ray can actually touch.
SolidNames
SolveSketch3dRequest
The JSON request: the document plus optional solver options.
SolveSketchRequest
SphereAtlas
A sphere’s pole-free cube atlas: centre, radius, and the right-handed basis the six charts are built on.
SphericalRegion
The trim of a spherical face, as directed boundary arcs on the unit sphere, ready to classify points without touching any chart or parameter domain.
StationBudget
What the sampler did to reach its stations.
StepAssembly
A STEP file’s product structure, with geometry, and without a single transform applied to it.
StepAssemblyExport
A document’s product structure, ready to write. Exactly one product must be a root (never an occurrence child) — the document itself.
StepBodyTrimReadings
StepColors
Display colours to write as presentation styles, keyed by SCENE NAME.
StepEdgeReading
StepExportOccurrence
One placement of child inside parent — a NEXT_ASSEMBLY_USAGE_OCCURRENCE.
StepExportProduct
One product of an exported structure: a part, a sub-assembly, or the root document. bodies are in the product’s OWN local frame — never posed.
StepExportReport
The AP242 document plus what the writer measured while producing it.
StepFaceReading
StepImportReport
What import_step_report returns: the bodies, how gracefully the file imported, and the import’s diagnostics.
StepOccurrence
One occurrence: a placement of child inside parent, from a NAUO edge or a mapped item.
StepPmi
The PMI to write: the document block and the tail’s resolution of it.
StepProduct
One node of the file’s product structure: a PRODUCT_DEFINITION, or a representation that a MAPPED_ITEM instantiates and no product definition owns (bodies::representation_owner_index).
StepSuppliedTrim
A vendor pcurve evaluated through the vendor’s own surface.
StepTrimReadings
Every flat body of one STEP document, with the per-edge provenance.
StlReadResult
StlTriangles
The facets of an STL in file order, before any welding.
SurfaceClassifyData
Per-surface data the pair classifier needs, precomputable once per face and reused across every pair that face participates in.
SurfaceIntersectionCurve
SurfaceIntersectionOptions
SurfacePairClassification
SurfaceProjection
SweepClosure
What a CLOSED sweep did to make its section meet itself after one lap — the applied twist the frame-closure policy REPORTS.
SweepPath
A resolved sweep path AND its classification: the ordered, head-to-tail curves, the name of each, whether the run is CLOSED, the PLANE it lies in if it lies in one, and the continuity of every joint — the closing one included.
SweepStationReport
The measured bound a station sweep carries.
SweptChain
A swept solid with the MEASURED BOUND of its construction (SweepStationReport): None where the construction is exact — the mitre lane (exact pieces on bisector planes) and the envelope lane (a revolve) — and the station lane’s report otherwise.
SweptEnvelope
The recognized configuration: a circular section on a circular planar path, tight enough that the envelope crosses itself.
TangentContact
A tangential contact between two carriers, refined onto the contact and classified by the rank of the height-difference Hessian there.
TangentSectionRecord
One extended tangential contact the imprint recognised (see ImprintResultRecord::tangent_sections).
TessellationOptions
ThreeMfInstance
One placement of one mesh: a <build><item>, or a <component> reached through one, with the transforms from the item down composed.
ThreeMfMesh
One <object>’s mesh, in millimetres and in the object’s own coordinates. Shared: an object placed three times is ONE entry here and three ThreeMfInstances.
ThreeMfReadResult
Everything read_3mf recovered from a package.
ThreeMfSolid
One solid to write: its display mesh plus the colours the document gave it.
ThreeMfWriteReport
What one written package contains — the counts a caller reports or asserts on.
TopologyArena
Type-safe mutable topology used inside the kernel. The JSON/WASM record model remains the stable wire format; conversion happens at that boundary.
UndecidedCrossing
One candidate the scan could not decide, after resolution.
ValidationReport
Vec2
Vec3
Vec4
VectorAreaReport
Outcome of shell_vector_areas.
VertexId
VertexWeld
A tolerance weld over points given one at a time (weld_vertex with its own vertex list and cells), for callers outside the kernel.
WasmBrepSolid
WasmMeshBuffers
Tessellation output as typed arrays; getters consume the buffers.
WasmNurbsCurve
WasmNurbsSurface
WasmSolidBuffer
A solid encoded as one flat Float64Array plus a tiny JSON side channel for face/edge names — the zero-JSON result path for topology-heavy ops. Getters consume the buffers (each may be read once) to avoid double copies.

Enums§

AnalyticSurface
Backing
What a refusal’s evidence establishes about the claim every refusal judges: “this input has a result the kernel can certify”. A refusal is either REFUTED — a witness in the input itself disproves the claim, and no re-run of the construction can change that — or UNDECIDED — the construction failed to certify and the input has not been shown to be at fault. Retry policy reads this, never a list of variants: a refuted claim is never retried, and only one undecided cause is one a perturbation addresses (UndecidedCause::Degeneracy).
BodyKind
The kind a body DECLARES, as distinct from the kind topology_kind READS from its edge uses. Nothing infers it: a producer sets it, the wire carries it, and consumers that branch by kind (the boolean’s operand gate first) read the declaration. Every body built today is Solid, the default, and a Solid serialises byte for byte as before: the JSON skips the key, the flat codec keeps its version-1.0 header (solid_codec.rs).
BooleanOperation
BudgetMechanism
The budget mechanism an ApproximationBudget counts.
BudgetReason
Why a construction request stopped short of what it asked.
CagePoint
Where a linear point index lands in the cage.
CagePrimitive
The primitive the initial cage is wrapped around.
ChartSide
Which side of a chart square a cube edge is: the chart’s other coordinate runs along the edge.
ClosureReading
What a shell’s closure scan came back with — a measurement, or nothing.
ContainmentLane
The lane containment_lane finds a face in.
CoonsRefusal
A Coons constructor’s refusal, with the measurement that caused it.
CrossingConfirmation
Which confirmation convicted a FaceCrossing.
CrossingUndecidedCause
Why the mesh confirmation left a candidate undecided.
DiagnosticSeverity
EdgeOrigin
ExtendRefusal
Why a natural extension produced nothing. Each variant carries what was measured, so a caller can report the number rather than the verdict.
FaceTransformReason
Why a Transform Face refused, as far as the app explains it — read off the refusal’s CLASS and slug, never its text, so a reworded refusal keeps its explanation and a refusal that merely mentions “parallel” does not borrow one. None is every other refusal: the app shows the kernel’s own words.
FragmentEdgeSource
GlbUpAxis
Which axis of the CALLER’s world points up, and therefore what rotation the root node carries to reach glTF’s own right-handed +Y-up frame.
GordonRefusal
A Gordon constructor’s refusal, with the measurement that caused it.
ImageCurveTier
Which lane produced an ImageCurve.
IssueKind
The closed kind of a ValidationIssue. Only the kinds a dispatcher needs are minted (the boolean’s endpoint-gap repair lane keys on CurveVertexGap); everything else is Other and carries its message as the payload. A dispatcher matches the kind, never the message text.
JointContinuity
How continuous a path is AT ONE JOINT — the classification every sweep refusal reads instead of re-deriving the same angle from the curves.
KernelStage
LawSegment
One user segment of a composite radius law, spanning length of abscissa.
LinearAlgebra
The LM step’s linear algebra (see AssemblySolveOptions::linear_algebra).
MateAlign
Direction-sense handling for direction-carrying mates. Mirrors the app’s “oppose normals” flag on parallel/coincident constraints.
MateKind
Mate geometry + semantics. All points/directions/planes/axes are expressed in the OWNING body’s local frame (*_a on body_a, *_b on body_b).
MeasuredComponent
What a request report’s measured value is the reading of.
OffsetCorners
How the offset body closes the joins between offset faces.
OffsetFaceRole
OffsetNormal
Which unit normal the offset rides, and how it is recovered where the parametric normal degenerates.
OffsetSurfaceLane
Which branch of offset_surface built a carrier — and, with it, whether comparing that carrier against the pointwise offset at the same (u, v) is even the right question.
PcurveFitExit
Why a pcurve refinement stopped. Only PcurveFitExit::Converged means the floor was met; every other variant is a BUDGET exit, and the report’s residual was measured on the returned curve rather than assumed.
PointClass
PolylineFitExit
Why a polyline fit’s refinement stopped. Only PolylineFitExit::Converged means the tolerance was met; every other variant is a BUDGET exit whose deviation was measured on the curve actually returned.
RefitCarrier
The fitted surface, in the recognition pass’s terms.
RefitSurfaceKind
The surface family a Refit Faces fit is asked for.
RefusalClass
The closed set of refusal classes. Dispatchers match on it exhaustively; adding a variant is a deliberate taxonomy change, never a message edit.
RegionCarrier
Recognized analytic carrier of a region. Axis directions are unit vectors; sense is +1 when the mesh normals point along the carrier’s outward normal (away from the axis/center) and -1 for a cavity.
ResidualKind
A single residual fusable — coincident geometry the assembler left unwelded.
ResolveError
Typed resolution failure. Self::status maps each variant onto the constraint status vocabulary so the constraint lifecycle reports it without string-matching messages.
RibExtrusion
Which way a rib grows out of its sketch — SolidWorks’ Extrusion Direction control, and the same two choices it offers.
SectionPlacement
HOW a section is placed at each station — the two things “sweep a profile along a path” can mean, and the reason they are not the same shape.
SelectionGeometry
A resolved analytic selection frame, in the coordinate space of the solid it was resolved from (module docs: pass the component’s world→local inverse to Self::transformed for the solver’s component-local mate inputs).
Sketch3dResolvedReference
What a model reference resolves to, in the shapes the sketch materializes.
SolveStrategy
Solving strategy (§7.5–7.6). Auto decomposes when possible and falls back to the monolithic solve when it must, so it is always safe.
SoundnessDefect
What the soundness scan found in a result it refused.
SplitSurface
A closed analytic tool region used to cut a body. Each variant is realised as a closed solid (unbounded carriers are capped well beyond the body) whose interior is one side of the analytic surface.
StepBodyError
Why one body did not import: the builders’ legacy text, or a TYPED refusal from the one gate that mints one today, the shell-closure gate (builder/closure.rs). The class rides to the feature boundary through import_step_bodies; every other producer inside the importer still returns text and is preserved verbatim (typed-refusal plan, item 1).
StlError
Why STL bytes are not a readable STL.
StlFormat
Encoding detected while reading an STL.
SurfacePairRelation
SurfaceSide
Which boundary of the parameter square an extension grows from.
SymmetricElement
One side of a MateKind::Symmetric mate, in its owning body’s frame.
ThreeMfError
Why a 3MF package was refused. Every variant that belongs to a package part names it, so the message says where in the container the fault is.
ThreeMfUnit
The unit a model part declares, with its conversion to millimetres.
TopologyKind
UndecidedCause
Why an undecided refusal is undecided — what the evidence lacked. The boolean’s Simulation-of-Simplicity retry acts on exactly one of these.
WeightSite
Where a non-positive weight was found.

Constants§

CAGE_DEGREE
The B-spline degree in both directions: bicubic, the subdivision-surface smoothness (C² everywhere a knot is simple).
CHART_COUNT
Charts in the atlas: one per cube face.
COLOR_METADATA_KEY
The scene-metadata key an imported colour is stamped under. ONE spelling.
COVERING_RIM_STRIP_SWITCH
BREP_COVERING_RIM_STRIP: set to "0", the covering-rim-strip lane declines every face. Read when a face is prepared; part of the cache key.
CUBE_CORNER_COUNT
Cube corners, each shared by exactly three charts and three cube edges.
CUBE_EDGE_COUNT
Cube edges, each shared by exactly two charts.
DISAGREEMENT_THRESHOLD
A boolean is FLAGGED structurally wrong when its decidable-point disagreement rate exceeds this. Tuned from the measured spread (fixed-seed, so these numbers are stable): every KNOWN-GOOD boolean scores ≤ 0.7% (a handful of stray points on the fused seam of tangent/glue unions), benign doubly-curved cases (sphere/torus tubes) top out near 1.7%, while a genuine structural defect — a mis-selected fragment, a lost overlap region, an opened shell — flips a whole region and scores ≥ 7%. The 3% line sits cleanly in the gap: above the near-boundary noise the On-skip + threshold are meant to absorb, well below any real wrongness. One named constant so the audit, the tests, and the stress binary share a single definition of “wrong”.
EDGE_CAP_FRACTION
Fraction of an edge’s own length that bounds its measured band.
EXTENDED_RANK_FLOOR
Smallest min|λ| / κ of H = II_a − II_b at which the contact counts as an isolated node or point rather than EXTENDED along H’s null direction. The same number csg/imprint/tangent_contact.rs reads: genuine nodes measure 0.7..1.0, extended contacts 1e-15 and below, so this is a rank test, not a tolerance band.
GLB_MAGIC
glTF as a little-endian u32 — the first four bytes of every GLB.
HORIZON_CONTAINMENT_SWITCH
BREP_HORIZON_CONTAINMENT: set to "0", the wrapped-horizon lane declines every face. Read when a face is prepared; part of the cache key.
HORIZON_CROSS_FRAME_SWITCH
BREP_HORIZON_CROSS_FRAME: set to "0", the wrapped-horizon lane combines its period images per image (Inside when any image counts odd) instead of summing each loop’s parity over the images. Read per QUERY, not when the face is prepared; see horizon_cross_frame.
HORIZON_SINGLE_LOOP_SWITCH
BREP_HORIZON_SINGLE_LOOP: set to "0", the wrapped-horizon lane declines a face of one or two loops (compared: face.loops.len() <= 2). Read when a face is prepared; part of the cache key.
KNOT_DEDUP_EPS
Numerical knot DEDUP epsilon (parameter-space): the tighter floor used when counting distinct knots (SSI/CSI interior_knot_count) or comparing whole knot vectors for exact reconstruction (analytic surface recognition). This answers “are these two knot floats the same value?”, NOT “are these the same knot for snapping?” — so it stays at 1e-12 and must NOT be unified with the looser KNOT_IDENTITY_TOL.
KNOT_IDENTITY_TOL
Knot IDENTITY tolerance (parameter-space): two knot parameters within this absolute band are treated as the SAME knot for snapping — insert_knot, NurbsCurve::split, monotonicity and clamp checks. This is the single source for the “absolute 1e-9 knot tolerance” that split enforces and that imprint’s trim guards mirror. Distinct in PURPOSE (not just value) from KNOT_DEDUP_EPS; the two are deliberately NOT unified.
MAXIMUM_FOLD_ANGLE
The largest angle the extension’s cross-boundary tangent may turn through before the extension is called a FOLD. π/2 is the sign change: past it the extension has stopped going outwards and is doubling back over the patch it came from, which is never a usable carrier.
MAXIMUM_GROWTH_RATIO
The largest the appended strip may be, as a multiple of the surface’s own 3D extent in the direction being extended: the extension may not be longer than the surface it continues. A polynomial extrapolated by a fraction r of its own span diverges like r^degree, so this is a backstop and not a quality bar — callers that need a trustworthy extension ask for a small increment and check the result, they do not lean on this limit.
MAX_FIT_STATIONS
Absolute station ceiling, whatever the caller’s budget.
MAX_JOINT_TANGENT_BREAK
The largest tangent break, in radians, a chained path may have at a joint before the joint is a CORNER.
MAX_LISTED_UNDECIDED
How many undecided candidates a report lists by name.
MAX_RINGS
MAX_SEGMENTS
Caps on the initial cage so a typo cannot ask for a million handles.
MIN_RINGS
The fewest rings: with the two poles that is degree + 1 rows, one span.
MIN_SEGMENTS
The fewest points a ring may have: a cubic periodic ring needs four.
NO_SPHERE_CHART_TRIM_SWITCH
BREP_NO_SPHERE_CHART_TRIM: SET to any value (compared: present in the environment), the sphere-chart lane stops substituting for the generic scan’s parity count. BREP_NO_SPHERE_CHARTS, which turns every sphere-chart path off, does the same here. Read per query.
OCCURRENCE_REF_PREFIX
The reference-name prefix an OCCURRENCE-scoped annotation carries out of a structured import, until its consumer rewrites it: OCC#<edge>#<edge>…:<part-local name>, the occurrence chain root first. An empty chain (OCC:) is the root product’s own geometry.
OFFSET_CONSTRUCTION_FLOOR
Absolute floor of offset_construction_band, so a vanishingly small part is not held to a band below the arithmetic that builds it.
OFFSET_CONSTRUCTION_REL
Fraction of the local characteristic length an APPROXIMATE offset construction may deviate from the exact geometry it approximates — see offset_construction_band.
PART_ATTRIBUTES
The top-level document key holding a part’s own BOM attribute record ({ "Part_Number": "PN-7", "Material": "6061", ... }). Owned by the app’s document model; the kernel reads it only to stamp PRODUCT.id.
PART_NUMBER
The BOM part-number field inside PART_ATTRIBUTES.
PCURVE_OFF_BAR
The refusal every station builder returns for a fit off its bar.
PCURVE_REFINEMENT_TOLERANCE
The 3D residual a pcurve’s image must reach before build_pcurve_on_surface accepts it, and the sample ceiling it refines up to.
RIGID_TOL
Shared rigidity band for component and STEP placements.
SEAM_BAND_MERGED_SWITCH
BREP_SEAM_BAND_MERGED: set to "0" (the only value compared), the doubly-periodic seam-band lane stops unwrapping a single merged seam-carrying loop, and that face goes on to the two-loop analyses or the generic scan. Read when a face is prepared; part of the prepared-face cache key.
SKETCH3D_CONSTRAINT_TYPES
The constraint vocabulary. Point layouts: a LINE is its two endpoints [a0, a1] (direction a1 − a0); a PLANE is [origin, normalTip] (normal normalTip − origin); an ARC is [center, start, end].
SKETCH3D_DOC_KEY
Key of the persistentData document.
SKETCH3D_EDIT_BUTTON
The schema button that opens the editor.
SKETCH3D_FEATURE_TYPE
The feature type code (the dispatch and the catalogue key).
SKETCH3D_REFERENCES_PARAM
The dialog’s reference list param.
SKETCH3D_REFERENCE_TIP_LENGTH
The length of the normal tip a resolved PLANE reference materializes (normalTip = origin + normal · this), and of the direction tip of a resolved AXIS reference. The solver normalizes directions, so the length only sizes what the editor draws.
SKETCH3D_REFS_KEY
Key of the persistentData reference materialization record.
SKETCH_ORIGIN_POINT_ID
The reserved id of every sketch’s PART ORIGIN reference point: world (0, 0, 0) projected onto the sketch plane. The editor adds it on entry as a fixed, grounded, construction external reference, so geometry can be constrained to the origin. The sketch feature re-projects it onto the resolved frame before solving and never publishes it — it exists only inside the sketch (no scene point, no hole center, no 3D display).
SNAPSHOT_FORMAT_VERSION
Bumped whenever the container layout changes. A mismatch is always a clean Err — the self-heal signal for a snapshot whose part document can be re-executed. For a payload that IS the document (nativeBrep) that Err is unrecoverable, so per the durability commitment in the module doc a bump MUST ship a reader for the previous version, or a migration.
SOLID_CODEC_VERSION
The header a Solid body writes, and the oldest version the reader accepts. The snapshot container (io/snapshot.rs) names this format durable: a Solid keeps writing 1.0 so no stored payload moves.
SOLID_CODEC_VERSION_KIND
The header a body of any other kind writes: the kind slot follows genus.
STATED_PRECISION_INCONSISTENCY_RATIO
How far the measured deviation may exceed the stated precision before the file is called inconsistent with itself.
SWEEP_DEFAULT_TOLERANCE
The centre-track deviation a station sweep is refined to when its caller names none: 1e-4 mm. Read off the tolerance ladder in the record: the loosest value at which both closed rings the plan named sit under 1e-6 relative on their closed forms (the rounded rectangle 4.8e-4 → 1.9e-7 at 211 stations from 81, the filleted skew quad 8.3e-4 → 7.4e-8 at 248 from 92), while the R = 10 ring keeps its 64 stations and every single-curve fixture the landed geometry pins (a quarter arc at 32 stations reads 1.4e-7, a 350° arc 3.9e-5) stays under it and so bit-identical. One decade tighter costs half again as many stations for a residual already under 1e-7.
SWEEP_ENVELOPE_REFUSAL
The prefix every refusal from this lane starts with, so a caller can CLASSIFY one without matching free text.
SWEEP_MAX_STATIONS
The loft’s station cap: its interpolation solve is per control column and a run past this looks like a hang. Refinement stops here and says so.
SWEEP_REFINEMENT_ROUNDS
How many refinement rounds the sampler runs before it stops and reports what it reached (StationBudget::rounds_exhausted). A round splits an offending span by up to 8, so six rounds cover a span 2.6e5× over under the h² law a G1 joint’s span obeys.
SWEEP_TIGHT_BEND_REFUSAL
The prefix every tight-bend refusal starts with, so a caller can CLASSIFY one (the wire harness reports it as a bundle status) without matching free text.
SWEEP_TWIST_CLOSURE_REFUSAL
The prefix of the refusal for a requested twist that does not close a CLOSED path, so a caller can classify one without matching free text.
UNASSIGNED_REGION
Region id given to triangles that could not be assigned to any region (degenerate triangles with no non-degenerate neighbor).
VERTEX_CAP_FRACTION
Fraction of the SHORTEST incident edge that bounds a vertex’s band.
VERTEX_MATCH_FLOOR
Absolute floor (mm) of the edge-endpoint-vs-vertex identity band used by BrepSolid::validate: below this a curve end and its topological vertex ARE the same point (vendor export precision), above it the model is asked to state the meeting exactly.
VOLUME_DRIFT_ABS
Absolute floor of the volume drift band, see VOLUME_DRIFT_REL.
VOLUME_DRIFT_REL
Relative volume drift between two measurements of the same body that is still the same answer: the case gate’s band between a replay and its baseline (examples/case_replay.rs), and the perturbation rescue’s bar for a rung against the exact lane’s inclusion–exclusion identity (csg::boolean::perturbation_retry). One number, so the rescue can never accept a body the gate would call a different one. It only absorbs last-bit summation noise.

Traits§

OrRefuse
Mechanical conversion of a stringly LOWER-layer error consumed inside a typed stack (geometry evaluation, tolerance policy checks): the text is kept and the refusal is classed Internal under what at stage. This is a constructor at the consuming site, not a blanket From.

Functions§

accept_sound
Scan a finished result and either accept it, repair it, or refuse it by name.
accept_sound_against
accept_sound for a lane whose INPUTS may themselves self-intersect.
accept_sound_against_scoped
accept_sound_against reading only the faces in candidates: the faces the operation built or changed, their neighbours, and every face whose box reaches the other operand. A face outside that set is an operand’s own, untouched, and lies clear of everything the operation added, so a crossing on it was the operand’s and passes through exactly as the full scan passes it (the inputs are scanned, flagged, and the result returned). An empty set is a result with nothing to scan. A flagged subset hands the whole result to the full acceptance, so every repair and refusal reads as before. (BooleanOptions::untouched_passthrough)
affine_image_curve
Exact 3D image of a pcurve on an AFFINE sheet: an affine map applied to the homogeneous control points commutes with the rational evaluation, so the image shares the pcurve’s degree / knots / weights and is parametrized identically — a rational circle pcurve maps to the exact 3D circle.
apply_edge_splits
Apply the boundary-edge partition produced by imprint construction.
apply_edge_splits_json
apply_edge_splits_with_map
apply_edge_splits plus the identity ledger: original edge id → the minted sub-edge ids that replaced it. Consumers keyed on ORIGINAL edge ids (the fragment-selection barrier set) must remap through it, since the split solid’s coedges reference the minted ids.
arc_curve_json
arrange_segments
arrange_segments_json
assembly_export_tree
Build the export tree for a document with components.
audit_step_manifold
Audit the serialized entity graph rather than assuming that valid in-memory topology was necessarily written correctly. Every EDGE_CURVE in a closed shell must have exactly two ORIENTED_EDGE users with opposite senses.
audit_step_pcurves
Audit the curve-on-surface half of the emitted graph, on the serialized text, for the same reason audit_step_manifold exists: valid in-memory intent is not proof of a correctly written file.
blend_closed_edge
blend_edge_variable
Variable-radius blend (4.9.5): radius stops as (edge fraction, radius) pairs, linearly interpolated along the edge parameter and clamped at the ends. Closed edges must supply matching first/last radii.
blend_open_edge
General OPEN-edge rolling-ball fillet or chamfer: §4.9 march + §6.9 surgery with transverse edges on the two end faces.
blend_smooth_chain
Blend a chain of conjugated edges with one rolling-ball blend face (Golovanov §6.9.5: all conjugated edges processed together). A CLOSED chain (stadium rim, T-pipe saddle) welds into a periodic blend; an OPEN chain (line->arc->line capped by end faces) rolls a clamped blend that terminates in a transverse edge on each end face.
blend_timing_capture
Turn the ledger on (or off) for the blend operations that FOLLOW on this thread; BREP_PROFILE turns it on for every operation.
body_kind_handle_native
The kind a resident solid DECLARES (BrepSolid::kind), as distinct from the kind the report above reads from the edge census. Solid for every body built today.
boolean_brep_diagnostics_json
boolean_brep_json
boolean_handle
Boolean of two resident solids -> a NEW resident handle. The result never crosses the boundary as topology; only its handle is returned. Kernel-produced result is trusted (no double-validate).
boolean_handle_native
Native sibling of boolean_handle (String errors — constructing a JsValue error panics off-wasm): boolean of two RESIDENT solids → a NEW resident handle, operands untouched. The assembly interference check’s non-destructive INTERSECT lane; callers free the result handle when done.
boolean_operation
boolean_operation_nary
N-ary union / intersect / subtract of operands in ONE imprint+fragment pass (Golovanov T4.4). Additive: does not touch the binary path.
boolean_operation_nary_with_options
boolean_operation_nary under the caller’s BooleanOptions: the tolerance, the coplanar-face merge and its keep_unmerged_name_substrs list are honoured exactly as the binary path honours them, so a caller that falls back from a sequence of binary unions to one arrangement (the sheet metal walk with adjacent bends) keeps the same face partition contract.
boolean_operation_with_diagnostics
boolean_operation_with_diagnostics_at_offset
boolean_operation_with_diagnostics with both operands translated by offset for the operation and the result translated back. Refusal messages name the translated coordinates.
boolean_residual_fusables
Part 2 — the fuse-after detector. Any geometry in result that is coincident within tol yet NOT topologically shared is an intersector / assembler bug: the weld pass should have fused it. Reports distinct vertices at one point and duplicate coincident edges. Purely diagnostic.
boolean_semantic_disagreement
Part 1 — the semantic cross-check. Sample points across the combined box of first ∪ second, classify each versus the two operands and the result, and flag every decidable point where the result membership disagrees with the CSG expectation for operation. See the module docs for the sampling / On-skip / threshold design.
boolean_semantic_disagreement_nary
N-ary semantic cross-check — the correctness gate for crate::boolean_operation_nary. Sample points across the combined box of all operands, classify each versus every operand and the result, and flag every decidable point where the result membership disagrees with the n-ary CSG expectation (Union = In any, Intersect = In all, Subtract = In operand 0 and Out of the rest). Points on or near ANY operand or result boundary are skipped, so a correct n-ary boolean scores ~0.
boolean_split_operands
The two operands a binary boolean’s arrangement reads: prepared as the boolean prepares them, with every boundary edge split where the imprint’s sections meet it. These are the NNN-first and NNN-second stages BREP_BOOLEAN_DUMP writes, not the operands at the boolean’s entry.
box_brep_json
box_mesh_json
build_imprints
build_imprints_json
build_pcurve_json
build_pcurve_on_surface
fit_pcurve_on_surface for the callers that only need the curve. The report is not dropped: it is tallied on the open PcurveFitScope, if any, so the operation that owns this fit can say in its diagnostics whether every trim reached the floor.
build_pcurve_on_surface_marched
fit_pcurve_on_surface_marched for the callers that only need the curve; the report is tallied on the open PcurveFitScope exactly as build_pcurve_on_surface does.
build_pcurve_on_surface_range
fit_pcurve_on_surface_range for the callers that only need the curve: the fit is ACCEPTED or REFUSED on its bar (accept_fit), never returned off it.
build_pcurve_on_surface_range_dense
fit_pcurve_on_surface_range_dense for the callers that only need the curve, accepted or refused on its bar (accept_fit).
build_pcurve_on_surface_stations
fit_pcurve_on_surface_stations for the callers that only need the curve, accepted or refused on its bar (accept_fit).
build_swept_envelope
Build the swept union: the APPLE first, then the LEMON where the turn leaves one outside it.
canonical_bits
Bits of value with negative zero read as positive zero, for exact (bitwise) point keys: -0.0 and 0.0 are the same coordinate.
canonicalize_points
Collapse points that are the same point to ONE value.
capabilities_json
carrier_preview_patch
Diagnostic “carrier preview” patch (§3.15 applied to display): re-express the surface over an INFLATED domain so an inspector can show where the carrier continues beyond the face’s trim. Open directions inflate about the domain centre by inflate (a factor; 1 = unchanged), evaluated through evaluate_extended — exact linear extension for affine carriers, ruled/tangent extension generally. CLOSED (periodic) directions keep the stored full period instead of inflating — wrapping further would overlap the surface onto itself. A torus (closed both ways) returns unchanged.
carrier_preview_patch_json
Diagnostic carrier preview: re-express a surface over an inflated domain (open directions inflate about the centre via extended evaluation; closed directions keep their full period). inflate <= 0 defaults to 2.
chamfer_edge
Equal-leg chamfer of one edge (Golovanov §6.11: the same construction with the arc’s chord).
chamfer_edge_angle
Distance-angle chamfer of one STRAIGHT edge between two planar faces (Golovanov §6.11): setback d1 along face 1 and angle angle_rad between the chamfer face and face 1. d2 is constructed geometrically in the cross-section plane (see chamfer_angle_second_distance), then the two-distance builder is applied.
chamfer_edge_asymmetric
Asymmetric (two-distance) chamfer of one STRAIGHT edge between two planar faces (Golovanov §6.11): setback d1 along face 1 and d2 along face 2 — the standard CAD “d1 × d2” bevel. General/curved edges are out of scope for this slice and return a clear error.
chamfer_edge_buffer
chamfer_edge_json
chamfer_edges_angle
Distance-angle chamfer of a GROUP of edges, the app entry: each selected edge (resolved by a point on it) gets a setback d1 on face 1 and a chamfer face at angle_rad from face 1 (§6.11); d2 is constructed per edge.
chamfer_edges_angle_buffer
chamfer_edges_angle_json
chamfer_edges_asymmetric
Asymmetric (two-distance) chamfer of a GROUP of edges, the app entry: each selected edge (resolved by a point on it) gets a d1 × d2 bevel (§6.11). Edges are chamfered independently — asymmetric chamfers keep sharp vertices, so there is no shared-corner blending.
chamfer_edges_asymmetric_buffer
chamfer_edges_asymmetric_json
chart_grid_divisions
Divisions across a chart square (90°) at chord_tolerance.
chart_grid_parameters
The interior grid of a chart square, in the chart coordinate s (or t).
circle_angle_to_parameter
Parameter of the standard tangent-intersection rational quadratic arc construction (make_arc / make_revolution): a sweep split uniformly into spans segments, each with middle weight cos(segment/2). Maps an angle in [0, sweep] to the curve parameter in [0, 1] exactly.
circle_curve_json
circumcenter
circumcenter_2d
Circumcenter in a plane, with a scale-relative degeneracy guard.
classify_point
classify_points_json
classify_surface_pair
Classify a pair before generic SSI runs. The classifier is conservative: only separated control hulls are declared disjoint; uncertain pairs stay Candidate rather than being incorrectly culled.
classify_surface_pair_cached
classify_surface_pair with the per-surface work hoisted out — callers with many pairs per face build each face’s SurfaceClassifyData once.
classify_tangent_contact_at
Refine witness onto the tangential contact of the two carriers and classify it. None when the witness is not near any contact (the refinement leaves a residual above tolerance) or the carriers have no curvature to classify by (two planes).
closest_point_on_triangle
Ericson Voronoi-region closest point, including degenerate triangle edges.
concatenate_exact_curve_pieces
Join two exact NURBS pieces with a degree-multiplicity internal knot.
cone_brep_json
connectivity_handle_native
Connectivity of a resident solid — the check validate() does NOT make. Per-shell edge-connected face components, edges shared across shells, and pinch vertices. Pure topology, no geometry, no tolerance; see crate::solid_connectivity for which part is a gate and which is a diagnostic. Reads the solid in one registry borrow.
containment_lane
Which lane of parameter_point_in_face a face’s questions go to, read off the face alone — the kernel’s own lane selection, through the same prepared data the query uses, for a caller that answers some containment questions ahead of the kernel and must know which rule the kernel applies.
coons_bilinear
The bilinearly blended Coons patch through four boundary curves given in cyclic order.
coons_bilinear_reported
coons_bilinear plus the CoonsReport of what it did and measured.
coons_with_ribbons
The Coons patch through four boundaries that also interpolates the prescribed cross-boundary derivative fields.
corner_index
Canonical index of the cube corner with the given per-axis signs.
cube_edge_corner
The corner at the q = +1 (positive_end) or q = -1 end of a cube edge.
cube_edge_divisions
Divisions per cube edge that hold the chord sag of a radius sphere under chord_tolerance. A chord subtending θ sags radius·(1 − cos(θ/2)), so θ = 2·acos(1 − tolerance/radius); the edge arc is 2·atan(1/√2) long.
cube_edge_index
Canonical index of the cube edge whose VARYING axis is varying and whose two other axes (varying+1) % 3 and (varying+2) % 3 are pinned to the given signs. Twelve edges: three varying axes times four sign pairs.
cube_edge_parameters
The shared subdivision of EVERY cube edge, in the edge parameter q ∈ [-1, 1].
cube_edge_parts
Inverse of cube_edge_index: (varying axis, sign of (v+1)%3, sign of (v+2)%3).
curve_arc_length
Exact 3D arc length of a NURBS curve over the parameter range [t0, t1] — ∫|C’(t)| dt evaluated with a composite 8-point Gauss–Legendre rule paneled at the curve’s interior knots (each knot span further halved for headroom). The speed integrand |C'(t)| is polynomial-exact for the line/circle-arc curves the kernel emits and converges tightly for general NURBS. Returns 0.0 for a zero-width (or inverted) range.
curve_carrier_dimensions
The dimensions of a curve over [t0, t1] when it is a circle or an arc of one (radius, diameter, and an arc’s sweep), else None.
curve_derivatives_json
curve_evaluate_json
curve_model_scale
model_scale of a curve, sampled uniformly over [t0, t1].
cylinder_brep_json
cylinder_mesh_json
decode_solid
delete_face_and_heal
Golovanov §6.12 — delete a transition face and heal the hole by extending and re-intersecting its immediate neighbours. See the module docs for the covered vs deferred cases. Returns a fresh solid that is guaranteed to validate() AND to be sound, or a clear Err describing why the heal was refused.
delete_faces_and_heal
Delete a SET of faces and heal, in one operation.
display_chord_tolerance
The app’s display chord tolerance (BetterSolid._kernelTessellationOptions): vertex |coord| extent — falling back to the control-point hull / sqrt(2) for vertex-free solids (full spheres/tori) — times 1.5e-3, times the render-LOD factor (1.0 = the app’s “Normal” preset).
display_payload_handle_native
Native display payload for a resident solid: watertight mesh + face list (in mesh face_ids order) + edge polylines + vertices, all in one registry borrow. lod_factor scales the per-solid display chord tolerance (1.0 = the app’s “Normal” preset; higher = coarser mesh). Callers pass a sanitized, finite, positive value — display_chord_tolerance multiplies it in directly.
edge_arc_length
Exact 3D arc length of one edge over its active parameter range [t0, t1] (the same range the display sampler walks). Degenerate edges measure 0.
edge_carrier_dimensions_native
The circle a resident solid’s named edge lies on, when it does: radius, diameter and an arc’s sweep (see crate::curve_carrier_dimensions). Ok(None) for a line or any other curve; errs if no edge carries edge_name.
edge_length_native
3D arc length (mm) of a resident solid’s named edge. Errs if no edge carries edge_name.
encode_solid
euler_handle_native
Closedness and Euler parity of a resident solid — the THIRD check validate() does not make on its own. Its Euler comparison reduces, on a freshly derived solid, to exactly “is the characteristic even”, and it is switched off on any solid carrying a degenerate edge; this asks the question directly and on every solid. Pure counting, one registry borrow.
eval_expression
One-shot: build an Env from a history’s expressions source + its configurator JSON, then evaluate source to a scalar. The small surface the engine-native sketcher’s live dimension-value edit uses (deliverable S5.0) — equivalent to Env::build(expressions, configurator_json)?.eval(source).
export_iges
Serialize solids as an IGES 5.3 document of trimmed NURBS surfaces.
export_iges_handles
Native: export the CURRENT resident solids (by handle) to an IGES 5.3 document of trimmed NURBS surfaces. The IGES analogue of export_step_handles — reads the resident solids out of the thread-local registry, clones them into a Vec<BrepSolid>, and hands the batch to export_iges. String error (JsValue-free — links on native and wasm).
export_step
Serialize exact NURBS BREP topology as an AP242 STEP Part 21 document.
export_step_assembly
export_step_assembly_report returning just the Part 21 text.
export_step_assembly_handles
STRUCTURED export: the resident scene PLUS the document’s assembly model, as an AP242 file with real product structure — one PRODUCT per parts-library entry, one NEXT_ASSEMBLY_USAGE_OCCURRENCE per placed instance.
export_step_assembly_report
Write a product structure as an AP242 Part 21 document: one product per distinct part, one NEXT_ASSEMBLY_USAGE_OCCURRENCE per placement, exact B-rep geometry in each part’s own frame.
export_step_handles
Native: export the CURRENT resident solids (by handle) to an ISO-10303-21 STEP document. Reads each resident solid out of the thread-local registry — the SAME registry display_payload_handle_native reads — clones them into a Vec<BrepSolid>, and hands the batch to export_step. The engine-native app’s Export→STEP lane calls this with the handles the pipeline left resident after the last history run, so the topology never crosses a boundary as JSON. String error (JsValue-free — it links + runs on native and wasm alike).
export_step_json
export_step_named_handles
export_step_handles with each body’s SCENE NAME and an optional PMI block: the engine-native Export→STEP lane. Names key the MANIFOLD_SOLID_BREPs and the PMI reference resolution.
export_step_report
export_step plus the pcurve-coverage measurements behind the file. Every body is written under the part name; no PMI.
export_step_report_named
The full single-product writer: each body carries its SCENE NAME (MANIFOLD_SOLID_BREP name — and the key the PMI references resolve through), and an optional PMI block is written as AP242 semantic representation + polyline presentation + saved views (pmi).
extrude_brep_buffer
extrude_brep_json
extrude_profile_brep
extrude_profile_brep_draft
Straight extrude of a LINE/ARC profile loop with a draft (taper) angle, built DIRECTLY as a BREP: every wall is the EXACT drafted surface of its segment — a tilted plane for a line, a cone patch (rational ruled surface between the source arc and its concentric offset, over one shared angular window) for a circular arc — and every junction edge is the EXACT intersection curve of the two adjacent walls. Because all drafted walls shrink linearly at the same rate, any two of them intersect in a straight line (plane∧plane, or a tangent-junction ruling) or a CONIC (plane∧cone and cone∧cone both reduce to a plane section of a cone — the z² terms of the squared implicits cancel), so the junction edges are exact rational quadratics: no lofted approximation anywhere.
extrude_profile_brep_draft_buffer
extrude_profile_brep_draft_json
face_area
face_boundary_length
Total 3D arc length of a face’s boundary edges: the unique edges referenced by the face’s loop coedges, resolved against the owning solid’s edge table and summed once each. An edge referenced twice by the same face (e.g. a seam) is still counted once.
face_carrier_dimensions_native
The carrier dimensions of a resident solid’s named face, for the Info panel: a cylinder’s radius and diameter, a cone’s half-angle, a sphere’s radius, a torus’s radii (see crate::surface_carrier_dimensions). Ok(None) for a plane or a free-form face; errs if no face carries face_name.
face_measurements_native
(area, boundary_edge_total_length, surface_type) of a resident solid’s named face (mm² / mm / classification): the face’s surface area, the summed arc length of its boundary edges, and a short label for its underlying carrier surface ("Plane", "Cylinder", "Cone", "Sphere", "Torus", "Surface of revolution", or "NURBS" when the exact rational patch is not a recognized analytic carrier). Errs if no face carries face_name.
face_metrics_json
face_names_handle
The resident solid’s face id -> name map (Stage 1b; lets the host rebuild its selection/name index from a handle without materializing the full graph).
face_self_intersections
Which of this solid’s faces FOLD THROUGH THEMSELVES in 3D — a face whose surface carries two distinct trimmed parameter feet to one point in space: an offset taken past the source’s curvature radius, a section swept through a bend tighter than its own half-width, a carrier fitted through a swallowtail.
face_set_identity
Hash exactly what the integrator reads, in the order it reads it.
face_transform_reason
FaceTransformReason of a refusal, by class and slug.
face_volume_contribution
fillet_edge
Constant-radius rolling-ball fillet of one edge (Golovanov §4.9 march, §6.9 surgery; the cutter only where the march refuses).
fillet_edge_buffer
fillet_edge_json
fillet_edges
Fillet (or chamfer) a GROUP of edges as ONE operation, and — for fillets — round the convex “star” vertices where three or more of the selected edges meet (Golovanov §6.9.7). This is the whole multi-edge fillet in a single kernel call: the caller passes the object plus one 3D point on each edge, and the kernel orchestrates the filleting and corner blending against the full topology (so acute corners resolve coherently instead of being stitched edge-by-edge by the app). A corner the kernel cannot round (e.g. non-orthogonal beyond support, or a general no-common-ball star) is left as the edge fillets rather than failing the whole group.
fillet_edges_buffer
fillet_edges_json
fillet_edges_reported
fillet_edges_reported_at_offset
fillet_edges with the selection outcome reported rather than refused.
fillet_edges_variable
Variable-radius fillet/chamfer of a GROUP of edges (§4.9.5), the app entry for tapered blends: each selected edge (resolved by a point on it) is blended with the SAME radius profile radii — a list of (edge-fraction, radius) stops in [0,1] — applied along that edge’s own parameterization. Edges are blended independently (no shared-vertex corner rounding; a variable-radius star has no single tangent ball), so this is the tapered counterpart of fillet_edges for the constant case.
fillet_edges_variable_buffer
fillet_edges_variable_json
fillet_edges_variable_law
Fillet (or chamfer) a chain of edges under a composable radius law evaluated on the chain’s cumulative arc-length abscissa (the OCCT Law_Composite model; see crate::law::RadiusLaw). The selected edges must form ONE OPEN CHAIN (or be a single edge); the chain starts at the free end of the earliest-selected end edge, and the law’s abscissa maps proportionally onto the chain’s measured arc length (a law built with the chain’s own lengths — e.g. crate::law::RadiusLaw::from_vertex_radii — maps 1:1). Endpoint radii are met exactly; radii at shared chain vertices match by the law’s continuity, so the per-edge blends miter through the corners; a chain whose blends cannot be mitered REFUSES rather than distorting the law through the sequential rebuild.
fillet_edges_variable_vertex_radii
The natural per-vertex user model: radius vertex_radii[i] at chain vertex i (in CHAIN order, starting at the free end of the earliest-selected edge), smoothly interpolated along the chain (monotone C1 — every vertex radius met exactly, no overshoot). Requires exactly one radius per chain vertex (edges + 1).
find_tangent_contact
Find a tangential contact between two carriers without a witness: grid the first carrier, project each sample onto the second, rank the samples by their distance and the angle between the normals, and refine the best few onto the contact. The grid is then repeated from the second carrier, so a contact one carrier samples poorly is still reached from the other.
fit_helix_curve
helix_sample_points fitted as ONE cubic curve (global interpolation — interpolate_curve, the machinery every fitted path here uses). Cubic interpolation error on a circle of radius R with node spacing Δθ is ≈ R·Δθ⁴/384: ~2·10⁻⁷·R at 64 stations per turn.
fit_pcurve_on_surface
Build a parameter-space curve for a 3D curve lying on a surface, and say what the fit achieved.
fit_pcurve_on_surface_marched
SECTION-PCURVE SEEDED MARCH (t222: cone × ABC 00000327, non-integral genus).
fit_pcurve_on_surface_range
Build a pcurve for a represented subrange of a larger edge curve.
fit_pcurve_on_surface_range_dense
Range fitter with explicit sampling knobs, reporting what the fit achieved. fit_pcurve_on_surface_range keeps the long-standing (base 64, 3 refinement rounds, 513 cap) budget; a fit that binds at that cap with the bar unmet grows once to PCURVE_RAISED_SAMPLES (fit_pcurve_on_surface_stations).
fit_pcurve_on_surface_stations
The body of fit_pcurve_on_surface_range_dense, parameterized by the 3D station the pcurve must pass through at each coedge fraction instead of by an edge curve and a range.
fit_polyline
Interpolate a curve through a polyline and REFINE it until the curve itself is within tolerance of that polyline.
fit_polyline_at
Fit ONE rung at the given station budget and measure it — no refinement.
fit_polyline_of_degree
fit_polyline with the GLOBAL lane’s interpolation degree chosen by the caller (the local lane is cubic Hermite whatever is asked). A marched section’s stations lie on both carriers to the march’s residual, and a degree-p interpolant through them errs by O(h^(p+1)) between stations: on BadBoolean’s sphere×bore rim at its own 135 stations the cubic sits 2.5e-7 off a carrier with a mean signed bias of −1.2e-8, the quintic 8.5e-9 and +6e-11 — the SAME stations, knots and control-point count, so nothing downstream that samples per knot pays for it (2026-09-27).
fragment_face
Back-compat entry point: builds the imprint index for this single face. fragment_solid builds it once and calls fragment_face_indexed directly.
fragment_faces_json
fragment_solid
free_solid
Drop a resident solid. No-op if the handle is unknown.
gordon_surface
The Gordon surface through two crossing curve families, judged against the kernel’s vertex identity band.
gordon_surface_reported
gordon_surface with a caller-stated crossing band, plus the GordonReport of what it did and measured.
helix_sample_points
Helical sweep (§5.7): sweep a CLOSED PLANAR profile loop along a helix of helix_radius about the axis through axis_origin with direction axis_direction, rising pitch per revolution for turns revolutions.
horizon_cross_frame
Whether the wrapped-horizon lane sums each loop’s parity over the query’s period images (true, the default) or keeps the per-image combining (false, HORIZON_CROSS_FRAME_SWITCH = "0"). Read from the environment on every call, as the lane reads it on every query.
hyperbola_curve_json
image_curve
Build the 3D image of an ARBITRARY pcurve on surface.
image_curve_pair
The images of ONE pcurve on TWO surfaces, guaranteed to share a basis.
import_iges
Parse an IGES document and reconstruct one or more BrepSolids.
import_obj_solid
Import Wavefront OBJ text as a faceted (planar-triangle) BREP solid. tolerance <= 0 derives the vertex-weld band from the model’s bounding-box diagonal.
import_step
Public entry: parse a STEP Part 21 document and return one BrepSolid per MANIFOLD_SOLID_BREP, FACETED_BREP, or certified BREP_WITH_VOIDS. Every returned solid passes validate() and closes its shells’ vector area to the import’s bar; a file with a body the closure gate refuses is refused as a whole (see import_step_bodies).
import_step_bodies
import_step_with_appearance with the error TYPED: the lane the IMPORT3D feature uses, so a refused body reaches the app as a class and not only as text.
import_step_json
Import an ISO-10303-21 (STEP Part 21) document and return the reconstructed kernel solids as a JSON array of BrepSolid records. Round-trips exactly what export_step writes; unsupported entities yield a clear error string.
import_step_report
Like import_step but reports how many bodies failed and the first error, so callers can distinguish a fully- from a partially-imported assembly — and runs the stated-precision consistency check over the imported bodies, whose result rides in StepImportReport::diagnostics.
import_step_trim_readings
Build every flat body of text with the per-edge provenance captured.
import_step_with_appearance
import_step plus the file’s PRESENTATION colours: one BodyAppearance per returned solid, in the same order.
import_stl_solid
Import binary or ASCII STL bytes (read_stl) as a faceted (planar-triangle) BREP solid. tolerance <= 0 derives the vertex-weld band from the model’s bounding-box diagonal.
interpolate_curve
Global B-spline interpolation (The NURBS Book A9.1) through points at the supplied strictly increasing parameters.
interpolate_curve_closed
interpolate_curve_local
interpolate_curve_thinned
interpolate_curve_thinned_json
interpolate_curve_with_end_tangents
Cubic interpolation with PRESCRIBED end derivatives (Piegl–Tiller §9.2.2): n+1 points plus two tangent rows give n+3 clamped control points. The derivative conditions use the exact clamped end forms C’(t0) = p/(u_{p+1}−t0)·(Q1−Q0) and C’(t1) = p/(t1−u_{m−p−1})·(Qn−Qn−1), so the requested tangents are reproduced exactly — the §5.8 loft tangency building block.
intersect_analytic_pair
Exact intersection curves for recognized analytic pairs, or None when the pair is not handled and the caller must fall back to SSI marching. Some(vec![]) means “provably empty” and skips marching entirely.
intersect_curve_surface
intersect_curve_surface_json
intersect_curves
intersect_curves_json
intersect_surfaces
intersect_surfaces_json
intersect_surfaces_supplemental
Gated supplemental SSI detector for a pair the coarse pair-classifier culled as “tangential-only” (NearTangent + tangential_only).
is_component_reference
ACOMP<digits> — an ACOMP feature id, i.e. a whole-component selection or one namespace segment of a nested chain — or a Pattern Component instance id (APAT1.ACOMP3.i4), which namespaces its geometry the same way.
is_sketch_origin_point_id
Whether a sketch point id is the reserved SKETCH_ORIGIN_POINT_ID.
line_curve_json
loft_brep_buffer
loft_brep_json
loft_profile_brep
Loft corresponding edges of closed sections. For two sections, exact degree elevation and knot insertion reconcile mixed line/arc representations and the ruled skins retain both boundaries’ rational weights. Multi-section interpolation requires matching degrees, knots and weights.
loft_profile_brep_closed
§5.8 CLOSED loft: the sections form a RING (the last flows back into the first), producing a capless genus-1 solid. Every interpolation column runs through interpolate_curve_closed, so the ring is C² across the closure — not a welded seam. Topology per skin is the cylinder-wall rectangle turned on its side: u runs along the section curve (open), v through the sections (closed); the section-0 curves themselves serve as the doubled v-seam edges and the corner rings (one closed curve through every section at each section corner) are shared between adjacent skins.
loft_profile_brep_closed_buffer
loft_profile_brep_closed_json
loft_profile_brep_guided
Loft a set of loft-compatible cross-sections so the loft’s SPINE follows a GUIDE curve (§5.8) instead of the straight centroid-to-centroid path.
loft_profile_brep_guided_buffer
loft_profile_brep_guided_frame
Rotation-to-frame guided loft (§5.8): like loft_profile_brep_guided, but intermediate sections ROTATE with the guide’s rotation-minimizing moving frame (double-reflection RMF, the same frames the path sweep uses) instead of keeping their world orientation.
loft_profile_brep_guided_json
loft_profile_brep_tangent
§5.8 loft with END TANGENCY: the skin leaves the first section along start_direction and arrives at the last along end_direction (unit directions; each interpolation column scales them by its own chord length, the standard magnitude that keeps the v-parametrization well conditioned). Exact by construction — the column interpolant reproduces the prescribed end derivatives.
loft_profile_brep_tangent_buffer
loft_profile_brep_tangent_json
loop_crossings_handle_native
Face-loop self-crossing of a resident solid — the check no OTHER detector here can make. validate() is silent (the incidence is perfect), the face-versus-face scan has no pair to confirm (both triangles are on one face), connectivity and Euler parity count the same cells either way; the face’s AREA is the only other tell. Pure parameter-space work on the trims the face already carries — no tessellation — so it is cheap enough to be a default. Reads the solid in one registry borrow.
loop_self_crossings
Does any face’s trim loop cross ITSELF in its own parameter domain — a bowtie?
make_arc
make_box
make_box_brep
make_circle
make_cone_brep
make_cone_surface
make_cylinder
make_cylinder_brep
make_cylinder_surface
make_extrusion
make_hyperbola
Exact arc of the hyperbola branch x²/a² − y²/b² = 1, x > 0 in the local frame (center at the origin, major_axis = +x, minor_axis = +y), parametrized P(t) = (a·cosh t, b·sinh t) and trimmed to t ∈ [t0, t1]. A single rational quadratic Bézier is exact for any sweep on one branch: endpoints on the curve, middle control point at the intersection of the end tangents, and middle weight cosh((t1−t0)/2) chosen so the shoulder point lands back on the branch. Only the point set is hyperbola-exact away from the ends; the NURBS parameter coincides with the hyperbolic parameter t exactly at t0, (t0+t1)/2 and t1.
make_line
make_parabola
Exact parabola segment y² = 4·focal·x in the local frame (vertex at the origin, axis = +x, latus_direction = +y), parametrized the standard way P(t) = (focal·t², 2·focal·t) and trimmed to t ∈ [t0, t1]. A parabola segment is a plain quadratic polynomial in t (all weights 1), so a single degree-2 Bézier over the knot span [t0, t1] reproduces both the point set AND the parametrization exactly — no fitting, and evaluate(t) == P(t) for every t, not just at the ends.
make_plane
make_pyramid_brep
make_revolution
make_sphere_brep
make_sphere_brep_framed
A sphere solid whose SEAM direction is chosen as well as its polar axis — see make_sphere_surface_framed. The topology is identical either way (one face, one pole-to-pole seam edge, two degenerate pole edges); only WHERE on the ball the seam and the poles sit changes. A caller that will trim the ball uses it to hide both inside the removed region, so the surviving face has no edge bordering itself.
make_sphere_surface
make_sphere_surface_framed
A sphere with BOTH halves of its frame chosen: the polar axis (where the two degenerate poles sit) and the SEAM direction (where the u = 0 meridian runs). seam_direction is Gram-Schmidt’d against the axis; None — and a seam parallel to the axis, which names no meridian — falls back to Vec3::perpendicular, i.e. exactly what make_sphere_surface builds.
make_torus_brep
make_torus_surface
mass_caller
mass_measures_handle_native
Surface area and volume of a resident solid — the native sibling of mass_properties_handle_native for a caller that reads NOTHING but those two numbers (examples/case_replay.rs records volume and area per solid and discards the rest). The full entry runs a second station sweep over every trimmed face for the nine moment integrands, which costs as much again as the area/volume sweep: on anotherBooleanFail’s imported 32-face body 2.6 s against 1.3 s, and 5.3 s of that case’s 12.9 s replay went to moments nobody read. The two numbers come out of the same solid_mass_properties call the full entry starts with, so they are bit-identical to its volume and surface_area; the full entry’s refusal of a non-positive volume is kept so a caller switching over sees the same Err on the same solids. Reads the solid in one registry borrow.
mass_properties_handle
Analytic mass properties of a resident solid (a handful of scalars).
mass_properties_handle_native
Full mass properties of a resident solid, scaled to density (the native, non-wasm sibling of mass_properties_handle for the in-process renderer): volume + surface area + centroid + centroidal inertia tensor + principal axes/moments (Golovanov §8.11). The underlying geometry is unit-density; here mass = density * volume and every inertia quantity scales linearly with density (centroid + principal axes are density-independent). density is in mass units per mm³ (the kernel’s length convention is millimetres); pass 1.0 for the raw geometric result (mass == volume). Reads the solid in one registry borrow; the topology never crosses a boundary.
measure_edge_against_pcurve_image
max_t ‖C_3d(t) − S(p(t))‖ — how far the edge’s own 3D curve sits from the locus its pcurve traces on surface, recorded against band.
measure_surface_fit_against_pointwise_offset
max_{u,v} ‖S_fit(u,v) − offset(u,v)‖ — how far a fitted offset carrier sits from the pointwise offset it was fitted to, recorded against band.
merge_curve_continuation_edges
Collapse tangent continuation edges seen by the same two incident faces — or by the same face TWICE, which is what a split seam looks like.
merge_curve_continuations_json
merge_faces_within
Merge edge-adjacent faces of group that ride the same carrier — the pairs merge_same_surface_faces would merge, at the same tolerance, plus two lanes only a user’s selection opts into: cone patches, and two half-turn patches closing a ring on a shared axial edge (see MergeLanes) — and nothing else: a face outside group is never touched, however cosurface with a neighbour.
merge_same_surface_faces
merge_same_surface_faces_excluding
Like merge_same_surface_faces, but any face whose name CONTAINS one of keep_unmerged is pinned: it never merges with a coplanar/cosurface neighbour and is emitted unchanged, while every other face merges exactly as merge_same_surface_faces would. An empty keep_unmerged is identical to the plain call.
merge_same_surface_faces_scoped
merge_same_surface_faces_excluding whose closing validation reads the geometry of the faces in scope and of the faces the merge built; every pair still merges exactly as the plain call merges it (an operand’s own coplanar neighbours included: the 2026-10-10 census found a mesh import whose five such pairs the boolean fuses). A boolean passes the faces its operation touched and their neighbours (BooleanOptions::untouched_passthrough); the rest were validated by the assembler and left this pass as they came.
mesh_regions_to_brep
Rebuild a BrepSolid whose faces are the mesh’s segmented regions. The result always passes full topology validation (watertight edge pairing, Euler accounting, pcurve consistency) or the call returns Err — an invalid solid is never returned. See the module-level v1 scope notes.
mesh_regions_to_brep_buffer
mesh_regions_to_brep_json
mesh_to_faceted_brep
Build a faceted (planar-triangle) BREP solid from a triangle soup or an indexed triangle mesh — the STL/mesh import entry (§8.6 inverse: mesh → body). Vertices weld within tolerance (pass <= 0 to derive it from the bounding-box diagonal), duplicate and degenerate triangles are dropped, surplus sheets at non-manifold edges are pruned, and remaining boundary cycles are capped with a fan so the result closes watertight whenever the input is close to a manifold. Validation is authoritative: an input too broken to close returns an error, never a silently-invalid solid.
mesh_volume_json
mint_sketch_id
Mint a collision-free sketch ID, with caller-selected reserved IDs omitted.
mirror_brep
Reflect an exact BREP across the plane through plane_point with unit normal n = plane_normal.normalized(). The reflection is the affine map p' = R p + t with linear part R = I - 2 n nᵀ and translation t = 2 (plane_point·n) n, so points on the plane map to themselves. A reflection has negative determinant (it flips handedness), so faces are re-oriented via the existing transform with reverse_orientation = true, keeping outward normals.
mirror_brep_buffer
mirror_brep_json
model_scale
The kernel’s single definition of a model’s characteristic length: the bounding-box diagonal of a point set.
move_faces
Golovanov §6.12 direct editing — translate a group of faces rigidly and heal the adjacency with the faces that stay behind.
occurrence_ref_parts
Read an occurrence-scoped reference back: (chain, part-local name). None for any other name.
offset_construction_band
The band an approximate offset construction is judged against: 0.05% of the caller’s local characteristic length, floored at OFFSET_CONSTRUCTION_FLOOR.
offset_face_carrier
offset_face_carrier_json
offset_face_carrier_measured
offset_face_carrier, with every entity it builds measured against the deviation it was meant to reproduce.
offset_face_carrier_sided
offset_face_carrier with a per-side CarrierExtension.
offset_freeform_face
Offset a free-form NURBS face whose boundaries have no other incident face. The fitted offset must pass a dense same-parameter residual check. Intrinsic iso boundaries use exact iso-curves; other self-incident trims use crate::image_curve. Rebuilt topology and volume orientation are validated. Neighbour-trimmed faces require general intersection and are refused.
offset_revolution_face
Push a general surface of revolution with planar neighbours.
offset_ruled_face
Push a CYLINDER or CONE face along its outward normal by distance (positive grows the solid) by OFFSETTING its carrier surface and re-deriving the trim as the intersection of that offset surface with the neighbour carriers.
offset_shell
offset_shell_by_boolean
The textbook shell: the offset body with the opening faces HELD (copied at distance zero, so they cancel in the difference), then source − body for an inward shell and body − source for an outward one. The walls at the openings come out of the boolean. distance carries offset_shell’s sign (positive inward).
offset_shell_closed
Lane O row 34: the CLOSED hollow, a shell with no openings. The offset body, the whole source grown or shrunk with sharp joins, against the source: source − body inward and body − source outward, so the result is the outer shell and the inner void’s shell, with the walls of the band between them. distance carries offset_shell’s sign (positive inward). face_images are read back from the operands by surface as in offset_shell_by_boolean: Offset for the body’s faces, Source for the source’s.
offset_shell_diagnostics_json
offset_shell_json
offset_shell_with_diagnostics
Run offset shell with stable counters and validation diagnostics suitable for automated regressions and UI presentation.
offset_solid
Offset every face of source by distance (positive grows) and join the offset faces into a closed body.
offset_sphere_face
Push a SPHERICAL face along its outward normal by distance (positive grows the solid) by replacing its carrier with the concentric offset sphere and re-trimming its neighbours: planar caps through the centre keep their exact- scale great-circle rim, while off-centre planes, spheres, and coaxial ruled neighbours have their rim re-derived as S′ ∩ neighbour.
offset_surface
Construct the same fitted offset carrier surface as the reference shell implementation. Positive distance follows its convention and moves opposite the face’s outward normal.
offset_surface_json
offset_surface_measured
offset_surface, plus the deviation MEASURED between the carrier it built and the pointwise offset that carrier approximates.
offset_surface_measured_sided
offset_surface_measured with a per-side CarrierExtension.
offset_torus_face
Push a toroidal face by changing its tube radius. Boundary edges must be intrinsic to this face; neighbour-trimmed rims require re-intersection and are refused. The carrier retains its knot vectors, weights, and UV basis, keeping pcurves valid. Iso boundaries rebuild exactly; other self-incident trims use crate::image_curve.
parabola_curve_json
parameter_point_in_face
parameter_point_in_face_json
parameter_space_area
parse_stl_triangles
Parse binary or ASCII STL bytes into their facets.
plane_ruled_section_arc
The EXACT arc of plane ∩ ruled revolution spanning a given AZIMUTH range about the carrier’s own frame — the arc-restricted, seam-anchorable form of the full sections intersect_plane_quadric returns.
point_in_polygon
point_in_polygon_json
profile_anchor
Validate a closed planar profile loop and derive its placement anchor — the path sweep’s §1 block, extracted bit-identically: 16 samples per curve, closure at tolerance, Newell normal, boundary-sample-mean origin, planarity at tolerance * 100, pu = np.perpendicular(), pv = np × pu.
project_curve_json
project_point_to_curve
project_point_to_surface
The point of surface nearest point, over the surface’s whole domain.
project_point_to_surface_seeded
Project a point onto a surface starting Newton from an explicit (u, v) guess, WITHOUT the global grid seed. This is a footpoint refiner for continuity-preserving curve-on-surface tracing: seeding each edge sample from its neighbour’s parameters keeps the fit on ONE branch of a surface that folds back over the small trimmed patch, where an independent global search would snap to whichever fold is momentarily closest and tear the pcurve into a self-crossing zig-zag. The caller compares the returned distance against the global answer and only adopts this result when it is geometrically just as valid, so a bad seed can never make a fit worse.
project_surface_json
pyramid_brep_json
read_3mf
Read a 3MF package: locate the model part through the OPC relationships, parse the core model, and flatten the build into a millimetre triangle soup.
read_obj
Parse Wavefront OBJ text into flat positions and triangle indices.
read_step_assembly
Read a STEP file’s product structure AND build each product’s own bodies, in ONE parse, with each distinct body built ONCE.
read_step_pmi
Read a file’s PMI into a PmiState whose references name the geometry an IMPORT3D feature feature_name will stamp. Ok(None) when the file carries no PMI.
read_stl
Read binary or ASCII STL bytes (parse_stl_triangles) as a flat triangle soup, refusing a corner that is not finite.
read_stl_json
Read binary or ASCII STL bytes (read_stl) as {tri_count, positions, format} JSON.
recognize_circle
Sampled circle recognition; this does not certify exact NURBS equivalence.
recognize_swept_envelope
Recognize the one configuration the envelope lane builds, or say — in words a refusal can quote — which half of it this sweep is not.
reconstruct_spherical_mesh_union
Attempt a small union of outward spheres and, optionally, one orthogonal box. Returns None for unsupported geometry or insufficient evidence.
recut_moved_planes
Re-cut a solid for a pure TRANSLATION of planar faces.
recut_moved_planes_rigid
Re-cut a solid for a RIGID motion of planar faces: rotation, when given as (axis point, unit axis, angle in radians), is applied first and translation after it — Transform Face’s rotate-then-translate.
refit_faces_as_one
Replace the faces face_ids of solid with one face on a surface of family kind fitted to them, within tolerance (maximum vertex residual, model units). See the module docs for the scope and the refusals.
register_solid_buffer
Ingest a solid from the flat f64 codec into the resident registry (arena + validate kept — external / first-crossing ingest). Returns an opaque handle.
register_solid_json
Ingest a solid from JSON into the resident registry (arena + validate kept).
registered_solid_clone
A clone of a resident solid, for Rust callers that need the topology itself: the case-replay diagnostics and probes, and the history runner answering a drawing sheet’s topology request (native thread or browser worker alike), which serializes the clone back to the main side. The feature pipeline’s results only ever hand out handles, and this is no #[wasm_bindgen] export: JavaScript never calls it. Short borrow; the clone is the caller’s.
registered_solid_count
Number of resident solids (diagnostics / handle-leak detection).
repair_triangle_soup
The mesh half of mesh_to_faceted_brep: weld, drop degenerate and duplicate triangles, prune surplus sheets at non-manifold edges, and cap the remaining boundary cycles with a fan — returning the repaired triangle soup instead of a BREP.
report_scale_migration
Migration diagnostic for the one-model_scale change (slice 0).
resolve_component_point
Whole-component representative point: the center of the aggregate AABB of every face surface’s control-point hull (plus topology vertices) across the component’s solids. The hull BOUNDS the exact surfaces (convex-hull property) without touching tessellation; it overshoots curved faces, so this is a representative anchor for coincident/parallel-with-component semantics, not an exact bounding box.
resolve_edge_selection
Resolve an edge by topology id (the EdgeRef lane).
resolve_face_by_point
Resolve the id of the face nearest a 3D point (used by the app: the picked point lies on the selected face). Mirrors resolve_edge_by_point.
resolve_face_crossing
Split two faces of ONE body that cross each other along their carriers’ exact intersection, drop the material the crossing encloses, and re-sew.
resolve_face_crossing_between
resolve_face_crossing for a pair this module has named itself rather than read off the scan.
resolve_face_selection
Resolve a face by topology id (the scene-map FaceRef lane: the caller already resolved the selection name to (handle, face_id)).
resolve_named_selection
Resolve a component-LOCAL topology name (already namespace-stripped) against one solid: faces first, then edges. Names never collide across the two kinds under the deterministic-naming scheme; the order only settles pathological ties.
resolve_sketch3d_reference
Resolve a reference name against the live scene: a published point ({feature}:P{n}, a waypoint’s Base), a datum / construction PLANE frame, a published AXIS, a resident FACE (planar → plane, axis-bearing → axis line, sphere → centre), a resident EDGE (straight → line, arc → arc, closed circle → its axis line), or a {solid}@x,y,z VERTEX. None when nothing carries the name or the entity has no analytic shape.
resolve_vertex_selection
Resolve a vertex selection by position (vertices have no kernel names; the renderer references them by owning solid + position). Nearest topology vertex wins — deterministic when two vertices are close — then the scale-relative snap tolerance gates acceptance; the returned point is the EXACT vertex position, not the query.
restore_solids
Restore a snapshot payload exactly. Every failure mode (bad base64, wrong magic, version mismatch, truncation, corrupted geometry) is a clean Err.
revolution_structure
revolve_brep_buffer
revolve_brep_json
revolve_profile_brep
revolve_profile_brep_named
Revolve with caller-supplied names. side_names is aligned with the INPUT curves; the kernel carries it through winding normalization and axis-curve skips, which the caller cannot reconstruct from the emitted face order. cap_names is [start_cap, end_cap] for partial revolutions. Empty slices leave faces unnamed.
rewrite_occurrence_refs
Rewrite every occurrence-scoped reference in a lifted annotation’s params into the consumer’s own namespace. namespace turns an occurrence chain into the prefix a reference to that instance’s geometry opens with ("ACOMP3:", or "" for a component that IS the document); None from it means the consumer placed no component for that chain, and the reference is left naming the chain so the row reports itself rather than resolving to the wrong instance.
rib_from_profile
Rib / stiffener (§6.6) — SolidWorks’ Rib, both extrusion directions, with its Up To Next end condition.
rib_from_profile_buffer
rib_from_profile_json
rotate_faces
ROTATE the faces face_ids of solid by angle_radians about the axis through axis_point along axis_direction (right-handed), re-intersecting the neighbours the rotation moves the selection relative to.
round_convex_corner
§6.9.7 vertex (“star”) blend: round a convex trihedral corner whose three incident edges are ALREADY filleted, by pure topology surgery — no booleans. corner is the ORIGINAL sharp corner coordinate (already trimmed away by the edge fillets). A spherical octant of radius, tangent to all three cylindrical fillets along their tangent circles, is sewn into the notch; the three fillet loops are closed on those tangent circles and the leftover flat caps are removed.
round_convex_corner_buffer
round_convex_corner_json
route_reading
Which faces a moved selection’s carriers would open a NEW hole in.
sample_edge_polylines
Display edge polylines for native in-process consumers (brep-render): every NON-degenerate edge’s chord-tolerance samples as (edge_id, points), sorted by edge id so the output is deterministic (the sample map is a HashMap). The samples are the same shared samples the watertight tessellation uses, so the displayed edges lie exactly on the mesh’s face boundaries.
sample_edges_encoded
Compute every edge’s shared samples and serialize them into a flat f64 buffer for transfer to face-range workers. Layout: [edge_count, (edge_id, sample_count, frac_0..n, x_0,y_0,z_0, ...), ...] (fractions.len() == positions.len(), so one count per edge). Edge ids ride as f64 exactly as the solid codec already carries them.
segment_intersection
segment_intersection_json
segment_mesh_faces
Segment a triangle mesh into smooth regions and recognize each region’s analytic carrier. positions are xyz triples; indices is a triangle index buffer, or empty to treat positions as a raw soup of consecutive triangles (the STL layout of read_stl).
segment_mesh_faces_json
self_intersections_handle_native
Face-versus-face self-intersection of a resident solid — the OTHER check validate() does not make (its one “self-intersects” string is a uv-wire warning). Opt-in and expensive: it tessellates the solid and walks a triangle BVH, so no default gate calls it. chord_tolerance overrides the per-solid display density when positive. Reads the solid in one registry borrow.
sew_solid
Best-effort sew of a solid’s open boundary edges.
shell_vector_areas
Does a closed shell’s boundary enclose the vector area it should — zero?
signed_volume_against
solid_signed_volume_for_sign for a caller that compares the result with bar and nothing else (the boolean assembly’s closed tail, the shell’s orientation, the direct edit’s inversion check — 2026-10-17): the memoised sign reading, whose verdict against the bar is the exact integral’s. BREP_SIGN_READERS_EXACT=1 restores the exact read at those call sites, for an on/off census. Read once.
simplify_polyline
simplify_polyline_indices
Douglas–Peucker against tolerance, as INDICES into points.
sketch3d_constraint_type
Look up a constraint type by its type string.
sketch3d_reference_record
A materialization record entry for a resolved reference — the editor’s side of resolve_reference (kept here so the record’s shape has one author).
sketch_display_payload
Native display payload for a whole committed SKETCH: its profile SHEET (when the sketch closes a region) PLUS every model SEGMENT the sheet does not already draw.
sketch_id_key
Canonical sketch entity key. Numeric IDs normalize integral floats and signed zero; string IDs are preserved. Other JSON values use their JSON spelling.
sketch_profile_display_payload
Native display payload for a solved sketch PROFILE — the SHEET-SOLID view of a committed sketch: a planar FACE mesh + its named boundary EDGES + corner VERTICES, so a sketch is pickable / selectable / measurable through the exact same display path as a real solid. NO solid is registered — the payload is synthesized directly from the profile, so it owns no scene handle (the display carries source_handle = 0).
snapshot_resident_solids
snapshot_solids over RESIDENT solids — the shape the parts-library lane holds after running a sub-part history (AddedSolid.name + handle).
snapshot_solids
Serialize (name, solid) pairs into one base64 snapshot payload. Captures each entity’s OWN scene-metadata record (solid name + every face/edge name) alongside the geometry, so a stamped part restores with its metadata. The payload is byte-deterministic for identical input (solids in caller order, metadata sorted by name).
solid_connectivity
Connectivity of a solid’s topology: are each shell’s faces reachable from one another across shared edges, do any two shells share an edge, and does any vertex pinch two otherwise-separate fans together.
solid_edge_length_total
Total 3D arc length of every non-degenerate edge of a solid (each shared edge counted ONCE — the solid’s edge table is already edge-unique). This is the solid’s “total edge length” measurement.
solid_edge_length_total_native
Total 3D arc length (mm) of every non-degenerate edge of a resident solid — the Properties panel’s “total edge length” measurement. Native sibling of the mass-properties accessors; one short registry borrow, topology never crosses the boundary.
solid_euler
Closedness and Euler parity: V − E + F − H over the reduced complex, and whether the counts can belong to a closed orientable surface at all.
solid_handle_to_buffer
Escape hatch: pull a resident solid’s full topology across the boundary (for STEP export or JSON-only lanes during the migration). Prefer handle-native ops — this re-incurs the serialization cost the registry exists to avoid.
solid_mass_properties
solid_mass_properties_full
Area, volume, centroid, and centroidal inertia (unit density). Area and volume use the same exact paths as solid_mass_properties; the moment integrals use divergence-theorem surface quadrature (exact for untrimmed spans, trim-polygon scanline accuracy for trimmed faces).
solid_mass_properties_full_json
solid_mass_properties_json
solid_model_scale
model_scale of a solid’s vertices — the RAW bounding-box diagonal, with no >= 1.0 floor. This is what direct-edit wants: a sub-unit part must keep sub-unit bands. (BrepSolid::validate wants the same thing and still hand-rolls it, for the reason its own comment gives — it answers 0.0, not 1.0, for a vertexless solid. Reconciling that contract is a follow-up, not a free ride-along.) Use solid_scale for the floored variant the tolerance policy is built on.
solid_scale
solid_model_scale floored at 1.0 — the characteristic length KernelTolerances::for_solid and the boolean/imprint/heal sites are tuned against. The floor keeps a unit-and-below part on the historical bands those call sites were fitted to; new size-relative sites should prefer the unfloored model_scale family and floor explicitly where they mean to.
solid_self_intersections
Does this solid pass through itself? Tessellates every face once, walks a triangle BVH for mesh crossings, and confirms each candidate against the two carrier SURFACES so tangent neighbours and chord error cannot manufacture a finding. See the module docs for the design and its one documented blind spot.
solid_signed_volume
Exact signed volume. A single nonempty shell shares its area/volume measurement with subsequent property queries. Multiple shells retain the original per-shell compensated sum: substituting the across-face sum can change the last bits and an orientation gate must not change its answer.
solid_signed_volume_for_sign
solid_signed_volume read for its SIGN against bar, as the boolean’s assembly reads it (volume <= tolerance³ refuses an inverted shell).
solve_assembly
Solve the assembly mates in least squares from the bodies’ initial poses.
solve_assembly_json
solve_banded
solve_banded_json
solve_dense
solve_dense_json
solve_sketch
solve_sketch3d
Solve a JSON request: returns {"sketch": {points, geometries, constraints, diagnostics}}, the 2D solver’s response shape.
solve_sketch3d_doc
Solve doc in place: the free points take their solved coordinates and the diagnostics describe the constraint system at that configuration.
solve_sketch3d_from_json
Solve a JSON request given as text; the response is JSON text.
solve_sketch_from_json
solve_sketch_json
span_midpoint_error
The same comparison as measure_edge_against_pcurve_image, sampled once at the midpoint of every knot span of the edge’s own 3D curve.
sphere_brep_json
split_component_namespace
Split a possibly-namespaced topology name into its ACOMP…: component-id chain (outermost first) and the remaining component-LOCAL name. A segment is peeled only when it matches ACOMP<digits> AND is followed by :, so a bare whole-component reference stays in the LOCAL position — callers detect it with is_component_reference:
split_pinched_vertices
Split PINCHED vertices — points where two (or more) umbrella fans of faces meet at a single vertex record. Local manifold checks (edge use counts, loop closure, orientation) cannot see a pinch; it surfaces only as an odd Euler characteristic. The link of a manifold boundary vertex is a single edge-connected fan: union incident edges through every loop CORNER at the vertex (consecutive coedges meeting there inside one face); more than one component means distinct fans sharing the record — give each extra fan its own vertex at the same point and reassign that fan’s edge endpoints. Geometry is untouched; only identity is repaired.
split_solid_by_face_surface
Split solid by the analytic carrier of a selected face surface (Golovanov §6.4). The face may be a plane, cylinder, cone, or sphere; the carrier is extended to fully span the body. Returns the two pieces ([below, above] for a plane, [inside, outside] otherwise). Errors on non-analytic / general-revolution faces, or when the carrier does not cleanly divide the body.
split_solid_by_face_surface_json
Cut a solid by the analytic carrier of a selected face’s surface (Golovanov §6.4). The face may be a plane, cylinder, cone, or sphere; the kernel recognizes its analytic type and extends it to span the body. Returns { "pieces": [<below/inside>, <above/outside>] }. Errors on non-analytic faces or when the carrier does not cleanly divide the body.
split_solid_by_plane
Split solid into two pieces by the plane through plane_point with normal plane_normal. Returns (below, above) where below is the piece on the −n side of the plane and above the piece on the +n side.
split_solid_by_plane_json
Cut a solid by a plane (Golovanov §6.4). Returns { "below": <solid>, "above": <solid> } — the −n and +n pieces of the split. Errors with “plane does not intersect the solid” when the plane misses the body.
split_solid_by_surface
Split solid into pieces by an analytic tool surface (Golovanov §6.4).
split_solid_by_surface_json
Cut a solid by an analytic tool surface (Golovanov §6.4). The request is { "solid": <solid>, "tool": { "type": "cylinder"|"sphere"|"cone"|"torus"| "plane", ... } }. Returns { "pieces": [<inside>, <outside>] } (for a plane, [below, above]). Errors with “tool surface does not divide the solid” when the tool does not cleanly cut the body.
surface_carrier_dimensions
The dimensions of a surface’s recognised carrier, or None for a plane, a free-form patch, or a revolution whose generatrix is neither straight nor circular.
sweep_bend_profile
The ρκ profile a TRANSPLANT sweep of profile along path would carry at stations stations — the instrument behind the refusal below, exposed so a caller (or a probe) can measure a path BEFORE asking for the solid.
sweep_closure
The CLOSURE a sweep of profile along path applies — the frame-closure policy’s report, exposed so a caller can read the twist a closed sweep laid down (see SweepClosure). None for an OPEN path, which has no lap to close.
sweep_envelope_bodies
The swept union as BODIES — the entry for a caller that can take more than one, which is what a partial turn past ρκ = 1 really sweeps.
sweep_profile_along_chain
Sweep a CLOSED PLANAR profile along a CHAIN of path curves joined head-to-tail — the multi-segment entry point, with the twist and anchor options the single-curve family exposes as separate functions folded into one signature (the feature layer picks all three per loop, so splitting them four ways here would only push the same match into the caller).
sweep_profile_along_chain_reported
sweep_profile_along_chain with the requested wall TOLERANCE (mm; None for SWEEP_DEFAULT_TOLERANCE) and the measured bound the build reached, for a caller that carries it on (the sweep features put it in FeatureResult::approximations). The station lane refines its stations until the loft’s own interpolant stands within tolerance of the kinematic sweep’s wall, or the station cap stops it; the report says which.
sweep_profile_along_chain_with_stations
sweep_profile_along_chain with an explicit STATION budget and no twist — the entry a caller with a long, smooth chain uses when the default 32 stations would under-sample it (a wire-harness bundle along a many-anchor spline: three pieces per span, so a handful of spans already starves each piece of stations). The budget is spread over the chain by arc length exactly as the twisted builder’s law spreads its own; the 1024-station cap and the tangent-continuity refusal apply unchanged.
sweep_profile_along_chain_with_stations_reported
sweep_profile_along_chain_with_stations with the requested wall tolerance (None for the default) and the measured bound: the caller’s budget is the FLOOR, refined where the measured deviation is over the tolerance.
sweep_profile_along_path
Sweep a CLOSED PLANAR profile loop along a path curve (§3.3/§5.7), TRANSPLANTING the profile onto the path — see SectionPlacement for the other reading, and for why the choice changes the solid.
sweep_profile_along_path_anchored
sweep_profile_along_path with an explicit placement anchor (see ProfileAnchor) — the hole-loop cutter path: the swept loop is validated as usual but PLACED in its outer loop’s frame.
sweep_profile_along_path_buffer
sweep_profile_along_path_json
sweep_profile_helix
The helix is transcendental, not exactly NURBS-representable, so the path is FIT: points (R·cosθ, R·sinθ, pitch·θ/2π) in the axis frame are sampled uniformly in θ and globally interpolated with a cubic (interpolate_curve — the same machinery every other fitted path here uses). DENSITY: 64 samples per turn, capped at 1025 total nodes. Cubic interpolation error on a circle of radius R with node spacing Δθ is ≈ R·Δθ⁴/384: ~2·10⁻⁷·R at 64/turn, and still ~6·10⁻⁵·R at the cap’s worst case (16/turn at the 64-turn limit) — orders below any profile a caller could sweep without self-intersecting. Uniform-in-θ parameters are exact chord-length for a helix (constant speed), which is what the averaged-knot interpolation assumes.
sweep_profile_helix_buffer
sweep_profile_helix_json
sweep_profile_twisted
Twisted path sweep (§5.7): identical to sweep_profile_along_path, but the profile additionally ROTATES about the path tangent, linearly in ARC LENGTH, from 0 at the sweep start to twist_angle radians (right-handed about the tangent) at the end. The arc-length fraction comes from the sampled station polyline, not the raw path parameter, so a non-uniformly parameterized path still twists uniformly in space.
sweep_profile_twisted_anchored
sweep_profile_twisted with an explicit placement anchor: the hole loop twists about the SAME path axis as its outer loop (shared anchor), so the cutter stays registered with the outer wall through the whole twist.
sweep_profile_twisted_buffer
sweep_profile_twisted_json
swept_envelope_volume
The whole swept solid’s closed-form volume: both lobes for a partial turn, the apple alone for a full one (where the lemon is inside it).
take_blend_approximations
Consume EVERY wall-model report recorded on this thread since the last call, in ONE snapshot, against ALL the bodies a call returned ((body name, solid)): a report becomes a typed blend.wall_model crate::Approximation on each body carrying its wall — a face with a bit-identical surface AND the report’s name, exactly or as registration renamed it (NAME[k]) — and is dropped when no returned body carries it (a lane that refused, a body a later step discarded). A wall carried by two returned bodies (one surface, bit for bit, in both) is reported on both: the reading is a property of that surface. Reports for one wall collapse to the last. Never a match by name alone. take_blend_approximations(&[]) discards everything recorded (the history loop’s stale drain before a feature runs).
take_blend_notes
Take every blend note recorded on this thread since the last call. Blending runs on the feature’s own thread (no parallel march), so the history loop’s drain sees every note its feature recorded.
take_blend_timings
Take every entry recorded on this thread since the last call (or the last outermost operation’s start), sorted by measure name.
take_crossing_repairs
Take every repair made on this thread since the last call, leaving the ledger empty. The history loop drains it after each feature so the repair is reported against the feature that made it.
tessellate_brep
tessellate_brep_json
tessellate_brep_watertight
Watertight tessellation of a closed solid: coincident triangulation along every shared edge, density driven by chord_tolerance.
tessellate_brep_watertight_face_stride
Tessellate only the faces whose global sequential index i satisfies i % stride == offset, leaving every other face out of the returned mesh.
tessellate_brep_watertight_face_stride_with_samples
As tessellate_brep_watertight_face_stride, but the caller supplies edge samples already computed (and serialized) by sample_edges_encoded. The worker-pool split uses this so sample_all_edges runs ONCE (in the prepare step) instead of redundantly in every face-range worker. The samples are deterministic, so meshing against a shared copy is identical to recomputing them locally.
tessellate_face
tessellate_face_json
tessellate_handle
Tessellate a resident solid to watertight mesh buffers (the buffers cross the boundary; the solid does not).
thicken_face_sheet
§5.9 THICKEN a sheet (an open surface patch over its full parameter domain) into a closed solid.
thicken_face_sheet_buffer
thicken_face_sheet_json
thicken_trimmed_sheet
§5.9 THICKEN a TRIMMED sheet region into a closed solid.
thicken_trimmed_sheet_buffer
thicken_trimmed_sheet_json
topology_counts_native
Topology TOTALS of a resident solid as (faces, edges, non_degenerate_edges, vertices), read straight off the record: every face of every shell, every edge, every edge that is not a collapsed pole boundary, every vertex.
topology_kind
Classify a body record by its edge uses (module docs for the predicates).
topology_kind_handle_native
The body-kind report of a resident solid. A report beside the Euler one, not a gate: no body carries a kind yet. Pure counting, one registry borrow.
torus_brep_json
trace_tangent_curve
March the tangent curve through an EXTENDED contact, both ways from the contact point, and return it typed as a tangent section. None when the contact is not extended (an isolated node or point has no curve to march).
transform_brep
Transform exact BREP geometry without changing entity IDs or parameter ranges. reverse_orientation is required for negative-determinant maps.
transform_brep_json
transform_handle
Rigid/affine transform of a resident solid -> a NEW resident handle (Stage 1b; unblocks Transform/Pattern/bakeTransform from the legacy serialize lane). The result never crosses the boundary as topology. Kernel-produced, so trusted.
transform_pivot_native
The Transform feature’s BBOX_CENTER pivot for a resident source solid. Share the kernel’s vertex-bbox definition with viewport controls; display tessellation bounds would give a different pivot for curved solids.
trim_polygons
The chord polygons of face’s trim loops, as sampled for integration.
trim_sample_count
How many chords the containment lanes sample ONE pcurve at: max(2, (k + 1)(p + 1)·4), k the pcurve’s distinct interior knots (two knots are one when they differ by no more than KNOT_DEDUP_EPS, and a knot that close to an end of the active domain is not interior) and p its degree. Knot- and degree-aware, so a spline trim is resolved wherever its shape can bend and a line is two chords.
trim_station
The pcurve parameter of trim station index of count over [start, end]: start + (end − start)·index / count, evaluated in exactly that order.
uniform_clamped_knots
uniform_clamped_knots_json
validate_brep_detailed_json
validate_brep_json
validate_handle_native
Topology validation issues of a resident solid as (severity, message) pairs — the native sibling of the JSON validators, for in-process qualification tooling (examples/case_replay.rs). An empty Vec means the incidence checks passed; that is NOT a correctness proof: validate() tests neither connectivity nor face-vs-face self-intersection, and a validating solid can still be the wrong solid. Reads the solid in one registry borrow.
vector_area_handle_native
The vector-area closure of a resident solid: does each closed shell’s TRIMS enclose the zero vector area a closed shell owes, and if not, which faces own the residual. One pass over the trims and the edge curves — no tessellation, no projection — so unlike the crossing scan it is cheap enough for a default gate. Reads the solid in one registry borrow.
vertex_endpoint_gap
|p_V − c_E(t_end)| — how far a curve end sits from the vertex point the topology says it meets.
vertex_tolerance_from_edges
Propagate measured tolerances up one level of the entity hierarchy: from a vertex’s incident edges (and the gaps between their ends and the vertex point) to the vertex itself.
write_3mf
Write solids as one 3MF package in millimetres.
write_ascii_stl
Write ASCII STL: solid {name}, one facet per (normal, corners) item, endsolid {name}. Values print with their own Display, so an f32 source keeps its shortest f32 text.
write_binary_stl
Write the kernel mesh as binary STL.
write_glb
Write solids as one binary glTF 2.0 document.
write_obj
Write Wavefront OBJ positions, normals, and indexed triangle faces.
write_obj_text
write_stl_bytes

Type Aliases§

Mat4
A row-major 4×4 matrix used for STEP assembly placements.