ifc-properties
Property sets, quantities, and unit resolution. No geometry.
| Status | Implemented |
| Latest release | 0.6.0 (2026-09-29) |
| Registries | crates.io ifc-properties |
| Via the facade | openbim-ifc feature properties |
| API documentation | rustdoc · docs.rs |
| Source | crates/ifc-properties/ |
Overview
ifc-properties -- Property sets, quantities and units -- the non-geometric payload most
consumers actually want.
references/ifc-spec/ ships the official property set definitions as XML: 317 for IFC2x3 and 420 for IFC4. That is a machine-readable catalogue, so standard Psets are data here rather than hand-written tables.
Depends on
Changes
Latest release, 0.6.0 (2026-09-29):
Changed (breaking)
Comparisonis#[non_exhaustive]: a match needs a wildcard arm.- The read results
ExactProperty,ExactPropertyEntry,ExactTableRow,Property,PropertySet,QuantitySet,ResolvedSetandPropertySetTemplateare#[non_exhaustive]; compare their fields instead of building one with a struct literal. - Every authoring draft is
#[non_exhaustive], so a struct literal no longer compiles outside the crate. Each gainsnew(required…)and one builder setter per other field, named after the field and taking the unwrapped value:TableValueDraft::new(name),DoorLiningDraft::new(),WindowLiningDraft::new(),ReinforcementBarDraft::new(total_cross_section_area, steel_grade),SectionReinforcementDraft::new(longitudinal_start_position, longitudinal_end_position, reinforcement_role, section_definition, cross_section_reinforcement_definitions),SiUnitDraft::new(unit_type, name),MonetaryUnitDraft::new(currency)andConversionBasedUnitDraft::new(unit_type, name, conversion_factor, dimensions). Fields stay public.
Changed
- Depends on
ifc-schemawith its default features named explicitly (every bundled release), now that the workspace dependency turns them off for the facade's per-release features (#112). - The unique-member-name rule of complex properties and quantities is labelled per verified release only; another release is refused with
UnsupportedSchemarather than given the IFC4 label. - A model whose header declares
IFC4X1orIFC4X2is refused with the existing unsupported-schema error.ifc-schemanow bundles both releases, but no layout here is verified against them, so they are never read as IFC4 or IFC4X3. - Exact value checks treat a type declaration form
ifc-schemaadds later as not matching; followsifc_schema::TypeKindbecoming#[non_exhaustive].
Full history: crates/ifc-properties/CHANGELOG.md