ifc-geometry 0.3.0

IFC semantic views lowered into the format-neutral geometry DAG.
Documentation

ifc-geometry — the IFC side of geometry.

What this crate is

It answers "what does this IFC entity mean geometrically" and lowers implemented slices into the format-neutral axiolid-model DAG. It does not triangulate, evaluate NURBS, or perform booleans itself.

The opt-in compile feature is the one narrow exception: it hands the lowered DAG to an Axiolid provider and returns triangles. It is off by default because selecting a provider and a memory budget is application policy, not something the IFC file determines. See the compile module and ADR 0004.

  ifc-model            this crate                    geometry package
  (untyped graph) -->  typed/family views  -->  GeometryGraph
                       + IFC resolution       (implemented elsewhere)

Scope

The three IFC geometry resource schemas, counted from IFC4 ADD2 TC1:

Schema Entities Types Functions
IfcGeometryResource 59 14 25
IfcGeometricModelResource 42 4 2
IfcGeometricConstraintResource 11 5 1

Design

Views and explicit inventory. The 89 concrete entities are represented by dedicated or shared subtype-aware borrowed views. The 23 abstract entities are inheritance/inventory entries, not falsely presented as constructible views. All 23 schema types are modeled.

Honest partial lowering. Exact profiles and extrusion/revolution are implemented vertical slices. Every other assigned declaration is tracked in the support ledger; attempting an unimplemented lowering returns typed [crate::GeometryError::Unsupported] rather than panicking or substituting approximate geometry.

Neutral DAG output. Implemented lowerers resolve IFC units, placements, profiles, and representation relationships into axiolid-model nodes. Active lowering owns no duplicate geometry types and never selects a CPU/GPU provider.

Feature lowering (default on) carries the neutral geometry crates. Without it this crate is representation selection only -- contexts, plan/body choice, profiles, curves, surfaces, solids, units and placements -- and links no geometry code at all.