IfcConversionBasedUnit Basic unit declaration
IfcConversionBasedUnit
当没有使用实体类型IfcMeasureWithUnit作为属性的数据类型更具体地定义单位时,项目的全局单位分配定义度量值和值的全局单位。
项目的全球基本长度、面积、体积和时间单位定义为国际单位制的示例:
#1=IFCPROJECT (00ZhrqZYLBcgy$rVVaiu2A, $, Example project, $, $, $, $, $, #2);
#2=IFCUNITASSIGNMENT ((#3, #4, #5, #6));
#3=IFCSIUNIT (*, .LENGTHUNIT., .MILLI., .METRE.);
#4=IFCSIUNIT (*, .AREAUNIT., $, .SQUARE_METRE.);
#5=IFCSIUNIT (*, .VOLUMEUNIT., $, .CUBIC_METRE.);
#6=IFCSIUNIT (*, .TIMEUNIT., $, .SECOND.);
NOTE In the examples the * character as the first value in the IfcSIUnit-instances is due to the fact that in the IfcSIUnit the inherited attribute .Dimensions is redefined as a derived attribute. In the IFC Object Model schema there is a function that returns the derived dimensional exponent values for SI units. In the exchange file the derived attribute values are not exchanged, and in the case of redefinition the value is replaced by *.
下面是具有全局单位分配的已定义度量值类型的示例,其中包含属性IfcDoor。OverallWidth的数据类型为IfcPositiveLengthMeasure,不可能使用IfcMeasureWithUnit中的特定单位。然后应用全局长度度量单位;在这种情况下为米:
#1=IFCPROJECT (00ZhrqZYLBcgy$rVVaiu2A, $, Example project, $, $, $, $, $, #2);
#2=IFCUNITASSIGNMENT ((#3, #4, #5, #6));
#3=IFCSIUNIT (*, .LENGTHUNIT., .MILLI., .METRE.);
#4=IFCSIUNIT (*, .AREAUNIT., $, .SQUARE_METRE.);
#5=IFCSIUNIT (*, .VOLUMEUNIT., $, .CUBIC_METRE.);
#6=IFCSIUNIT (*, .TIMEUNIT., $, .SECOND.);
#7=IFCDOOR(00ZhrqZYLBcgy$rVVaiu2B, $, Door-1, $, $, $, $, $, 2., 1., $, $);
一个示例,其中项目的全局基本长度、面积和体积单位定义为英制单位(英寸、平方英尺和立方英尺),进一步定义为相对于国际单位制单位毫米、平方米和立方米的基于转换的单位:
#1=IFCPROJECT (00ZhrqZYLBcgy$rVVaiu2B, $, Example project, $, $, $, $, $, #2);
#2=IFCUNITASSIGNMENT ((#6, #7, #10, #13));
#3=IFCSIUNIT (*, .LENGTHUNIT., .MILLI., .METRE.);
#4=IFCSIUNIT (*, .AREAUNIT., $, .SQUARE_METRE.);
#5=IFCSIUNIT (*, .VOLUMEUNIT., $, .CUBIC_METRE.);
#6=IFCSIUNIT (*, .TIMEUNIT., $, .SECOND.);
#7=IFCCONVERSIONBASEDUNIT(#9, .LENGTHUNIT., INCH, #8);
#8=IFCMEASUREWITHUNIT(IFCLENGTHMEASURE(25.4), #3);
#9=IFCDIMENSIONALEXPONENTS(1, 0, 0, 0, 0, 0, 0);
#10=IFCCONVERSIONBASEDUNIT(#11, .AREAUNIT., SQUARE_FEET, #12);
#11=IFCDIMENSIONALEXPONENTS(2, 0, 0, 0, 0, 0, 0);
#12=IFCMEASUREWITHUNIT(IFCAREAMEASURE(0.09290304), #4);
#13=IFCCONVERSIONBASEDUNIT(#14, .VOLUMEUNIT., CUBIC_FEET, #15);
#14=IFCDIMENSIONALEXPONENTS(3, 0, 0, 0, 0, 0, 0);
#15=IFCMEASUREWITHUNIT(IFCVOLUMEMEASURE(0.0283168466), #5);
在基于转换的单位中,比例因子,如立方英尺的0.0283168466,表示一个基于转换的单元中有多少基本单位。
基于转换的单位的另一个例子是以华氏度为单位的温度定义。为此,应使用基于换算的单位,因为华氏度可以使用摄氏度来定义。然而,对于IfcConversionBasedUnit,无法完全定义它们之间的关系,因为它们之间的零度偏移无法定义。相反,子类型IfcConversionBasedUnitWithOffset用于指示华氏度和摄氏度之间的偏移。
基于转换的单位的另一个例子是作为平面角度测量单位的度和梯度。这些可以定义为基于弧度单位的基于转换的单位。
比热容单位(焦耳/千克开尔文)的定义示例,定义为基于基本国际单位制的推导单位。
#1=IFCPROJECT(00ZhrqZYLBcgy$rVVaiu2A, $, Example project, $, $, $, $, $, #2);
#2=IFCUNITASSIGNMENT((#3, #4, #5, #6, #7, #8, #9, #10));
#3=IFCSIUNIT(*, .LENGTHUNIT., .MILLI., .METRE.);
#4=IFCSIUNIT(*, .AREAUNIT., $, .SQUARE_METRE.);
#5=IFCSIUNIT(*, .VOLUMEUNIT., $, .CUBIC_METRE.);
#6=IFCSIUNIT(*, .TIMEUNIT., $, .SECOND.);
#7=IFCSIUNIT(*, .ENERGYUNIT., $, .JOULE.);
#8=IFCSIUNIT(*, .MASSUNIT., .KILO., .GRAM.);
#9=IFCSIUNIT(*, .THERMODYNAMICTEMPERATUREUNIT., $, .KELVIN.);
#10=IFCDERIVEDUNIT((#11, #12, #13), .SPECIFICHEATCAPACITYUNIT., $);
#11=IFCDERIVEDUNITELEMENT(#7, 1);
#12=IFCDERIVEDUNITELEMENT(#8, -1);
#13=IFCDERIVEDUNITELEMENT(#9, -1);
############################