Modeling Paris with InfraWorks

It has been a while since I wanted to play with InfraWorks, but I never had the chance, nor any purpose until recently, when I start to ponder on retrieving existing conditions to integrate future buildings in existing conditions, without having to rely on time-consuming on-site surveys.

When starting with InfraWorks, the easiest way to create a model is to use the Model Builder. This feature use data from OpenStreetMap and Microsoft Bing Maps to create fully featured models, with terrain, roads, orthophoto, and so on.

The Model Builder interface

The Model Builder interface

Using this Model Builder, I quickly create a complete 3D model of Paris.

The initial model created from OpenStreetMap

The initial model created from OpenStreetMap

However, this model is not accurate enough for any practical application. For example, the 10-stories building where I live is modeled as a 2 levels building. My idea was to use these buildings for site integration and lighting solar studies, but building heights provided by OpenStreetMap is not reliable enough, I had to find another data source.

I am quite envious of the data used to build Google Maps, which can provide us a 3D model of every building, based on 45-degree aerial imagery. But these data are obviously not easily available, and I fall back on open data.

APUR, the Paris Urban Planning Agency provide an Open Data platform with a lot of datasets about Paris and its suburbs.

Their “EMPRISE BATIE PARIS” dataset contains every building in Paris in Shapefile format. Importing it in InfraWorks is quite easy, but this dataset must be configured to map its values with InfraWorks features.

To do so, it is necessary to map the information contained in the dataset to the property of building objects in InfraWorks.

Configuring the dataset

Configuring the dataset

Some properties, like Roof Height, can be easily filled with data coming from the APUR dataset. However, this dataset is far richer than that, and I wanted some specific information, like construction date, to be imported in InfraWorks as custom properties.

To create these custom fields, I have to edit the “im.schema.json” file located in “%USERPROFILE%\Documents\Autodesk InfraWorks Models\Autodesk 360\modelNumber\modelName.files\unver. Using the indications found here, I edit this JSON file to create five custom fields for the “Building” class in InfraWorks: Construction Date, Refurbishment Date, IHG (Hight-Rise Building), Roof Height Standard Deviation and Roof Type. These fields are then mapped to the corresponding values found in the APUR dataset, using the Table tab in “Data Source Configuration”.

Mapping custom fileds

Mapping custom fields

Since my data contains the type of roofing material of the building, I create a rule to match the appearance of the building with my dataset. These Roof Type values are integers defining a roofing material for every building.

Using great explanations from here, I create a small script to map these values to a roofing material in InfraWorks, with a switch command on the type of roof described in the dataset.

//Added by me

switch (SOURCE["C_TOITDOM"])
{
case 0: BUILDINGS.ROOF_MATERIAL = "Material/Roofing/Spanish Tile Brown";
break;
case 1: BUILDINGS.ROOF_MATERIAL = "Material/Roofing/Spanish Tile Brown";
break;
case 2: BUILDINGS.ROOF_MATERIAL = "Material/Roofing/Zinc";
break;
case 3: BUILDINGS.ROOF_MATERIAL = "Material/Roofing/Slate Grey";
break;
case 4: BUILDINGS.ROOF_MATERIAL = "Material/Roofing/Masonry Stone Black";
break;
case 5: BUILDINGS.ROOF_MATERIAL = "Material/Roofing/Grass Augustine";
break;
default: BUILDINGS.ROOF_MATERIAL = "Material/Roofing/Spanish Tile Brown";
}

 

Most of Paris buildings have a very characteristic zinc roof, a material that is not available by default in InfraWorks.

Typical Parisian roofs

Typical Parisian roofs

Using the style palette, I create my own zinc material from a picture and a few settings.

Creating a custom "Zinc" material

Creating a custom “Zinc” material

My final experiment was to use the Feature Themes tab to display construction dates for Parisian buildings.

This function allows me to add a color scheme to my buildings to display values, here the construction date.

FeatureThemes

The result in quite compelling, every building is displayed in color per its construction date.

Displaying construction dates

Displaying construction dates

Building models of entire cities is incredibly easy with InfraWorks, and as long as you have correct data sources, it seems to be the perfect tool to re-create the environment for your studies.

Bridge design

One of my colleague is currently working on bridge design with Revit. I have to admit, my first reaction was more like “Revit is not fit for bridge modeling, period”. But after some thought, I found Revit to be a pretty interesting solution to design these kind of infrastructures.

The main issue is that even a simple bridge has a rather complex geometry, with a double-curved alignment and potentially a variable cross section. There is various possibilities to create this kind of geometry in Revit, I will present only one of them here.

This entire article is mostly inspired by the work of Matthias Stark, from Autodesk, and its great AU 2015 class.

The alignment

The first issue we ran into while designing our bridge is the inability for Revit to create a real double-curved, 3D curve.
This is why I create my alignment in Rhino, and use Grasshopper to create a list of X, Y and Z coordinates that define points along my alignment. Another solution is presented by Matthias Stark in his class, where he is using AutoCAD Civil 3D to export the coordinates of the alignment in an Excel spreadsheet.

Once I have all my coordinates in an Excel file, I use a simple definition in Dynamo to create a series of reference points in a Mass family, and use these points to create a curve representing my alignment.

Alignement

I also make sure that units in my Revit mass family are consistent with the unit of my alignment coordinates points.

The cross section

To create the cross section shape of my bridge, I use an adaptive family with a single adaptive point, which will be placed on our alignment.

The keep our cross section properly aligned with our bridge axe, I use the “Orient to” parameter of the adaptive point. By setting it to “Global (z) the Host (xy)”, I make sure than the X and Y axes (Red and Green) will follow my alignment, while the Z axe will stay vertical.

axesI make a few try before getting it right, but I was finally able to properly align my adaptive component with the divided path. Since the X (Red) axis will be tangent to the alignment, I had to draw my cross section in the “Center (Left/Right)” plane of the adaptive family.

adaptiveFamily

Modeling

The rest of the modeling is pretty straightforward. After placing the first adaptive component on a divided path based on our alignment, just select Repeat to place one on every division point, then decompose the Repeat pattern and create a form.

repeat

form

To create the cavity inside the bridge deck, I use the same divided path to place two cavity profiles (right and left) and create two void forms to cut into the bridge deck.

voidForms

Section View

The main issue with this mass family is around dimensions. If you try to add dimensions directly on the Mass family in a section view, these dimensions will be anchored on the wrong point.

firstSection

To be able to create section view anyway, I am using the adaptive component loaded in the Mass family. I make it visible in the project and draw a detail line along one of them. This detail line allows me to draw a section view perfectly aligned with my adaptive component

sectionView

Since my section is perfectly aligned with my profile, it appears in the view and can be used as a reference for the dimensions. I temporary hide my mass family, place the necessary dimensions and show again the mass.

With this workaround, I was able to create a simple section view, with the proper dimensions.

section

Matthias Stark also present in his class an entire detailing process using Dynamo, and that I still have to explore this part. But his approach to bridge modeling allows me to create a great first draft, and I will keep on digging this solution.

Wall openings

I came back from the first meeting of the Paris Revit User Group. Julien Benoit give us great insights on how to use Dynamo for data management and Revit automation.

His point of view give me some ideas to feed my current obsession, wall openings.

Modeling opening where ducts, pipes, cable trays or conduits intersect walls or floors can be a tedious business. Anyway, it always relies on the same underlining principle: we place a face-base opening family on the wall at the intersection with the duct, the pipe or the cable tray. We also respect a few rules of thumb when placing these openings to keep a structurally sound wall.

Concrete-Formwork

There is a handful of plug-in for placing them automatically but they all need a fair amount of work to replace them properly afterward, so I decide to stick to a more “manual” solution.

First of all, I use Navisworks to find where I have to place these openings. It gives me a list of walls. Then, I use Dynamo to create an elevation in front of each of these walls. These elevations ease the process for placing the opening family in the concrete model.

The entire process can be sum up like this:

processComplete

The Dynamo definition use the wall bounding box and normal to create the section view coordinate system. I fumble around with Min and Max points to set the proper crop box for the final view. I also use a few nodes from archi-lab.net package to retrieve walls from their ids. You can find the entire Dynamo definition here.

“A problem well defined is a problem half solved”, and displaying a view of each problem is my first step toward the solution, even if I haven’t find yet any way to automate the entire wall opening thing.

Parametric Bridge

Today, I introduce you Louis-Marie Borione, one of my colleague and friend, to talk about his work with Grasshopper for civil engineering.

Hi everyone, I am a BIM Manager in a large infrastructure engineering company in France, and I thank BIM42 to give me the opportunity the present you my work on parametric Bridge.

I recently worked on a preliminary design for a bridge in the Middle East. When starting looking at conceptual design drawings I came with the impression that we would have to make a lot of hypothesis.

Bridge

For example the height above ground at bridge ends is not dimensioned . The idea was to produce any kind of BIM model of this bridge therefore I first thought of using Rhinoceros and Grasshopper.

So I listed all of my hypothesis:

GH

And I started building the wireframe model:

Rhino

And the final model:

FinalModel

Then I had to produce cross sections, longitudinal sections and plan views. I tried to do it within Rhinoceros but the result wasn’t good enough. Additionally some cross beam had a different shape, and using Grasshopper it is difficult to customize some elements.

My next idea was to be able to transfer this model to Revit. After a quick tour on Google, I found the grasshopper plugin Hummingbird. Using Hummingbird plugin for Grasshopper you export geometry from Grasshopper to an Excel Spreadsheet and using Hummingbird plugin for Revit you import that Excel Spreadsheet.

BrideFinal

At the end the process became quite complicated. When changing in input value in Grasshopper it took more 30 minutes to populate that changes to Revit.

I finally thought about using Dynamo to create directly a parametric model of the bridge within Revit. Unfortunately Dynamo is quite hard to use and I think it would make a great subject for a future post on BIM 42.

Thank you so much for this content, and I must say I totally agree with you about Dynamo, I should already have started to work with it.