PJS001 Correct conversion based units - v2

001 | @implementer-agreement
002 | @PJS
003 | @version2
004 | Feature: PJS001 - Correct conversion based units
005 |
006 |   The rule verifies that conversion-based units used per Concept Template 4.1.9.9
007 |   (https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/concepts/Project_Context/Project_Units/content.html)
008 |   have names and corresponding conversion factors per the table of recommended values.
009 |   This table is not considered to be a normative reference.
010 |   Therefore all schema versions are checked against the latest table from IFC 4X3:
011 |   https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcConversionBasedUnit.htm.
012 |
013 |   Background: Selection of conversion-based units in default unit assignment
014 |
015 |     Given an .IfcProject.
016 |     Given its attribute .UnitsInContext.
017 |     Given its attribute .Units.
018 |     Given [its entity type] ^is^ 'IfcConversionBasedUnit'
019 |
020 |
021 |   Scenario: Validating correct names for area, length, and volume units
022 |
023 |     Given .UnitType. ^is^ 'AREAUNIT' or 'LENGTHUNIT' or 'VOLUMEUNIT' or 'PLANEANGLEUNIT'
024 |     Then its attribute .Name. must be defined [according to the table] 'valid_ConversionBasedUnits'
025 |
026 |
027 |   Scenario: Validating correct conversion factors
028 |   According to https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors/nist-guide-si-appendix-b
029 |
030 |     Then its attribute .ConversionFactor. must be defined [according to the table] 'valid_ConversionBasedUnits'
031 |
032 |
033 |   Scenario: Validating that the conversion is based on SI units
034 |
035 |     Given its attribute .ConversionFactor.
036 |     Given its attribute .UnitComponent.
037 |     Then [its entity type] ^is^ 'IfcSIUnit'
038 |
039 |
040 |   Scenario Outline: Validating that the conversion is based on the correct SI unit
041 |
042 |     Given .UnitType. ^is^ '<UnitType>'
043 |     Given its attribute .ConversionFactor.
044 |     Given its attribute .UnitComponent.
045 |     Then the value of attribute .Name. must be '<CorrespondingSIUnit>'
046 |
047 |      Examples:
048 |       | UnitType          | CorrespondingSIUnit   |
049 |       | AREAUNIT          | SQUARE_METRE          |
050 |       | LENGTHUNIT        | METRE                 |
051 |       | VOLUMEUNIT        | CUBIC_METRE           |
052 |       | PLANEANGLEUNIT    | RADIAN                |

Version history

Version

Tag

Date

Commit

Rule link

v1

v0.8.3

2025-11-20

7c8ba3c5

view

v2

v0.8.4

2025-12-28

e914eef3

view