IFC4.3.x-development icon indicating copy to clipboard operation
IFC4.3.x-development copied to clipboard

Relationship of IfcGradientCurve.EndPoint, IfcSegmentedReferenceCurve.EndPoint with zero-length segment

Open aothms opened this issue 1 year ago • 4 comments

As noted by @RickBrice https://github.com/IfcOpenShell/IfcOpenShell/pull/3982/files#diff-be0a3e3e00f8d8a24a29c355bd022eb663c4310e27251191374b9aa6d05ab4b4R100

This seems redundant.

If the geometry definition is also present, then each of the zero-length segments shall have a IfcCurveSegment counterpart - of length zero.

https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/concepts/Product_Shape/Product_Geometric_Representation/Alignment_Geometry/Alignment_Geometry_-_Segments/content.html

Should we deprecate these EndPoint attributes, as:

  • not consistent with business logic layer, where we can only have zero-length segments
  • not consistent with compcurve for horizontal, which doesn't have this attribute

CC @evandroAlfieri @peterrdf

aothms avatar Nov 09 '23 08:11 aothms

future release?

evandroAlfieri avatar Nov 09 '23 09:11 evandroAlfieri

Maybe, still something to think about. My higher level view would be that such data would be better fitted in schema semantics, i.e. the attribute EndPoint compared to specific use of a curve segment, i.e. last curve segment with length 0. I am not sure what is the best option at the moment but I like having such an attribute better compared to 'rules' on use of existing properties, still I see also your point.

peterrdf avatar Nov 09 '23 09:11 peterrdf

any warning or "temporary" check we can introduce for files validation? (till the time where this will be fixed)

evandroAlfieri avatar Nov 09 '23 09:11 evandroAlfieri

This may not be a viable solution, but I'll share my thought. The zero-length segment requirement doesn't seem necessary in the business logical because that information is not for geometry, but rather checking business-logic rules like "is the design speed too fast for this curve?". The end point of the IfcAlignmentHorizontal/Vertical/Cant occurs at the end of the last item in the list of IfcRelNests.RelatedObjects. The zero-length segment is not needed to identify the end point.

Without the zero-length segment in the IfcCompositeCurve/GradientCurve/SegmentReferenceCurve.Segments the EndPoint becomes non-redundant and relevant. EndPoint could be promoted to IfcCompositeCurve and a rule defined that states EndPoint is required for IfcSegment.TransitionCode = .DISCONTINUOUS.

It may be too late to do something like this. There may be implications for backwards compatibility that I don't yet understand. It's just an idea.

For validation checking, my first thought is this:

  1. Verify zero length segments are provided as specified
  2. Confirm geometry of zero-length segment between business-logic and geometry are the same
  3. If EndPoint is present, confirm it is the same as the zero-length segment in the geometry.

RickBrice avatar Nov 09 '23 13:11 RickBrice