Nieuwe eigenschappensets voor IFC-export maken
U kunt extra eigenschappensets maken van templateattributen en gebruikersattributen, definities van eigenschappen voor de attributen definiëren en de Tekla Structures-eigenschappensets koppelen aan IFC-entiteiten voor IFC-export.
Tekla Structures slaat extra eigenschappensets op in configuratiebestanden. U kunt meerdere configuratiebestanden op meerdere locaties bewaren. Als Tekla Structures een IFC-bestand exporteert, dan leest het de vooraf gedefinieerde eigenschappensets en de extra eigenschappensets.
Een configuratiebestand voor IFC-eigenschappensets toevoegen
1) De entiteitsgroepen waar Tekla Structures-attributen naar het geëxporteerde IFC-bestand worden geschreven
2) De templateattributen of de gebruikersattributen die u voor de geselecteerde entiteit wilt exporteren
3) Lijst die de geselecteerde attributen weergeeft
4) De eigenschappen die u voor de attributen kunt definiëren
Let erop dat u het juiste Type selecteert bij het definiëren van eigenschappensets vanuit UDA´s. Als de UDA-eigenschappen bijvoorbeeld normale tekst zijn, selecteert u String. Als uw UDA-eigenschappen hele getallen zijn, selecteert u Integer. Als het verkeerde Type wordt geselecteerd, mislukt de export van de eigenschappenset. U kunt een tekenreekswaarde voor een gebruikersattribuut krijgen, zodat u de prefix USERDEFINED.
aan het gebruikersattribuut toevoegt, het eigenschapstype wijzigt in template-attribuut en het type naar String.
Voorbeeld:
Vooraf gedefinieerde configuratiebestanden van eigenschappensets in IFC2x3-export
De vooraf gedefinieerde configuratiebestanden zijn alleen-lezen en ze worden gelezen vanuit ..\ProgramData\Trimble\Tekla Structures\<version>\Environments\Common\inp. De locatie kan afhankelijk van uw omgeving variëren.
-
IfcPropertySetConfigurations_CV2.xml (standaard eigenschappensets)/IfcPropertySetConfigurations_CV2_1.xml (minimale eigenschappensets) bevat de eigenschappensets voor Exporttype Volledige weergave 2.0.
-
IfcPropertySetConfigurations_SG.xml (standaard eigenschappensets)/IfcPropertySetConfigurations_CV2_1.xml (minimale eigenschappensets) bevat de eigenschappensets voor Exporttype Oppervlaktegeometrie.
-
IfcPropertySetConfigurations_AISC.xml (standaard eigenschappensets)/
IfcPropertySetConfigurations_AISC_1.xml
(minimale eigenschappensets) bevat de eigenschappensets voor Exporttype Staalfabricagevenster.
Het bestand IfcPropertySetConfigurations_CV1.xsd in dezelfde map is een schemabestand dat de structuur beschrijft van het XML-bestand en dat wordt gebruikt voor de validatie van het XML-bestand. Dit bestand wordt gelezen wanneer de software wordt gestart.
Extra configuratiebestanden van eigenschappensets in IFC2x3- en IFC4-export
We bevelen aan om de extra eigenschappensets te definiëren in het dialoogvenster Definities eigenschappensets in plaats ven het wijzigen van het bestand zelf om ervoor te zorgen dat de XML-configuratiebestanden geldig zijn. De extra eigenschappensets die u maakt, worden standaard in de map \AdditionalPSets onder de modelmap opgeslagen. U kunt ook extra eigenschappensets uit de volgende mappen lezen:
-
XS_SYSTEM
-
XS_PROJECT
-
XS_FIRM
U kunt uw eigen eigenschappensets definiëren voor zowel de IFC2x3-export als de IFC4-export. Wanneer u eigenschappensets voor IFC-export wilt configureren in XML-indeling, hebt u twee bestanden nodig:
-
IfcPropertySetConfigurations.xsd is een schemabestand dat de structuur beschrijft van het XML-bestand en dat wordt gebruikt voor de validatie van het XML-bestand. Dit bestand wordt gelezen wanneer de software wordt gestart.
-
IfcPropertySetConfigurations.xml is het werkelijke configuratiebestand eigenschappenset.
Als u de bovenstaande mappen gebruikt, moet u de bestanden in een map met de naam \AdditionalPSets onder de systeem-, project- of bedrijfsmap opslaan.
Inhoud van het configuratiebestand eigenschappenset
Een configuratiebestand bevat de structuur van eigenschappensets en de gegevensdefinities voor de eigenschappen in de eigenschappensets.
-
-
Templateattribuut of UDA-naam. Templateattributen worden gelezen vanuit contentattributes_global.lst en de gebruikersattributen van de omgevingsdatabase.
-
Gegevenstype zoals string, integer, zwevend, tijdstempel, Boolean, logisch of planeanglemeasure.
-
Type eenheid, zoals lengte, gebied, volume of massa.
-
Verschaling van eenheidswaarden van UDA-waarden zonder eenheid. Conversiefactor wordt toegevoegd zodat waarden zonder eenheid kunnen worden geconverteerd om te corresponderen met de globale eenheden in de IFC-bestanden. Gebieds- en volume-eenheden hebben deze factoren nodig.
-
Als u wilt dat het optietype UDA-waarde hetzelfde is als in de gebruikersinterface, kunt u het type van Gebruikersattribuut naar stringtype Templateattribuut wijzigen in het dialoogvenster Definities eigenschappenset.
-
Mogelijkheid om standaardwaarden te gebruiken.
-
Mogelijkheid om de set die moet worden geëxporteerd te negeren als templateattributen of UDA geen waarde hebben.
-
-
Een configuratiebestand bevat eigenschappensets die voorwaarden koppelen aan IFC-entiteiten:
-
Hiërarchietype voor koppeling met IFC-entiteiten met inbegrip van ondersteuning niet uitsluitend voor gebouwelementen, maar ook voor bouten, wapeningsstaven en merken.
-
De mogelijkheid om beperkende regels te gebruiken, zoals Equal, NotEqual, LessThan, GreaterThan, LessThanOrEqual en GreaterThanOrEqual voor getallen en Equal en NotEqual voor tekst.
Als u deze beperkende regels wilt toevoegen, dan moet u uw configuratiebestand met de extra eigenschappensets wijzigen met een geschikte editor.
-
Er kan een willekeurig aantal koppelingsregels bestaan voor een eigenschappenset, maar slechts één eigenschappensetdefinitie voor elk
ReferenceId
. -
U kunt verschillende eigenschappensets koppelen aan verschillende typen IFC-entiteiten. Een plaat kan bijvoorbeeld een andere eigenschappenset hebben dan een ligger.
-
-
Als er geen waarde wordt gevonden voor een eigenschap in export, dan wordt de eigenschappenset helemaal niet geschreven in de export. Voeg optional=true toe voor die eigenschap in de eigenschappenset om dit te voorkomen.
Hieronder is een voorbeeld van het inhoud van het IfcPropertySetConfigurations_CV2.xml-bestand:
Hieronder is een voorbeeld van het inhoud van het IfcPropertySetConfigurations.xml-bestand:
Hardcoded IFC4 eigenschappen en hoeveelheden
In de IFC4-export hebben de geëxporteerde eigenschappen en hoeveelheden vaste waarden. Deze eigenschappen en hoeveel heden worden standaard geëxporteerd.
/*! 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)} }
};