domenica, giugno 02, 2019


Dear readers, over the past few months I've been working with Nigel Peters and the CRUX team  in Autodesk to bring to light Dynamo for Civil 3D.
This has been a wonderful experience, connecting with customers and the engineering team, adding value to our products to make the difference.

I put together a proposal for a class at the next Autodesk University in Las Vegas on this subject showing what is now possible for civil engineers and what we can do together.
So here is my ask:

  1. Open this link:
  2. Search for the class CES322249 ("Computational Design for Civil Engineers")
  3. Click Vote
  4. Share the link to colleagues and friends
Thanks for your support!

mercoledì, dicembre 12, 2018

Dynamo Primer Slide Deck

It's been a while since my last post on this blog. I was lucky enough to be involved in very interesting projects with Autodesk Consulting customers all around the World, especially around automating workflows using Dynamo with other Autodesk software such as Revit or Civil 3D.

Over the past few years I've been doing a lot of these engagements and I started to collect some material to support Dynamo workshops. I didn't do this alone of course, I've referenced a lot of the amazing work that the Dynamo team put into documenting the tool on Dynamo Primer and GitHub, and I'm also very thankful to other colleagues such as Dieter and Daniel who contributed directly to improve the content of this material.

Since 2015 I've been developing an approach to implement Dynamo inside  a large organization at a global level (from a few hundredths to tenths of thousands users to give you an idea), the processes to control standards and consistency of the graphs to make it easy for the users and organizations that want to harness the power of automation. This is what I call a "Dynamo Foundation".

In this context I've developed a Dynamo standard for Autodesk that I've partially published on this blog right when the node groups were introduced in 0.8.1 (link).

I just recently had the pleasure to meet Vladimir Ondejcik, who about a year later than me published one of the most used standards for Dynamo. I was really happy that he liked some of my suggestions to improve his own template.

It's impressive how many resources around Dynamo are available nowadays! I cannot possibly list them all in this post but just a couple to give you an idea of what an amazing work the people in the Dynamo community has been doing: Danny BentleyJohn Pierson, and so many more! (you are more than welcome to add them in the comments if you like).

Well sometimes information is too much and all over the place, I found myself in situations in which people were under the impression that Dynamo is some kind of magic wand that can do everything a user wants. Some others have a legitimate preference to continue creating their "secret automation weapons" developing using traditional scripting and coding and don't even want to start to understand how to use visual programming. Others they are just confused and overwhelmed by all this abundance.

I think the more you know the better. If there is an effective way to achieve the result you need, with the tools you have, with the knowledge you have, you should go for it.
And if you don't know enough: well, congratulations, that's the perfect day to start learning something new. I do understand those who need some support, some guidance to have a sound internal compass when it comes to approach a mindset shift.
That's what I like to do in Autodesk Consulting: help our Customers in being successful in their journey towards automation, with their own pace, to fulfill their vision.
We add value to make the difference.

A few days ago a colleague, Toshiaki Isezaki, reached out internally to have some clarifications around what are the differences between Revit API and Dynamo. He had a brilliant idea of creating a comparison table and it quickly became a very interesting discussion with a lot of insights from very knowledgeable colleagues around Autodesk such as Jeremy Tammik, Miro Schonauer and Seth Edwards. I gave my contribution too and I also shared the presentation I usually use in workshops to help Toshiaki in his endeavor.

Today Jeremy told me he liked my presentation very much and he suggested I'd publish it, so here it is, I hope someone can find it useful (link).

lunedì, febbraio 19, 2018

Robot Structural Analysis via Dynamo in Python

Ever wanted to do more with your Robot and connect it to Revit and Dynamo but you didn't know how to do it?

Fire up Robot, Revit and Dynamo for Revit, in Dynamo create a Python Script node and copy the following code (make the necessary adjustments to match the Robot release you are working with).

Robot offers a COM interface, very much like Excel for Dynamo, so in principle you can create your package of nodes using Zero Touch, but what if you don't use C#?
You can do it with Python! you just need to know what to look for.
First, you need to make sure you have the Robot SDK installed. If you install it from the media, you can find it here (pay attention to the release you want to work with):

C:\Autodesk\WI\Autodesk Robot Structural Analysis Professional 2017\x64\Tools\RSASDK

After the install you can find the SDK content in here (again, watch out for the release):
C:\Program Files\Autodesk\Autodesk Robot Structural Analysis Professional 2017\SDK

Now you should be good to go!

In the code sample I'm sharing there are two behaviours wrapped inside two if statements.
The first starts at line 13 and it will read the bars you have in the Robot model and recreates them as Dynamo lines. It also returns the bar number, and the label used for the bar section).

The second starts at line 25 and creates a new project in Robot and adds 4 nodes and 3 bars.

You can start from here to leverage the Dynamo geometry and interoperability with Excel to recreate your model in Robot, or again read data directly from Revit elements (even imports from different platforms) and create an analytical model in Robot.

Look at the SDK in Robot if you want to know what you can do. And remember, if you are not having fun in coding, you are doing it wrong.

domenica, dicembre 10, 2017

Time flies when you are having fun

I stumbled upon one of those gadgets you take at conferences, one that probably you never used or you didn't even remember to have. Like this USB mass storage shaped as a card.

It was the 2nd Revit User Conference in Milan, huge venue this time, walking down the Rho Fair Exhibitions, wondering "can I do this roof in Revit?".

I remember that I learned about shared parameters for the first time at that Revit User Conference, I remember Philippe Daverio's speech, the venue, the people, so much more than the previous one. I remember what happened to make that roof possible in Revit.

It's been 10 years already. I've learned so much and I am still doing it, still having fun.

martedì, novembre 28, 2017

Revit Ideas Station: Delete Worksets API

Please vote!

Many thanks :)

venerdì, settembre 15, 2017

mercoledì, settembre 06, 2017

Insert Revit Families from a Web Browser

I know, it's pretty ugly... just a prototype to insert families from an html page (look at the address bar in the floating window).

lunedì, luglio 17, 2017

AmsterD(yn)am(o) Part 2

Here is the second clue.
There is even a Dynamo Street! The preview is hidden and there is a West Port for output, the lacing must be cross-product.

and here is the Custom node.

domenica, maggio 14, 2017

Set multiple parameters at once with Dynamo

It is common practice  using Dynamo to get and set objects parameters from Revit, I'd say this is one of the best features in Dynamo actually, something that empowers all the stakeholders in a workflow to communicate information and data seamlessly using the Revit model as an aggregator. What good is the BIM if we still have to populate the "I" manually, right?

It's also true that if you don't have Dynamo principles clear in mind, graphs tend to be messy, let's say not too elegant. There are even subtle mistakes that could actually prevent the graphs from executing correctly.

In the image above the example on the left is wrong, and as a matter of fact crashes Dynamo because there are two parallel branches in the graph that modify the same element on the same parameter. What should be the result in this case, value 1 or value 2? There is no good answer actually. On the right instead a sample of how it is supposed to happen from a graph flow point of view. It doesn't make much sense to change the same parameter but it's something that could potentially happen and it is better to avoid.

So in case of multiple parameters I very often see long chains of Set Parameter By Name nodes, one after the other, big space on the graph calling over and over the same function. It's working I know but the graph is not very concise.

Let's elements a collection of #n Revit elements, let's parameters a list of parameters names that these elements share, finally let's values a list of values with the following structure organized in a list of lists: each item of the main list is made of the values.

Now if you run this graph the result is not what one would expect.
Not all the elements are taken into consideration, the parameters are not set correctly because the replication calculations here are not helping. Changing lacing on the node won't affect the result in the way one would want in this case. There is need either for a new data structure that could cope with the difference in the rank on the input or for replication guides to force the execution of the Set Parameter Value By Name with a function.

Dynamo nodes

The Set By Parameter Name takes input of rank 0 (single values) but the elements and the parameters have rank 1 and the values rank 2. By default, the elements of the input that are occupying the same index position are combined together in the node function. In this example:

  • the first element
  • the first parameter name
  • the first LIST of values
The first element is combined with multiple values over and over for the same parameter and it ends with the last value of the list. Sounds familiar? it's the same thing happening in the green group of the first image, definitely not ideal and, more importantly, wrong.

It is possible to introduce a list with rank 2 for the parameters, List of  repeated items, the same amount as the elements, rearrange the values with a Transpose to have the same amount of sub lists (this won't change the rank but only how the data is structured). The following graph will now work as intended.

Replication guides

Remember that each node in Dynamo is a function that can be recalled in its literal form (e.g. try Node to Code).
In DesignScript it is possible to drive the replication calculations and force how the functions handle the input. The replication guides are defined with one or more "< n >" after the name of an argument in a Code Block. It's like writing a series of nested for loops in Python, the lowest numbers come first.

In this case it would be something similar to:

for p, v in parameters, values: # Level 1
    for e, vi in elements, v: # Level 2
        e.SetParameterByName(p, vi)

Which in replication guides terms translates as follows.
The final output from the two methods is different but they are only one Transpose away.
This is something I recommend to start to use in your graphs to keep them tidy and use DesignScript at its full capabilities.

mercoledì, febbraio 08, 2017

Finding Nodes in the Graph

One of the most annoying things with large Dynamo Graphs is to find a specific node given some properties, like the name for example, and have Dynamo to jump right on top of that node.
This video demonstrates a concept I've been working on using the Dynamo API.
It works using the name of Nodes, Notes and Groups.
The weird thing I couldn't explain is why after the execution one has to click on Zoom Out to center the node... but it's definitely better than nothing!

This also implies the usage of some best practices when creating the graph, renaming is the oldest trick that still makes the difference.

lunedì, novembre 21, 2016


When you look around and the first thing that comes to mind is a cross-product lacing strategy...

venerdì, novembre 18, 2016

Control Splines in Revit with Dynamo help

For those of you who never tried the spline through points tool in the Revit free form environment, here is a little explanation of how it works.

Let's start simple, create two reference points

Select them and click on the tool, what you have in return is a segment attached to these two reference points

Now add a third point and, just to make things a little more interesting, make sure that it is not aligned with the previous two, you could drag it on its Z axis for example
If you select all three reference points and click on spline through points you will get a spline passing through the points, again, a spline, not an arc

You got the idea, very simple indeed, but what if you have a higher number of points? something like this

If you use the tool now this is what you get in return

Not pretty... so here comes Dynamo in rescue.
Through Dynamo it is possible to generate reference points, these objects are more than simple geometry entities, they have a dedicated shelf in Dynamo for Revit, this means that the resulting objects are dynamically associated to the script that generated them.
It is possible to use these points to create other Revit objects and maintain this dynamic relationship with the script.
Assuming that the amount of points is known we could easily generate a straight sequence of points,

and then use this to create a spline through points (yeah I know it looks like a straight line but in reality we have many control points inside)

These splines are defined through the reference points, but what if we used Dynamo to update the reference points location? The splines have to follow, and here is the result

Besides, you can even control the points manually and tweak the forms as you like, save the points coordinates back to Excel, rerun the scripts as long as you need.
Once again Dynamo saved the day.

giovedì, novembre 17, 2016

First Ever Public Revit Roadmap

Link to the original article:

At Autodesk, we know that feedback from you is what makes our products better. Not only do we want to hear your thoughts about what we've released and shipped so far, we also want your feedback on our plans.

While we've always tried to share our product roadmaps, it's not necessarily been easy information to come by.  But times are changing, and we’re excited to have the chance to try something new: we’re sharing our product roadmaps with all of our customers, publicly.

Before we dive into the roadmaps, let’s establish some ground rules: 

  1. We're sharing some of the highlights of our product development roadmap to give you a sense of the general direction Revit is headed. There's a lot more work going on behind the scenes and this roadmap doesn't reflect everything our development teams are working on.
  2. We plan to periodically update the roadmap because it is subject to change. When we can, we'll also share videos that show off some of the work-in-progress software.
  3. Roadmaps are plans, not promises. We're as excited as you to see new functionality make it into the products, but the development, release, and timing of any features or functionality remains at our sole discretion.
  4. These roadmaps should not be used to make purchasing decisions.

To better explain the roadmap, for each discipline, we've grouped our plans by theme:

  • Create: Efficiently create information that captures design intent.
  • Optimize: Optimize designs for best results.
  • Connect: Empower teams by connecting workflows for team-based project delivery.
  • Automate: Boost productivity by automating tasks.
  • Extend: Support the full project lifecycle.
  • Modernize: Create a modern and effortless experience.
  • Strengthen: Build a solid foundation for product reliability and efficiency.

We use disciplines, themes, and colors to keep track of the roadmap details. 

Delivered in Revit 2017.1
Planned (Some features are currently available for testing in Revit Preview)

Next, let’s dive into some of the exciting work happening in the Factory!


“What is Revit Core?” you may ask. Revit Core (often referred to as Platform) is the glue that holds Revit together. It includes technologies and features that are common across disciplines. It is the part of your everyday Revit experience that helps you get your job done.

When we imagine the future of Revit Core, we see a robust toolkit that doesn’t get in your way. The tools you need are there. They do what you want. This leaves you time to focus on creating better designs - time to be an Architect or Engineer, not a software wrangler. We believe that this future is powered through a cloud-connected experience that enables efficient collaboration and massive computational power, and by software that understands you and what you need to get done.

With that in mind, let’s explore some of the functionality that will help us get there.


One of our key goals is to help you be more effective. To boost your productivity, we strive to create increased efficiency of design that is proactive, captures design intent, and eliminates tedious workflows.

To begin, we want to capture design intent in the model. By embedding the logic that you previously had to reapply every time you made a change, we can help you spend more time designing and less time managing changes. Next, we want to help eliminate tedious, repetitive tasks. We do this by providing tools that automate your workflows and simplify painful multi-step processes. Further, we provide our partners with access to Revit data, so they can develop tools to help you get your work done.


The future of making things is a team sport, and we know a large part of your job involves working with other team members.  That often requires sharing data between multiple products, across disciplines, with teams located around the world. We believe BIM’s future lies in connecting project teams together by supporting integrated, accessible BIM data regardless of product. 

At Autodesk, we spend a lot of time figuring out how to optimally connect teams and the products they use. It’s a really challenging problem that’s aggravated by file formats and geometric incompatibilities. We believe the solution to this problem lies in making Revit data more accessible to other products both through improved APIs and direct access to data.

Additionally, we understand the need to reference non-Revit data in your designs. We seek to provide connected workflows that incorporate data from other products in lightweight and project-centric ways.


A big part of our future for Revit is to create an experience that puts you, the customer, first instead of putting you in a position where you need to fight with the software.  We are investing in creating a modern experience that understands who you are, makes the tools you need available when you need them, and allows you to focus on your model instead of dialog boxes.

We are focused on supporting the hardware that you already own, with multi-monitor support and support for high resolution monitors.  We are also investing in how properties of elements are displayed and enabling better contextual access to tools for elements. Further, we are investigating ways to allow you to work better in 3D. 


As we invest in new functionality to extend Revit Core, we cannot lose sight that we must build an infrastructure based on a continuous focus on our customers.  It is therefore essential that we strengthen the core by maintaining an emphasis on creating high-quality solutions that address customer needs.

We are thrilled to add a few top Revit Ideas requests that address gaps in Revit Core to our roadmap. Thank you for sharing your feedback on the Idea Station. Please keep up your submissions, we are listening!


For this part of the roadmap, let’s take a look at the features and functionality we are investigating for architects.  The major focus here is to enable designers to fully model and document their buildings and leverage of the power of true Building Information Management.  Our goal is to give architects the power and flexibility to design the way they want to design and remove software barriers to creativity. 


We want allow architects to focus on the things they care about and at the same time, ensure that they are working in a collaborative way with all project stakeholders.  For architects, connecting with others is about capturing design information and collaborating without having to redo work.  
To start, we are looking at how to connect conceptual designers better into the Design development phase of projects.  This is about allowing modelers to use their tool of choice and not lose information when it is brought into the BIM environment. 

We also are looking at how architects can better collaborate and share design information with civil engineers and surveyors.  We are striving to allow terrain to be accurately shared to ensure that both engineers and architects are working with the “same dirt”.     

In the Create theme for architects, we are working to better allow architects to capture and document their design intent by supporting high detail, complex modeling, and letting architects get started with their models fast.

Starting with stairs and railings to support multi-story stair towers, we are investing in making it easier to model larger buildings. We want to ensure that when changes are made to the height of the building stories in the project, the stairs and railings update in a truly BIM way.  At the same time, designing stairs and railings can be difficult, so we are investing in small usability improvements to make it easier to get your modeling done.

Another aspect of creating that we are investigating is how to make modeling in Revit more immersive and allow you to design within the context of your project.  We are focused on modeling in perspective views so you can better understand the impact of design decisions.


Optimizing a design is a key part of the iterative workflow that architects use throughout the course of a project.  We believe that we can help you by providing better access to simulation and visualization tools so that you can better understand your design and work in a truly iterative way.
To start, in Revit 2017.1 we delivered an integrated experience with Autodesk Insight 360, making it much easier to utilize energy modeling to optimize your designs. Further, we are working on integrating the newest tool for immersive visualization from Autodesk, Autodesk Live.


Let's look at some of the things we are investigating for MEP customers of Revit, Plant 3D, P&ID, and our Fabrication products.
First, a brief introduction:  The Systems Engineering group is made up of several teams that work together to streamline workflows across multiple technologies (the MEP functionality within Revit, AutoCAD P&ID, AutoCAD Plant 3D, CADmep, ESTmep, and CAMduct).  By harnessing the power of the cloud, these interactions can become very transparent.  So while you may be a Revit MEP, Plant 3D, or CAMduct user, behind the scenes you may be using technology from a mix of these products, along with other capabilities that many other teams are developing within Autodesk, like Collaboration for Revit and BIM 360 Docs.


These are modeling activities related to capturing the intent of your design or detailed model.  They can be related to physical elements, like duct and pipe elements, or analytical data, such as energy settings and circuiting.  The information created is used downstream and consumed by activities in the remaining themes.

We’re continuing to refine the fabrication capabilities in Revit to improve its ability to produce construction ready models. Some of the work we have planned in the Connect and Extend themes will improve the processes by which that model is utilized for downstream activities.
We’re also starting to re-focus on analytical data modeling.  So far, our work has focused on improvements for circuit analysis and improvements related to the building energy model.


Optimization is the process of refining your model to create a more efficient system.  This optimization can be related to the energy efficiency of the delivered solution, or efficiency in terms of construction processes. 

Over the years, feedback has indicated that the larger the connected model, the slower the modeling interactions become. To address this, we’re moving to a paradigm where process-intensive computations, such as flow and pressure drop, are computed in the background on additional processors, giving priority to modeling interactions. 

We're also replacing the computation engine with a fluids solver, previously known as Dalton on Autodesk Labs.  This solver provides simulation in addition to analytical capabilities.  While we aren't making direct use of the simulation capabilities yet, we are leveraging the engine to provide more robust analysis.  For example, we’re refining the workflow to incorporate mechanical equipment to be more tailored to their purpose, such as pumps reporting their flow and head requirements, and pressure drop being computed through the entire pipe loop (instead of being divided between supply and return). 


Project data is created using a variety of products, whether it is energy analysis using Insight 360, process diagrams like P&ID, physical model representations like Revit, or isometrics in Plant 3D.  Connecting this data enables project participants to contribute their expertise and allows information to flow more easily, without having to import, export, or re-enter data created by other project stakeholders.

We’re creating the foundation on which engineering data will be shared across project stakeholders.  This will start to enable Revit, P&ID, Insight 360, and related workflows to share information and communicate more transparently.  This isn’t about providing new ways to import and export data. It is about eliminating manual tasks related to data translation.  By connecting the project through cloud-connected experiences, schematics and models can be intelligently connected, information can be easily shared across stakeholders, and data can easily flow through the project lifecycle across a variety of products.


Various project stakeholders use the data authored and optimized during modeling for a variety of downstream tasks, like creating spools for pipe fabrication, outputting CAM data for sheet metal fabrication, creating reports for procurement of material, and tracking project elements.  The Extend theme is all about leveraging the connections to the data created and optimized during the authoring phases of the project, and providing workflows to keep stakeholders apprised of information relevant to them.

One of the first areas we are focusing on is to extend the connected technologies to streamline workflows for generating piping isometrics from detailed fabrication piping models.  Currently, it is possible to export a MAJ file from Revit, open that file in CADmep, write the result out to PCF, open that PCF in Plant 3D, and then generate DWGs that can be printed for the shop for pipe fabrication.  Possible, but not practical.  We plan to streamline this process and provide a workflow to generate isometrics utilizing Autodesk cloud services for document management.  We’re very early in this process, but the feedback has been positive.


This part of the roadmap is focused on structural workflows from Design to Fabrication, supporting the key construction methods for Steel, Reinforced Concrete, and Precast Concrete.

In this space, Revit is considered as a multi-material modeling and documentation authoring environment to capture both Design-intent and Fabrication execution as appropriate.


These are modeling and documentation investments related to capturing the intent of design and providing detailed instruction for further production and construction execution.  The information created is used downstream and consumed by functionalities in the remaining themes. The purpose is to enhance Revit so that it can help in transitioning from traditional 2D CAD documentation tools to BIM-based modeling and documentation authoring. Our goal is to let designers and engineers provide accurate design intent models and give engineers and detailers the ability to develop models to a higher level of fidelity for fabrication and installation purposes. In a nutshell, our investments are focused on making modeling easy.


Optimization is the process of refining a model and making it aligned with several criteria related to quality and completeness, structural analysis, code design and constructability. Our investments in this area are centered around BIM-centric structural analysis and code checks, as well as structural contribution to the generative design and parameter-driven optimization of forms and model configurations. This includes a fabrication level of detail.


We are looking at ways to facilitate project-centric collaboration among structural stakeholders, from the conceptual phase through to detailed design and fabrication. When this focus is combined with the instant connectivity that cloud, social, and mobile technologies provide, successful hand-offs between stakeholders involve integrated model data. As part of the focus on collaboration, we seek to understand and support each stakeholder, recognizing their unique perspectives and concerns, their needs for differing levels of model fidelity, and their review approval processes. By improving structural workflows across products and by consolidating functionality around key platforms to provide a higher level of automation, we are working to streamline the overall process and support more effective collaboration among structural stakeholders.    


Our main goal is to support the full project lifecycle, extending from the office to the shop and the field. That’s why we’re making investments that enable model information consumption for manufacturing and installation. This includes support for paperless design to construction processes, as well as working to make fabrication and installation instruction delivery tasks modern and automated. This will enable broader accessibility to information across the full project lifecycle.


There are a variety of other discussions and work related to connecting workflows from design through to fabrication and beyond.  So, if you don’t see something listed here, it doesn’t mean that it isn’t on our radar.

We’ll post updates periodically, and your feedback helps!  Let us know what you think. If there are specific areas of interest, you can submit requests through Revit Ideas -  

If you would like to provide feedback on these capabilities, we would be happy to involve you in our beta program (Revit Preview).  Reach out to to join Revit Preview.

The Factory