Difference between revisions of "Revit setup for OpenBIM/Revit IFC spatial hierarchy"

From Wiki.OSArch
(Created page with "The following attributes may be set on the <code>IfcSite</code>. If you have a <code>Toposurface</code> object overriding your <code>IfcSite</code> object representation as de...")
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
The following attributes may be set on the <code>IfcSite</code>. If you have a <code>Toposurface</code> object overriding your <code>IfcSite</code> object representation as detailed in [[Revit Geolocation]], the procedure is slightly different. Do not implement both procedures simultaneously. Note that in Revit, only a single <code>IfcSite</code> may exist. It is not possible to create multiple sites.
+
== IfcSite ==
 +
 
 +
The following attributes may be set on the <code>IfcSite</code>. If you have a <code>Toposurface</code> object overriding your <code>IfcSite</code> object representation as detailed in [[Revit geolocation]], the procedure is slightly different. Do not implement both procedures simultaneously. Note that in Revit, only a single <code>IfcSite</code> may exist. It is not possible to create multiple sites.
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 9: Line 11:
 
| <code>Name</code>
 
| <code>Name</code>
 
| Yes
 
| Yes
| Create a new IfcName instance parameter, assigned to the Toposurface object.
+
| Create a new <code>IfcName</code> instance parameter, assigned to the <code>Toposurface</code> object.
| Create a new SiteName instance parameter, assigned to the Project Information object.
+
| Create a new <code>SiteName</code> instance parameter, assigned to the <code>Project Information</code> object.
 
|-
 
|-
 
| <code>Description</code>
 
| <code>Description</code>
 
|  
 
|  
| Create a new IfcDescription instance parameter, assigned to the Toposurface object.
+
| Create a new <code>IfcDescription</code> instance parameter, assigned to the <code>Toposurface</code> object.
| Create a new SiteDescription instance parameter, assigned to the Project Information object.
+
| Create a new <code>SiteDescription</code> instance parameter, assigned to the <code>Project Information</code> object.
 
|-
 
|-
 
| <code>ObjectType</code>
 
| <code>ObjectType</code>
 
|  
 
|  
| Create a new IfcObjectType instance parameter, assigned to the Toposurface object.
+
| Create a new <code>IfcObjectType</code> instance parameter, assigned to the <code>Toposurface</code> object.
| Create a new SiteObjectType instance parameter, assigned to the Project Information object.
+
| Create a new <code>SiteObjectType</code> instance parameter, assigned to the <code>Project Information</code> object.
 
|-
 
|-
 
| <code>LongName</code>
 
| <code>LongName</code>
 
| Yes
 
| Yes
| Create a new IfcLongName instance parameter, assigned to the Toposurface object.
+
| Create a new <code>IfcLongName</code> instance parameter, assigned to the <code>Toposurface</code> object.
| Create a new SiteLongName instance parameter, assigned to the Project Information object.
+
| Create a new <code>SiteLongName</code> instance parameter, assigned to the <code>Project Information</code> object.
 
|-
 
|-
 
| <code>LandTitleNumber</code>
 
| <code>LandTitleNumber</code>
 
| Yes
 
| Yes
| Create a new IfcLandTitleNumber instance parameter, assigned to the Toposurface object.
+
| Create a new <code>IfcLandTitleNumber</code> instance parameter, assigned to the <code>Toposurface</code> object.
| Create a new SiteLandTitleNumber instance parameter, assigned to the Project Information object.
+
| Create a new <code>SiteLandTitleNumber</code> instance parameter, assigned to the <code>Project Information</code> object.
 +
|-
 +
| <code>SiteAddress</code>
 +
|
 +
| This may be set via <code>File > Export > IFC > Modify setup > General > Project Address</code> and checking <code>Assign address to site</code>.
 +
| Same procedure as with <code>Toposurface</code>.
 
|}
 
|}
 +
 +
== IfcBuilding ==
  
 
The following attributes may be set on the <code>IfcBuilding</code>. Note that in Revit, only a single <code>IfcBuilding</code> may exist. It is not possible to create multiple buildings.
 
The following attributes may be set on the <code>IfcBuilding</code>. Note that in Revit, only a single <code>IfcBuilding</code> may exist. It is not possible to create multiple buildings.
Line 42: Line 51:
 
| <code>Name</code>
 
| <code>Name</code>
 
| Yes
 
| Yes
| Fill out the Building Name field in the Project Information dialog.
+
| Fill out the <code>Building Name</code> field in the <code>Project Information</code> dialog.
 +
|-
 +
| <code>Description</code>
 +
|
 +
| Create a new <code>BuildingDescription</code> instance parameter, assigned to the <code>Project Information</code> object.
 +
|-
 +
| <code>ObjectType</code>
 +
|
 +
| Create a new <code>BuildingObjectType</code> instance parameter, assigned to the <code>Project Information</code> object.
 +
|-
 +
| <code>LongName</code>
 +
| Yes
 +
| Create a new <code>BuildingLongName</code> instance parameter, assigned to the <code>Project Information</code> object.
 +
|-
 +
| <code>ElevationOfRefHeight</code>
 +
|
 +
| Does not seem possible to change this value. Defaults to null.
 +
|-
 +
| <code>ElevationOfTerrain</code>
 +
|
 +
| Does not seem possible to change this value. Defaults to null.
 +
|-
 +
| <code>BuildingAddress</code>
 +
|
 +
| This may be set via <code>File > Export > IFC > Modify setup > General > Project Address</code> and checking <code>Assign address to building</code>.
 +
|}
 +
 
 +
An example of the building address settings to be provided is shown below.
 +
 
 +
[[File:Revit-building-address.PNG]]
 +
 
 +
Note that if you fill out address details in <code>File > Export > IFC > Modify setup > General > Project Address</code>, then that address will be exported twice in your IFC: once for the site and another for the building. This behaviour cannot be changed. Even unchecking <code>Assign address to building/site</code> will not remove this information, but only remove the link between the address and the building/site.
 +
 
 +
== IfcBuildingStorey ==
 +
 
 +
<code>IfcBuildingStorey</code> elements are generated for each Revit level. The following attributes can be set:
 +
 
 +
{| class="wikitable"
 +
! '''Attribute Name'''
 +
! '''Required'''
 +
! '''Procedure'''
 +
|-
 +
| <code>Name</code>
 +
| Yes
 +
| This defaults to the <code>Name</code> parameter in the <code>Identity Data</code> parameter group. This is usually incorrect, as IFC names are usually short codes, not long descriptions. You can override this by creating a new <code>IfcName</code> instance parameter.
 +
|-
 +
| <code>Description</code>
 +
|
 +
| Create a new <code>IfcDescription</code> instance parameter.
 +
|-
 +
| <code>ObjectType</code>
 +
|
 +
| Create a new <code>IfcObjectType</code> instance parameter.
 +
|-
 +
| <code>LongName</code>
 +
| Yes
 +
| Create a new <code>IfcLongName</code> instance parameter. This should typically contain the same value as the <code>Name</code> parameter in the <code>Identity Data</code> parameter group.
 +
|-
 +
| <code>CompositionType</code>
 +
|
 +
| This is asserted by default to <code>ELEMENT</code>. It is not possible to override this. It is not possible to nest spatial structures in Revit.
 +
|-
 +
| <code>Elevation</code>
 +
|
 +
| This is automatically derived from the <code>Elevation</code> parameter in the <code>Constraints</code> parameter group. Although not obviously wrong, this does not match the current intention by buildingSMART. This is fundamentally broken in Revit.
 +
|}
 +
 
 +
== IfcSpace ==
 +
 
 +
In Revit, there are <code>Room</code> objects, <code>Space</code> objects. Both of these objects translate into <code>IfcSpace</code> entities. Revit <code>Area</code> objects do ''not'' translate into IFC and are lost.
 +
 
 +
If you are exporting from a 3D view which has filters to turn certain objects on and off, you may have enabled the <code>Export only elements visible in view</code> option in <code>File > Export > IFC > Modify Setup > Additional Content</code>. If this is enabled, you must enable the <code>Export rooms in 3D views</code> option, or <code>IfcSpace</code> entities will not be created in your IFC file. Despite the use of the word "rooms", the option applies to both Revit <code>Room</code> and <code>Space</code> objects.
 +
 
 +
[[File:Revit-export-spaces.PNG]]
 +
 
 +
The following attributes may be set:
 +
 
 +
{| class="wikitable"
 +
! '''Attribute Name'''
 +
! '''Required'''
 +
! '''Procedure'''
 +
|-
 +
| <code>Name</code>
 +
| Yes
 +
| This defaults to the <code>Number</code> parameter in the <code>Identity Data</code> parameter group. You can override this by creating a new <code>IfcName</code> instance parameter.
 +
|-
 +
| <code>Description</code>
 +
|
 +
| Create a new <code>IfcDescription</code> instance parameter.
 +
|-
 +
| <code>ObjectType</code>
 +
|
 +
| Create a new <code>IfcObjectType</code> instance parameter.
 +
|-
 +
| <code>LongName</code>
 +
| Yes
 +
| This defaults to the <code>Name</code> parameter in the <code>Identity Data</code> parameter group. You can override this by creating a new <code>IfcLongName</code> instance parameter.
 +
|-
 +
| <code>CompositionType</code>
 +
|
 +
| This is asserted by default to <code>ELEMENT</code>. It is not possible to override this. It is not possible to nest spatial structures in Revit.
 +
|-
 +
| <code>PredefinedType</code>
 +
|
 +
| This defaults to <code>INTERNAL</code>. It is not possible to override this.
 +
|-
 +
| <code>ElevationWithFlooring</code>
 +
|
 +
| This is null by default. Create a new <code>IfcElevationWithFlooring</code> instance parameter.
 +
|}
 +
 
 +
== IfcZone ==
 +
 
 +
The Revit <code>HVAC Zone</code> object translates into IFC <code>IfcZone</code> entities. In addition, it is also possible to group Revit <code>Room</code> objects into <code>IfcZone</code> entities. To do this, create a new <code>ZoneName</code> instance parameter assigned to a Revit <code>Room</code> object. For each unique string supplied in this parameter, an <code>IfcZone</code> entity will be created.
 +
 
 +
{{warning|Virtual <code>IfcZones</code> created by grouping multiple Revit <code>Room</code> objects will not maintain their <code>GlobalId</code> values on subsequent exports. Additionally, if two <code>ZoneName</code> parameters have the same value, but their other attributes, such as <code>ZoneDescription</code> are different, then only one will be exported, and the rest of the data will be lost. It is not clear to the user which will be retained and which will be lost, so care must be taken to manually ensure data consistency between all these fields.}}
 +
 
 +
The following attributes may be set:
 +
 
 +
{| class="wikitable"
 +
! '''Attribute Name'''
 +
! '''Required'''
 +
! '''Procedure with Revit <code>HVAC Zone</code>'''
 +
! '''Procedure with virtual zone from Revit <code>Room</code>'''
 +
|-
 +
| <code>Name</code>
 +
| Yes
 +
| This defaults to the <code>Name</code> parameter in the <code>Identity Data</code> parameter group, concatenated with the Revit <code>Element ID</code>. This concatenation usually results in an undesirable value. You can override this by creating a new <code>IfcName</code> instance parameter.
 +
| Create a new <code>ZoneName</code> instance parameter, assigned to the <code>Room</code> object.
 
|-
 
|-
 
| <code>Description</code>
 
| <code>Description</code>
 
|  
 
|  
| Create a new BuildingDescription instance parameter, assigned to the Project Information object.
+
| Create a new <code>IfcDescription</code> instance parameter, assigned to the <code>HVAC Zone</code> object.
 +
| Create a new <code>ZoneDescription</code> instance parameter, assigned to the <code>Room</code> object.
 
|-
 
|-
 
| <code>ObjectType</code>
 
| <code>ObjectType</code>
 
|  
 
|  
| Create a new BuildingObjectType instance parameter, assigned to the Project Information object.
+
| Create a new <code>IfcObjectType</code> instance parameter, assigned to the <code>HVAC Zone</code> object.
 +
| Create a new <code>ZoneObjectType</code> instance parameter, assigned to the <code>Room</code> object.
 
|-
 
|-
 
| <code>LongName</code>
 
| <code>LongName</code>
 
| Yes
 
| Yes
| Create a new BuildingLongName instance parameter, assigned to the Project Information object.
+
| Create a new <code>IfcLongName</code> instance parameter, assigned to the <code>HVAC Zone</code> object.
 +
| Create a new <code>ZoneLongName</code> instance parameter, assigned to the <code>Room</code> object.
 
|}
 
|}

Revision as of 03:21, 17 March 2020

IfcSite

The following attributes may be set on the IfcSite. If you have a Toposurface object overriding your IfcSite object representation as detailed in Revit geolocation, the procedure is slightly different. Do not implement both procedures simultaneously. Note that in Revit, only a single IfcSite may exist. It is not possible to create multiple sites.

Attribute Name Required Procedure with Toposurface Procedure without Toposurface
Name Yes Create a new IfcName instance parameter, assigned to the Toposurface object. Create a new SiteName instance parameter, assigned to the Project Information object.
Description Create a new IfcDescription instance parameter, assigned to the Toposurface object. Create a new SiteDescription instance parameter, assigned to the Project Information object.
ObjectType Create a new IfcObjectType instance parameter, assigned to the Toposurface object. Create a new SiteObjectType instance parameter, assigned to the Project Information object.
LongName Yes Create a new IfcLongName instance parameter, assigned to the Toposurface object. Create a new SiteLongName instance parameter, assigned to the Project Information object.
LandTitleNumber Yes Create a new IfcLandTitleNumber instance parameter, assigned to the Toposurface object. Create a new SiteLandTitleNumber instance parameter, assigned to the Project Information object.
SiteAddress This may be set via File > Export > IFC > Modify setup > General > Project Address and checking Assign address to site. Same procedure as with Toposurface.

IfcBuilding

The following attributes may be set on the IfcBuilding. Note that in Revit, only a single IfcBuilding may exist. It is not possible to create multiple buildings.

Attribute Name Required Procedure
Name Yes Fill out the Building Name field in the Project Information dialog.
Description Create a new BuildingDescription instance parameter, assigned to the Project Information object.
ObjectType Create a new BuildingObjectType instance parameter, assigned to the Project Information object.
LongName Yes Create a new BuildingLongName instance parameter, assigned to the Project Information object.
ElevationOfRefHeight Does not seem possible to change this value. Defaults to null.
ElevationOfTerrain Does not seem possible to change this value. Defaults to null.
BuildingAddress This may be set via File > Export > IFC > Modify setup > General > Project Address and checking Assign address to building.

An example of the building address settings to be provided is shown below.

Revit-building-address.PNG

Note that if you fill out address details in File > Export > IFC > Modify setup > General > Project Address, then that address will be exported twice in your IFC: once for the site and another for the building. This behaviour cannot be changed. Even unchecking Assign address to building/site will not remove this information, but only remove the link between the address and the building/site.

IfcBuildingStorey

IfcBuildingStorey elements are generated for each Revit level. The following attributes can be set:

Attribute Name Required Procedure
Name Yes This defaults to the Name parameter in the Identity Data parameter group. This is usually incorrect, as IFC names are usually short codes, not long descriptions. You can override this by creating a new IfcName instance parameter.
Description Create a new IfcDescription instance parameter.
ObjectType Create a new IfcObjectType instance parameter.
LongName Yes Create a new IfcLongName instance parameter. This should typically contain the same value as the Name parameter in the Identity Data parameter group.
CompositionType This is asserted by default to ELEMENT. It is not possible to override this. It is not possible to nest spatial structures in Revit.
Elevation This is automatically derived from the Elevation parameter in the Constraints parameter group. Although not obviously wrong, this does not match the current intention by buildingSMART. This is fundamentally broken in Revit.

IfcSpace

In Revit, there are Room objects, Space objects. Both of these objects translate into IfcSpace entities. Revit Area objects do not translate into IFC and are lost.

If you are exporting from a 3D view which has filters to turn certain objects on and off, you may have enabled the Export only elements visible in view option in File > Export > IFC > Modify Setup > Additional Content. If this is enabled, you must enable the Export rooms in 3D views option, or IfcSpace entities will not be created in your IFC file. Despite the use of the word "rooms", the option applies to both Revit Room and Space objects.

Revit-export-spaces.PNG

The following attributes may be set:

Attribute Name Required Procedure
Name Yes This defaults to the Number parameter in the Identity Data parameter group. You can override this by creating a new IfcName instance parameter.
Description Create a new IfcDescription instance parameter.
ObjectType Create a new IfcObjectType instance parameter.
LongName Yes This defaults to the Name parameter in the Identity Data parameter group. You can override this by creating a new IfcLongName instance parameter.
CompositionType This is asserted by default to ELEMENT. It is not possible to override this. It is not possible to nest spatial structures in Revit.
PredefinedType This defaults to INTERNAL. It is not possible to override this.
ElevationWithFlooring This is null by default. Create a new IfcElevationWithFlooring instance parameter.

IfcZone

The Revit HVAC Zone object translates into IFC IfcZone entities. In addition, it is also possible to group Revit Room objects into IfcZone entities. To do this, create a new ZoneName instance parameter assigned to a Revit Room object. For each unique string supplied in this parameter, an IfcZone entity will be created.



Warning Warning: Virtual IfcZones created by grouping multiple Revit Room objects will not maintain their GlobalId values on subsequent exports. Additionally, if two ZoneName parameters have the same value, but their other attributes, such as ZoneDescription are different, then only one will be exported, and the rest of the data will be lost. It is not clear to the user which will be retained and which will be lost, so care must be taken to manually ensure data consistency between all these fields.


The following attributes may be set:

Attribute Name Required Procedure with Revit HVAC Zone Procedure with virtual zone from Revit Room
Name Yes This defaults to the Name parameter in the Identity Data parameter group, concatenated with the Revit Element ID. This concatenation usually results in an undesirable value. You can override this by creating a new IfcName instance parameter. Create a new ZoneName instance parameter, assigned to the Room object.
Description Create a new IfcDescription instance parameter, assigned to the HVAC Zone object. Create a new ZoneDescription instance parameter, assigned to the Room object.
ObjectType Create a new IfcObjectType instance parameter, assigned to the HVAC Zone object. Create a new ZoneObjectType instance parameter, assigned to the Room object.
LongName Yes Create a new IfcLongName instance parameter, assigned to the HVAC Zone object. Create a new ZoneLongName instance parameter, assigned to the Room object.