Automated Rebar Designs with Dynamo Player

Since the latest update of Revit to version 2018.1, Dynamo Player, which is the powerful scripting tool that installs with Revit, is now even more valuable as a way to automate tasks. You can now adapt Dynamo scripts to better-fit your needs by requesting user input before use. Providing user input directly in the Dynamo Player interface lets customers make project-specific adjustments to scripts without having to know how to use Dynamo.

Applying these improvements in the area of rebar designs in Revit, expanded my imagination and inspiration instantly. And the originally created scripts for the automation of rebar design (such as area reinforcement or complex path reinforcement) are now modified to fit within the new Dynamo Player UI. (As usual, these scripts can be found at the bottom of the post.)

How to setup your script for Dynamo Player

Before seeing the scripts in action, first a few notes:

  • Make sure you have installed Revit 2018.1 (obviously). This will automatically update Dynamo to version
  • To make your scripts user-friendly in the Dynamo Player, it is advised to rename the input nodes. This can be done simply by double-clicking on the node header and give it the title you want.
  • Secondly, if you have input nodes which you don’t want to see in the Dynamo Player, you can simply hide them by unchecking the tick mark next to the “Is Input” property. This property can be found in the contextual menu of each node (right-click on the node to access it.)
  • To get the scripts visible in the Dynamo Player list, you need to copy them in the assigned Dynamo Player search folder. This can be changed with the typical folder icons on the Dynamo Player interface.

How does it work in practice?

Now let’s have a look how beneficial Dynamo Player is for the automation of rebar designs. The playlist below shows a few examples. Enjoy watching !


The scripts that are used in the videos above can be downloaded via this link.
Important notice: the scripts need the package BIM4Struc.Rebar to be able to execute the specific commands. Make sure you install the latest version of it in Dynamo.

Winning With Dynamo Webinar


The webinar “Winning With Dynamo” I hosted on 18th October 2016, 1pm CEST, tells you more about how Dynamo can change the way you think, design, analyse and produce buildings.

Did you miss it, and still want to see it? Then all you have to do is follow this link and watch the recording.

Have you seen it, got inspired by it, but would like to dive in the scripts that were demonstrated? Then you’re lucky again. Click here to download the content. Some of the content refers to other links, like Autodesk University classes, where you can see additional recordings of my presentations on the specific topics.

Concrete Bridge Construction Workflow

In the previous post, I talked about the “Detailed Design” of a concrete deck bridge and a possible workflow to connect it with the road design models. As the design of the reinforced concrete deck is made with Revit, we can profit of this rich BIM data model:

  • The separate elements are provided with metadata to identify them on site
  • Rebar objects are modelled into detail
  • The deck is divided in construction parts
  • Bending schedules are generated in the Revit model
  • The design is documented in detail with several views and sheets

Flyover RenderingDisplacement Sets Bridge
Rebar documentation

Now we have all of this valuable information, we should use it for the further construction of the bridge. The image below shows which Autodesk products could be used throughout the several construction phases of the concrete bridge project.

Product Mapping Construction Phase

Together with my great team mate Lee Mullin, one of the authors of the Beyond Design blog we have documented some great workflows where the Revit model of the concrete bridge is used as basis for Review, Clash Detection, Quantification, Construction Sequencing and Field Inspections.

The results are 12 new videos in the Concrete Bridge Design to Fabrication Workflow playlist on my YouTube channel, numbered from 17 to 28. The videos mainly represent some important possibilities of BIM360 Team (formerly A360), BIM360 Glue, BIM360 Field and Navisworks Manage.


When the created views in Revit are uploaded to BIM360 Team, external companies which are invited to the project, can review the model and add markups to it, all online, with a desktop or mobile device, connected to the internet.

Share designs on the cloudSome examples on this workflow are shown in the videos 17 and 18 from the playlist.

With A360 Viewer the model can be viewed online by anyone with the link. Want to test it yourself? Try this link.


As we say that with a BIM centric method, we build the construction before it’s built, then Multidiscipline Coordination is a very important process.

Multidiscipline CoordinationWatch this workflow in videos 19 to 23 of this playlist.


Getting the right quantities of the construction is another advantage of a BIM centric design method. Geometric and metadata are stored in the Revit model and can be displayed in Revit schedules or in a comprehensive quantification process in Navisworks.
QuantificationWatch this workflow in video 24 of this playlist.


Another important task to perform on the BIM model is the simulation of the construction. Which parts of the construction need to be on site when? What part is already constructed? Get more understanding of the project with timeliner simulations. This process is even easier when Parts are used in the Revit model, which is done in this case for the bridge deck.
Construction Sequencing
Watch this workflow in videos 25 & 26 of this playlist.


Finally, when the bridge is constructed, lots of inspections need to be done too. The workflow below shows how the Rebar Inspection and the Bearings Inspection are digitally performed with BIM360 Field.
Field Management  Watch this workflow in videos 27 & 28 of this playlist.

These workflows are just a small selection of what can be done with the BIM360 Portfolio in the infrastructural world. Enjoy the watching !


Concrete Bridge Design Workflow

The last few months I’ve been working intensively on a complete workflow for detailed design of concrete bridges with Autodesk Revit. In case you would ask me “Is Revit even capable of designing bridges with a high level of detail?” Well, my answer would be “Definitely YES !” And I would like to share you the results in what is probably my longest post ever on this blog. So take your time to read it…


Before I start explaining, maybe some background first. Some months ago, I needed to develop a POC of bridge design with Revit for some important customer meetings. In the past you might have seen already a solution from my colleague at Autodesk, Matthias Stark, which he explained in this class at AU 2015. Also Simon Moreau, author of the BIM42 blog based himself on this method in this post. So first of all, thank you Matthias and Simon for the inspiration. The workflow below is a consolidation of Matthias his method and the method I already used previously. The result is an easy to use flow, applicable on any type of concrete deck or box bridges or even concrete tunnels, using some Dynamo scripts that I have predefined for your personal use. All the data referred to can be downloaded at the bottom of this post.

Flyover RenderingFlyover Real


The full workflow from conceptual road/bridge design until detailed bridge design consists of 16 steps, which are all explained in this YouTube playlist “Concrete Bridge Design to Fabrication Workflow”. The image below shows a global overview on this workflow. This is a representation of what is possible currently possible with our solutions at Autodesk, and shows a positioning of the products for each phase.
Conceptual to Detailed Design Workflow Overview

  1. The conceptual road and bridge design can be done using Infraworks 360.
  2. This Infraworks model is then imported in AutoCAD Civil 3D for further detailing of the road design.
  3. The data, built up in AutoCAD Civil 3D, is then reused in Revit and Dynamo (by means of Feature Lines, Corridor Points reports, …) to get the detailed bridge design.
  4. Finally the bridge rebar detailing and design documentation are further processed in Revit.

This workflow is also setting the base for extended construction workflows. As all the concrete bridge design data is stored in the Revit model, it can be used in Construction Management (sequencing, quantification, clash detection) and Project Delivery Management. This involves BIM360 Glue, BIM360 Field, Navisworks Manage, BIM360 Docs,… An overview of the possible workflows can be found in the Bridge Design to Fabrication Workflows.pdf file which is included in the datasets at the bottom of this post.

So, this post is limited to the design steps with the creation of the superstructure deck family and the distribution of transversal rebar in the deck.


Before building this family, I listed up some requirements which the bridge deck family should meet.

  • The superelevation, width and thus also the slope for each lane are calculated from the Civil 3D data.
  • The family needs to be flexible and modifiable afterwards in the Revit project.
  • The Dynamo script used for the creation should be as small as possible and should be generic to use with other bridge sections or even tunnels.
  • The family should be built up that way that it can host annotations in 2D Section views (even if the section goes through a curve).
  • The family needs to be able to host rebar.
  • The Dynamo script needs to be able to handle any orientation of a bridge (seen in a planview), in any position of a circle quadrant.

Meeting these requirements, this method differentiates from current methods existing already on the internet.

Detailed Design of Concrete Superstructure

As you will see in this part of the playlist, the superstructure is created based on Civil 3D Corridor points and a Mass family representing the section profile of the deck. This “profile” is placed within the Revit main “Concrete Deck” family and then lofted to get a solid geometry.


Before you start trying this yourself you need to install the package BIM4Struc.BridgeDesign through the Package Manager in Dynamo.

The Dynamo script “01 Bridge Superstructure Creation.dyn” used for this, is included in the datasets at the bottom of this post.

Step 1 – Extract Civil 3D Corridor Points

The geometry of the bridge deck should be based on the solid geometry of the road, which is designed in AutoCAD Civil 3D. Important is that the slopes of each lane of the road can vary along the road length (ie. from -2.5% to +2.5%). This information is extracted from Civil 3D using the “Corridor Points Report” and this data is stored in an Excel sheet. In this method it needs points for the Top Left, Top Right and Top Center edges of the road. Using Marker Points in Civil 3D you can give your own names to these points. This step is explained in this video.
Corridor Points Report

Note: the reason why I used the Corridor Points Report and not just Feature Lines as an imported geometry in Dynamo, is explained in the reactions on this post (click on the balloon next the post title).

Step 2 – Create the section profile

As part of the “mise-en-place” you also need to create a family representing the section profile of the deck (T-deck, box girder or even tunnel). This is based on a “Metric Mass” family template. Make sure you create parameters for the superelevation, lane width and slope at the right and left of the road. As shown at 1:10 in this video, the values for the superelevation are recalculated within the family in order to handle positive and negative values.Section Profile family

After saving this family (“Concrete Deck Profile.rfa”), you load this one into a new family based on the “Metric Generic Model Adaptive.rft” template. You can change the behavior of this family in the Family Category & Parameters dialog. From there on we will use Dynamo to create the geometry.

Step 3 – Reading road data into Dynamo

Now we can start combining the information from step 1 and 2. This step starts at 2:11 in this video. The information about the road geometry can be read into Dynamo as a starter. The custom node “Road Splines from Excel” from the BIM4Struc.BridgeDesign package helps reading this Corridor Points report, by indicating the proper column indexes and Point Code descriptions (i.e. “RoadTopLeft”). If you choose to name these points differently in the Civil 3D model, then you need to change their descriptions as well in the Dynamo script.

In case the data changes in Civil 3D, you just need to regenerate the Corridor Points Report to Excel and rerun the script.
Road Splines from ExcelThe result of this operation are 4 3D Polycurves representing the road top edges (left, right and center) and also the projection of the centerline at level 0 m. These lines will be used later to calulate the superelevations (lane slopes) at specific intervals.

The ConversionMultiplier can be used to convert the units. By default it is set to 1000 to convert the metric “m” used in the Civil 3D model to “mm”, which is the unit used in the Revit project.

Note that within the custom node, the coordinates are reset to the internal Revit origin, this to avoid the geometry being positioned at geographic coordinates in a Family. To achieve that, the coordinates of the start point of the centerline are set to 0, while the other coordinates are recalculated relatively to that point. Afterwards this will make it easier to position the bridge deck family in the Revit project (i.e. based on the imported feature lines in Revit).

Reset geometry to Revit internal origin

Step 4 – Setting the bridge deck parameters in Dynamo

Before continuing with the geometry we need to setup the bridge parameters:

  • Bridge Alignment Variables:
    This group allows to add an offset and/or skew angle to the first and last profile of the bridge deck. These values are further on used to divide the alignment lines.
  • Bridge Superstructure Section Definition
    The configuration of this group depends on the way the “Concrete Deck Profile” family is created. In this optional part you can set the type parameters of the nested family, before it is placed.


Step 5 – Generating the bridge deck geometry with Dynamo

Starting at 3:25 in this video a second custom node is brought into the script. The node Bridge Section Profile Placement from the BIM4Struc.BridgeDesign package will place the initially created “Concrete Deck Profile” family at the right positions and orientation. The node is built in a way it doesn’t matter in which quadrant of a circle the planview of the bridge is positioned and orientated. It will adjust the profiles accordingly. Practically this means that the centerline points can have coordinates with syntaxis (-x,-y), (-x,y), (x,y) and (x,-y).
Bridge Section Profile Placement

This custom node needs the Polycurves from the road and the centerline at level 0 m as inputs. The ProfilePositionParameters port needs a list with values between 0 and 1 indicating the positions of the profile. The more elements in the list, the more accurate the curvature of the horizontal alignment. But don’t exaggerate as this influences the number of section profile instances placed in the family (and thus makes it heavier). Next you also connect the proper family type (Concrete Deck Profile.rfa in this case) to the Profile input port. And the skew angles at start and end can be indicated as well.

The outputs of this node return the ProfileInstances placed in the Revit family as well as the generated points on each road edge in Dynamo. The ProfileInstances are used in Step 7, when we need to integrate the calculated values from Step 6 into the Revit family.

Important to know is that in this step only the position and orientation of the section profiles are handled. The results of the generated points (bottom 3 output ports) are further used in Step 6 to define the individual section dimensions.

Step 6 – Calculate dimensions of each section profile

Now we know the coordinates and orientation of each division point on the road edges in Dynamo, we can calculate the values of the superelevation and thus also the width and slope of each road lane. This is shown starting from 4:26 in this video.
Deck Geometry DimensionsThe procedure to calculate doesn’t need to be changed as long as you use the ‘three edge method’ to detect the road geometry. If your section profile uses different parameters names for  the Lane Width and Lane Slope, then off course you need to change their references in the Dynamo script in the middle Code Block shown in the image above.

Step 7 – Modify profile instances and create geometry

The results of the parameter calculations in Step 6 are connected with the Element.SetParameterByName node, and this will make the proper changes to each individual section profile placed in the Revit family. The geometry of the section profile instances is send back to Dynamo (Element.Curves) and used to create the solid deck geometry by means of the Form.ByLoftCrossSections node. Starting at 4:50 in this video.

Geometry Creation in RevitI’ve decided not to group all these parameter calculation and solid creation nodes into a custom node, as it might happen that you use a different set of parameters, instances, … This way, the script is flexible for you to change if needed.

Step 8 – Flexible and modifiable family

The last section of this workflow (starting at 5:52 in this video) may be the most important one. After the Dynamo script has run and been closed, it is still possible to change the properties of the section profiles (in red) – which are by the way placed in a different subcategory for better visualization management in the project.

When you connect the instance parameters of the nested “Concrete Deck Profile” family with the family parameters of the main deck family, then you make it even possible to change the dimensions of the deck geometry from within the Revit project.


I think we all can agree that a concrete bridge deck geometry without reinforcement details added is like a pub without beer…

This part of the workflow will give you some insight in the possibilities that Dynamo offers to Revit when modelling complex rebar cages into the curved deck. There are many methods to achieve this, and there are also lots of varieties in the rebar shapes. The method described below is a generic usable one for the modelling of the transversal rebar cages, and is based on a “distribution along path” principle.
Computational Rebar ModellingThe results are shown in this video from the playlist. In the next steps, it is described how to get to this result.


The method used here needs the BIM4Struc.Rebar and Dynamo for Rebar packages to be installed in Dynamo.

The Dynamo script “07 Transversal Rebar Distribution.dyn” used for this, is included in the datasets at the bottom of this post.

Step 1 – Model a base set of reinforcement

Before you start it is necessary to have modelled a base set of transversal reinforcement in the bridge deck. This can be done with the out-of-the-box Revit tools. This base set has the right properties already. Optionally you can save the rebar objects in a Selection Set in Revit, in order to find it back easily after distribution and to delete it then. (See 0:17 on this video)

Step 2 – Import the base rebar geometry in Dynamo

This base set of rebar objects will be used to generate a distributed set of rebar. Therefore we need to read the original geometry of the rebar elements into Dynamo. This is done in the “Get Rebar sketch from Revit” group, by means of the Rebar.GetCenterlineCurve node (from the BIM4Struc.Rebar package). The node returns the sketch behind the 3D Rebar object in Revit. (Read the input port tooltips on the node for more information about the options). The resulting curves can now be used to be distributed within the deck geometry. In the same time the Revit ID of the object hosting the base rebar is read too, to use it further in the Rebar creation step.
Import rebar geometry
(From 0:25 on this video)

Step 3 – Define position and orientation of base rebar

This step is needed to detect the right orientation of the base rebar set and its relative position to the selected distribution path (Select Edge from Step 2). This information is crucial to make the distribution working. The position and orientation is represented then by the Curve.CoordinateSystemAtParameter nodeRebar position

Step 4 – Distribute the rebar sketch lines in Dynamo

The geometry from Step 2 combined with the position and orientation data from Step 3, results in a new list of geometry representing the equally distributed rebar sketch lines.

Rebar Distribution

Transversal Reinforcement in Dynamo

Step 5 – Create Rebar geometry in Revit

Finally (as seen at  0:59 on this video), the resulted curves are used to create the Rebar objects in Revit, with the Rebar.ByCurve node from the Dynamo for Rebar package To use the same properties for the newly created Rebar, the properties from the selected base set are read by the Rebar.GetProperties node from the BIM4Struc.Rebar package.

Rebar in Revit


The datasets below contain more scripts to create the longitudinal reinforcement i.e.

The described method above, together with some more “rebar awesomeness” will be presented and explained more in detail in this class at AU 2016 in Las Vegas, later this year.


The datasets used in this workflow can be downloaded here.

I hope you enjoyed reading and that this workflow may be of use for your daily work !

Clearance Height on Stairs – Watch your head!

The ergonomics of a stair is not only about the tread depth, the riser height, the stair slope, … It is also about the safety of your head when you walk the stair. Ever been in a situation when you rushed down the stair to the cellar and then bumped your head against one of the floor beams 😉

In this post I will explain you how to create your own Dynamo script for the “Clearance Height Check” of your stairs in a Autodesk Revit project. The Dynamo script (which can be downloaded at the bottom of this post) works on a selected stair and will verify the “Clearance Height” or “Headroom” between the tread top surfaces and the objects above. The results will then be displayed as colored lines.


The script consists of 7 main parts, organized in node groups. Each of the steps is described below.

Step 1 – Input

In this step you need to select the stair that you want to analyze. This can be a single or a multi-story stair.
The Safety Offset parameter is explained in Step 3 further in this post.
And of course you need to set a constraint for the “Clearance Height” in the last parameter.

Step 2 – Detection of top surfaces of treads and landings

When you import the stair geometry into Dynamo, it’s considered as one single solid. This means you can’t detect the individual treads (with the native nodes). In this case we use the Element.Faces node to detect all the surfaces of the solid. Each of these surfaces has a normal vector (Surface.NormalAtParameter). The surfaces with a Z-value of this vector equal to 1, are the top horizontal surfaces of the stair. In this case these are the treads and landings, but also the smaller end surfaces of the supports or stringers. In the first List.FilterByBoolMask these top surfaces are filtered (results is in the in output). In the second List.FilterByBoolMask the surfaces with an area smaller than the tread area (= width * tread depth) are filtered out (the in output represents the surfaces with a greater or equal area).

Now we have the references of the treads and landings which represent the bottom of our “Clearance Height” calculation.

Step 3 – Detecting the upper elements with ray bouncing

This part of the script will generate the “calculation” elements by

  1. creating a point in the middle of each top surface (Surface.PointAtParameter)
  2. translating the points vertically with a distance equal to the indicated “Safety Offset”. This is done to avoid the point being inwards the solid of the tread. In a later step we will add this 50 mm value to the resulting clearance height.
  3. using the points as origins for the RayBounce.ByOriginDirection which will cast rays in an upward direction until it meets an object on it’s way. The output of this node consists of Points, which are the start- and endpoints of the single ray (maxBounces=1 and Elements which represent the family instances that are hit by the ray.
  4. connecting the start- and endpoints by means of the PolyCurve.ByPoints node.

These polycurves can now be used to calculate the headroom and visualize the results in the next steps.

Step 4 – Visualization of environment

In this optional step, the elements that are hitted by the rays are displayed within the Dynamo GUI. Play with the Number Slider to manage the transparency of the objects.

Step 5 – Check the Clearance Height

The smallest but nevertheless the most important part of the script checks the length of each designed polycurve (from Step 3) and adds the Safety Offset value (50 mm) to the result. The output is verified with the Minimal Clearance Height, indicated in the Input group. This results in list with “true” and “false” values which then will be used for filtering.

Step 6 – Creation of analysis samples in Revit

The polycurves, created in step 3 can now be used to create “Model Lines” in Revit, in order to visualize the possible problems with clearance heights. As the ModelCurve.ByCurve can not accept polycurves, we need to explode these in lines first. Graphically you can’t see any difference as the “unexploded” and the “exploded” version still show a two-point line. But the data type is different…

Optionally you change the style of the model lines, to have better representation and filtering capabilities in Revit. Therefore the Archi-lab / Grimshaw package offers the Get Line Style by Name node that loads a line style to Dynamo which is used to change the initially created line.

Step 7 – Visualization of the results

This last step will change the appearance of the lines created either in Dynamo either in Revit, depending on the Clearance Height requirements. If the length of the polycurve +50 mm, hence the real headroom, doesn’t meet the minimal clearance, then the line is colored in red, otherwise it is colored in green. This graphical result can help you to solve the problem with the surrounding elements and re-run the script to see the new results.


The Dynamo script and the Revit sample file (originally the rac_advanced_sample_project.rvt) can be downloaded here.

Evacuation Path Analysis with Dynamo

More and more I’ve been challenged and inspired to find new ways to perform custom architectural analysis. In this post I want to share with you a short and simple (for once) Dynamo script that can be used to analyze the evacuation paths in your building design in Revit. The script (that you can download at the bottom of this post) will calculate the accumulated distance from several points to a selected emergency exit and display the results in a selected Revit view.

Evacuation Path Analysis - 07

Before you start setting up or running the script you need to draw the evacuation paths in your Revit model. In this case Model Lines are used with a specific, newly created line style called “Evacuation Path”.

Evacuation Path Analysis - 05

It’s also necessary to have these next Dynamo packages installed:

  • Lunchbox
  • Grimshaw (
  • Ampersand


When you then open the Dynamo script “Evacuation Path Analysis.dyn” you will see 4 parts.

1. Input geometry in Dynamo

Evacuation Path Analysis - 01

In this part the model lines of style Evacuation Path are selected and their geometry is generated in Dynamo. For this selection the custom node Select Model Lines by Style from the Grimshaw ( package is used.

You will also need to select the door that will function as the emergency exit. This will be used further in the script to detect the evacuation direction.

The “CurveDiscretization” is needed for dividing the resulting paths (polycurves) in equal parts (see later in this post).
The “SampleInterval” is a number that will be needed to indicated how much of the results are shown in Revit, as we don’t need to see the results for every divided piece (see later in this post).

2. Evacuation path direction

Evacuation Path Analysis - 02

The curves resulting from the Element.Geometry output from previous step are put together into one or more polycurves, using the PolyCurve.ByCurves node, which joins an unordered list of curves. This node is installed with the Ampersand package.

It’s also difficult to control the direction of each designed model line, as you might have drawn them in non-ordered way. That’s why in this part of the script the distance between the start point of each path and the location point of the exit door is evaluated. When > 500 mm, then it is assumed that the Curve.Startpoint shows the point at the other end of the polycurve. In that case the curve will be reversed.

3. Accumulated distance to the emergency exit
Evacuation Path Analysis - 03

In the third part of the script the length of the curve segments are analyzed (and they should be equal for all segments except the last one in this case), and the accumulated result is returned. This is done with the Lunchbox Mass Addition node which is available in the node library when the Lunchbox package is installed. This could be done also with the List.Scan node from the out-of-the-box Dynamo library, but this can not handle nested lists.

Finally the result is converted from mm to m (assuming that the project units are set to mm).

4. View the analysis results in Revit

Evacuation Path Analysis - 04

In this last step every n-th result (defined by the “SampleInterval” variable, defined at the front of the script) for every n-th start point of the curve is taken. Then these results are transferred to the PointAnalysisDisplay node which will generate an analysis display in the selected view in Revit.

In Revit you can view and manage the appearance of the analysis results with the “Default Analysis Display” parameter of the view. In the dataset included in this post there is already a definition made, called “Point Analysis Display”.
Evacuation Path Analysis - 06


You can download the Revit file and Dynamo script by clicking on this link.


Radial Reinforcement in Revit with Dynamo

The modelling and detailing of reinforcement in a regular, circular floor in Revit can be done very straightforward using Path Reinforcement or by means of polar arrays.Once these circular floors have a varying thickness, and thus have a complex double curved top surface, the reinforcement modelling is best supported by using Dynamo.

In this post I will explain you how to introduce computational design for reinforcement modelling and this can be done in an easy way. At the end of the post you will be able to download the datasets and watch the instructional video.

Below you can see the circular shaped floor with an opening in the middle. The top surface of the floor has been edited with the “Modify Sub Elements” tool in Revit to get a varying thickness and to generate the double curvature of the face.

Radial reinforcement - 0

The goal is to model and detail the bottom (flat) and top (inclined) reinforcement in this floor.

With Dynamo, this whole process can be automated AND the equal rebars will be grouped in a rebar set, or the so called “Rebar Container”. By using a rebar container, the numbering and thus also the annotations can be set to a group of rebars, indicating the total amount of elements in the set of equal rebars.

Radial reinforcement - 2

Radial reinforcement - 3The applied workflow is practically the same for every “Dynamo rebar” project. You start by creating the appropriate geometry in Revit. Then you take the reference lines, faces or model in Dynamo. These references are then being used for the creation of the rebar centerlines. Therefore it is important that you re-calculate the cover from the formwork shape to the rebar centerlines by adding additional parameters (i.e. c1, c2, …like shown in the image below). Finally you create the rebar objects in the Revit model by using the “Dynamo for Rebar” package.

Radial reinforcement - 5

Radial reinforcement - 1


The datasets that are used in the video below can be downloaded via this link.

Instructional video

If you want to learn how this is done, you can find the recorded screencast with voice-over on this link at Autodesk Knowledge Network (AKN).

Rebar modelling in Revit with Dynamo for blended shapes

Since a few weeks, the package “Dynamo for Rebar” has been released. With this package, Dynamo allows you to model Rebar objects in Autodesk Revit. This opens up a lot of opportunities for automating rebar generation, complex shape modelling and so on…

In this topic I want to explain you more about a script I made in Dynamo to generate a steel rebar cage in a blend-shaped concrete column.


There are a few conditions which the rebar objects need to meet in this design:

  • The longitudinal bars need to follow the inclination of the blended shape
  • The hooks at the bottom of the longitudinal rebar will different for each bar that has another inclination
  • The hooks need to point to the center of the bottom face of the column.
  • The stirrups vary in size depending on their relative height position in the column (that’s an obvious one)


The datasets can be downloaded here. This script is working in Revit 2016, Dynamo 0.8.2 and the package Dynamo for Rebar v1.7.

The video below shows how the script works. You will find out that it is pretty handy to use. You can also apply this script to beams with varying height, though the longitudinal rebar might be changed a bit in Dynamo to get rid of the special hooks.

If you want to see more of this into depth, then register for one of my classes on Dynamo at Autodesk University 2015 in Las Vegas:

MSF11845 – Dynam(o)ite Your Design from Concept to Fabrication
Monday, Nov 30, 2:45 PM – 3:45 PM  (Fabrication Forum)

Driving a SQL database with Dynamo

Today, I decided to move on rough terrain (or at least, for me this is the case): “handling databases”. I got the question from a customer if it is possible to drive a SQL database using Dynamo and to feed the tables it with Revit data (preferable crossed data). So, I took this is as a challenge and the answer for them is: “Yes, we can ! ”

With the steps below, I would like to help you as well, setting up this workflow. The scope of the script below is dual. First I want to feed the Furniture objects in a Revit model with data coming from the Room they belong to. Secondly I want to extract all the Furniture and Room data to a MySQL database, which is located on another host machine, in this case a Virtual Machine.

Before you get started

I’ve listed some prerequisites you need to install before you can run this script, below:

  • You need to set up a MySQL server, preferable on a virtual machine or have at least the MySQL .NET Connectors installed.
  • In the video below, a MySQL viewer is used, called Workbench. You can find this viewer here.
  • You will also need a Dynamo package called Slingshot! (made by Nathan Miller, The Read more about this package in the package manager. Slingshot! is a node library for connecting Dynamo to external Relational Database Management Systems (RDBMS).

Crossing data between Furniture and Rooms

The first requirement is to collect Room data and provide this data to the Furniture objects that belong to the appropriate Room. Therefore a custom node called “Elements in Room” is used. This node can be found in Conrad Sobon’s package (Grimshaw). This custom node detects if the location point of a Furniture object is within the Room boundaries. In case of, the custom node is included in the datasets at the bottom of this message.

1 - Crossing Data

Some Rooms don’t contain Furniture and this generates empty lists in the output of this custom node. To filter that out you can perform a List.IsEmpty node on each of the sublists. This gives you at the end a filtered list of Furniture, sorted per Room and a equal list of Rooms that contains Furniture. Combine the two lists results in the values of the Room Number send back to Revit, by filling values for the RoomNr project parameter that is added to the Furniture objects in the project.

Connect to the MySQL server

Before feeding data from the Revit model into the MySQL database, we need to make a connection between Dynamo and the server. This can be executed using the following Slingshot! nodes:

  • Connection.MySQL_ConnectionString : generates the connection string using the input data from the Code Block on the left
  • A Code Block containing the command string for creating a new database. This code block is driven by a variable called “Schema”
  • Command.MySQL_Command : this will send the command to the MySQL server, indicated in the ConnectionString. The result is a boolean which indicates if the “schema” or “database” is created.

2 - Connect to MySQL

Create tables in the MySQL database

The Revit data needs to be extracted to several tables. One for the Furniture and one for the Rooms. With Dynamo and Slingshot! it is possible to define these tables with the specific columns. In this case, I did this using a code block to send the command string the MySQL server. (This string is in fact a copy past from the MySQL command prompt, when creating tables using the Workbench viewer).

//Syntax for command to create the Room table with indicated columns
“CREATE TABLE `” + DBase + “`.`” + Table + “` (

3 - Create tables

Feeding the MySQL database with data from Revit

In this part of the script I will extract the data from the Furniture and Room instances and feed them in the right tables of the database. The Revit ID of each object is unique and will be used as Primary Key in the database. On top of that, the Revit ID of the Rooms, the Furniture instances belong to, will be written into the Furniture table as well. This value can be used later to make queries across the tables.

Below is shown how to collect the Furniture data and send them to the SQL.InsertInto node. This last node generates the command strings for the input of data in the database. The Table input of this node is a concatenated string of the database name and table name, which is here “MillenniumRail.Furniture”

4 - Collecting Furniture data

In the next image, similar is done for the collection of Room data.

5 - Collecting Room data

When all data is collected and the strings are generated, we can send them to the Command.MySQL_Command in order to connect to the database and write the values. This is done in one time for Furniture and Rooms using a List.Join (which joins the SQL.InsertInto output from Room and Furniture instances.

6 - Write to SQL

Change data in the MySQL database

Using the MySQL Workbench you can change the data within the database. In this case, the values of the Furniture marks are added to the table.

8 - SQL Viewer

Read data from the MySQL database

The changes that have been executed in the database, can be read in Dynamo and can be transferred back to Revit if necessary. Below you can find the statement that is needed to read data with the Query.MySQL_Query node. This is basically the same as the prompt command in MySQL: “SELECT * FROM”

7 - Query SQL

Datasets & Video

You can download the Dynamo dataset below . Before you run the script be sure that you have:

  • Added a (project) parameter called “RoomNr” to the Furniture objects (or change the parameter name in Dynamo)
  • an active connection to your MySQL server
  • installed Slingshot! package.

Download dataset

This video shows quickly how it works:

Special thanks to my colleague Ives Veelaert, with helping me out when having problems connecting with the VM SQL Server.

Dynam(o)ite Your Design for Bridges – Part 1

A few weeks ago I have been invited to give a lecture on Dynamo at the Civil Infra Academy 2015 in Dordrecht (The Netherlands). Of course, Dynamo applied on a structural engineering model of a train station building is not really the most interesting one to show to people who are involved daily with civil structures like for example bridges.

So I decided to find out how Dynamo Studio could be used in Bridge Design & Analysis.

Therefore I picked up the model that Zachary Kron published on his blog last year (see here for his original post) and amended the script so it worked with Revit and Robot Structural Analysis.

How it looks like in Dynamo Studio.

Bridge Dynamo Model

How it looks like in Revit. Mind the curvature of the beams and especially the roadway. In the Dynamo script you will find specific nodes that detect the angle of the curve to the Z-vector. So that way you can easily change the cross section rotation of the beams and introduce a twisted section.

Bridge Structural Model 2

Bridge Structural Model 1







How it looks like in Robot Structural Analysis. At the left side the model, at the right side the results for the My moments due to traffic loads. Important in this script is the discretization of the nurbs curves. RSA can not handle these types of curves, and you need to approach this with separate “beams”. Some custom nodes are delivered in the content below, to achieve this modeling technique.
Important note: run the script on the “Bridge Conceptual Analysis_start.rtd” file, in order to have the right custom sections in your design.

Bridge Analysis Bridge Analysis Results






And finally getting results back in to Dynamo. If you want to perform some specific operations in Dynamo based on the results (for example reaction forces), you can extract them from the RSA model, after calculation. This smells like a job for Structural Optimization :-)…

Bridge Results in Dynamo


You can download the whole dataset by clicking this link. Now try it out yourself and play with the sliders to see the effect in Revit and RSA. Don’t forget to install the Structural Analysis for Dynamo package !

To be continued …