Skip to content

ifc-alignment ​

IFC4x3 linear positioning: alignments, referents, linear placement, spirals.

StatusPartial
Latest release0.4.0 (2026-09-29)
Registriescrates.io ifc-alignment
Via the facadeopenbim-ifc feature alignment
API documentationrustdoc · docs.rs
Sourcecrates/ifc-alignment/

Overview ​

ifc-alignment -- Linear referencing and alignment -- the IFC4x3 civil layer.

IFC4x3 adds 14 alignment entities plus spiral curve types (IfcClothoid, IfcCosineSpiral). Isolated in its own crate because building-only consumers should never compile spiral curve laws.

Depends on ​

Changes ​

Latest release, 0.4.0 (2026-09-29):

Fixed ​

  • read_vertical_segment, read_cant_segment and CantLayout::resolve (RailHeadDistance) read a typed parameter such as IFCLENGTHMEASURE(1.) exactly like the bare number, as read_horizontal_segment already did; they refused it as the wrong kind (#140).

Changed (breaking) ​

  • The authoring drafts HorizontalSegmentDraft, VerticalSegmentDraft and CantSegmentDraft are #[non_exhaustive]: build them with HorizontalSegmentDraft::new(start_point, start_direction, start_radius, end_radius, segment_length, predefined_type), VerticalSegmentDraft::new(start_dist_along, horizontal_length, start_height, start_gradient, end_gradient, predefined_type) or CantSegmentDraft::new(start_dist_along, horizontal_length, start_cant_left, start_cant_right, predefined_type) and the setters gravity_center_line_height, radius_of_curvature, end_cant_left and end_cant_right. Fields stay public.
  • The read-side HorizontalSegment, CantSegment, CantLayout, CantAtStation, LinearPlacement, StationEquation, LoweredAlignmentCurve, PartialHorizontalLayout and RefusedSegment are #[non_exhaustive]; they can no longer be built with a struct literal outside the crate.

Changed ​

  • Depends on ifc-schema with its default features named explicitly (every bundled release), now that the workspace dependency turns them off for the facade's per-release features (#112).
  • Pinned by test: AlignmentView::for_model refuses IFC4X1 and IFC4X2 (their alignment model differs from IFC4X3).

Full history: crates/ifc-alignment/CHANGELOG.md

Released under the AGPL-3.0-or-later licence. ISO and CEN standards material is not redistributed.