Understand and improve the outer shell of the building to support your digital twin building layer, BIM, ARCGIS PRO, REVIT, IFC

Understand and improve the outer shell of the building to support your digital twin building layer, BIM, ARCGIS PRO, REVIT, IFC
Understand and improve the outer shell of the building to support your digital twin building layer, BIM, ARCGIS PRO, REVIT, IFC

introduction

The urban planning departments are increasingly adding digital deliveries to your workflow requirements -especially for 3D -Digital models (BIM). City planners, architects, engineers and stakeholders can simulate, analyze and visualize the infrastructure of a city by integrating these plans into real data before the physical construction begins. This enables better decision -making, improves cooperation between multidisciplinary teams and improves the overall efficiency and sustainability of urban development. This shift towards data -controlled, integrated urban planning changes the redesign of the growth of cities and ensures that they are more sustainable, livable and future -proof. With the increasing increase in the urban population, the use of BIM in urban planning will be of central importance in order to create cities that can effectively overcome new challenges.

Before you started

What you need

  • ArcGIS notebook included in this post
  • ArcGIS Pro 3.2 or higher

After several digital models have been combined as a single feature data record, you can now examine the result of the outer shell to determine whether it meets the requirements. The picture below shows that the outer shell layer for both buildings lack the roof and the lower floor and many unnecessary inner elements such as seats and pipes that negatively influence the performance.

Exterior formation
Exterior formation

Before you can repair the feature feature course from Exteriorshell, you must understand how the outer shell is created.

The creation of the outer shell depends on the data type (building, bridge, street, etc.) and data format. In this example, you will check the outer shell from a building with source data from Revit. For a standard building bowl, the Outteriorshell feature class is created by looking at the windows, doors, walls and floors (where the attribute function Is set to External). After these elements have been grouped, you will find the next functions in the generic model: columns (only the architecture), stairs and stair railings. As soon as all categories have been identified, the Exteriorshell feature class is created.

The outer shell shown above was created from a digital model that is the result of the combination of 46 different revIT files. Each digital component of the component has its own feature course class for external huts, all of which were attached to a single functional class by running the BIM file on geodatabase geocrocessing tool. Due to the different types of Revit files used, not all followed the behavior of the building bowl and instead brought attributes from the behavior of the Fallback shell.

In order to better understand the creation of the outer shell for different types of structures and formats, you can find in the following graphics.

Revit Exterior Shell rules for the building area layer
Revit Exterior Shell rules for the building area layer
IFC outer shell rules for building the layer
IFC outer shell rules for building the layer

The rules documented above were based on ARCGIS Pro 3.3.

After you understand how the outer shell is created, you can ask the modeler or designer to fix some of the problems you have discovered. In this case, the project has already been submitted, so that you have to repair the outer shell directly from the geodatabase instead.

Complete the following workflows to improve the outer shell of the building level, including manual workflow and automation with ArcPy.

Edit the Feate Feature course manually from outside

First, improve the External Feature class, so the representation of the building is more realistic.

  1. Optionally, create a copy of the external course class.

This is recommended so that you have a better control over the elements that are deleted and added to the feature class and if you have to return to the original Exteriorshell feature class.

  1. Open a local scene.
  2. Add the scene of the outer shell feature class.

Delete elements

Next, delete elements.

  1. Select the element.
  2. Delete the sound harm.
Sound -loving elements
Sound -loving elements

3. Delete the furniture.

Furniture elements
Furniture elements

4. Delete the heating pipes.

Heating elements
Heating elements

5. Delete the HLK system.

HLK elements
HLK elements

Add elements

The current outer shell feature class shows neither the roof nor the first floor or the elements on the ground floor.

  1. Add the Feate floors -Featature class.
  2. Navigate through the scene to get a better perspective.
The floors have class
The floors have class

3. Create a definition request based on the “Building level” attribute by selecting BLDGLEVEL And Contains the value (s)and check the 2Present 10And 8 Boxes.

Definition query
Definition query for the soil layer

V.

Selected floor elements
Selected floor elements

You can now attach these elements to the feature course of the outer shell.

5. Open the Appendix -Geocessing tool and set the following parameters:

A. for Enter the data recordchoose Floors.

B. for Target datachoose External.

C. for Field passchoose Use the field card to reconcile field differences.

Understand and improve the outer shell of the building to support your digital twin building layer, BIM, ARCGIS PRO, REVIT, IFC
Take the geoprocessing tool to attach the floor elements to the feature course from Exteriorshell

6. Click Click Run.

Exteriorshell's feature course now contains the soils added by the append Geoprocessing tool.

New Exteriorshell feeding class
New outer layer

Automate the processing of the feature course from Exteriorshell

The following code shows the workflow to improve the Outteriorshell feature class, so the representation of the building is more realistic.


import arcpy

# Set the input geodatabase and workspace
input_gdb = r'C:\Projects\Jihlava_MultipurposeAreana_2025.gdb\Multi_Areana'
arcpy.env.workspace = input_gdb

# Define feature class and layer names
exteriorshell_fc = 'ExteriorShell_Multi_Areana'
floors_fc = 'Floors_Multi_Areana'
working_layer = "memory\\ExteriorShell_lyr"
working_floors_layer = "memory\\Floor_lyr"
temp_fc = "ExteriorShell_Temp"

# Delete existing temporary layer if it exists
if arcpy.Exists(working_layer):
    arcpy.Delete_management(working_layer)
# Create a feature layer for processing
arcpy.management.MakeFeatureLayer(exteriorshell_fc, working_layer)

filter_field = 'DocName'
filter_values = [
    '19_024_JIHL_I_ESI',
    '19_024_JIHL_I_INT',
    '19_024_JIHL_I_PODHLED_AKU',
    '19_024_JIHL_I_TRB',
    '19_024_JIHL_I_VZT',
    '19_024_JIHL_III_ESI',
    '19_024_JIHL_III_INT',
    '19_024_JIHL_III_UTCH',
    '19_024_JIHL_III_VZT'
]
# Build SQL WHERE clause to exclude these DocNames
where_clause = f"{filter_field} NOT IN ({', '.join([repr(name) for name in filter_values])})"
print(where_clause)

# Select features not in the excluded DocNames
arcpy.management.SelectLayerByAttribute(working_layer, "NEW_SELECTION", where_clause)

# Delete existing temp feature class if it exists
if arcpy.Exists(temp_fc):
    arcpy.Delete_management(temp_fc)

# Copy the selected features to a new feature class
arcpy.management.CopyFeatures(working_layer, temp_fc)

# Delete existing temporary floor layer if it exists
if arcpy.Exists(working_floors_layer):
    arcpy.Delete_management(working_floors_layer)
# Create a feature layer from the floors feature class
arcpy.management.MakeFeatureLayer(floors_fc, working_floors_layer)

filter_field = 'BldgLevel'
filter_values = [2, 8, 10]
# Build SQL WHERE clause to select these BldgLevels
floors_where_clause = f"{filter_field} IN ({', '.join([repr(name) for name in filter_values])})"
print(floors_where_clause)

# Select floor features based on the where clause and append to temp_fc
arcpy.management.SelectLayerByAttribute(working_floors_layer, "NEW_SELECTION", floors_where_clause)
arcpy.management.Append(inputs=working_floors_layer, target=temp_fc, schema_type="NO_TEST")

# Replace the original exterior shell feature class with the updated one
if arcpy.Exists(exteriorshell_fc):
    arcpy.Delete_management(exteriorshell_fc)
    arcpy.AddMessage('Exterior Shell Layer Deleted')
    arcpy.Rename_management(temp_fc, exteriorshell_fc)
    arcpy.AddMessage('Generalized Layer Renamed to Exterior Shell')
    arcpy.AlterAliasName(exteriorshell_fc, 'ExteriorShell')

# Optional cleanup of temporary layers
for lyr in [working_layer, working_floors_layer]:
    if arcpy.Exists(lyr):
        arcpy.Delete_management(lyr)


This automation code is specific to this project, but you can use it as an example to implement automation with your data.

Summary

After these steps, you can now automate an outer shell, improve and add more details. They can be used online in ArcGis Pro or on ArcGIS.

recognition

Many thanks to ArcData Prague, Sro and the city of Jihlava (Jihlava Rathaus) for sharing the digital models.

Download the ArcGIS notebook

Leave a comment

Your email address will not be published. Required fields are marked *