Sunday, June 9, 2013

Dynamo: Visual Programming for BIM

Dynamo:  Getting Revit to do things that Revit couldn't do otherwise...
We are living in an exciting period for design technology.  New tools are cropping up on a daily basis.  Many of them have exciting potential but it is sometimes hard to discern which ones are going to 'catch on' and ignite a creative shift within the design disciplines.  Grasshopper is one program that has unquestionably caught on and pushed the idea of 'computational design' out of the experimental fringe and into the mainstream discourse.  Of course, Grasshopper was influenced by other software that preceded it (Generative Components, for example) and its success is now heavily influencing the creation of new tools for other platforms.

Computation is now a pervasive part of practice thanks to the proliferation of new advanced tools and supportive communities.  We are now living in a paradigm where this 'computation stuff' is not only for esoteric discussions among academics or only for practices with elite 'geometry' groups.

Designers have spoken... we want extensible tools that let us customize our process.

The best part:  software companies are listening... and designers are winning!  This means more SDKs, expanded APIs, and even more visual programming languages that don't require designers to have to learn those 'pesky' scripting languages.

Enter Dynamo...

A few years ago, I met a fellow by the name of Ian Keough while I was living in Los Angeles.  He had just moved to the area and was working for Buro Happold as a computational expert.  We met up one day for lunch to share some war stories and show each other the kinds of stuff we were working on.  At one point he fired up a Revit add-in called "Dynamo".  He was interested in seeing if a node-based language, akin to Grasshopper, was possible and practical with Revit.  It was an impressive proof-of-concept and I was very interested to see if and how it was going to evolve.  Did a node-based interface have a place in Revit?  What could it be used for?  

Soon after this informal meetup, Ian released Dynamo as an Open Source project on GitHub where it quickly garnered attention and contributions from Autodesk.  Today, Dynamo remains open source and Autodesk has committed serious resources to see it grow into a fully featured extension to the Revit and Vasari programs.  Dynamo has matured a great deal in the past few months.  The node library is expanding exponentially and the program has become far more stable and reliable... and it's all happening through the transparency of an open source initiative.  (Autodesk and Open Source???  Really???)

What can you do with Dynamo?

Dynamo features a very similar node-based interface as Grasshopper.  However, Dynamo is built on top of a very different platform and API... and that fact is the key to its potential novelty and relevance.  Here are some thoughts on where I see Dynamo offering unique opportunities for the design team:
  • Customize Revit:  Up front, Dynamo lets users build automation routines for Revit without the need to learn the Revit API (a challenge, to be sure!).  This opens up numerous opportunities for users of Revit to customize their workflow with a significantly reduced learning curve.
  • Control Model Information:  As Building Information Modeler, the real power of Revit is not in pure geometry creation, but in how you can track and control model information.  Dynamo lets users design systematic relationships for manipulating model elements and parameters that would be otherwise impossible with conventional Revit tools.
  • Design with BIM:  BIM is often put in the box of being only for 'production'... not for designing.  Dynamo has the potential to turn this preconception on its head and allow designers to explore iterative frameworks in the context of a BIM tool.
Here are some things I've been sketching out with Dynamo in recent days...  

Creating a parametric stadium bowl  by controlling Revit families.
Using Dynamo to create a parametric 'rig' for adaptive truss families.
A Dynamo-controlled stadium assembly with bowl and canopy.
Is Dynamo 'Ready'?

Dynamo is growing by the day (sometimes hour) as the developers address the challenge of supporting the intricacies Revit's BIM database framework.  In recent weeks, I have had the privilege of collaborating with Zach Kron and Ian Keough on some new Dynamo content.  The things you are able to do with Dynamo today would have been impossible in earlier builds (even builds from a week or two ago). 

...but as was the case with Grasshopper, it ultimately falls in the hands of the design, computation, and BIM communities to contribute and help Dynamo mature.  Only then will we all fully benefit from another high-value tool in our arsenal.