Skip to content

Commit 729ff95

Browse files
committed
Merge release/0.6.8 into main
2 parents b363041 + c7d52eb commit 729ff95

File tree

147 files changed

+14838
-300
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

147 files changed

+14838
-300
lines changed

.github/ISSUE_TEMPLATE/ifc-rule-request.md

Lines changed: 0 additions & 20 deletions
This file was deleted.

.github/workflows/ci.yml

Lines changed: 0 additions & 48 deletions
This file was deleted.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
@implementer-agreement
2+
@ALB
3+
@version1
4+
@E00020
5+
Feature: ALB012 - Alignment vertical segment radius of curvature
6+
The rule verifies the 'RadiusOfCurvature' design parameter for vertical alignment segments.
7+
8+
Background:
9+
Given A model with Schema "IFC4.3"
10+
Given An IfcAlignmentVertical
11+
Given A relationship IfcRelNests from IfcAlignmentVertical to IfcAlignmentSegment and following that
12+
Given Its attribute DesignParameters
13+
Given Its entity type is 'IfcAlignmentVerticalSegment'
14+
15+
Scenario: Validating the absence of curvature radius for specific predefined types of vertical segment
16+
Given PredefinedType != 'CIRCULARARC' or 'PARABOLICARC'
17+
Then The value of attribute RadiusOfCurvature must be empty
18+
19+
Scenario: Validating the radius of curvature for parabolic segments
20+
Given PredefinedType = 'PARABOLICARC'
21+
Then The value of attribute RadiusOfCurvature must be equal to the expression: HorizontalLength / ( EndGradient - StartGradient )
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
@implementer-agreement
2+
@ALB
3+
@version1
4+
@E00020
5+
Feature: ALB030 - Alignment local placement
6+
The rule verifies that the ObjectPlacement attribute of every instance of IfcAlignment is of type IfcLocalPlacement.
7+
While the schema allows other placement types (Grid or Linear), this rule ensures that IfcLocalPlacement is used for all alignments.
8+
9+
Scenario: Every instance of IfcAlignment must have an ObjectPlacement of type IfcLocalPlacement
10+
Given A model with Schema "IFC4.3"
11+
Given An IfcAlignment
12+
Given Its attribute ObjectPlacement
13+
14+
Then Its Entity Type is 'IfcLocalPlacement'
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
@industry-practice
2+
@ALS
3+
@version1
4+
5+
Feature: ALS017 - Alignment vertical segment geometric continuity
6+
7+
The rule verifies that there is geometric continuity between segments in an IfcGradientCurve.
8+
The calculated end position and tangent vector of segment `n` is compared to the provided placement of segment `n + 1`.
9+
A warning is emitted if the calculated difference is greater than the applicable tolerance.
10+
The tolerance for positional and gradient continuity is taken from the precision of the applicable geometric context.
11+
12+
Background:
13+
14+
Given A model with Schema "IFC4.3"
15+
Given An IfcAlignment
16+
Given Its attribute Representation
17+
Given Its attribute Representations
18+
Given RepresentationType = 'Curve3D'
19+
Given All referenced instances
20+
Given Its Entity Type is 'IfcGradientCurve'
21+
Given Its attribute Segments
22+
Given Its Entity Type is 'IfcCurveSegment'
23+
Given The values grouped pairwise at depth 1
24+
25+
Scenario: Geometric continuity in position
26+
27+
Then Each segment must have geometric continuity in position
28+
29+
Scenario: Geometric continuity in vertical gradient
30+
31+
Then Each segment must have geometric continuity in vertical gradient

features/ANN000_Annotations.feature

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
@implementer-agreement
2+
@ANN
3+
@version1
4+
@E00020
5+
6+
Feature: ANN000 - Annotations
7+
The rule verifies the presence of IFC entities used to add annotations to elements and spaces, such as labels, notes, and dimensions. In IFC, annotations are also used to represent survey elements (i.e., points, lines, areas)
8+
https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/concepts/Product_Shape/Product_Geometric_Representation/Annotation_Geometry/content.html
9+
10+
Scenario: Check for activation
11+
12+
Given an IfcAnnotation
13+
Given its attribute Representation
14+
Given its attribute Representations
15+
Given RepresentationIdentifier is 'Annotation'
16+
17+
Then The IFC model contains information on the selected functional part
18+
19+
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
@implementer-agreement
2+
@CTX
3+
@version1
4+
@E00020
5+
6+
Feature: CTX000 - Presentation colours and textures
7+
The rule verifies the presence of IFC entities used to assign colour, texture and other presentation appearance information to objects.
8+
https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/concepts/Product_Shape/Product_Geometry_Colour/content.html
9+
10+
Scenario Outline: Check for activation - RepresentationItem attributes
11+
12+
Given an IfcRepresentationItem
13+
Given Its attribute <attribute>
14+
15+
Then The IFC model contains information on the selected functional part
16+
17+
Examples:
18+
| attribute |
19+
| StyledByItem |
20+
| HasColours |
21+
22+
23+
Scenario: Check for activation - Styled Materials
24+
25+
Given an IfcRoot
26+
Given its attribute HasAssociations
27+
Given all referenced instances
28+
Given its entity type is 'IfcMaterial'
29+
Given its attribute HasRepresentation
30+
Given its attribute Representations
31+
Given its attribute Items
32+
Given its entity type is 'IfcStyledItem'
33+
34+
Then The IFC model contains information on the selected functional part
35+
Lines changed: 15 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,37 @@
11
@informal-proposition
22
@GEM
3-
@version2
3+
@version3
44
@E00010
55
Feature: GEM004 - Constraints on representation identifiers
66
The rule verifies that shape representations adhere to the permissible values outlined in the CSV files found in the 'features/resources/{attribute}.csv' folder, as specified in the documentation.
77

8-
Scenario: Shape Representation Identifier must be valid - IFC4X3
8+
Scenario: Shape Representation Identifier must be valid
99

10-
Given A model with Schema "IFC4.3"
1110
Given An IfcProduct
1211
Given Its attribute Representation
1312
Given Its attribute Representations
1413
Given Its attribute RepresentationIdentifier
1514

16-
Then The values must be in 'valid_RepresentationIdentifier_IFC4.3.csv'
15+
Then The values must be in 'valid_ShapeRepresentationIdentifier.csv'
1716

18-
Scenario: Shape Representation Type must be valid - IFC4X3
1917

20-
Given A model with Schema "IFC4.3"
18+
Scenario: Shape Representation Type must be valid
19+
2120
Given An IfcProduct
2221
Given Its attribute Representation
2322
Given Its attribute Representations
23+
Given Its entity type is 'IfcShapeRepresentation'
2424
Given Its attribute RepresentationType
2525

26-
Then The values must be in 'valid_RepresentationType_IFC4.3.csv'
27-
28-
29-
Scenario: Shape Representation Identifier must be valid - IFC4
30-
31-
Given A model with Schema "IFC4"
32-
Given An IfcProduct
33-
Given Its attribute Representation
34-
Given Its attribute Representations
35-
Given Its attribute RepresentationIdentifier
26+
Then The values must be in 'valid_ShapeRepresentationType.csv'
3627

37-
Then The values must be in 'valid_RepresentationIdentifier_IFC4.csv'
38-
39-
Scenario: Shape Representation Type must be valid - IFC4
4028

41-
Given A model with Schema "IFC4"
42-
Given An IfcProduct
43-
Given Its attribute Representation
44-
Given Its attribute Representations
45-
Given Its attribute RepresentationType
46-
47-
Then The values must be in 'valid_RepresentationType_IFC4.csv'
48-
49-
Scenario: Shape Representation Type must be valid - IFC2X3
50-
Given A model with Schema "IFC2X3"
51-
Given An IfcProduct
52-
Given Its attribute Representation
53-
Given Its attribute Representations
54-
Given Its attribute RepresentationType
55-
56-
Then The values must be in 'valid_RepresentationType_IFC2X3.csv'
29+
Scenario: Topology Representation Type must be valid
5730

31+
Given An IfcProduct
32+
Given Its attribute Representation
33+
Given Its attribute Representations
34+
Given Its entity type is 'IfcTopologyRepresentation'
35+
Given Its attribute RepresentationType
36+
37+
Then The values must be in 'valid_TopologyRepresentationType.csv'

features/GEM051_Presence-of-geometric-context.feature

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,28 @@ The rule verifies that a geometric context is present in the model, that its att
88

99
Scenario Outline: Agreement on having at least one geometric representation context
1010

11-
Given A model with Schema "<Schema>"
11+
Given A model with Schema <Schema>
1212
Given An <Entity>
1313
Given Its attribute RepresentationContexts
1414

1515
Then Assert existence
1616
Then Its entity type is 'IfcGeometricRepresentationContext' including subtypes
1717

1818
Examples:
19-
| Schema | Entity |
20-
| IFC2X3 | IfcProject |
21-
| IFC4 | IfcContext |
22-
| IFC4.3 | IfcContext |
19+
| Schema | Entity |
20+
| "IFC2X3" | IfcProject |
21+
| "IFC4.3" or "IFC4" | IfcContext |
2322

2423

2524
Scenario Outline: Agreement on correct context types
2625

27-
Given A model with Schema "<Schema>"
26+
Given A model with Schema <Schema>
2827
Given An <Entity>
2928
Given Its attribute RepresentationContexts
3029

3130
Then ContextType = "Model" or "Plan" or "NotDefined"
3231

3332
Examples:
34-
| Schema | Entity |
35-
| IFC2X3 | IfcProject |
36-
| IFC4 | IfcContext |
37-
| IFC4.3 | IfcContext |
33+
| Schema | Entity |
34+
| "IFC2X3" | IfcProject |
35+
| "IFC4.3" or "IFC4" | IfcContext |

features/GEM052_Correct-geometric-subcontexts.feature

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,13 @@ Reference: https://github.com/buildingSMART/Sample-Test-Files/issues/137.
1414
Then HasSubContexts = not empty
1515

1616

17-
Scenario Outline: Constraints on context identifier
17+
Scenario: Constraints on context identifier
1818

19-
Given a model with Schema "<schema>"
19+
Given a model with Schema "IFC4.3" or "IFC4"
2020
Given An IfcGeometricRepresentationSubContext
2121
Given Its attribute ContextIdentifier
2222

23-
Then The values must be in '<source>'
24-
25-
Examples:
26-
| schema | source |
27-
| IFC4.3 | valid_RepresentationIdentifier_IFC4.3.csv |
28-
| IFC4 | valid_RepresentationIdentifier_IFC4.csv |
23+
Then The values must be in 'valid_ShapeRepresentationIdentifier.csv'
2924

3025

3126
Scenario: Context identifier must not be empty

features/IFC102_Absence-of-deprecated-entities.feature

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
@IFC
2-
@version3
2+
@version5
33
@E00030
44
@implementer-agreement
55
Feature: IFC102 - Absence of deprecated entities
@@ -215,13 +215,11 @@ IFC4: https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/
215215
| IfcGeographicElementType | "SOIL_BORING_POINT" |
216216
| IfcSpace | "INTERNAL" or "EXTERNAL" |
217217
| IfcSpaceType | "INTERNAL" or "EXTERNAL" |
218-
| IfcStructuralLoadGroup | "LOAD_COMBINATION" |
219218
| IfcWall | "POLYGONAL" or "STANDARD" |
220219
| IfcWallType | "POLYGONAL" or "STANDARD" |
221220

222221

223222
Scenario Outline: Check for deprecated enumerated values - IFC4
224-
# IfcStructuralLoadGroup: IfcLoadGroupTypeEnum
225223
# IfcWall: IfcWallTypeEnum
226224

227225
Given A model with Schema "IFC4"
@@ -231,7 +229,6 @@ IFC4: https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/
231229

232230
Examples:
233231
| Entity | Value |
234-
| IfcStructuralLoadGroup | "LOAD_COMBINATION" |
235232
| IfcWall | "POLYGONAL" or "STANDARD" or "ELEMENTEDWALL" |
236233
| IfcWallType | "POLYGONAL" or "STANDARD" or "ELEMENTEDWALL" |
237234

features/SPS007_Spatial-containment.feature

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
@implementer-agreement
22
@SPS
3-
@version2
3+
@version3
44
@E00040
55

66
Feature: SPS007 - Spatial Containment
@@ -20,7 +20,7 @@ The rule verifies that spatial containment via IfcRelContainedInSpatialStructure
2020
Scenario: Instances of IfcElement must be part of a spatial structure, with certain exceptions
2121

2222
Given an IfcElement
23-
Given Its Type is not 'IfcFeatureElementSubtraction' including subtypes
23+
Given Its Type is not 'IfcFeatureElement' including subtypes
2424
Given Decomposes = empty
2525

2626
Then a *required* relationship IfcRelContainedInSpatialStructure to IfcElement from IfcSpatialElement
@@ -33,11 +33,6 @@ The rule verifies that spatial containment via IfcRelContainedInSpatialStructure
3333
Then ContainedInStructure = empty
3434

3535

36-
Scenario: Instances of IfcFeatureElementSubtraction, including its subtypes, must not be contained within a spatial structure
37-
Given an IfcFeatureElementSubtraction
38-
Then ContainedInStructure = empty
39-
40-
4136
Scenario: All other IFC entities must not be contained within a spatial structure
4237
Given An IfcRoot
4338
Given Its Type is not 'IfcElement' including subtypes

0 commit comments

Comments
 (0)