What Is Dynamo?
I have put more time into thinking about the answer to this question than I would like to admit. It’s a question that is hard to answer for two reasons. First, Dynamo is a highly capable program and second, the program is flexible enough to be used across all disciplines within the industry and is only limited by the imaginations of the team providing the inputs. So, as you can see there is no right or wrong answer.
Here is my definition: Dynamo is a visual programming tool used to define relationships and create algorithms that then can be used to generate geometry in 3D space and to process data.
The first obstacle to overcome is understanding how to build distinct relationships that, once created, can be pieced together to create a powerful workflow. To do this one must think like a programmer. Dynamo, after all, is also a programing language.
Understand how Dynamo interacts with Revit
Introduction to building parametric geometry
Using Dynamo as a database management systems
Keys to Success
The key to success in working in this new way is to understand how important a solid, well thought out foundation is. This means having a clearly mapped out process and establishing a well-organized set of standard Revit parameters and families that satisfies one’s needs. This process does take time but it will lead to dramatic time savings and be the foundation of continuous improvement.
Start by thinking of a relational database. A relational database is a set of tables containing data in predefined categories. Each table contains one or more data parameters in columns. Each row contains a unique instance of data for the categories defined by the columns. Sounds like Revit, right? That’s because Revit is a relational database; it just uses different terminology.
A great example of this is the Revit “Element ID.” That parameter is there to serve as the Primary Key. Primary and Foreign Keys play an important role in relational databases. A Foreign Key is a field in a relational table that links back to the Primary Key column of another table. A good example is a space HVAC zone. The zone number acts as the primary key for mechanical equipment. That unique ID is used as the foreign key in the space table. It is this relationship that allows Dynamo to connect elements together.
Dynamo Script Design
Later we will look at nodes but before we do, we need an overall understanding of Dynamo workflows. I like to start by thinking about what my end goal is and then I work backwards to figure out what I need to do to achieve my goal, which usually involves several steps.
Andrew Duncan and Andrei Capraru had a beautiful metaphor for this in their Autodesk University presentation An MEP Engineer’s Guide to Dynamo. They compared building a Dynamo workflow to cooking a meal. Using their diagram below, let’s take a look at cooking our own meal. We start by selecting the meal we want to make. Next, we pick out the ingredients that we will need and, unless we are making macaroni and cheese, we will need to chop, measure, and mix these ingredients together. Think of data as our ingredients and Dynamo is like having a Swiss Army Knife of an appliance that automates the chopping, measuring, mixing and cooking.
Using Dynamo requires programing theory and it is therefore good to understand some basics. Here I will point out some key concepts one must understand to be successful when writing Dynamo scripts. We will explore these concepts in more detail later but first, let’s begin by understanding that all data in Dynamo is organized into lists.
Next, we need an understanding of Revit and Dynamo hierarchy. For illustration purposes let’s consider Russian Dolls. Most Dynamo workflows start by selecting a category in Revit. In this analogy, the outer most, biggest doll is the Revit category (wall, mechanical equipment, electrical receptacles, etc.) We then open the doll to reveal all the elements contained within the category. If your category is wall, think wall types- exterior wall, brick, CMU, etc. Now open the element doll to reveal the parameters of the wall type- i.e. name, area, fire rating, etc..
Managing Data with Dynamo
Now that we understand what lists are, it’s time to start manipulating those lists to get what you want. The options here are endless and will be the building blocks of more complex programs later.
First, there is a wide range of list functions built into Dynamo. I would recommend taking time to explore these options to see what they can do.
Second, there are a wide range of predefined mathematical nodes with which one should be comfortable. From simple addition to complex formulas, math is a great way to start building numeric relationships and patterns among Revit elements.
Third, we have strings. Strings are a sequence of characters representing a literal constant or some type of variable. A “string” is basically programming lingo for “text.” We will work with numbers and strings to drive parameters in our examples.
Fourth, there is the concept of logic, or more specifically, conditional logic. Building logic involves putting together the lists, math, and strings to produce the intended output of the designer. Executing our logic will produce a Boolean value representing True or False that we can use to build and filter lists which allow the flow of data.
Finally, the last key concept to understand about Dynamo is list lacing. We’ll get into the details in a minute but first just understand that different lacing techniques affect the output of your data.
Example 1: Points, Lines and Lacing
Let’s start with the most basic part of Dynamo, points and lines, and apply the fundamentals we just covered. Here we have made two lists of points, the second of points contains two less points and the points are offset upwards. The result of cross lacing the Line.ByStartPointEndPoint leads to the Dynamo geometry looking like the Cross Product diagram above. What would happen if I change the lacing on the Line.ByStartPointEndPoint node? The Dynamo geometry matches the diagram from above, depending on which lacing option one chooses.
Example 2: Parametric Geometry
Below, we will build parametric geometry using points and lines. In the video we show how moving the sliders to our inputs, we can shift, stretch, and manipulate the geometry until we get our desired result. Using sliders allows us to quickly run through multiple iterations much quicker than manually inputting the data and hitting return.
Example 3: Making Revit Geometry
Now that we have lines in dynamo we can start making Revit geometry. Here we will use the lines to make Revit walls and floors but the potential to create other elements are endless. Dynamo allows the designer to build complex Revit geometry that normally take countless hours, often filled with frustration and riddled with expletives.
Database Management System
A database management system (DBMS) is a software used to create, retrieve, update, and manage databases. Dynamo is great at processing all kinds of data and Revit is a database-- it’s a perfect fit! Here are some examples of how Dynamo uses data that we already in order to automate otherwise mundane clicking, dragging, and copying. These workflows improve efficiency and quality control as well as reduce redundancy and drive improvements in productivity.
Example 4: Make Levels, Views & Sheets
Our first example of automation is to create the necessary Sheets and Views for the project. We will use the data produced from Example 3 to eliminate the need for manual data entry. This data can also be converted into strings that can then be manipulated to conveniently number and name our new views and sheets. It is even possible to automate the placement of all necessary views, schedules, and legends. Aside from saving a lot of time, the result is a uniform set of documents across the various disciplines. Without the automation that Dynamo provides, this would be an extremely time-consuming process, crippling every discipline from the onset of a new project.
Example 5: Data From Linked Models
One option to make Revit MEP Spaces from a linked architecture model is to head over to the Autodesk store and download the Space Naming Utility app. This app has 2.5 stars and adds unnecessary space in chase and gaps. Alternatively, one could build their own app with Dynamo and Dynamo Player. The script below automatically assigns the names and numbers from architectural rooms to Revit MEP spaces. Additionally, other data, including geometry, can be mined from the linked model. This eliminates the data drop between architects and engineers helping save time and simplifying your workflow.
Example 6: Data From Other Sources
Dynamo also has the ability to link our Revit model to external libraries, databases, and programs. The simplest way to demonstrate this is to link Revit to Excel. If you can get data from other programs into Excel, you can get it into Revit…and you should. The figure below demonstrates how we can read. There is also the ability to write to Excel.
Example 7: Algorithmic Placement Of Revit Elements
This last exercise will combine most of what we just went over as we use both geometry and data to drive algorithms that place and set parameters for Revit elements with the aide of Dynamo. In the image and video below, we are placing air diffuses on the ceiling based on a set gap. Logic statements can and should control the spacing. Other parameters could be set at this time like, the space’s Primary Key will be placed inside the elements as the Foreign Key, linking these items together so Airflow or CFM can be calculated and populated.
Hopefully by now one can see how implementing Dynamo into their workflow can reduce errors by eliminating unnecessary redundancy and therefore improve efficiency and productivity. Again, the key to success is building a process, with coding in mind, that creates a solid foundation. A reliable program will allow project teams to introduce automation, isolate and simplify tasks, facilitate better collaboration, and enhance communication in order to optimize project delivery with less risk and less time.
We are on the verge of a revolution in the Computer Aided Design industry. Now is the time to get over the learning curve so you can stay competitive. The choice is yours, reading this introduction or listening to my lecture will not be enough. Curiosity, exploration, and putting in the time is the only way. I hope this peaked your curiosity and provides a good foundation for your learning. Have fun and be part of a revolution!