Skip to content

openbim-ifc ​

Facade for the openBIM IFC crates: pick codecs and domains as features.

StatusImplemented
Latest release0.9.0 (2026-09-29)
Registriescrates.io openbim-ifc
API documentationrustdoc · docs.rs
Sourcecrates/openbim-ifc/

Overview ​

ifc — the facade. Pick your codecs and domains as cargo features.

Features ​

FeatureDefaultWhat it enables
alignmentifc-alignment: IFC4x3 linear positioning: alignments, referents, linear placement, spirals.
approvalifc-approval: Bounded IFC4 approval resource semantics.
authorifc-author: Schema-checked IFC authoring: construct entities by attribute name with arity and type validation.
classificationifc-classification: Classification systems, document references, libraries, external references.
codecsBoth codecs: STEP and ifcXML.
constraintifc-constraint: Bounded IFC4 metric, objective, and constraint relationships.
controlifc-control: Bounded IFC control semantics: permits, project orders, action requests, and performance history.
costifc-cost: Cost semantics as a borrowed view over the IFC model.
domainsEvery domain view, plus authoring and spatial traversal.
element-typeifc-element-type: Element, resource, and process type definitions: the IfcTypeObject catalogue.
fullEverything: codecs, schema tables, every domain, catalogues, geometry, georeferencing and alignment.
geometryRepresentation selection plus lowering into the neutral geometry DAG.
geometry-selectRepresentation selection only: contexts, plan/body choice, placements and units, with no geometry kernel.
georefifc-georef: Georeferencing: map conversion, coordinate reference systems, site placement.
ifc2x3The schema API with the bundled IFC2X3 TC1 table.
ifc4The schema API with the bundled IFC4 ADD2 TC1 table.
ifc4x1The schema API with the bundled IFC4X1 FINAL table.
ifc4x2The schema API with the bundled IFC4X2 FINAL table.
ifc4x3The schema API with the bundled IFC4X3 ADD2 table.
ifcxmlifc-xml: ifcXML (ISO 10303-28) codec for the IFC model.
materialifc-material: Material definitions: layer sets, profile sets, constituents, usage.
material-templatesMaterial views together with the property template catalogue.
occurrenceifc-occurrence: Built element and distribution occurrence classes and their type pairing.
propertiesProperty 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-catalogifc-template-catalog: Versioned IFC PSD/QTO catalog definitions and correction overlays
resourceifc-resource: Construction resources: labour, equipment, material, crew, subcontract.
scheduleifc-schedule: IFC scheduling: IfcTask/IfcWorkSchedule, sequencing, 4D linkage.
schemaThe schema API with every bundled release (IFC2X3, IFC4, IFC4X1, IFC4X2, IFC4X3).
schema-apiThe schema API without a bundled release; implied by each release feature.
spatialifc-spatial: IFC spatial containment and objectified relationship traversal: project, site, building, storey, element.
stepyesifc-step: STEP physical file (ISO 10303-21) codec for the IFC model.
structuralifc-structural: Structural analysis model: members, connections, actions, reactions, loads.
styleifc-style: Presentation: styles, colours, textures, layers, annotation.
systemsifc-systems: Distribution systems, ports, and connectivity between elements.
tabularifc-tabular: Structured IFC value containers indexed by position or time.
validateifc-validate: Schema conformance: WHERE rules, cardinality, GUID and reference integrity.

Depends on ​

Changes ​

Latest release, 0.9.0 (2026-09-29):

Added ​

  • tests/stationing_template.rs: a referent's Pset_Stationing authored by alignment and read by properties checks clean against the property-catalog IFC4X3 ADD2 corrected profile (#216).

Changed (breaking) ​

  • PanelPosition and Unreachable are #[non_exhaustive]: a match needs a wildcard arm.

  • Sector and ContainerElements are #[non_exhaustive]; they can no longer be built with a struct literal outside the crate.

  • Code previously behind schema is behind schema-api, which schema and every release feature imply; schema::for_version returns a Result (see ifc-schema).

Changed ​

  • The georeferencing and alignment conformance test gives its placeholder IfcPolyline two points (Points is LIST [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, and schema-api (the API with no table). schema keeps its meaning: the API with every release. A single-release build refuses the others through schema::for_version with schema::NotBundled. Domain features link the releases their crates read, so enabling one brings every release it reads.
  • compiled_features() reports schema-api and each release feature.
  • tests/intermediate_releases.rs: IFC4X1 and IFC4X2 files resolve to their own SchemaVersion, release id and bundled table (#33).

Full history: crates/openbim-ifc/CHANGELOG.md

Released under the AGPL-3.0-or-later licence. ISO and CEN standards material is not redistributed.