ALS011 Alignment segment entity type consistency - v3

001 | @implementer-agreement
002 | @ALS
003 | @version3
004 |
005 |
006 | Feature: ALS011 - Alignment segment entity type consistency
007 |
008 |   The rule verifies that the same entity type is used for all segments
009 |   and that IfcCurveSegment is used with IfcSegmentedReferenceCurve and IfcGradientCurve
010 |   The rule is similar to GEM011, except that it requires the presence of an IfcAlignment.
011 |
012 |
013 | Background:
014 |   Given a model with Schema 'IFC4.3'
015 |   Given an .IfcAlignment.
016 |   Given its attribute .Representation.
017 |   Given its attribute .Representations.
018 |   Given its attribute .Items.
019 |
020 |
021 | Scenario Outline: Consistent entity types used - direct representation
022 |
023 |   Given [its entity type] ^is^ '<entity>' ^excluding subtypes^
024 |   Given its attribute .Segments.
025 |   Given its entity type
026 |
027 |   Then The values must be identical at depth 3
028 |
029 |   Examples:
030 |     | entity            |
031 |     | IfcCompositeCurve |
032 |     | IfcGradientCurve  |
033 |     | IfcSegmentedReferenceCurve |
034 |
035 |
036 |   Scenario Outline: Consistent entity types used - capture parent curve in case it is not a direct representation
037 |
038 |     Given [its entity type] ^is^ '<entity>'
039 |     Given its attribute .BaseCurve.
040 |     Given [its entity type] ^is^ '<entity_parent>' ^excluding subtypes^
041 |     Given its attribute .Segments.
042 |     Given its entity type
043 |
044 |     Then The values must be identical at depth 3
045 |
046 |     Examples:
047 |       | entity                      |  entity_parent |
048 |       | IfcGradientCurve            |  IfcCompositeCurve |
049 |       | IfcSegmentedReferenceCurve  |  IfcCompositeCurve |
050 |
051 |
052 | Scenario Outline: IfcCurveSegment used for IfcSegmentedReferenceCurve and IfcGradientCurve
053 |
054 |   Given [its entity type] ^is^ '<entity>'
055 |   Given its attribute .Segments.
056 |   Given its entity type
057 |
058 |   Then The value must be 'IfcCurveSegment'
059 |
060 |   Examples:
061 |     | entity            |
062 |     | IfcGradientCurve  |
063 |     | IfcSegmentedReferenceCurve |

Version history

Version

Tag

Date

Commit

Rule link

v1

v0.6.6

2024-06-21

1cd01e0f

view

v2

v0.7.7

2025-06-25

c895611b

view

v3

v0.8.3

2025-12-04

d7fcd850

view