In IfcSIUnit there is the comment with "1* Dimensions IfcDimensionalExponents This attribute is formally derived. "
I don't understand for what purpose the IfcDimensionalExponents exists.
In IfcSIUnit there is the comment with "1* Dimensions IfcDimensionalExponents This attribute is formally derived. "
I don't understand for what purpose the IfcDimensionalExponents exists.
It's needed to define more complex units. Perhaps an example could help:
If I want to define specific heat capacity (Joule / kg Kelvin) for example, I don't need IfcDimensionalExponents. IfcDerivedUnitElement is used for the exponent part.
#1=IFCPROJECT('abcdefghijklmnopqrst09', #100, '', $, $, $, $, (#101), #2);
#2=IFCUNITASSIGNMENT((#3));
#3=IFCDERIVEDUNIT((#5, #6, #4), .SPECIFICHEATCAPACITYUNIT., $);
#4=IFCDERIVEDUNITELEMENT(#7, 1);
#5=IFCDERIVEDUNITELEMENT(#8, -1);
#6=IFCDERIVEDUNITELEMENT(#9, -1);
#7=IFCSIUNIT(*, .ENERGYUNIT., $, .JOULE.);
#8=IFCSIUNIT(*, .MASSUNIT., .KILO., .GRAM.);
#9=IFCSIUNIT(*, .THERMODYNAMICTEMPERATUREUNIT., $, .KELVIN.);
Example from section 3.3.2.3 Derived units as global units from IFC2x Edition 3 Model Implementation Guide, Version 2.0, T. Liebich, 2009/05
Is there some helper function in IfcOpenShell to get all unit defined in an IFC file?
You can get all assigned units by doing model.by_type('IfcUnitAssignment')[0]
.
Dimensional exponents are used when defining conversion based units (e.g. imperial) or context dependent units.
The ability for it to be auto-derived for SI units and derived units is useful: this allows us to display values in the users preferred unit. Note that we don't yet have a simple util function for this yet though.
Login or Register to reply.