Skip to content

Commit

Permalink
Merge release/0.6.8 into main
Browse files Browse the repository at this point in the history
  • Loading branch information
Ghesselink committed Nov 19, 2024
2 parents b363041 + c7d52eb commit 729ff95
Show file tree
Hide file tree
Showing 147 changed files with 14,838 additions and 300 deletions.
20 changes: 0 additions & 20 deletions .github/ISSUE_TEMPLATE/ifc-rule-request.md

This file was deleted.

48 changes: 0 additions & 48 deletions .github/workflows/ci.yml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
@implementer-agreement
@ALB
@version1
@E00020
Feature: ALB012 - Alignment vertical segment radius of curvature
The rule verifies the 'RadiusOfCurvature' design parameter for vertical alignment segments.

Background:
Given A model with Schema "IFC4.3"
Given An IfcAlignmentVertical
Given A relationship IfcRelNests from IfcAlignmentVertical to IfcAlignmentSegment and following that
Given Its attribute DesignParameters
Given Its entity type is 'IfcAlignmentVerticalSegment'

Scenario: Validating the absence of curvature radius for specific predefined types of vertical segment
Given PredefinedType != 'CIRCULARARC' or 'PARABOLICARC'
Then The value of attribute RadiusOfCurvature must be empty

Scenario: Validating the radius of curvature for parabolic segments
Given PredefinedType = 'PARABOLICARC'
Then The value of attribute RadiusOfCurvature must be equal to the expression: HorizontalLength / ( EndGradient - StartGradient )
14 changes: 14 additions & 0 deletions features/ALB030_Alignment-local-placement.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
@implementer-agreement
@ALB
@version1
@E00020
Feature: ALB030 - Alignment local placement
The rule verifies that the ObjectPlacement attribute of every instance of IfcAlignment is of type IfcLocalPlacement.
While the schema allows other placement types (Grid or Linear), this rule ensures that IfcLocalPlacement is used for all alignments.

Scenario: Every instance of IfcAlignment must have an ObjectPlacement of type IfcLocalPlacement
Given A model with Schema "IFC4.3"
Given An IfcAlignment
Given Its attribute ObjectPlacement

Then Its Entity Type is 'IfcLocalPlacement'
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
@industry-practice
@ALS
@version1

Feature: ALS017 - Alignment vertical segment geometric continuity

The rule verifies that there is geometric continuity between segments in an IfcGradientCurve.
The calculated end position and tangent vector of segment `n` is compared to the provided placement of segment `n + 1`.
A warning is emitted if the calculated difference is greater than the applicable tolerance.
The tolerance for positional and gradient continuity is taken from the precision of the applicable geometric context.

Background:

Given A model with Schema "IFC4.3"
Given An IfcAlignment
Given Its attribute Representation
Given Its attribute Representations
Given RepresentationType = 'Curve3D'
Given All referenced instances
Given Its Entity Type is 'IfcGradientCurve'
Given Its attribute Segments
Given Its Entity Type is 'IfcCurveSegment'
Given The values grouped pairwise at depth 1

Scenario: Geometric continuity in position

Then Each segment must have geometric continuity in position

Scenario: Geometric continuity in vertical gradient

Then Each segment must have geometric continuity in vertical gradient
19 changes: 19 additions & 0 deletions features/ANN000_Annotations.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
@implementer-agreement
@ANN
@version1
@E00020

Feature: ANN000 - Annotations
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)
https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/concepts/Product_Shape/Product_Geometric_Representation/Annotation_Geometry/content.html

Scenario: Check for activation

Given an IfcAnnotation
Given its attribute Representation
Given its attribute Representations
Given RepresentationIdentifier is 'Annotation'

Then The IFC model contains information on the selected functional part


35 changes: 35 additions & 0 deletions features/CTX000_Presentation-colours-and-textures.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
@implementer-agreement
@CTX
@version1
@E00020

Feature: CTX000 - Presentation colours and textures
The rule verifies the presence of IFC entities used to assign colour, texture and other presentation appearance information to objects.
https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/concepts/Product_Shape/Product_Geometry_Colour/content.html

Scenario Outline: Check for activation - RepresentationItem attributes

Given an IfcRepresentationItem
Given Its attribute <attribute>

Then The IFC model contains information on the selected functional part

Examples:
| attribute |
| StyledByItem |
| HasColours |


Scenario: Check for activation - Styled Materials

Given an IfcRoot
Given its attribute HasAssociations
Given all referenced instances
Given its entity type is 'IfcMaterial'
Given its attribute HasRepresentation
Given its attribute Representations
Given its attribute Items
Given its entity type is 'IfcStyledItem'

Then The IFC model contains information on the selected functional part

50 changes: 15 additions & 35 deletions features/GEM004_Constraints-on-representation-identifiers.feature
Original file line number Diff line number Diff line change
@@ -1,57 +1,37 @@
@informal-proposition
@GEM
@version2
@version3
@E00010
Feature: GEM004 - Constraints on representation identifiers
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.

Scenario: Shape Representation Identifier must be valid - IFC4X3
Scenario: Shape Representation Identifier must be valid

Given A model with Schema "IFC4.3"
Given An IfcProduct
Given Its attribute Representation
Given Its attribute Representations
Given Its attribute RepresentationIdentifier

Then The values must be in 'valid_RepresentationIdentifier_IFC4.3.csv'
Then The values must be in 'valid_ShapeRepresentationIdentifier.csv'

Scenario: Shape Representation Type must be valid - IFC4X3

Given A model with Schema "IFC4.3"
Scenario: Shape Representation Type must be valid

Given An IfcProduct
Given Its attribute Representation
Given Its attribute Representations
Given Its entity type is 'IfcShapeRepresentation'
Given Its attribute RepresentationType

Then The values must be in 'valid_RepresentationType_IFC4.3.csv'


Scenario: Shape Representation Identifier must be valid - IFC4

Given A model with Schema "IFC4"
Given An IfcProduct
Given Its attribute Representation
Given Its attribute Representations
Given Its attribute RepresentationIdentifier
Then The values must be in 'valid_ShapeRepresentationType.csv'

Then The values must be in 'valid_RepresentationIdentifier_IFC4.csv'

Scenario: Shape Representation Type must be valid - IFC4

Given A model with Schema "IFC4"
Given An IfcProduct
Given Its attribute Representation
Given Its attribute Representations
Given Its attribute RepresentationType

Then The values must be in 'valid_RepresentationType_IFC4.csv'

Scenario: Shape Representation Type must be valid - IFC2X3
Given A model with Schema "IFC2X3"
Given An IfcProduct
Given Its attribute Representation
Given Its attribute Representations
Given Its attribute RepresentationType

Then The values must be in 'valid_RepresentationType_IFC2X3.csv'
Scenario: Topology Representation Type must be valid

Given An IfcProduct
Given Its attribute Representation
Given Its attribute Representations
Given Its entity type is 'IfcTopologyRepresentation'
Given Its attribute RepresentationType

Then The values must be in 'valid_TopologyRepresentationType.csv'
18 changes: 8 additions & 10 deletions features/GEM051_Presence-of-geometric-context.feature
Original file line number Diff line number Diff line change
Expand Up @@ -8,30 +8,28 @@ The rule verifies that a geometric context is present in the model, that its att

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

Given A model with Schema "<Schema>"
Given A model with Schema <Schema>
Given An <Entity>
Given Its attribute RepresentationContexts

Then Assert existence
Then Its entity type is 'IfcGeometricRepresentationContext' including subtypes

Examples:
| Schema | Entity |
| IFC2X3 | IfcProject |
| IFC4 | IfcContext |
| IFC4.3 | IfcContext |
| Schema | Entity |
| "IFC2X3" | IfcProject |
| "IFC4.3" or "IFC4" | IfcContext |


Scenario Outline: Agreement on correct context types

Given A model with Schema "<Schema>"
Given A model with Schema <Schema>
Given An <Entity>
Given Its attribute RepresentationContexts

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

Examples:
| Schema | Entity |
| IFC2X3 | IfcProject |
| IFC4 | IfcContext |
| IFC4.3 | IfcContext |
| Schema | Entity |
| "IFC2X3" | IfcProject |
| "IFC4.3" or "IFC4" | IfcContext |
11 changes: 3 additions & 8 deletions features/GEM052_Correct-geometric-subcontexts.feature
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,13 @@ Reference: https://github.com/buildingSMART/Sample-Test-Files/issues/137.
Then HasSubContexts = not empty


Scenario Outline: Constraints on context identifier
Scenario: Constraints on context identifier

Given a model with Schema "<schema>"
Given a model with Schema "IFC4.3" or "IFC4"
Given An IfcGeometricRepresentationSubContext
Given Its attribute ContextIdentifier

Then The values must be in '<source>'

Examples:
| schema | source |
| IFC4.3 | valid_RepresentationIdentifier_IFC4.3.csv |
| IFC4 | valid_RepresentationIdentifier_IFC4.csv |
Then The values must be in 'valid_ShapeRepresentationIdentifier.csv'


Scenario: Context identifier must not be empty
Expand Down
5 changes: 1 addition & 4 deletions features/IFC102_Absence-of-deprecated-entities.feature
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
@IFC
@version3
@version5
@E00030
@implementer-agreement
Feature: IFC102 - Absence of deprecated entities
Expand Down Expand Up @@ -215,13 +215,11 @@ IFC4: https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/
| IfcGeographicElementType | "SOIL_BORING_POINT" |
| IfcSpace | "INTERNAL" or "EXTERNAL" |
| IfcSpaceType | "INTERNAL" or "EXTERNAL" |
| IfcStructuralLoadGroup | "LOAD_COMBINATION" |
| IfcWall | "POLYGONAL" or "STANDARD" |
| IfcWallType | "POLYGONAL" or "STANDARD" |


Scenario Outline: Check for deprecated enumerated values - IFC4
# IfcStructuralLoadGroup: IfcLoadGroupTypeEnum
# IfcWall: IfcWallTypeEnum

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

Examples:
| Entity | Value |
| IfcStructuralLoadGroup | "LOAD_COMBINATION" |
| IfcWall | "POLYGONAL" or "STANDARD" or "ELEMENTEDWALL" |
| IfcWallType | "POLYGONAL" or "STANDARD" or "ELEMENTEDWALL" |

Expand Down
9 changes: 2 additions & 7 deletions features/SPS007_Spatial-containment.feature
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
@implementer-agreement
@SPS
@version2
@version3
@E00040

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

Given an IfcElement
Given Its Type is not 'IfcFeatureElementSubtraction' including subtypes
Given Its Type is not 'IfcFeatureElement' including subtypes
Given Decomposes = empty

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


Scenario: Instances of IfcFeatureElementSubtraction, including its subtypes, must not be contained within a spatial structure
Given an IfcFeatureElementSubtraction
Then ContainedInStructure = empty


Scenario: All other IFC entities must not be contained within a spatial structure
Given An IfcRoot
Given Its Type is not 'IfcElement' including subtypes
Expand Down
Loading

0 comments on commit 729ff95

Please sign in to comment.