Crate map
The workspace is 33 crates, versioned and released independently. Dependencies point down the tiers described in System design:
- L0, the record core.
ifc-modelowns the entity graph and theCodectrait, and knows no schema, codec or domain. - L1, schema and codecs.
ifc-schemaholds the bundled EXPRESS tables;ifc-stepandifc-xmlimplementCodec. Codecs never import domain semantics. - L2, views, validation, authoring and geometry. Each domain crate is a borrowed projection over the model, and sibling domains never depend on one another.
ifc-geometry,ifc-georefandifc-alignmentlower geometry into the neutral Axiolid model. - L3, the facade.
openbim-ifcre-exports the crates above behind cargo features, with a thin default. - L4, the bindings. JavaScript, Python and C wrap the facade through a shared host-independent core.
The map below is generated from each crate's manifest, so the dependency column is what cargo resolves, not what anyone remembers. Each crate's reference page has its overview, features and latest changes; the capability matrix says what each implements.
Facade
| Crate | Status | Depends on | Description |
|---|---|---|---|
openbim-ifc | Implemented | the core, domain and geometry crates, each behind a feature | Facade for the openBIM IFC crates: pick codecs and domains as features. |
Model, codecs, schema, authoring and validation
| Crate | Status | Depends on | Description |
|---|---|---|---|
ifc-author | Implemented | ifc-model, ifc-schema | Schema-checked IFC authoring: construct entities by attribute name with arity and type validation. |
ifc-model | Implemented | — | The IFC entity graph: storage and structural queries, free of domain semantics and serialization. |
ifc-schema | Implemented | — | IFC schema as data: entity table, supertype chain, attribute names. |
ifc-step | Implemented | ifc-model | STEP physical file (ISO 10303-21) codec for the IFC model. |
ifc-validate | Implemented | ifc-model, ifc-schema | Schema conformance: WHERE rules, cardinality, GUID and reference integrity. |
ifc-xml | Implemented | ifc-model, ifc-schema | ifcXML (ISO 10303-28) codec for the IFC model. |
Domain views
| Crate | Status | Depends on | Description |
|---|---|---|---|
ifc-approval | Implemented | ifc-model, ifc-schema | Bounded IFC4 approval resource semantics. |
ifc-classification | Implemented | ifc-model, ifc-schema | Classification systems, document references, libraries, external references. |
ifc-constraint | Implemented | ifc-model, ifc-schema | Bounded IFC4 metric, objective, and constraint relationships. |
ifc-control | Implemented | ifc-model, ifc-schema | Bounded IFC control semantics: permits, project orders, action requests, and performance history. |
ifc-cost | Implemented | ifc-model, ifc-schema | Cost semantics as a borrowed view over the IFC model. |
ifc-element-type | Implemented | ifc-model, ifc-schema | Element, resource, and process type definitions: the IfcTypeObject catalogue. |
ifc-material | Implemented | ifc-model, ifc-schema | Material definitions: layer sets, profile sets, constituents, usage. |
ifc-occurrence | Implemented | ifc-model, ifc-schema | Built element and distribution occurrence classes and their type pairing. |
ifc-properties | Implemented | ifc-model, ifc-schema | Property sets, quantities, and unit resolution. No geometry. |
ifc-resource | Implemented | ifc-model, ifc-schema | Construction resources: labour, equipment, material, crew, subcontract. |
ifc-schedule | Implemented | ifc-model, ifc-schema | IFC scheduling: IfcTask/IfcWorkSchedule, sequencing, 4D linkage. |
ifc-spatial | Implemented | ifc-model, ifc-schema | IFC spatial containment and objectified relationship traversal: project, site, building, storey, element. |
ifc-structural | Implemented | ifc-model, ifc-schema | Structural analysis model: members, connections, actions, reactions, loads. |
ifc-style | Implemented | ifc-model, ifc-schema | Presentation: styles, colours, textures, layers, annotation. |
ifc-systems | Implemented | ifc-model, ifc-schema | Distribution systems, ports, and connectivity between elements. |
ifc-tabular | Implemented | ifc-model, ifc-schema | Structured IFC value containers indexed by position or time. |
ifc-template-catalog | Implemented | ifc-schema | Versioned IFC PSD/QTO catalog definitions and correction overlays |
Geometry, georeferencing and alignment
| Crate | Status | Depends on | Description |
|---|---|---|---|
ifc-alignment | Implemented | ifc-model, ifc-schema | IFC4x3 linear positioning: alignments, referents, linear placement, spirals. |
ifc-geometry | Partial | ifc-alignment, ifc-model, ifc-schema | IFC semantic views lowered into the format-neutral geometry DAG. |
ifc-georef | Implemented | ifc-model, ifc-schema | Georeferencing: map conversion, coordinate reference systems, site placement. |
Language bindings
| Crate | Status | Depends on | Description |
|---|---|---|---|
openbim-ifc-binding-core | Implemented | openbim-ifc | Host-independent core shared by the openbim-ifc language bindings (WebAssembly, C ABI, Python). |
openbim-ifc-capi | Implemented | openbim-ifc-binding-core | Versioned, memory-safe C ABI for openbim-ifc: read, edit and write IFC STEP files from C and C++. |
openbim-ifc-dotnet | Implemented | — | The OpenBim.Ifc NuGet package: .NET bindings for openbim-ifc over its versioned C ABI. |
openbim-ifc-py | Implemented | openbim-ifc-binding-core | Python bindings for openbim-ifc: read, edit and write IFC STEP files from Python. |
openbim-ifc-wasm | Implemented | openbim-ifc-binding-core | WebAssembly bindings for openbim-ifc: read, edit and write IFC STEP files from JavaScript. |
Command-line tool
| Crate | Status | Depends on | Description |
|---|---|---|---|
openbim-ifc-cli | Partial | openbim-ifc | The openbim-ifc command: validate, convert, inspect, query and edit IFC files (STEP, ifcXML and ifcZIP), and exchange their values as CSV, TSV or XLSX tables, from a shell or CI. |
Not in this repository
- The generic ISO 10303-21 STEP and ISO 10303-11 EXPRESS machinery lives in
openbim-step, shared with the other standard families. - Geometry evaluation (meshing, booleans, sections) lives in Axiolid; see the Axiolid boundary.
- Other openBIM standards (IDS, BCF, bSDD, …) are separate repositories under openbimrs.