buildingSMART / IFC4.3.x-development

Repository to collect updates to the IFC4.3 Specification
Other
161 stars 83 forks source link

Proposed documentation change and rules for IfcOffsetCurveByDistances #733

Open RickBrice opened 10 months ago

RickBrice commented 10 months ago

In 5.4.3.1 IfcOffsetCurveByDistances is described as IfcOffsetCurveByDistances as a 2D or 3D curve defined relative to an IfcGradientCurve or another IfcOffsetCurveByDistances.

IfcGradientCurve is 3D so 2D doesn't make sense. Suggest the following:

IfcOffsetCurveByDistances as a 2D or 3D curve defined relative to an IfcCompositeCurve or IfcGradientCurve, respectively, or another IfcOffsetCurveByDistances.

Proposed rules:

8.9.3.42 IfcOffsetCurveByDistances

IfcOffsetCurveByDistance.BasisCurve must be IfcCompositeCurve or IfcGradientCurve.

IfcOffsetCurveByDistance.BasisCurve and all IfcOffsetCurveByDistance.OffsetValues.BasisCurve must be the same curve.

peterrdf commented 10 months ago

Agree, however I would even say IfcCompositeCurve, IfcGradientCurve or IfcSegmentedReferenceCurve. So in short IfcCompositeCurve and all entities inheriting from it.

RickBrice commented 10 months ago

Additional clarification is needed for IfcOffsetCurveByDistance. The description of the OffsetValues attribute is:

List of sequential points described relative to the basis curve. If the offsets do not span the full extent of the basis curve (e.g. if the list contains only one item), then the lateral and vertical offsets implicitly continue with the same value towards the head and tail of the basis curve.

Item 1

There are clear requirements when the size of OffsetValues is equal to 1. What is to be done in the case when there are more than one OffsetValues and the first offset value is after the start of the BasisCurve and similarly, when the last offset value is before the end of the BasisCurve?

Does the first OffsetValue implicitly continue with the same value towards the head of the basis curve? Does the last OffsetValue implicitly continue with the same value towards the tail of the basis curve? Is the offset curve constrained by the first and last offset value thereby resulting in a shorter curve than the basis curve?

Item 2

The description of OffsetValues says that the lateral and vertical offsets are implicitly continued along the curve. That creates uncertainty about the longitudinal offset.

Is the IfcPointByDistanceExpression.OffsetLongitudinal value ignored altogether for offset curves? Is it only ignored for the special case of one OffsetValue provided?

Should there be a rule that says IfcPointByDistanceExpress.OffsetLongitudinal is not used in the context of IfcOffsetCurveByDistance.

Item 3

What happens if IfcPointByDistanceExpression.DistanceAlong is a negative value? This would indicate offsets occur before the start of the BasisCurve.

What happens if IfcPointByDistanceExpression.DistanceAlong is more than the length of the BasisCurve? This would indicate offsets occur after the end of the BasisCurve.

Should there be a rule that says IfcPointByDistanceExpression.Distance along must be a non-negative length measure not to exceed the length of the BasisCurve?

aothms commented 10 months ago

Great points.

I would say offset values implicitly extend over the full domain of the curve also in the case of n>1. So we generalize the case of n=1. Hereby explicitly stating whether that value is clamped or extrapolated (don't know which makes the most sense).

Is the longitudinal offset the curve tangent direction vector or is this an offset along the curve. I find that not completely clear. In both cases it needs to be understood what is the domain of the resulting curve. I would say it is easiest to disallow longitudinal offsets for now.

For out of bounds values we need to specify whether they are forbidden, ignored or used for interpolation. No strong preference as long as a clear decision is formulated.

Sent from a mobile device, excuse my brevity. Kind regards, Thomas

Op di 21 nov. 2023 00:26 schreef Richard Brice @.***>:

Additional clarification is needed for IfcOffsetCurveByDistance. The description of the OffsetValues attribute is:

List of sequential points described relative to the basis curve. If the offsets do not span the full extent of the basis curve (e.g. if the list contains only one item), then the lateral and vertical offsets implicitly continue with the same value towards the head and tail of the basis curve.

Item 1

There are clear requirements when the size of OffsetValues is equal to 1. What is to be done in the case when there are more than one OffsetValues and the first offset value is after the start of the BasisCurve and similarly, when the last offset value is before the end of the BasisCurve?

Does the first OffsetValue implicitly continue with the same value towards the head of the basis curve? Does the last OffsetValue implicitly continue with the same value towards the tail of the basis curve? Is the offset curve constrained by the first and last offset value thereby resulting in a shorter curve than the basis curve? Item 2

The description of OffsetValues says that the lateral and vertical offsets are implicitly continued along the curve. That creates uncertainty about the longitudinal offset.

Is the IfcPointByDistanceExpression.OffsetLongitudinal value ignored altogether for offset curves? Is it only ignored for the special case of one OffsetValue provided?

Should there be a rule that says IfcPointByDistanceExpress.OffsetLongitudinal is not used in the context of IfcOffsetCurveByDistance. Item 3

What happens if IfcPointByDistanceExpression.DistanceAlong is a negative value? This would indicate offsets occur before the start of the BasisCurve.

What happens if IfcPointByDistanceExpression.DistanceAlong is more than the length of the BasisCurve? This would indicate offsets occur after the end of the BasisCurve.

Should there be a rule that says IfcPointByDistanceExpression.Distance along must be a non-negative length measure not to exceed the length of the BasisCurve?

— Reply to this email directly, view it on GitHub https://github.com/buildingSMART/IFC4.3.x-development/issues/733#issuecomment-1819966377, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAILWV25T7KO4F4S6QOWN7LYFPRMBAVCNFSM6AAAAAA7PERAQ6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMJZHE3DMMZXG4 . You are receiving this because you are subscribed to this thread.Message ID: @.***>

RickBrice commented 10 months ago

As I think more deeply about this, there is a case for the offset curve to be a subset of the basis curve in the case of n>1.

Examples of things that are offset from an alignment and don't run the full length are safety railings, bridge deck edges, bridge beams, sidewalks... and probably many more things. Given that an alignment can be very long and can span over multiple sites, the geometry might be challenging if all offset curves cover the full domain of the basis curve.

Locating things with respect to the offset curve could be overly difficult as well. Consider modeling a safety railing that followed a curve which is offset and parallel to a curved alignment and starts 10 m after the start of the alignment. To place the safety railing relative to the offset curve, I would need to compute the distance along the offset curve to the start of the safety railing, which would be different than 10 m because of the curves. This isn't very convenient. If the offset curve where a subset of the base curve, the placement relative to the offset curve could start at 0.