IFC4.3.x-development
IFC4.3.x-development copied to clipboard
Intended use of zero-length alignment segments
In CT 4.1.4.4.1.1, 4.1.4.4.1.2, 4.1.7.1.1.1, 4.1.7.1.1.2, 4.1.7.1.1.3, and 4.1.7.1.1.4 it says
1. A zero-length segment shall be added, at the end of the list of segments for [IfcAlignmentSegment](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcAlignmentSegment.htm).DesignParameters.
2. If the geometry definition is also present, then each of the zero-length segments shall have a [IfcCurveSegment](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcCurveSegment.htm) counterpart - of length zero.
We can add these segments to models. We can test for their existence in models. What are we supposed to do with them?
How are these zero length segments to be defined? The IfcCurveSegment.Transition, .Placement, .SegmentStart, and .ParentCurve are all required attributes of IfcCurveSegment but they are meaningless in the context of a zero length segment.
In my perception Placement and SegmentStart are not meaningless. Actually the reason for all this is to have a well defined start point and direction (and maybe even curvature what would make ParentCurve also important). Of course this is implicitely known as we know the transition curve of the previous segment, however this very often contains small deviations to the actual defined end point in the source application.
Actually in all example files based on real data processed till now we find measurable deviations between starting point of a segment and calculated end point of the previous segment, except for the trivial cases like IfcLine for ParentCurve. this is actually a 'fix' for an issue that already existed in IFC4x1.
Thanks - that makes sense. For each segment, except for the last, the start point and tangent of the next segment can be used to correct inaccuracies in the segment's calculated geometry. The zero length segment fills the role of "next segment" for the last segment.
exact