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



venerdì, novembre 18, 2016

Control Splines in Revit with Dynamo help


Let's start simple, create two reference points





Not pretty... so here comes Dynamo in rescue.



Once again Dynamo saved the day.

giovedì, novembre 17, 2016

First Ever Public Revit Roadmap

Link to the original article:






  • Create: Efficiently create information that captures design intent.
  • Optimize: Optimize designs for best results.
  • Automate: Boost productivity by automating tasks.
  • Extend: Support the full project lifecycle.
  • Modernize: Create a modern and effortless experience.


Delivered in Revit 2017.1



























































The Factory