Expanded documentation on the mapping functionally within the SchemaMapping.json
Because the IFC standard has changed with the new versions some IFC Classes may of been added to expand functionally to the IFC specification and to accommodate this the class mapping can be changed depending the version of the IFC export.
Example
The IfcFlowSegment class was used for pipe elements in 2x3 format but in IFC 4 a splized class was added for pipe elements IfcPipeSegment. Using the following will cause elements with the PIPE class to export to IfcFlowSegment if the export format is IFC2x3, but if IFC4, IFC4x2, IFC4x3 is the export format the IFC Class will be IfcPipeSegment.
{
"Class": [ "OpenPlant_3D", "PIPE" ],
"IFC2x3" : "IfcFlowSegment",
"IFC4" : "IfcPipeSegment",
"IFC4x2" : "IfcPipeSegment",
"IFC4x3" : "IfcPipeSegment"
},
1. Similar to class mapping, we can also add Property mapping in the “SchemaMapping.json” file.
2. Please see the image below. There are different Property Sets and under each Property Set there are multiple properties. e.g. Under the “[RevitDynamic].[M_DoorOverheadingRolling]” property set we have a property called “User Label”.
3. Let’s say we need that property to be under a different Property Set, then we can add the following mapping to the “SchemaMapping.json” file.
4. The resulting IFC will show you results like this in BIMVision with the modified mapping file.
Condition mapping allows a class to be exported as different IFC Classes depending on properties within the element being exported. This typed of mapping may be needed if a specific class type does not exist and a generic element is used as a substitute.
Example
In this example the “Condition” option is used with PIPE class to change the IfcEntity to IfcFlowSegment, IfcBuildingElementProxy, or IfcFlowFitting depending on the value of the property “SHORT_DESCRIPTION”. By default PIPE class will go to IfcFlowSegment but depending on the value of "SHORT_DESCRIPTION" the IfcClass will change between IfcBuildingElementProxy or IfcFlowFitting. Note IFC classes used here are only for demonstration only and may not be the IFC Class.
{
"Class": [ "OpenPlant_3D", "PIPE", "IfcFlowSegment" ],
"Condition":
[
[ "SHORT_DESCRIPTION", "Pipe123", "IfcBuildingElementProxy" ],
[ "SHORT_DESCRIPTION", "Pipe321", "IfcFlowFitting" ]
]
},
Here the PIPEs with short description Pipe321 is going to IfcClass IfcFlowFitting and PIPEs with short description Pipe123 is going to IfcClass IfcBuildingElementProxy. IfcFlowSegment for PIPE has no attributes because all Short Descriptions fit the current Condition. This should work the same for generic OPM equipment as long as there consistent property to base the Condition on.
using IGNORETHISCLASS in place of the IFC Class name will cause the IFC exporter to not proccess elemetns with that class name.
Example
{
"Class": [ "OpenPlant_3D", "WELD", "IGNORETHISCLASS" ]
},