SWE002 Mirroring within IfcDerivedProfileDef shall not be used - v2

001 | @informal-proposition
002 | @SWE
003 | @version2
004 | Feature: SWE002 - Mirroring within IfcDerivedProfileDef shall not be used
005 |
006 | The rule verifies that the transformation defined in IfcDerivedProfileDef.Operator does not introduce mirroring.
007 | The subtype IfcMirroredProfileDef should be used for that. For the tapered sweeps, which tend to rely on
008 | IfcDerivedProfileDef, by expressing the tapering operation as a change in profile, mirroring should not be used
009 | altogether.
010 |
011 |   Scenario: IfcDerivedProfileDef must not use mirroring as there is a dedicated subtype for that
012 |
013 |     Given An .IfcDerivedProfileDef. ^without subtypes^
014 |     Given Its attribute .Operator.
015 |     Given The determinant of the placement matrix
016 |
017 |     Then The resulting value must be ^greater than 0^
018 |
019 |   Scenario Outline: Tapered sweeps must not use mirroring altogether
020 |
021 |     Given An .<entity>.
022 |     Given Its attribute .<attribute>.
023 |     Given [Its entity type] ^is^ 'IfcDerivedProfileDef' or 'IfcMirroredProfileDef'
024 |     Given Its attribute .Operator.
025 |     Given The determinant of the placement matrix
026 |
027 |     Then The resulting value must be ^greater than 0^
028 |
029 |       Examples:
030 |         | entity                      | attribute    |
031 |         | IfcExtrudedAreaSolidTapered | SweptArea    |
032 |         | IfcExtrudedAreaSolidTapered | EndSweptArea |
033 |         | IfcRevolvedAreaSolidTapered | SweptArea    |
034 |         | IfcRevolvedAreaSolidTapered | EndSweptArea |

Version history

Version

Tag

Date

Commit

Rule link

v1

v0.6.11

2025-01-23

2a8ba5d3

view

v2

v0.8.2

2025-10-28

f332af51

view