Skip to main content

ifc_systems/
lib.rs

1//! `ifc-systems` -- Distribution systems: ports, connectivity and system grouping.
2//!
3//!
4//! 23 entities in IFC4. Turns a bag of pipes and ducts into a connected network
5//! that can be traced -- the basis of any MEP analysis.
6//!
7//! # Module map
8//!
9//! | Module | Role |
10//! |---|---|
11//! | `system` | `IfcSystem`, `IfcDistributionSystem` and grouping |
12//! | `port` | `IfcDistributionPort` and port assignment to elements |
13//! | `connectivity` | `IfcRelConnectsPorts` and network traversal |
14//! | `flow` | Flow direction and segment/fitting/terminal roles |
15//! | `error` | Why a system query failed |
16//!
17//! # Status
18//!
19//! Implemented: systems with subtype-aware discovery and membership, ports
20//! and both element-attachment forms, the undirected connection graph with
21//! cycle-safe traversal, flow roles and direction, and zones. `assignment`
22//! (services-building relationships) is a reserved scaffold.
23
24pub mod authoring;
25mod connectivity;
26mod error;
27mod flow;
28mod port;
29mod release;
30mod system;
31
32pub use authoring::{
33    assign_to_group, assign_to_group_with_owner_history, connect_port_to_element,
34    connect_port_to_element_with_owner_history, connect_ports, connect_ports_with_owner_history,
35    contain_in_spatial_structure, contain_in_spatial_structure_with_owner_history,
36    create_classified_system, create_classified_system_with_owner_history, create_group,
37    create_group_with_owner_history, create_port, create_port_with_owner_history, create_system,
38    create_system_with_owner_history, nest_ports, nest_ports_with_owner_history,
39    reference_in_spatial_structure, reference_in_spatial_structure_with_owner_history,
40    ClassifiedSystemDraft, SystemAuthoringError, SystemAuthoringResult, SystemKind,
41};
42pub use connectivity::{
43    Connection, ConnectionGraph, Direction, FlowNetwork, FlowQuery, NetworkGraph,
44};
45pub use error::{NotInSchema, SchemaGap, SchemaResolutionError, SystemAnomaly};
46pub use flow::{role_inconsistencies, ElementRole, FlowDirection, RoleInconsistency};
47/// The IFC release a read binds to (re-exported from `ifc-schema`).
48pub use ifc_schema::SchemaVersion;
49pub use port::{ports, Attachment, Port};
50pub use release::schema_of;
51pub use system::{systems, System};
52pub use zone::{long_name_of, spatial_placements, try_zones, zones, SpatialPlacement, Zone};
53
54mod assignment;
55pub(crate) mod zone;