Express 4D Simulation Scheduling and Construction Management with Dynamo


4D time simulations in Navisworks software for construction projects are often complicated BIM services to be used on a daily basis. Reasons can include problems in model coordination, time and element mismatches, time model execution availability, and more. With the approach outlined here, we will use the Dynamo player and Dynamo workflows with Revit 2021 to clean, manage, label, and even create a time schedule so 4D simulation can be easily created and the communication proposal facilitates model coordination and execution. We will cover several routine workflows so that all elements for any type of intelligent model are aligned, clean, and useful for project management, enabling us to link the model and time schedules with Navisworks in record time. The information presented in this article is the synthesis of 13 years of simulations from different projects to make 4D simulation a required task for all projects.

4D Simulation

4D simulation is the process of linking a time schedule with construction elements, so that it can easily give us an idea of how construction would be performed, tracked, and reported.

To create a 4D simulation, construction tasks and elements in the model need to be connected. That’s the main problem when doing it: the time schedule needs to have Revit elements and the model requires to have elements for all time schedule tasks.

My first 4D simulation project was a hospital with more than 300 hundred tasks and it became really complicated to link all elements, mostly because of mismatches between them and the required time execution.

After several 4D simulation projects, a lot of practice and improvements on efficiency methods, and the use of Dynamo on the workflow, it’s much easier to create 4D simulation that holds the characteristics required and can be created faster than ever before.

So let’s review the basics.

Related: Practical 4D Construction Simulation Using Revit and Navisworks with Kenneth Flannigan



Revit is a BIM software that allows us to create construction elements with parameters, so that elements can have properties such as measurements, categories, levels, materials, and coding capabilities such as the assembly code and keynote code.

By elements, models can follow construction processes and can be linked to tasks. The best approach is to create selections and save those values as tasks themselves, using a Shared Parameter.

A Shared Parameter is a custom created parameter that can be assigned to any Revit element so that information on it can be retrieved later.



Navisworks is a BIM platform software that allows us to coordinate multiple models with multiple data values and create interactions with them. It uses a selector by properties to create search sets and selection sets.

Search sets are property-driven selections that in this case can select elements by category, by parameter property value, and level. On the other hand, selection sets are user-defined selections for objects to be picked up.

Basic Simulation Workflow

The main problem is that elements are separated by multiple circumstances so that their requirements are specific and so on through the planning.

Create a 4D Simulation in Minutes

Dynamo Is a Game Changer

Dynamo is an application that runs over Revit, and on recent versions over Civil 3D, Advance Steel, and AutoCAD. It allows you to easily create by connections simple routines that can be tested and used to enhance several elements; specifically:

  • Improve complex modeling
  • Automate repetitive tasks
  • Set model management
  • Transform model information
  • Create interoperability between different files

So it enables workflows that can be nurtured by the requirements and the company standards. And in our case, it would transform completely the 4D simulation possibilities.

Dynamo may become overwhelming in some circumstances for new audiences, so just relax and start pulling strings and connectors so confidence can be built. Dynamo requires a lot of resilience, but the benefits are incredible. I have realized that there are three types of users:

  • Raw usersPull all nodes form scratch and link with normal coding
  • Medium usersUse workflow scripts and custom nodes to complete their requirements
  • Low usersUse the Dynamo player as their working tool

We will set the workflows for Medium and Low users, but all scripts would be shared.

Dynamo Setup

For Dynamo to work, we need to set up some libraries. So we need to click on Packages from the Dynamo window.


Open Search for a Packages and Add:

  • Data Shapes
  • PracticalBIM
  • Rhythm

Once we have it, we can create a New Script.


Using Dynamo for Writing the Simulation Parameter


There will be a left side of nodes and a right side with a 3D screen. On the top right, there are two icons to change from geometry to nodes–just ensure you are using the nodes selected.

Creating the Script

For the Script creation, we need to understand the logic of Dynamo; that is, it’s pulling the elements from one side to another, one input multiple outputs.

So it’s pulling information from Revit to process it and to write it back. First, two nodes are selecting all elements of the category we are requiring.


Categories involves selecting a Category. All Elements of a Category will get all elements. Elements in Dynamo have multiple characteristics and each element its linked with an object in Revit.

Next, we need to extract all elements on the model.


Then we need to join them with a List Create. The List Create would set all values on a single list, and through that we have control of all elements selected.


Next, we need to have the level properties value which will depend on the element we are selecting. Structural Foundations and Floors use the Level property but Structural Framings and Structural Columns use the Reference Level and Base Level.


The Get Parameter Value by Name its actually extracting information from the elements. The Information Extracted in this case is a Level element, hence it needs to be extracted using the property of Name.


With that transaction we get a text (String) value that can be easily used to write our label. So we need to compress it to change Level 1 to L1.

We are going to use the node GetCompresedStringF_N that changes names like that. The only requirement is to have a space before the number to be used.


For the Category Names, we can create a list with the same order as the categories selected.


Do the same list create with the level values and use a code block called a+”_”+b to add the Category Text to the Level Name to a single String.



And finally, we will use that result on the Model Elements with the node Element.SetParameterByName.


It may seem a little complicated if you are new to Dynamo, but at this point we already have one labeling script that can pull information to the exact spot that is required and we can used it with the player for any type of file as long as it’s using the Simulation parameter. Call the Script 01_Simulation Parameter. Learn more about writing simulation parameters in Dynamo.

Creating a Time Schedule from Model Information

The next process is to create, as easily as possible, a time schedule with all simulation activities. We need to start by pulling all categories in the proper order so that they can get proper timing.


And from there, we get the new Simulation parameter values so that we can find how many tasks are there, using a Get ParameterValueByName a Unique Items and a Sort so they are sorted by their values.


And then, by counting the number of elements, will give each field a duration value in days, such as 2 for foundation tasks, 2 for framing tasks, 3 for Columns Tasks, and 2 for Floors.

Next, mix them with the TimeDurationProgression node that would give us time separation for each particular task adding to the end a progression of days for each group to start.


With those numbers, it’s now easy to work with time, creating a starting date by numbers, and using the values of the progression as time spans that can be added to the start date, with the duration of those tasks.

Want more? Download the full class handout to read on.

Enrique Galicia is a BIM specialist who works as a consultant to several international firms. He provides real construction solutions to common problems while implementing and using BIM using Autodesk Revit, Autodesk Navisworks, AutoCAD Civil 3D, and Dynamo. He has 13 years of experience with workflows of BIM, interoperability, and developments. He has worked on more than 110 projects with BIM, and worked deeply on research to enhance future workflows for BIM uses. He was awarded Excellence Professor of Architecture in 2019 by the Tecnologico de Monterrey giving BIM courses and seminars. He has developed 81 online courses on Udemy’s platform to spread the word using BIM true potential with more than 15,000 students in over 154 countries, and is always happy to help.