创建新的属性设置以用于 IFC 输出
您可以根据模板属性和用户定义的属性创建其他特性设置,为属性定义特性,并将 Tekla Structures 特性设置绑定到 IFC 实体以用于 IFC 输出。
Tekla Structures 将附加属性设置保存在配置文件中。您可以在多个位置保留多个配置文件。当 Tekla Structures 输出 IFC 文件时,它会读取预定义的属性设置和附加属性设置。
添加 IFC 属性设置配置文件
1) 在其中将 Tekla Structures 属性写入到所导出 IFC 文件中的实体组
2) 要为所选实体导出的模板属性或用户定义的属性
3) 显示所选属性的列表
4) 您可以为属性定义的特性
在根据 UDA 定义属性设置时,请务必选择正确的类型。例如,如果 UDA 属性是普通文本,请选择字符串。如果 UDA 属性是整数,请选择整数。如果选择了错误的类型,属性设置输出将失败。请注意,您可以获取用户定义的属性的字符串值,以便将前缀 USERDEFINED.
添加到用户定义的属性,将属性类型更改为模板属性,并将类型更改为字符串。
示例:
IFC2x3 导出中的预定义属性集配置文件
预定义的配置文件是只读文件,从 ..\ProgramData\Trimble\Tekla Structures\<version>\Environments\Common\inp 中读取。位置因环境而异。
-
IfcPropertySetConfigurations_CV2.xml(默认属性设置)/IfcPropertySetConfigurations_CV2_1.xml(最小属性设置)包含输出类型 坐标视图 2.0的属性设置。
-
IfcPropertySetConfigurations_SG.xml(默认属性设置)/IfcPropertySetConfigurations_CV2_1.xml(最小属性设置)包含输出类型 表面几何的属性设置。
-
IfcPropertySetConfigurations_AISC.xml(默认属性设置)/
IfcPropertySetConfigurations_AISC_1.xml
(最小属性设置)包含输出类型 钢结构视图的属性设置。
同一文件夹中的 IfcPropertySetConfigurations_CV1.xsd 文件是一个方案文件,它描述了 XML 文件的结构,用于验证 XML 文件。软件启动时读取此文件。
IFC2x3 和 IFC4 输出中的附加属性设置配置文件
建议您在属性设置定义对话框中定义附加属性设置,而不是修改文件本身,以确保 XML 配置文件有效。默认情况下,您创建的附加属性设置会保存到模型文件夹下的 \AdditionalPSets 文件夹中。您还可以从以下文件夹读取附加属性设置:
-
XS_SYSTEM
-
XS_PROJECT
-
XS_FIRM
您可以为 IFC2x3 输出和 IFC4 输出定义自己的属性设置。当您以 XML 格式配置 IFC 输出的属性设置时,需要以下两个文件:
-
IfcPropertySetConfigurations.xsd 是一个方案文件,它描述 XML 文件的结构并用于验证 XML 文件。软件启动时读取此文件。
-
IfcPropertySetConfigurations.xml 是实际的属性设置配置文件。
如果使用上面的文件夹,请将文件保存到系统、工程或公司文件夹下的 \AdditionalPSets 文件夹中。
属性设置配置文件内容
配置文件包括属性设置的结构和属性设置内各个属性的数据定义。
-
-
模板属性或 UDA 名称。模板属性从 contentattributes_global.lst 读取,用户定义的属性从环境数据库读取。
-
数据类型,例如字符串、整数、浮点、时间戳、布尔、逻辑或 planeanglemeasure。
-
单位类型,例如长度、面积、体积或质量。
-
无单位 UDA 值的单位值比例。添加了转换系数,因此可以转换无单位的值以便与 IFC 文件中的全局单位相对应。面积和体积单位需要这些系数。
-
如果需要选项类型 UDA 值与用户界面中相同,则可以在属性设置定义对话框中将类型从用户定义的属性更改为字符串类型模板属性。
-
使用默认值的可能性。
-
模板属性或 UDA 没有值时忽略要输出的设置的可能性。
-
-
配置文件包含 IFC 实体的属性设置绑定规则:
-
绑定到 IFC 实体类型层次,不仅支持建筑元素,而且支持螺栓、钢筋和构件。
-
使用限制规则的可能性,例如用于数字的 Equal(等于)、NotEqual(不等于)、LessThan(小于)、GreaterThan(大于)、LessThanOrEqual(小于或等于)和 GreaterThanOrEqual(大于或等于),用于文本的 Equal(等于)和 NotEqual(不等于)。
如果要添加这些限制规则,则需要使用合适的编辑器修改附加的属性设置配置文件。
-
任何属性设置都可以有任意多个绑定规则,但每个
ReferenceId
只有一个属性设置定义。 -
您可以将不同的属性设置绑定到不同的 IFC 实体类型。例如,板可能具有不同于梁的属性设置。
-
-
如果输出中未找到某个属性的值,则输出根本不会写入该属性设置。为了避免发生这种情况,请在属性设置中为该属性添加 optional=true。
下面是 IfcPropertySetConfigurations_CV2.xml 文件内容的示例。
下面是 IfcPropertySetConfigurations.xml 文件内容的示例。
硬编码 IFC4 属性和数量
在 IFC4 导出中,导出的属性和数量均为硬编码。默认情况下会输出这些属性和数量。
/*! Hard coded IfcBeam properties */
{ ENTITY_IfcBeam, Pset_BeamCommon {
Quantity(Quantity::Enum, L"Status", L"USERDEFINED.RENOVATION_STATUS"),
Quantity(Quantity::Boolean, L"IsExternal", L"USERDEFINED.IS_EXTERNAL"),
Quantity(Quantity::Boolean, L"LoadBearing", L"USERDEFINED.LOAD_BEARING"),
Quantity(Quantity::Identifier, L"Reference", L"USERDEFINED.REF_ID"),
Quantity(Quantity::Label, L"FireRating", L"USERDEFINED.FIRE_RATING"),
Quantity(Quantity::Angle, L"Slope", L"SLOPE"),
Quantity(Quantity::Angle, L"Roll", L"ROLL"),
Quantity(Quantity::PositiveLength, L"Span", L"USERDEFINED.SPAN"),
Quantity(Quantity::Thermal, L"ThermalTransmittance", L"USERDEFINED.THERMAL_TRANSMITTAN") }
},
/*! Hard coded IfcBuildingElementProxy properties */
{ ENTITY_IfcBuildingElementProxy, Pset_BuildingElementProxymCommon {
Quantity(Quantity::Enum, L"Status", L"USERDEFINED.RENOVATION_STATUS"),
Quantity(Quantity::Identifier, L"Reference", L"USERDEFINED.REF_ID"),
Quantity(Quantity::Boolean, L"IsExternal", L"USERDEFINED.IS_EXTERNAL"),
Quantity(Quantity::Thermal, L"ThermalTransmittance", L"USERDEFINED.THERMAL_TRANSMITTAN"),
Quantity(Quantity::Boolean, L"LoadBearing", L"USERDEFINED.LOAD_BEARING"),
Quantity(Quantity::Label, L"FireRating", L"USERDEFINED.FIRE_RATING")}
},
/*! Hard coded IfcMember properties */
{ ENTITY_IfcMember, Pset_MemberCommon {
Quantity(Quantity::Enum, L"Status", L"USERDEFINED.RENOVATION_STATUS"),
Quantity(Quantity::Boolean, L"IsExternal", L"USERDEFINED.IS_EXTERNAL"),
Quantity(Quantity::Boolean, L"LoadBearing", L"USERDEFINED.LOAD_BEARING"),
Quantity(Quantity::Identifier, L"Reference", L"USERDEFINED.REF_ID"),
Quantity(Quantity::Label, L"FireRating", L"USERDEFINED.FIRE_RATING"),
Quantity(Quantity::Angle, L"Slope", L"SLOPE"),
Quantity(Quantity::Angle, L"Roll", L"ROLL"),
Quantity(Quantity::PositiveLength, L"Span", L"USERDEFINED.SPAN"),
Quantity(Quantity::Thermal, L"ThermalTransmittance", L"USERDEFINED.THERMAL_TRANSMITTAN") }
},
/*! Hard coded IfcColumn properties */
{ ENTITY_IfcColumn, Pset_ColumnCommon {
Quantity(Quantity::Enum, L"Status", L"USERDEFINED.RENOVATION_STATUS"),
Quantity(Quantity::Boolean, L"IsExternal", L"USERDEFINED.IS_EXTERNAL"),
Quantity(Quantity::Boolean, L"LoadBearing", L"USERDEFINED.LOAD_BEARING"),
Quantity(Quantity::Identifier, L"Reference", L"USERDEFINED.REF_ID"),
Quantity(Quantity::Label, L"FireRating", L"USERDEFINED.FIRE_RATING"),
Quantity(Quantity::Angle, L"Slope", L"SLOPE"),
Quantity(Quantity::Angle, L"Roll", L"ROLL"),
Quantity(Quantity::Thermal, L"ThermalTransmittance", L"USERDEFINED.THERMAL_TRANSMITTAN") }
},
/*! Hard coded IfcPile properties */
{ ENTITY_IfcPile, Pset_PileCommon {
Quantity(Quantity::Enum, L"Status", L"USERDEFINED.RENOVATION_STATUS"),
Quantity(Quantity::Boolean, L"LoadBearing", L"USERDEFINED.LOAD_BEARING"),
Quantity(Quantity::Identifier, L"Reference", L"USERDEFINED.REF_ID") }
},
/*! Hard coded IfcFooting properties */
{ ENTITY_IfcFooting, Pset_FootingCommon {
Quantity(Quantity::Enum, L"Status", L"USERDEFINED.RENOVATION_STATUS"),
Quantity(Quantity::Boolean, L"LoadBearing", L"USERDEFINED.LOAD_BEARING"),
Quantity(Quantity::Identifier, L"Reference", L"USERDEFINED.REF_ID") }
},
/*! Hard coded IfcElementAssembly properties */
{ ENTITY_IfcElementAssembly, Pset_ElementAssemblyCommon {
Quantity(Quantity::Enum, L"Status", L"USERDEFINED.RENOVATION_STATUS"),
Quantity(Quantity::Identifier, L"Reference", L"ASSEMBLY_POS") }
},
/*! Hard coded IfcSlab properties */
{ ENTITY_IfcSlab, Pset_SlabCommon {
Quantity(Quantity::Identifier, L"Reference", L"USERDEFINED.REF_ID"),
Quantity(Quantity::Label, L"AcousticRating", L"USERDEFINED.ACOUSTIC_RATING"),
Quantity(Quantity::Boolean, L"IsExternal", L"USERDEFINED.IS_EXTERNAL"),
Quantity(Quantity::Boolean, L"LoadBearing", L"USERDEFINED.LOAD_BEARING"),
Quantity(Quantity::Enum, L"Status", L"USERDEFINED.RENOVATION_STATUS"),
Quantity(Quantity::Angle, L"PitchAngle", L"USERDEFINED.PITCH_ANGLE"),
Quantity(Quantity::Boolean, L"Combustible", L"USERDEFINED.COMBUSTIBLE"),
Quantity(Quantity::Label, L"SurfaceSpreadOfFlame", L"USERDEFINED.SPREAD_OF_FLAME"),
Quantity(Quantity::Label, L"FireRating", L"USERDEFINED.FIRE_RATING"),
Quantity(Quantity::Boolean, L"Compartmentation", L"USERDEFINED.COMPARTMENT"),
Quantity(Quantity::Thermal, L"ThermalTransmittance", L"USERDEFINED.THERMAL_TRANSMITTAN") }
},
/*! Hard coded IfcRoof properties */
{ ENTITY_IfcRoof, Pset_RoofCommon {
Quantity(Quantity::Identifier, L"Reference", L"USERDEFINED.REF_ID"),
Quantity(Quantity::Enum, L"Status", L"USERDEFINED.RENOVATION_STATUS"),
Quantity(Quantity::Label, L"AcousticRating", L"USERDEFINED.ACOUSTIC_RATING"),
Quantity(Quantity::Boolean, L"IsExternal", L"USERDEFINED.IS_EXTERNAL"),
Quantity(Quantity::Boolean, L"LoadBearing", L"USERDEFINED.LOAD_BEARING"),
Quantity(Quantity::Label, L"FireRating", L"USERDEFINED.FIRE_RATING"),
Quantity(Quantity::Thermal, L"ThermalTransmittance", L"USERDEFINED.THERMAL_TRANSMITTAN") }
},
/*! Hard coded IfcWall properties */
{ ENTITY_IfcWall, Pset_WallCommon {
Quantity(Quantity::Identifier, L"Reference", L"USERDEFINED.REF_ID"),
Quantity(Quantity::Enum, L"Status", L"USERDEFINED.RENOVATION_STATUS"),
Quantity(Quantity::Label, L"AcousticRating", L"USERDEFINED.ACOUSTIC_RATING"),
Quantity(Quantity::Label, L"FireRating", L"USERDEFINED.FIRE_RATING"),
Quantity(Quantity::Boolean, L"IsExternal", L"USERDEFINED.IS_EXTERNAL"),
Quantity(Quantity::Boolean, L"LoadBearing", L"USERDEFINED.LOAD_BEARING"),
Quantity(Quantity::Boolean, L"Combustible", L"USERDEFINED.COMBUSTIBLE"),
Quantity(Quantity::Label, L"SurfaceSpreadOfFlame", L"USERDEFINED.SPREAD_OF_FLAME"),
Quantity(Quantity::Boolean, L"Compartmentation", L"USERDEFINED.COMPARTMENT"),
Quantity(Quantity::Boolean, L"ExtendToStructure", L"USERDEFINED.EXTEND_TO_STRUCTURE"),
Quantity(Quantity::Thermal, L"ThermalTransmittance", L"USERDEFINED.THERMAL_TRANSMITTAN")}
},
/*! Hard coded IfcWallStandardCase properties */
{ ENTITY_IfcWallStandardCase, Pset_WallCommon {
Quantity(Quantity::Identifier, L"Reference", L"USERDEFINED.REF_ID"),
Quantity(Quantity::Enum, L"Status", L"USERDEFINED.RENOVATION_STATUS"),
Quantity(Quantity::Label, L"AcousticRating", L"USERDEFINED.ACOUSTIC_RATING"),
Quantity(Quantity::Label, L"FireRating", L"USERDEFINED.FIRE_RATING"),
Quantity(Quantity::Boolean, L"IsExternal", L"USERDEFINED.IS_EXTERNAL"),
Quantity(Quantity::Boolean, L"LoadBearing", L"USERDEFINED.LOAD_BEARING"),
Quantity(Quantity::Boolean, L"Combustible", L"USERDEFINED.COMBUSTIBLE"),
Quantity(Quantity::Label, L"SurfaceSpreadOfFlame", L"USERDEFINED.SPREAD_OF_FLAME"),
Quantity(Quantity::Boolean, L"Compartmentation", L"USERDEFINED.COMPARTMENT"),
Quantity(Quantity::Boolean, L"ExtendToStructure", L"USERDEFINED.EXTEND_TO_STRUCTURE"),
Quantity(Quantity::Thermal, L"ThermalTransmittance", L"USERDEFINED.THERMAL_TRANSMITTAN")}
},
/*! Hard coded IfcPlate properties */
{ ENTITY_IfcPlate, Pset_PlateCommon {
Quantity(Quantity::Label, L"AcousticRating", L"USERDEFINED.ACOUSTIC_RATING"),
Quantity(Quantity::Enum, L"Status", L"USERDEFINED.RENOVATION_STATUS"),
Quantity(Quantity::Boolean, L"IsExternal", L"USERDEFINED.IS_EXTERNAL"),
Quantity(Quantity::Boolean, L"LoadBearing", L"USERDEFINED.LOAD_BEARING"),
Quantity(Quantity::Identifier, L"Reference", L"USERDEFINED.REF_ID"),
Quantity(Quantity::Label, L"FireRating", L"USERDEFINED.FIRE_RATING"),
Quantity(Quantity::Thermal, L"ThermalTransmittance", L"USERDEFINED.THERMAL_TRANSMITTAN") }
},
/*! Hard coded IfcCovering properties */
{ ENTITY_IfcCovering, Pset_CoveringCommon {
Quantity(Quantity::Label, L"AcousticRating", L"USERDEFINED.ACOUSTIC_RATING"),
Quantity(Quantity::Label, L"FlammabilityRating", L"FLAMMABILITY_RATING"),
Quantity(Quantity::Label, L"FragilityRating", L"FRAGILITY_RATING"),
Quantity(Quantity::Boolean, L"Combustible", L"USERDEFINED.COMBUSTIBLE"),
Quantity(Quantity::Label, L"SurfaceSpreadOfFlame", L"USERDEFINED.SPREAD_OF_FLAME"),
Quantity(Quantity::Label, L"Finish", L"FINISH") }
},
/*! Hard coded IfcOpeningElement properties */
{ ENTITY_IfcOpeningElement, Pset_OpeningElementCommon {
Quantity(Quantity::Label, L"Purpose", L"PURPOSE"),
Quantity(Quantity::Boolean, L"FireExit", L"FIRE_EXIT"),
Quantity(Quantity::Boolean, L"ProtectedOpening", L"PROTECTED_OPENING") }
},
/*! Hard coded IfcTendon properties */
{ ENTITY_IfcTendon, Pset_TendonCommon {
Quantity(Quantity::Identifier, L"Reference", L"USERDEFINED.REF_ID"),
Quantity(Quantity::PositiveLength, L"NominalDiameter", L"DIAMETER_NOMINAL") }
},
/*! Hard coded IfcTendon anchor properties */
{ ENTITY_IfcTendonAnchor, Pset_TendonAnchorCommon > {
Quantity(Quantity::Identifier, L"Reference", L"USERDEFINED.REF_ID"),
Quantity(Quantity::Enum, L"Status", L"USERDEFINED.RENOVATION_STATUS") }
},
/*! Hard coded IfcReinforcingBar properties */
{ ENTITY_IfcReinforcingBar, Pset_ReinforcingBarCommon {
Quantity(Quantity::Identifier, L"Reference", L"REBAR_POS"),
Quantity(Quantity::Enum, L"Status", L"USERDEFINED.RENOVATION_STATUS"),
Quantity(Quantity::PositiveLength, L"NominalDiameter", L"SIZE"),
Quantity(Quantity::PositiveLength, L"BarLength", L"LENGTH"),
Quantity(Quantity::PositiveLength, L"BarSpacing", L"CC_EXACT"),
Quantity(Quantity::Identifier, L"BendingShapeCode", L"SHAPE") }
},
/*! Hard coded IfcReinforcingMesh properties */
{ ENTITY_IfcReinforcingMesh, Pset_ReinforcingMeshCommon {
Quantity(Quantity::Identifier, L"Reference", L"MESH_POS"),
Quantity(Quantity::Enum, L"Status", L"USERDEFINED.RENOVATION_STATUS"),
Quantity(Quantity::PositiveLength, L"MeshLength", L"LENGTH"),
Quantity(Quantity::PositiveLength, L"MeshWidth", L"WIDTH"),
Quantity(Quantity::PositiveLength, L"LongitudinalBarNominalDiameter", L"CC_DIAMETER_MIN_LONG"),
Quantity(Quantity::PositiveLength, L"LongitudinalBarSpacing", L"CC_MIN_LONG"),
Quantity(Quantity::PositiveLength, L"TransverseBarNominalDiameter", L"CC_DIAMETER_MIN_CROSS"),
Quantity(Quantity::PositiveLength, L"TransverseBarSpacing", L"CC_MIN_CROSS"),
Quantity(Quantity::Enum, L"LongitudinalBarSurface", SET_CONSTANT_VALUE("TEXTURED").c_str()),
Quantity(Quantity::Enum, L"TransverseBarSurface", SET_CONSTANT_VALUE("TEXTURED").c_str()),
Quantity(Quantity::Identifier, L"LongitudinalBarBendingShapeCode", SET_CONSTANT_VALUE("A").c_str()),
Quantity(Quantity::Identifier, L"TransverseBarBendingShapeCode", SET_CONSTANT_VALUE("A").c_str()),
Quantity(Quantity::Label, L"LongitudinalBarBendingParameters", L"{LENGTH}"),
Quantity(Quantity::Label, L"TransverseBarBendingParameters", L"{WIDTH}") }
}
};
/*! Hard coded quantities by entity type */
const std::unordered_map<IfcParser::IfcTypeAll_t, std::vector<Quantity>> s_Quantities{
/*! Hard coded IfcBeam quantities */
{ ENTITY_IfcBeam, Qto_BeamBaseQuantities {
Quantity(Quantity::Length, L"Length", L"LENGTH"),
Quantity(Quantity::Area, L"CrossSectionArea", L"PROFILE.CROSS_SECTION_AREA", MM2_to_M2),
Quantity(Quantity::Area, L"OuterSurfaceArea", L"AREA_GROSS", MM2_to_M2),
Quantity(Quantity::Area, L"GrossSurfaceArea", L"AREA_GROSS", MM2_to_M2),
Quantity(Quantity::Area, L"NetSurfaceArea", L"AREA_NET", MM2_to_M2),
Quantity(Quantity::Volume, L"GrossVolume", L"VOLUME_GROSS", MM3_to_M3),
Quantity(Quantity::Volume, L"NetVolume", L"VOLUME_NET", MM3_to_M3),
Quantity(Quantity::Weight, L"GrossWeight", L"WEIGHT_GROSS"),
Quantity(Quantity::Weight, L"NetWeight", L"WEIGHT_NET")} },
/*! Hard coded IfcMember quantities */
{ ENTITY_IfcMember, Qto_MemberBaseQuantities {
Quantity(Quantity::Length, L"Length", L"LENGTH"),
Quantity(Quantity::Area, L"CrossSectionArea", L"PROFILE.CROSS_SECTION_AREA", MM2_to_M2),
Quantity(Quantity::Area, L"OuterSurfaceArea", L"AREA_GROSS", MM2_to_M2),
Quantity(Quantity::Area, L"GrossSurfaceArea", L"AREA_GROSS", MM2_to_M2),
Quantity(Quantity::Area, L"NetSurfaceArea", L"AREA_NET", MM2_to_M2),
Quantity(Quantity::Volume, L"GrossVolume", L"VOLUME_GROSS", MM3_to_M3),
Quantity(Quantity::Volume, L"NetVolume", L"VOLUME_NET", MM3_to_M3),
Quantity(Quantity::Weight, L"GrossWeight", L"WEIGHT_GROSS"),
Quantity(Quantity::Weight, L"NetWeight", L"WEIGHT_NET")} },
/*! Hard coded IfcColumn quantities */
{ ENTITY_IfcColumn, Qto_ColumnBaseQuantities {
Quantity(Quantity::Length, L"Length", L"LENGTH"),
Quantity(Quantity::Area, L"CrossSectionArea", L"PROFILE.CROSS_SECTION_AREA", MM2_to_M2),
Quantity(Quantity::Area, L"OuterSurfaceArea", L"AREA_GROSS", MM2_to_M2),
Quantity(Quantity::Area, L"GrossSurfaceArea", L"AREA_GROSS", MM2_to_M2),
Quantity(Quantity::Area, L"NetSurfaceArea", L"AREA_NET", MM2_to_M2),
Quantity(Quantity::Volume, L"GrossVolume", L"VOLUME_GROSS", MM3_to_M3),
Quantity(Quantity::Volume, L"NetVolume", L"VOLUME_NET", MM3_to_M3),
Quantity(Quantity::Weight, L"GrossWeight", L"WEIGHT_GROSS"),
Quantity(Quantity::Weight, L"NetWeight", L"WEIGHT_NET")} },
/*! Hard coded IfcFooting quantities */
{ ENTITY_IfcFooting, Qto_FootingBaseQuantities {
Quantity(Quantity::Length, L"Height", L"LENGTH"),
Quantity(Quantity::Length, L"Length", L"HEIGHT"),
Quantity(Quantity::Length, L"Width", L"WIDTH"),
Quantity(Quantity::Area, L"CrossSectionArea", L"PROFILE.CROSS_SECTION_AREA", MM2_to_M2),
Quantity(Quantity::Area, L"OuterSurfaceArea", L"AREA_GROSS", MM2_to_M2),
Quantity(Quantity::Area, L"GrossSurfaceArea", L"AREA_GROSS", MM2_to_M2),
Quantity(Quantity::Volume, L"GrossVolume", L"VOLUME_GROSS", MM3_to_M3),
Quantity(Quantity::Volume, L"NetVolume", L"VOLUME_NET", MM3_to_M3),
Quantity(Quantity::Weight, L"GrossWeight", L"WEIGHT_GROSS"),
Quantity(Quantity::Weight, L"NetWeight", L"WEIGHT_NET")} },
/*! Hard coded IfcPile quantities */
{ ENTITY_IfcPile, Qto_PileBaseQuantities {
Quantity(Quantity::Length, L"Length", L"LENGTH"),
Quantity(Quantity::Area, L"CrossSectionArea", L"PROFILE.CROSS_SECTION_AREA", MM2_to_M2),
Quantity(Quantity::Area, L"OuterSurfaceArea", L"AREA_GROSS", MM2_to_M2),
Quantity(Quantity::Area, L"GrossSurfaceArea", L"AREA_GROSS", MM2_to_M2),
Quantity(Quantity::Volume, L"GrossVolume", L"VOLUME_GROSS", MM3_to_M3),
Quantity(Quantity::Volume, L"NetVolume", L"VOLUME_NET", MM3_to_M3),
Quantity(Quantity::Weight, L"GrossWeight", L"WEIGHT_GROSS"),
Quantity(Quantity::Weight, L"NetWeight", L"WEIGHT_NET")} },
/*! Hard coded IfcSlab quantities */
{ ENTITY_IfcSlab, Qto_SlabBaseQuantities {
Quantity(Quantity::Length, L"Depth", L"WIDTH"),
Quantity(Quantity::Length, L"Length", L"LENGTH"),
Quantity(Quantity::Length, L"Width", L"HEIGHT"),
Quantity(Quantity::Area, L"GrossArea", L"AREA_GROSS", MM2_to_M2),
Quantity(Quantity::Area, L"NetArea", L"AREA_NET", MM2_to_M2),
Quantity(Quantity::Area, L"SideArea", L"AREA_FORM_SIDE", MM2_to_M2),
Quantity(Quantity::Volume, L"GrossVolume", L"VOLUME_GROSS", MM3_to_M3),
Quantity(Quantity::Volume, L"NetVolume", L"VOLUME_NET", MM3_to_M3),
Quantity(Quantity::Weight, L"GrossWeight", L"WEIGHT_GROSS"),
Quantity(Quantity::Weight, L"NetWeight", L"WEIGHT_NET"),
Quantity(Quantity::Length, L"Perimeter", L"PERIMETER")} },
/*! Hard coded IfcWall quantities */
{ ENTITY_IfcWall, Qto_WallBaseQuantities{
Quantity(Quantity::Length, L"Width", L"WIDTH"),
Quantity(Quantity::Length, L"Length", L"LENGTH"),
Quantity(Quantity::Length, L"Height", L"HEIGHT"),
Quantity(Quantity::Area, L"NetSideArea", L"AREA_FORM_SIDE", MM2_to_M2),
//Quantity(Quantity::Area, L"GrossSideArea", L"AREA_FORM_SIDE_GLOBAL", MM2_to_M2), // AREA_FORM_SIDE_GLOBAL not implemented yet.
Quantity(Quantity::Area, L"NetFootprintArea", L"AREA_PROJECTION_GXY_NET", MM2_to_M2),
Quantity(Quantity::Volume, L"GrossVolume", L"VOLUME_GROSS", MM3_to_M3),
Quantity(Quantity::Volume, L"NetVolume", L"VOLUME_NET", MM3_to_M3),
Quantity(Quantity::Weight, L"GrossWeight", L"WEIGHT_GROSS"),
Quantity(Quantity::Weight, L"NetWeight", L"WEIGHT_NET")} },
/*! Hard coded IfcWallStandardCase quantities */
{ ENTITY_IfcWallStandardCase, Qto_WallBaseQuantities{
Quantity(Quantity::Length, L"Width", L"WIDTH"),
Quantity(Quantity::Length, L"Length", L"LENGTH"),
Quantity(Quantity::Length, L"Height", L"HEIGHT"),
Quantity(Quantity::Area, L"NetSideArea", L"AREA_FORM_SIDE", MM2_to_M2),
// Quantity(Quantity::Area, L"GrossSideArea", L"AREA_FORM_SIDE_GLOBAL", MM2_to_M2), // AREA_FORM_SIDE_GLOBAL not implemented yet.
Quantity(Quantity::Area, L"NetFootprintArea", L"AREA_PROJECTION_GXY_NET", MM2_to_M2),
Quantity(Quantity::Volume, L"GrossVolume", L"VOLUME_GROSS", MM3_to_M3),
Quantity(Quantity::Volume, L"NetVolume", L"VOLUME_NET", MM3_to_M3),
Quantity(Quantity::Weight, L"GrossWeight", L"WEIGHT_GROSS"),
Quantity(Quantity::Weight, L"NetWeight", L"WEIGHT_NET")} },
/*! Hard coded IfcPlate quantities */
{ ENTITY_IfcPlate, Qto_PlateBaseQuantities {
Quantity(Quantity::Length, L"Width", L"WIDTH"),
Quantity(Quantity::Area, L"GrossArea", L"AREA_GROSS", MM2_to_M2),
Quantity(Quantity::Area, L"NetArea", L"AREA_NET", MM2_to_M2),
Quantity(Quantity::Area, L"SideArea", L"AREA_FORM_SIDE", MM2_to_M2),
Quantity(Quantity::Volume, L"GrossVolume", L"VOLUME_GROSS", MM3_to_M3),
Quantity(Quantity::Volume, L"NetVolume", L"VOLUME_NET", MM3_to_M3),
Quantity(Quantity::Weight, L"GrossWeight", L"WEIGHT_GROSS"),
Quantity(Quantity::Weight, L"NetWeight", L"WEIGHT_NET"),
Quantity(Quantity::Length, L"Perimeter", L"PERIMETER")} },
/*! Hard coded IfcBuildingElementProxy quantities */
{ ENTITY_IfcBuildingElementProxy, Qto_BuildingElementProxyQuantities {
Quantity(Quantity::Area, L"NetSurfaceArea", L"AREA_NET", MM2_to_M2),
Quantity(Quantity::Volume, L"NetVolume", L"VOLUME_NET", MM3_to_M3)} },
/*! Hard coded IfcCovering quantities */
{ ENTITY_IfcCovering, Qto_CoveringBaseQuantities {
Quantity(Quantity::Length, L"Width", L"WIDTH"),
Quantity(Quantity::Area, L"GrossArea", L"AREA_GROSS", MM2_to_M2),
Quantity(Quantity::Area, L"NetArea", L"AREA_NET", MM2_to_M2)} },
/*! Hard coded IfcReinforcingBar quantities */
{ ENTITY_IfcReinforcingBar, Qto_ReinforcingElementBaseQuantities {
Quantity(Quantity::Length, L"Length", L"LENGTH"),
Quantity(Quantity::Weight, L"Weight", L"WEIGHT") } },
/*! Hard coded IfcOpeningElement quantities */
{ ENTITY_IfcOpeningElement, Qto_OpeningBaseQuantities {
Quantity(Quantity::Length, L"Width", L"WIDTH"),
Quantity(Quantity::Length, L"Height", L"HEIGHT"),
Quantity(Quantity::Area, L"Area", L"AREA", MM2_to_M2),
Quantity(Quantity::Volume, L"Volume", L"VOLUME", MM3_to_M3)} },
/*! Hard coded IfcRoof quantities */
{ ENTITY_IfcRoof, Qto_RoofBaseQuantities {
Quantity(Quantity::Area, L"GrossArea", L"AREA_GROSS", MM2_to_M2),
Quantity(Quantity::Area, L"NetArea", L"AREA_NET", MM2_to_M2),
Quantity(Quantity::Area, L"ProjectedArea", L"AREA_PROJECTION_GXY_NET", MM2_to_M2)} },
/*! Hard coded IfcRailing quantities */
{ ENTITY_IfcRailing, Qto_RailingBaseQuantities{
Quantity(Quantity::Length, L"Length", L"LENGTH")} },
/*! Hard coded IfcRampFlight quantities */
{ ENTITY_IfcRampFlight, Qto_RampFlightBaseQuantities{
Quantity(Quantity::Length, L"Length", L"LENGTH"),
Quantity(Quantity::Length, L"Width", L"WIDTH"),
Quantity(Quantity::Area, L"GrossArea", L"AREA_GROSS", MM2_to_M2),
Quantity(Quantity::Area, L"NetArea", L"AREA_NET", MM2_to_M2),
Quantity(Quantity::Volume, L"GrossVolume", L"VOLUME_GROSS", MM3_to_M3),
Quantity(Quantity::Volume, L"NetVolume", L"VOLUME_NET", MM3_to_M3)} },
/*! Hard coded IfcStairFlight quantities */
{ ENTITY_IfcStairFlight, Qto_StairFlightBaseQuantities{
Quantity(Quantity::Length, L"Length", L"LENGTH"),
Quantity(Quantity::Volume, L"GrossVolume", L"VOLUME_GROSS", MM3_to_M3),
Quantity(Quantity::Volume, L"NetVolume", L"VOLUME_NET", MM3_to_M3)} }
};