When preparing building information modeling (BIM) data to import to the ArcGIS Indoors Information Model, you must adhere to certain requirements and best practices for BIM data preparation. Indoors tools support importing BIM data from Revit files (.rvt) or IFC files (.ifc).
Georeference BIM models
BIM models must be georeferenced to ensure that the building and floor plan features are positioned and scaled correctly. The following steps describe a high-level workflow to georeference BIM models:
- Define the projection for the model.
The projection should include both a horizontal coordinate system and a vertical coordinate system.
Note:
If the horizontal and vertical coordinate systems do not use metric units and you import 3D data to create a scene, you must project the data into a metric-based coordinate system before sharing the scene to your ArcGIS organization.
- Reposition the model if necessary.
- Save the georeference.
Projection files (.prj) and world files (.wld3) are created during the georeferencing process and saved in the same folder as the corresponding BIM file (.rvt or .ifc) with the same file name. Alternatively, if you have multiple models with the same coordinate system or coordinate transformation, you can create universal projection files or world files files that apply to all CAD and BIM files in the folder that don't have associated coordinate files. To do so, rename the .prj file esri_cad.prj and the .wld3 file esri_cad.wld3.
Prepare BIM data to import to the Indoors model
You can use different tools to import BIM data to the Indoors model depending on the type of file where the BIM data is stored. Revit files can be imported using the Import BIM To Indoor Dataset tool and .ifc files can be imported using the Import IFC To Indoor Dataset tool. Refer to the sections below for guidance on preparing each file type for import.
Prepare Revit models
When you import BIM data from Revit models using the Import BIM To Indoor Dataset tool, the Indoors model is populated using the following elements and attributes from the BIM file workspace:
- Facilities—Facilities are created from the Footprint polygon. The Footprint polygon is created by aggregating the Floors features from the Revit model.
- Levels—Levels are created based on Floor elements and Stairs elements associated with the same BldgLevel property. You can inspect the features that will be included in the Floorplan_Polygon feature class in the Floorplan dataset when you open the Revit model in ArcGIS Pro. You can include Roof elements along with Floor elements when creating level features in the Indoors workspace by specifying roof levels for the Floors To Import parameter in the Import BIM to Indoor Dataset tool.
Note:
Levels defined in the .rvt file are considered levels in the Indoors model if they have the Is Building Story option configured in the .rvt file and associated floor or roof elements. Defined building stories influence how Level, Short Name, Level Number, and Vertical Order attributes, and 3D Details layer elements are imported to the Indoors model. You can modify this configuration or rename floors using an .ebc file.
Units—Units are created based on Room elements and Stairs elements in the Revit model. Before import, ensure that all indoor spaces are modeled as rooms in Revit to import them as Unit features in the Indoors model. Run the Extract BIM File Floorplan tool and add the polygon feature class to the map to inspect the features that will be included.
Attributes are populated in the Units layer using the following information from Rooms elements in the Revit model:
- The Name attribute for Rooms elements in Revit is used to populate the USE_TYPE field in the Units layer.
- The Room Number attribute for Rooms elements in Revit is used to populate the NAME field in the Units layer.
- The BldgLevel value of the associated level feature is used to populate the LEVEL_ID field.
- You can map additional attributes from Rooms features to fields in the Units layer, including custom fields, if the fields already exist.
Note:
Additional attribute mappings are not applied to units that are created based on Stairs elements where no Room element is present.
- Details—Details are created based on elements from the following Revit categories: Doors, Ramps, Stairs, Stair supports, Stair Landings, Columns, Structural Columns, Walls, Windows, and Curtain Wall Panels. Elements from these categories that will be imported can be inspected in the Floorplan_Polyline feature class in the Floorplan dataset.
- Facilities 3D—Multipatch features are created in the Facilities 3D layer representing the exterior of the building from the ExteriorShell feature class in the BIM file workspace. ExteriorShell features are derived based on elements in the BIM file that have the Function property set to Exterior.
- Units 3D—Multipatch features are created in the Units 3D layer and represent the footprint of objects in the Revit model's Rooms category.
- The Name field for Rooms elements in Revit is used to populate the USE_TYPE field in the Units layer.
- The Room Number field for Rooms elements in Revit is used to populate the NAME field in the Units layer.
- The BldgLevel value of the associated level feature is used to populate the LEVEL_ID field.
- Details 3D—Multipatch features are created in the Details 3D layer from objects in the following Revit categories: Doors, Ramps, Stairs, Stair supports, Stair Landings, Columns, Structural Columns, Walls, Windows, and Curtain Wall Panels.
- 3D elements must be associated with a level before running the Import BIM To Indoor Dataset tool.
- During import, 3D features that span multiple floors (such as walls or curtain panels) are sliced so that there is a 3D detail feature for each level the feature spans.
Tip:
ArcGIS Pro temporarily converts the contents of the Revit file to conform to the newest file format in memory before it reads the contents. For improved performance, it is recommended that you upgrade your Revit model to the most recent Revit file version that ArcGIS Pro supports.
Prepare IFC models
When you import BIM data from IFC models using the Import IFC To Indoor Dataset tool, the Indoors model is populated using the following elements and attributes from the BIM file workspace:
- Facilities—Facilities are created by aggregating the Slabs features from the IFC model.
- Levels—Levels are created by combining Slab elements, Space elements, and Stairs elements associated with the same BldgLevel property. You can include Roof elements when creating Levels features in the Indoors workspace by checking the Load Roofs parameter in the Import IFC To Indoor Dataset tool.
Note:
Levels defined in the .ifc file are considered levels in the Indoors model if they have the Is Building Story option configured in the .ifc file and associated slab or roof elements. Defined building stories influence how Level, Short Name, Level Number, and Vertical Order attributes, and 3D Details layer elements are imported to the Indoors model. You can modify this configuration or rename slabs using an .ebc file.
Units—Units are created based on Space elements and Stairs elements in the IFC model. Before import, ensure that all indoor spaces are modeled as spaces to import them as units in the Indoors model.
Attributes are populated in the Units layer using the following information from Space elements in the IFC model:
- The LongName attribute for Space elements in the .ifc file is used to populate the USE_TYPE field in the Units layer.
- The Name attribute for Space elements in the .ifc file is used to populate the NAME field in the Units layer.
- The BldgLevel value of the associated level feature is used to populate the LEVEL_ID field.
- You can map additional attributes from Space features to fields in the Units layer, including custom fields, if the fields already exist.
Note:
Additional attribute mappings are not applied to units that are created based on Stairs elements where no Space element is present.
- Details—Details are created based on elements from the following IFC categories: Doors, Ramps, Stairs, Stair supports, Stair Landings, Columns, Structural Columns, Walls, Windows, and Curtain Wall Panels.
- Facilities 3D—Multipatch features are created in the Facilities 3D layer and represent the exterior of the building from the ExteriorShell feature class in the IFC file workspace. ExteriorShell features are derived based on elements in the IFC file that have the Function property set to Exterior.
- Units 3D—Multipatch features are created in the Units 3D layer and represent the footprint of objects in the IFC model's Spaces category.
- The LongName attribute for Space elements in the .ifc file is used to populate the USE_TYPE field in the Units layer.
- The Name attribute for Space elements in the .ifc file is used to populate the NAME field in the Units layer.
- The BldgLevel value of the associated level feature is used to populate the LEVEL_ID field.
- Any additional attributes mapped to the 2D units layer are automatically mapped to the Units 3D layer if the same fields exist in the Units layer. Field mapping configured in the tool is applied to both the Units and Units 3D layers.
- Details 3D—Multipatch features are created in the Details 3D layer from objects in the following IFC categories: Doors, Ramps, Stairs, Stair supports, Stair landings, Columns, Structural Columns, Walls, Windows, and Curtain Wall Panels.
During import, 3D features that span multiple floors (such as walls or curtain panels) are sliced so that there is a 3D detail feature for each level the feature spans.
You must configure element attributes in the .ifc file based on the fields described above to ensure that features are accurately converted during import.
Advanced options for BIM data configuration
To further prepare BIM data for import, consider the following advanced configuration options:
- With Revit models, you can import linked .rvt files along with the host model. Linked .rvt files must be located in the same folder or nested folders in the same folder as the host Revit model.
When using the Import BIM To Indoor Dataset tool, linked Revit files are automatically detected after adding the host Revit model for the Input BIM File Workspace parameter. If importing linked Revit models with design options, the linked model design options are available for selection in the Design Options parameter.
Note:
Any linked Revit models must be correctly georeferenced and have the same horizontal and vertical coordinate system as the host Revit model.
- If a Revit file includes features in design options that you want to import to the Indoors model, you can use the Design Options parameter to import them. By default, only features in the main model are imported.
- Use an .ebc file to configure levels for a BIM file.
Importing invalid levels, such as landings, mezzanines, or empty slabs can result in extensive post-processing work to correct possible data issues.
An .ebc file is a simple JSON file that works similarly to a .wld3 file or a .prj file and includes configuration information for the BIM file. It should be saved in the same folder as the BIM file and have the same name. You can configure the .ebc file to modify the Is Building Story parameter configuration and level name from the definition in the source .rvt or .ifc file as follows:
- Set the isFloor parameter to true for levels that should be considered floors in the building and false for levels that should not be considered building floors. For example, you may want to set levels modeled for landings between floors to false to exclude them from being imported.
If a level exists in the BIM file but is not present in the .ebc file, the configuration in the BIM file is honored.
- Set the name parameter to update the name for a level. For example, for a level named "BD_302_2", you can set the name to something simpler, such as Level 2.
The following is a sample .ebc file JSON configuration:
{
"version": {
"version": "1.0",
"minVersion": "1.0"
},
"floors": {
"01 - Entry Level":{
"name": "Level 1",
"isFloor": true
},
"02 - landing": {
"isFloor": false
},
"02 - Floor": {
"name": "Level 2"
"isFloor": false
},
"Roof": {
"isFloor": false
}
}
}