Computation for BIM: AU2013 day zero

CASE has arrived in Las Vegas. The neon lights are shining outside, but we are inside staring at the lights of computer screens. Like the degenerate gamblers outside, we are lined up row-to-row pushing buttons and hoping for the architectural jackpot. It’s a long time coming. It’s Autodesk University. 
Our first day at AU was spent in the Computation for BIM symposium. By ‘computation’ Autodesk means Dynamo. Two years ago when Ian Keough demoed Dynamo at AU, it was – by his own admission – not quite ready. Dynamo was rough, buggy, and lacking many basic features. Dynamo looked like an off-brand Grasshopper; a poor bootleg with overdubbed dialogue. 
Two years later, it could be argued that Dynamo has started not only to match Grasshopper but to exceed it in a number of key places. The interface is polished, the API is being to be fleshed out, and there is a community beginning to use it. 

Compared to Grasshopper, Dynamo’s killer feature and Achilles heel is its integration with Revit. The primary benefit of this integration is that Dynamo can interact with the data inside a BIM model. Rather than generating plain geometry, Dynamo generates objects that can be used directly inside Revit. Dynamo can potentially use any part of the Revit API, giving it the power to do things like automating sheet-sets, automating the instantiation of Revit Family objects, and automating many day-to-day pragmatic modelling activities. In this sense Dynamo becomes a tool not only for creating points, lines, and surfaces, but also for managing the BIM model and the data that flows through it.
The major downside of Dynamo being tied to Revit is that creating Revit objects is naturally slow. While Dynamo has it's own geometry engine (that I still need to benchmark) any interaction with Revit - the key attraction - is dependent upon Revit's speed. In the demos today even basic operations often tied up the computer for seconds at time. 
It is therefore perhaps unfair to think of Dynamo and Grasshopper as competitors. Grasshopper helps make geometry, Dynamo helps manage data. They are two related but distinct paradigms. 
Having said that, Dynamo’s team of engineers are iterating significantly faster than Grasshopper’s sole developer, David Rutten. Many of the Dynamo features demoed at AU this year are features yet to be built into Grasshopper and schedualed for version 2.0:
Add-in manager: There is already a growing library of add-ins available for Dynamo (including Nathan Miller’s Lunchbox). Rather than going out and downloading each of these from every individual developer’s site, there is a universal interface within Dynamo that handles the installation and updating of add-ins. This should alleviate many of the frustrations of receiving a definition only to find that you need to scour the web for a special add-in in order to run the definition. 
Better-code editor: The code editor in Dynamo is always visible in the graph. Any changes to the code immediately change the model. This live programming paradigm has been explored in the past, but this is the first time that live programming has been implemented as anything other than a proof of concept. The advantage for the user is that they receive immediate feedback as to what their code is producing, saving them from the intermediate steps of compiling and running code. Another neat feature of the code editors is that it automatically generates the parameters and outputs for the code block. This also works in the formula tool. In places the code editor is still rough, most notably it doesn’t yet support autocomplete (although it’s on the roadmap).
Node-to-code: Dynamo can covert a group of nodes into a block of code. This helps simplify the graph replacing a tangle of nodes with a single code block. Autodesk also claims it helps people learn textual programming since they can first create a visual program and then see the corresponding textual code. Having used similar systems in the past, I remain sceptical of this claim. Most automatic programming systems produce mangled, ugly, inbred code. Judging by the code produced during the demo, Dynamo has no secret sauce to cover that wreckage.
Multi-threading: This wasn’t discussed in great detail, but it seemed that many of the .NET multi-threading functions worked natively inside Dynamo. We will have to investigate this further since single threaded applications are one of the major limitations to script execution speed. 
There are a number of other neat interface features:

  • Each node has a it’s output values listed below the node. 
  • A preview of the geometry that is rendered behind the graph.
  • .NET dlls work as an add-ins just by dragging them in, without needing to compile them in a special framework.

However, it’s not all beer and skittles in the Dynamo world. The offensive yellow node background remains – please just change the colour already! As mentioned before, the interaction with Revit is slow and unlikely to get any faster. Design Script remains an ugly language, with an ugly vocabulary. The Design Script demo, which was admittidly an early pre-alpha, failed constantly. It feels like they are throwing good money after bad by still trying to make Design Script at thing when they already have a range of sucessful languages integrated (C#, Python, .Net). 
With all that said, the Computation for BIM was an exciting session to attend. It really feels like Dynamo is coming into it’s own. It’s matured past the point of being a Grasshopper clone and is starting to find a direction in the management of building information that is totally unique. For the most part, the platform seemed relatively stable. There is still obviously a lot of work needed to expand the libraries and add features, but it seems likely that Dynamo is going to shine in 2014. I imagine many firms who wouldn’t have use for a tool like Grasshopper will find neat ways to automate parts of their design process using this quickly maturing Dynamo.
- Daniel Davis of CASE
- Edit December 5, 2013: Changed the text to clairify that any slowness comes from the interaction with Revit rather than Dynamo. Added a clause pointing out that the Design Script demo was early pre-alpha.