ifc-structural
Structural analysis model: members, connections, actions, reactions, loads.
| Status | Implemented |
| Latest release | 0.3.0 (2026-09-29) |
| Registries | crates.io ifc-structural |
| Via the facade | openbim-ifc feature structural |
| API documentation | rustdoc · docs.rs |
| Source | crates/ifc-structural/ |
Overview
ifc-structural -- bounded structural-analysis semantics.
This crate exposes schema-resolved borrowed projections for analysis models, load/result groups, idealized members and connections, applied actions, static load values, surface reinforcement areas, and their relationship graph across IFC2X3, IFC4 and IFC4X3. Selected analysis models, loads, members, connections, actions, and member/activity relationships can be staged through ifc_model::Transaction.
It does not solve structures, generate FEM meshes, evaluate geometry, or claim computed reaction/result authoring.
Depends on
Changes
Latest release, 0.3.0 (2026-09-29):
Changed (breaking)
MemberConnectionandActivityAssignmentare#[non_exhaustive].- Every public draft is
#[non_exhaustive], so struct literals no longer compile outside the crate. Each gains a constructor taking its required fields and one builder setter per other field, named after the field and taking the unwrapped value (.name("Frame")setsSome;Stringfields takeimpl Into<String>):AnalysisModelDraft::new(global_id, predefined_type)StructuralRootDraft::new(global_id)RelationshipRootDraft::new(global_id)MemberDraft::new(root, kind),ConnectionDraft::new(root, kind)ActionDraft::new(root, applied_load, coordinate_system, kind)ReactionDraft::new(root, applied_load, coordinate_system, kind)LoadGroupDraft::new(global_id, action_type, action_source, kind)ResultGroupDraft::new(global_id, theory_type, is_linear)MemberConnectionDraft::new(root, member, connection)ActivityAssignmentDraft::new(root, relating_element, activity)BoundaryConditionDraft::new()
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. - Enumeration checks treat a type declaration form
ifc-schemaadds later as not matching; followsifc_schema::TypeKindbecoming#[non_exhaustive].
Full history: crates/ifc-structural/CHANGELOG.md