Skip to content
IFC-RS
Viewer Русский
Project Wiki en

Core engine

Layers

Layer Crate Responsibility
source ifc-source borrowed, owned, and mapped bytes
scanner ifc-scan STEP entity ranges and bounded diagnostics
values/schema ifc-value, ifc-schema lazy STEP values and EXPRESS metadata
indexes ifc-index type, GUID, references, spatial, Pset
model ifc-model schema-aware model and queries
edits ifc-edit transactions, revisions, Patch Overlay, undo/redo
writer ifc-write new IFC with unchanged ranges preserved
topology ifc-brep bounded clipping and canonical BRep topology core
geometry ifc-geometry placements, profiles, extrusion, mapped items, mesh
facade ifccore minimal stable Rust API
adapter ifc-wasm browser/Node boundary and IFCG/2
IFC bytes → scanner → ranges/type table → lazy indexes → query/geometry
                                            ↓
                                  transaction/Patch Overlay
                                            ↓
                                    writer → new IFC

Opening a model never changes the source buffer. Queries decode only requested records. The writer copies unchanged ranges and serializes affected entities.

Geometry outcomes are exact, fallback, unsupported, or invalid; objects must not disappear silently. See the coverage matrix.

ifc-brep provides a parser-neutral Solid → Shell → Face → Wire → HalfEdge graph. It deterministically builds multiple solids and validates ownership, orientation, and manifold incidence. Stage 2 adds schema-aware closed polygonal IfcFacetedBrep import; Stage 3 adds a bounded IfcFacetedBrepWithVoids profile with canonical outer/void roles and conservative convex-profile gates before tessellation. Stage 4 adds an in-house bounded pure-Rust/WASM polygonal kernel for UNION, INTERSECTION, and DIFFERENCE; successful results contain a watertight mesh and canonical topology, while an empty result is explicit. Stage 5 adds an in-house bounded exact-sign orient3d based on expansion arithmetic and keeps representable sub-tolerance gaps distinct; intersections are still constructed in f64. Stage 6 adds a bounded general DIFFERENCE slice for convex BRep × BRep, BRep × half-space, nested clipping, sequential cuts, and typed empty outcomes. Stage 7 adds bounded healing for UNION/INTERSECTION: conservative sewing, duplicate/degenerate sliver cleanup, reconstructed shells, coplanar face merging, and separate open/non-manifold diagnostics. Stage 8 adds bounded pure-Rust/WASM tessellation for cylinders, cones, spheres, and non-self-intersecting tori, plus circles, ellipses, and parameter-trimmed conics in the profile path. Cases outside the verified profile go to the exact backend or a typed diagnostic. IfcAdvancedBrep, arbitrary surface trims, B-Spline/NURBS, and universal exact booleans are not claimed. See BRep topology Stage 1, IfcFacetedBrep Stage 2, and void shells Stage 3, and polygonal booleans Stage 4, and exact predicates Stage 5, and general difference Stage 6, bounded healing Stage 7, and analytic surfaces Stage 8 (Russian primary technical documents).

The ifccore facade and pinned WASM boundary are stable. Low-level workspace crates are internal. Fragments, container, MCP, and AI bridge are previews.