Editing Revit setup for OpenBIM/Revit and IFC classes
From Wiki.OSArch
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
− | |||
− | |||
It is possible to control which [[IFC classes]] map to which Revit objects when exporting and importing to some degree. Prior to reading this, it is important to first read the resources provided in [[Revit setup]]. | It is possible to control which [[IFC classes]] map to which Revit objects when exporting and importing to some degree. Prior to reading this, it is important to first read the resources provided in [[Revit setup]]. | ||
Line 8: | Line 6: | ||
Revit follows a series of convoluted rules to determine what IFC class an object is exported as. If one rule cannot be satisfied, it moves on to the next rule until it finds a suitable IFC class. Strap on your seat belts, because this is going to do your head in. | Revit follows a series of convoluted rules to determine what IFC class an object is exported as. If one rule cannot be satisfied, it moves on to the next rule until it finds a suitable IFC class. Strap on your seat belts, because this is going to do your head in. | ||
− | |||
− | |||
==Rule 1: Hardcoded IFC export classes== | ==Rule 1: Hardcoded IFC export classes== | ||
− | Revit has a series of hardcoded IFC export classes depending on the type of Revit object. It is not possible to override | + | Revit has a series of hardcoded IFC export classes depending on the type of Revit object. It is not possible to override this in any way, and users are required to remodel the object using another method if they wish to get correct OpenBIM output. The table below describes the ''internal'' type of Revit object, and how it is exported. If you are unsure what this ''internal'' type is, this can be checked in the [https://www.revitapidocs.com/2020/ Revit API documentation] (note: this requires some programming background knowledge to understand). If your object is not part of the table below, proceed to rule 2. |
{|class="wikitable" | {|class="wikitable" | ||
Line 20: | Line 16: | ||
! Notes | ! Notes | ||
|- | |- | ||
− | | | + | | Area Scheme |
− | | | + | | |
| | | | ||
|- | |- | ||
− | | | + | | Assembly Instance |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Beam System |
− | | | + | | |
| | | | ||
|- | |- | ||
− | | | + | | Ceiling |
− | | | + | | |
| | | | ||
|- | |- | ||
− | | | + | | Ceiling and Floor |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Wall Foundation |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Curve Element |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Curtain System |
− | | | + | | |
− | | | + | | |
|- | |- | ||
− | | | + | | Duct Insulation |
− | | | + | | |
| | | | ||
|- | |- | ||
− | | | + | | Duct Lining |
− | | | + | | |
| | | | ||
|- | |- | ||
− | | | + | | Electrical System |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Fabric Area |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Fabric Sheet |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Face Wall |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Filled Region |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Grid |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Group |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Hosted Sweep |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Part |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Pipe Insulation |
− | |||
| | | | ||
− | |||
− | |||
− | |||
| | | | ||
|- | |- | ||
− | | | + | | Railing |
− | |||
| | | | ||
− | |||
− | |||
− | |||
| | | | ||
|- | |- | ||
− | | | + | | Ramp |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Rebar |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Rebar Coupler |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Roof Base |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Spatial Element |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Stairs |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Text Note |
| | | | ||
| | | | ||
|- | |- | ||
− | | | + | | Topography Surface |
− | | | + | | |
− | |||
− | |||
− | |||
− | |||
| | | | ||
|- | |- | ||
− | | | + | | Truss |
| | | | ||
| | | | ||
|} | |} | ||
− | ==Rule 2 | + | ==Rule 2: Check for a manually overridden instance parameter == |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
The IFC export class can be overridden on a per instance basis. To do this, parameters need to be created and assigned to instances. A shared parameter file with these parameters is provided in the [[Revit setup]] page. If none of these parameters are present, proceed to rule 3. | The IFC export class can be overridden on a per instance basis. To do this, parameters need to be created and assigned to instances. A shared parameter file with these parameters is provided in the [[Revit setup]] page. If none of these parameters are present, proceed to rule 3. | ||
− | When the IFC class is overridden at an instance level, this additionally overrides the IFC type object that the IFC element is assigned to. For example, if your Revit category is <code>Structural Columns</code>, but override a column instance to be an <code>IfcWall</code>, Revit will also automatically create a corresponding <code>IfcWallType</code> with the column type information. It is not possible to control the IFC class of the corresponding IFC type object | + | When the IFC class is overridden at an instance level, this additionally overrides the IFC type object that the IFC element is assigned to. For example, if your Revit category is <code>Structural Columns</code>, but override a column instance to be an <code>IfcWall</code>, Revit will also automatically create a corresponding <code>IfcWallType</code> with the column type information. It is not possible to control the IFC class of the corresponding IFC type object. |
When a predefined type is defined, it should be noted that it will set the predefined type on the corresponding IFC type object, not the IFC object itself. For example, if you set a predefined type of <code>PLUMBINGWALL</code>, that value will get assigned to the <code>IfcWallType</code>, not the <code>IfcWall</code>. This means that if you have two instances with two different predefined types belonging to one Revit family and same Revit type, Revit will still create two IFC type objects in IFC. It is not possible to control this, and will likely lead to broken type and element relationships in schedules, as well as unnecessarily duplicated information. | When a predefined type is defined, it should be noted that it will set the predefined type on the corresponding IFC type object, not the IFC object itself. For example, if you set a predefined type of <code>PLUMBINGWALL</code>, that value will get assigned to the <code>IfcWallType</code>, not the <code>IfcWall</code>. This means that if you have two instances with two different predefined types belonging to one Revit family and same Revit type, Revit will still create two IFC type objects in IFC. It is not possible to control this, and will likely lead to broken type and element relationships in schedules, as well as unnecessarily duplicated information. | ||
Line 187: | Line 163: | ||
|} | |} | ||
− | ==Rule | + | ==Rule 3: Check for a manually overridden type parameter == |
You can also override by Revit type. Note that the parameters below only work if you are using a recent version of the exporter, so please update as recommended in the [[Revit setup]], as some out of the box exporters have a bug which prevent these parameters from working. If none of these parameters exist, proceed to rule 4. | You can also override by Revit type. Note that the parameters below only work if you are using a recent version of the exporter, so please update as recommended in the [[Revit setup]], as some out of the box exporters have a bug which prevent these parameters from working. If none of these parameters exist, proceed to rule 4. | ||
Line 213: | Line 189: | ||
|} | |} | ||
− | ==Rule | + | ==Rule 4: Check IFC class mappings table== |
− | |||
− | |||
− | |||
− | |||
− | Revit offers a mapping table from Revit category (and subcategory) to IFC class and IFC Predefined Type. You can manually access this by going to <code>File > Export > Options > IFC Options</code>. You can save and load these settings | + | Revit offers a mapping table from Revit category (and subcategory) to IFC class and IFC Predefined Type. You can manually access this by going to <code>File > Export > Options > IFC Options</code>. You can save and load these settings. |
Out of the box, there are many shortcomings to the IFC class mappings table. OSArch provides an improved default set of IFC class mappings in the [[Revit setup]] page, and describes what the improvements are. | Out of the box, there are many shortcomings to the IFC class mappings table. OSArch provides an improved default set of IFC class mappings in the [[Revit setup]] page, and describes what the improvements are. | ||
− | ==Rule | + | ==Rule 3: Check if it is part of a furniture group== |
− | If the | + | If the element is contained within a Revit group that is an IfcFurniture, it is always exported into an IfcSystemFurnitureElement. |
− | + | ==Rule 4: | |
+ | # ... unless the particular Revit family is one of the series of hardcoded types that cannot be overridden no matter what. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=Import= | =Import= | ||
− | |||
− | |||
[[Category:Autodesk Revit]] | [[Category:Autodesk Revit]] | ||
− |