If you try to build a connector to get some Revit data to a database like MySQL, you may hit an issue where some strings that are allowed in Revit will do funny things to your SQL instructions, like this:

What to do? We need to ‘escape’ these characters during our data export or INSERT to create something that the database engine can consume. There are some exotic ways to get around this (like encode your text in base-64), but in my case I just wanted to replace the problem character with the escaped version. Ideally, we would use characters that we know will never be found in Revit Type or Family Names.

Revit does not allow these characters in most type and family names:

Looks like a backslash could work, as this is an escape character in MySQL, and it is not allowed by Revit as above.

You can do this a lot of ways in various coding languages, but an easy way is with a String Replace in Dynamo, like:

This workaround doesn’t handle every situation – like if you are pulling parameters out of Revit that contain all kind of characters, you may have to look at a more reliable text cleanup or encoding solution. But this helps with the Type and Family names at least 🙂

The form creation engine in Revit does not really know about flat vertical zero thickness surfaces. However, with DirectShape, we can make almost any type of mesh geometry. One interesting idea coming out of the RTC ANZ event this year was creating these flat surfaces to display grids in 3D. This lets us do things like dimension easily in Navisworks or Revizto. I wanted to use them to add some flat datum lines to a construction setout point family.

Here is the Dynamo Script that I used (Download Make Flat DirectShape From Line):

Basically, you select a Detail (Symbolic) Line and run the script. In action:

Playing around with the lines a bit, I built this geometry for use in the project:

There have been different ways of accomplishing this over the years. Now, with Dynamo, I would use this simple two step process:

  1. Create a unique type for each Planting or Entourage element (as Height is a Type parameter)
  2. Randomize a list of values and write them into the Height parameter

It is super easy with Dynamo. Here is how you make the unique types (GUID from Bakery, Duplicate Type from Springs, SetType from Clockwork):

Then, just push the random values in, like this (the Set List node is in Bakery too):

My last attempt at this was here.

Big day yesterday in Revit updates, particularly with Revit 2017 Update 1 bringing some really cool enhancements, and the Dynamo Player! Here are some links and other information:

Revit 2017 Update 1
Direct Download Link
Release Notes 
Autodesk blog post
showing these top new features:


Revit 2016 R2 Update 7
Direct Download Link
Release Notes

Dynamo Player
People have been asking for a way to run their scripts more easily and transparently, and now you can. Simply install Revit 2017 Update 1, ensure you have Dynamo installed, and you will have a new option on your Ribbon…

It comes preconfigured to point at a samples folder:

You can point this at your own “Player” folder containing DYNs.

Press Play button to Run, and Edit button to open the DYN in Dynamo.

It remains to be seen how inputs will be handled?

Pick Objects and Dynamo Player
Interesting thoughts over on the forum, about how if you use a DYN with a Select Node, it will still ‘work’ —  this opens up some great possibilities!


Dynamo Player on Revit Help

Associated discussion over here.

I had a good time at RTC back in 2016, it was awesome to catch up with the usual BIM crew and see what they are all up to. Hopefully I’ll get a chance to post in more detail about a few things I learned this time around… but for now, here are my 2016 presentations for you to check out.

My keynote presentation slides (why BIM is broken and how to fix it…)

My Dynamo presentation slides:

And the Revizto session that I ran with Michael Clothier:

Presentation and handout resources (including Dynamo dataset) are available in the folder here:

Quite a momentous day!

You can download it at:

(or you can wait for the auto update 🙂




### 1.0.0 ###

– API Stabilization:  1.0.0 is a commitment to stable code that allows for smoother and more reliable movements from one version to another.  To more clearly express this, we have been moving to “semantic versioning” to illustrate the nature of changes in each release. We will be using the fairly standard version naming with an x.y.z system, where x incrementing represents breaks to the API (requiring developer refactors), y indicates changes that are still backwards compatible, and z are smaller bug fixes.  Package creators and maintainers are encouraged to assess changes to the previous code, which can be found here


– Graphics performance enhancements:  see this post for details
– Documentation: Along with new sections of the DynamoPrimer (http://DynamoPrimer.com), we have started an online documentation of the Dynamo API with a searchable index of public API calls for core functionality. This will be expanded to include regular nodes and Revit functionality.  http://dynamods.github.io/DynamoAPI/
– Licensing:  Dynamo Studio is now using a new version of the Autodesk installer that allows for easier access to network and token flex licensing tools
– Install:  we have created a separate installation for “core” Dynamo functionality, those tools used by all implementations of Dynamo, and Revit, and Studio installations.  This allows for the sharing of a common core of Dynamo code and packages.
– List Management:  Changes to “replication” or automated matching of different data streams in nodes and Code Block nodes eliminates the need for List.Map and List.Combine in many situations
– Send to Web: formerly known as Share Workspace, we have improved the ability to view and interact with Dynamo online with Customizers
– File Export:  Users can now author DWG files in the Translation section of Dynamo Studio.
– Direct Shape:  Dynamo in Revit 2017 can now take advantage of faster and more sophisticated direct shape creation.  In most cases, solid and surface geometry can be sent directly into the Revit environment as smooth (rather than tesselated) surfaces and solids, categorized to whatever is needed.  In the cases where a smooth element cannot be created, a tesselated (mesh) object is created, as was the case previously.

Bug Fixes
– An extensive list can be found here: http://dynamobim.org/incoming-bug-fixes-for-dynamo-1-0-0

Known Issues
– Listed here: https://github.com/DynamoDS/Dynamo/wiki/Known-Issues


Dynamo Builds

For a while here on What Revit Wants, I was a bit worried I was writing about Dynamo too much… “Hey, Dynamo isn’t Revit, its just an addin!”

But guess what?

Now Dynamo is Revit, its right there on the Visual Programming panel, Manage Ribbon.


If you were running Dynamo 0.9.2 prior to installing Revit 2017 (perhaps as part of Building Design Suite Ultimate 2017), you won’t immediately see Dynamo on the Manage Ribbon. After installing Revit 2017, re-run the Dynamo install package, and ensure that Revit 2017 is selected:


Next time you launch Revit 2017, Dynamo should be in its rightful place, right there on the Manage ribbon, ready for you to jump in and start winning.

This recent post on Dynamo Nodes shows how a simple Navisworks Search Set can be built by Dynamo running inside of Revit:
Create Navisworks Search Set XML for Element Ids | Dynamo Nodes

In the first release, this node just uses Element Ids to build a long ‘orsearch set, but this basic idea could easily be extended and adapted to more closely connect Revit to Navisworks search workflows through Dynamo.

Here is a Screencast: