buildingSMART / ifc-gherkin-rules

MIT License
9 stars 18 forks source link

ALA003 - Maybe wrong with Cant #213

Closed michelangelo-acca closed 3 months ago

michelangelo-acca commented 3 months ago

In an attempt to update the file from https://github.com/buildingSMART/IFC4.x-IF/issues/151 to pass the latest bSI Validation Checks, we noticed it fails on the ALA003 rule claiming that since the Semantic part of the Cant is using LinearTransition, the Geometry should use Lines and not Clothoids as per in the file.

This may be incorrect, leaving the floor to @peterrdf for the technicalities and pinging @evandroAlfieri and @aothms as it is not possible to set assignees.

Also, attaching the current version of the file for testing.

ACCA_sleepers-linear-placement-cant-implicit.zip

civilx64 commented 3 months ago

The validation service is correct. See discussion at IFC4.x-IF#145

peterrdf commented 3 months ago

I am quite sure this is a mistake in the validatiohn service, any possibility for a call?

RickBrice commented 3 months ago

@civilx64 @evandroAlfieri @michelangelo-acca

I tend to agree with @peterrdf on this one. See https://github.com/buildingSMART/IFC4.x-IF/issues/145#issuecomment-2168385958

I question the correctness of the linear-placement-of-signal.ifc example. All of the IfcClothoid parent curves for the cant have positive values for the clothoid constant which means the cant is increasing from a lower value to a higher value. This is correct going start-to-end into a curve, cant is increasing from no cant to full cant, cant remains constant (from IfcLine parent curve), and then should be decreasing from the full cant to no cant leaving the curve. The clothoid constant should be negative leaving the curve. Compare this to the ACCA example where the clothoid constant is positive going into the curve and negative at the end of the curve.

Another thing that is perplexing about the linear-placement-of-signal.ifc example is the business logic has both the left and right rails changing in elevation while the geometry defined in Figure 8.9.3.62.A of IfcSegmentedReferenceCurve implies only one rail changes in elevation. I could be completely wrong, but I thought the parent curve defined the change in elevation of the segmented reference curve relative to the gradient curve (the 1/2 Cant value) AND the inclination of the line connecting the railheads (defined by the Axis vector which is perpendicular to that line). If this is accurate, then the business logic seems to be incorrect.

civilx64 commented 3 months ago

After some helpful discussion in IFC4.x-IF/#145 I am coming around to the majority view here and anticipate a revision to ALA003 in the Validation Service.