OSArch Community

[IFC] What is IfcDimensionalExponents?

  1. M

    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.

  2. A

    It's needed to define more complex units. Perhaps an example could help:

  3. M

    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?

  4. M

    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.