openbim-ifc
Facade for the openBIM IFC crates: pick codecs and domains as features.
| Status | Implemented |
| Latest release | 0.9.0 (2026-09-29) |
| Registries | crates.io openbim-ifc |
| API documentation | rustdoc · docs.rs |
| Source | crates/openbim-ifc/ |
Overview
ifc — the facade. Pick your codecs and domains as cargo features.
Features
| Feature | Default | What it enables |
|---|---|---|
alignment | ifc-alignment: IFC4x3 linear positioning: alignments, referents, linear placement, spirals. | |
approval | ifc-approval: Bounded IFC4 approval resource semantics. | |
author | ifc-author: Schema-checked IFC authoring: construct entities by attribute name with arity and type validation. | |
classification | ifc-classification: Classification systems, document references, libraries, external references. | |
codecs | Both codecs: STEP and ifcXML. | |
constraint | ifc-constraint: Bounded IFC4 metric, objective, and constraint relationships. | |
control | ifc-control: Bounded IFC control semantics: permits, project orders, action requests, and performance history. | |
cost | ifc-cost: Cost semantics as a borrowed view over the IFC model. | |
domains | Every domain view, plus authoring and spatial traversal. | |
element-type | ifc-element-type: Element, resource, and process type definitions: the IfcTypeObject catalogue. | |
full | Everything: codecs, schema tables, every domain, catalogues, geometry, georeferencing and alignment. | |
geometry | Representation selection plus lowering into the neutral geometry DAG. | |
geometry-select | Representation selection only: contexts, plan/body choice, placements and units, with no geometry kernel. | |
georef | ifc-georef: Georeferencing: map conversion, coordinate reference systems, site placement. | |
ifc2x3 | The schema API with the bundled IFC2X3 TC1 table. | |
ifc4 | The schema API with the bundled IFC4 ADD2 TC1 table. | |
ifc4x1 | The schema API with the bundled IFC4X1 FINAL table. | |
ifc4x2 | The schema API with the bundled IFC4X2 FINAL table. | |
ifc4x3 | The schema API with the bundled IFC4X3 ADD2 table. | |
ifcxml | ifc-xml: ifcXML (ISO 10303-28) codec for the IFC model. | |
material | ifc-material: Material definitions: layer sets, profile sets, constituents, usage. | |
material-templates | Material views together with the property template catalogue. | |
occurrence | ifc-occurrence: Built element and distribution occurrence classes and their type pairing. | |
properties | Property sets, quantities and unit resolution (ifc-properties); together with geometry-select, door and window operation geometry; together with spatial, element properties by spatial container. | |
property-catalog | ifc-template-catalog: Versioned IFC PSD/QTO catalog definitions and correction overlays | |
resource | ifc-resource: Construction resources: labour, equipment, material, crew, subcontract. | |
schedule | ifc-schedule: IFC scheduling: IfcTask/IfcWorkSchedule, sequencing, 4D linkage. | |
schema | The schema API with every bundled release (IFC2X3, IFC4, IFC4X1, IFC4X2, IFC4X3). | |
schema-api | The schema API without a bundled release; implied by each release feature. | |
spatial | ifc-spatial: IFC spatial containment and objectified relationship traversal: project, site, building, storey, element. | |
step | yes | ifc-step: STEP physical file (ISO 10303-21) codec for the IFC model. |
structural | ifc-structural: Structural analysis model: members, connections, actions, reactions, loads. | |
style | ifc-style: Presentation: styles, colours, textures, layers, annotation. | |
systems | ifc-systems: Distribution systems, ports, and connectivity between elements. | |
tabular | ifc-tabular: Structured IFC value containers indexed by position or time. | |
validate | ifc-validate: Schema conformance: WHERE rules, cardinality, GUID and reference integrity. |
Depends on
ifc-alignmentifc-approvalifc-authorifc-classificationifc-constraintifc-controlifc-costifc-element-typeifc-geometryifc-georefifc-materialifc-modelifc-occurrenceifc-propertiesifc-resourceifc-scheduleifc-schemaifc-spatialifc-stepifc-structuralifc-styleifc-systemsifc-tabularifc-template-catalogifc-validateifc-xml
Changes
Latest release, 0.9.0 (2026-09-29):
Added
tests/stationing_template.rs: a referent'sPset_Stationingauthored byalignmentand read bypropertieschecks clean against theproperty-catalogIFC4X3 ADD2 corrected profile (#216).
Changed (breaking)
PanelPositionandUnreachableare#[non_exhaustive]: a match needs a wildcard arm.SectorandContainerElementsare#[non_exhaustive]; they can no longer be built with a struct literal outside the crate.Code previously behind
schemais behindschema-api, whichschemaand every release feature imply;schema::for_versionreturns aResult(seeifc-schema).
Changed
- The georeferencing and alignment conformance test gives its placeholder
IfcPolylinetwo points (PointsisLIST [2:?], checked since #111). - Door and window operation reads name the type-object entity per verified release (IFC2X3, IFC4, IFC4X3) and refuse any other with
ExactPropertyError::UnsupportedSchema, instead of treating every non-IFC2X3 release as IFC4.
Added
- Per-release schema features (#112):
ifc2x3,ifc4,ifc4x1,ifc4x2,ifc4x3, each providing the schema API with that one bundled table, andschema-api(the API with no table).schemakeeps its meaning: the API with every release. A single-release build refuses the others throughschema::for_versionwithschema::NotBundled. Domain features link the releases their crates read, so enabling one brings every release it reads. compiled_features()reportsschema-apiand each release feature.tests/intermediate_releases.rs: IFC4X1 and IFC4X2 files resolve to their ownSchemaVersion, release id and bundled table (#33).
Full history: crates/openbim-ifc/CHANGELOG.md