ifc-systems
Distribution systems, ports, and connectivity between elements.
| Status | Implemented |
| Latest release | 0.3.0 (2026-09-29) |
| Registries | crates.io ifc-systems |
| Via the facade | openbim-ifc feature systems |
| API documentation | rustdoc · docs.rs |
| Source | crates/ifc-systems/ |
Overview
ifc-systems -- Distribution systems: ports, connectivity and system grouping.
23 entities in IFC4. Turns a bag of pipes and ducts into a connected network that can be traced -- the basis of any MEP analysis.
Depends on
Changes
Latest release, 0.3.0 (2026-09-29):
Changed (breaking)
The authoring draft
ClassifiedSystemDraftis#[non_exhaustive]: build it withClassifiedSystemDraft::new()and the settersdescription,object_type,predefined_typeandlong_name. Fields stay public.The bulk readers no longer fall back to the IFC4 table.
systems,ports,zones,spatial_placements,role_inconsistencies,ConnectionGraph::buildandElementRole::ofreturnResult<_, SchemaResolutionError>and refuse a header that binds no verified release: noFILE_SCHEMA(an in-memory model now needs a header), several, IFC4X1/IFC4X2, or a release this build does not bundle.ElementRole::ofreturnsResult<Option<_>, _>.try_zonesis removed:zonesnow has the error channel it added.IFC4X3 is verified for every reader (#215), not only the zone readers:
schema_ofresolves it. Every fixed slot the readers use is pinned against the IFC2X3, IFC4 and IFC4X3 tables, andtests/ifc4x3.rsround-trips systems (includingIfcBuiltSystem), both port attachments, connections, flow roles and spatial placements through IFC4X3 STEP text.SystemAnomalyandRoleInconsistencyare#[non_exhaustive]: a match needs a wildcard arm.The read-side
Connection,Port,System,ZoneandSpatialPlacementare#[non_exhaustive], so a later release's attribute can be added without a breaking change; they can no longer be built with a struct literal outside the crate.
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). - 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.
Full history: crates/ifc-systems/CHANGELOG.md