Skip to main content

Crate ifc_alignment

Crate ifc_alignment 

Source
Expand description

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.

§Module map

ModuleRole
horizontalHorizontal segments: line, arc, spiral transitions
verticalVertical segments: grades and parabolic curves
cantSuperelevation (IfcAlignmentCant) for rail
referentIfcReferent stationing and chainage
viewThe IFC4X3 profile pin and the IfcAlignment hierarchy
placementIfcLinearPlacement and distance expressions
errorWhy an alignment operation failed

Horizontal lines, circular arcs and transition spirals lower to exact neutral curve graphs; a spiral is stored as its curvature law (Curve2::Intrinsic), never integrated here. A whole layout is also one intrinsic plan curve with a piecewise curvature law, which is what an elevated 3D centreline carries. Families without an exact law are typed refusals, tracked in GitHub issues.

Re-exports§

pub use authoring::alignment;
pub use authoring::alignment_segment;
pub use authoring::axis2_placement_linear;
pub use authoring::cant_layout;
pub use authoring::cant_segment;
pub use authoring::cartesian_point;
pub use authoring::horizontal_layout;
pub use authoring::horizontal_segment;
pub use authoring::linear_element;
pub use authoring::linear_placement;
pub use authoring::linear_positioning_element;
pub use authoring::point_by_distance;
pub use authoring::referent;
pub use authoring::stationing;
pub use authoring::vertical_layout;
pub use authoring::vertical_segment;
pub use authoring::CantSegmentDraft;
pub use authoring::HorizontalSegmentDraft;
pub use authoring::VerticalSegmentDraft;

Modules§

authoring
Author IFC4X3 alignment entities from plain numbers.

Structs§

AlignmentHierarchy
What one IfcAlignment is made of, as stated by its relationships.
AlignmentUnits
Project unit conversion applied exactly once while reading a segment.
AlignmentView
A model whose declared schema has been pinned to IFC4X3 ADD2.
CantAtStation
Cant applied to each rail at one normalized position along a segment.
CantFrame
The cant cross-section at one station.
CantLayout
One resolved, ordered, continuity-checked cant profile.
CantSegment
Borrowed projection of one nested segment of an IfcAlignmentCant layout (IfcAlignmentCantSegment), with lengths already reduced to metres.
HorizontalPlan
A horizontal layout lowered to one exact plan curve.
HorizontalSeam
One seam between consecutive horizontal segments.
HorizontalSegment
Resolved IFC4x3 IfcAlignmentHorizontalSegment parameters in SI units.
LinearPlacement
Resolved IfcLinearPlacement.
LoweredAlignmentCurve
Exact neutral curve graph for one or more IFC alignment segments.
PartialHorizontalLayout
A horizontal layout lowered as far as exactness allows.
PointByDistance
Resolved IfcPointByDistanceExpression.
RefusedSegment
One segment this crate declined to lower, and why.
SeamTolerance
The tolerance a vertical profile’s seams are checked against.
StationEquation
One IfcReferent carrying Pset_Stationing, resolved to its distance along the alignment and station value.
Stationing
The stationing of one IfcAlignment: its station equations in distance order, and lookups across them.
VerticalLayout
One resolved, ordered vertical profile.
VerticalSeam
One seam between two consecutive vertical segments of positive length.
VerticalSegment
Resolved IFC4x3 IfcAlignmentVerticalSegment parameters in SI units.

Enums§

AlignmentError
Why an IFC alignment entity could not be read or lowered.
CantSegmentType
IfcAlignmentCantSegmentTypeEnum member: the cant transition law applied over one segment’s distance-along span.
CurveMeasure
DistanceAlong may be an absolute length or a normalized parameter; the two are never comparable without knowing which was authored.
HorizontalSegmentType
IFC4x3 horizontal segment kind, preserving the declaration rather than guessing.
ProfileSeam
Which quantity of a vertical profile breaks at a seam.
SeamCheck
How the position at a seam between two horizontal segments was checked.
VerticalSeamKind
How the grade continues across one vertical seam.
VerticalSegmentType
IfcAlignmentVerticalSegmentTypeEnum member: the vertical curve law applied over one segment’s distance-along span.

Constants§

STATION_TOLERANCE
How far, in metres, a referent’s stated station may differ from the value carried from the previous referent before the two are treated as contradictory.

Functions§

cant_at
Evaluate a cant segment’s exact D(ξ) for both rails.
elevation_law
The exact elevation law for one IfcAlignmentVerticalSegment.
gradient_curve3
The exact 3D centreline of entity, an IfcAlignment.
lower_gradient_curve
Lower an IfcAlignment to an exact 3D centreline.
lower_horizontal_layout
Lower an IfcAlignmentHorizontal’s nested segment chain to one exact neutral curve, refusing (rather than approximating) any segment that lower_horizontal_segment cannot lower exactly.
lower_horizontal_layout_partial
Lower a horizontal layout as far as exactness allows, reporting refusals.
lower_horizontal_plan
Lower an IfcAlignmentHorizontal to one exact plan curve.
lower_horizontal_segment
Lower one IfcAlignmentHorizontalSegment to an exact neutral curve.
lower_segmented_reference_curve
Lower an IfcAlignment with cant to its exact cant-carrying centreline.
lower_vertical_segment
Lower one IfcAlignmentVerticalSegment to an exact neutral curve in the (distance along, height) plane.
profile_law
The whole vertical profile as one law over distance along the plan.
profile_law_within
profile_law with an explicit seam tolerance.
read_cant_segment
Read one IfcAlignmentCantSegment referenced by id.
read_horizontal_segment
Read one IfcAlignmentHorizontalSegment referenced by id.
read_vertical_segment
Read one IfcAlignmentVerticalSegment referenced by id.
resolve_linear_placement
Resolve one IfcLinearPlacement referenced by id to its distance-along point on a basis curve.
resolve_point_by_distance
Read one IfcPointByDistanceExpression referenced by id.
station_equationsDeprecated
Resolve every IfcReferent in model that carries a Pset_Stationing property set into its distance-along/station mapping.
vertical_profile_law
The exact profile of an IfcAlignmentVertical, checked at the seam tolerance the model declares.

Type Aliases§

AlignmentResult
Result of an alignment read, carrying AlignmentError on failure.