Renaming Revit materials with Dynamo

Imagine that you have to rename a lot of materials inside your Revit model. You could spend ridiculous amount of time, renaming all of the stuff manually. The other option would be to write a relatively simple Dynamo script that will handle this task for you.

And here it is – simple yet powerful Dynamo graph:

Dynamo_Rename_materials

This script takes all Revit materials that contain “Concrete”, then adds a custom prefix “Prefix_” to material names. Of course, you could change the logic as you wish.

Please note that you should use the custom node called “Element.SetName” from the Clockwork package (available @ dynamopackages.com) to rename elements! Out-of-the-box (OOTB) node “Element.SetParameterByName” will fail with ‘read-only’ error.

Download the Dynamo graph here: Dynamo_Rename_materials

Sneak peek into Dynamo 2.0

It’s been a while since the last “major” Dynamo update (Dynamo 1.0 was released way back in 2016). And if you are tired waiting for something new, you can download and install one of the latest Dynamo 2.0 daily builds from the Dynamo development builds webpage.

Starting from this year’s daily builds, Dynamo team has changed the way Dynamo installs, so that it doesn’t interfere with existing 1.x installs:

  • DynamoCore and DynamoRevit will be installed in the folder named using DynamoCore major version instead of major version point minor version;
  • Installing the new Dynamo 2.x build should not affect your existing Dynamo 1.x installed;
  • Installing a new Dynamo 2.x build with a larger minor version will overwrite the content in major version folder.

Considering that Dynamo 2.0 will save files to a format that is not compatible with earlier versions, it is highly important to backup your existing Dynamo content folders. Please read this safety note from Dynamo team before downloading and installing daily builds:

These are the early stage builds that are leading to the Dynamo 2.0 release. Please keep in mind that it is early days for these builds, there are still a number of large moving pieces and, as always, this area should be treated as an active construction site. If you do decide to participate, please wear your hardhat!

Dynamo 2.0 brings a plenty of changes, including:

  • New JSON file format instead of XML-based one;
  • Updated node library with different organization:  Dynamo2.0_Library
  • New OOTB (out of the box) dictionary nodes:Dynamo2.0_Dictionary nodes
  • Custom packages have been moved to the dedicated “Add-ons” submenu;
  • Usability fixes for those who work with Python (code execution button, custom templates, multiple editor windows, etc.).
  • And, of course, a lot of tweaks under the hood. You can view the full list of the future changes here.

Dynamo 2.0 can be installed side-by-side with existing 1.x versions, allowing you to experiment with the early pre-release tools without interfering with your existing workflows. You will be prompted to choose which version you wish to run when first launching Dynamo in Revit:

Dynamo2.0_Launch

This setting will be saved per-session of Revit. Restarting Revit will enable you to switch to a different version of Dynamo. Please don’t forget to back up your existing Dynamo workflows, packages and files. And do not use unstable software in the real project environment!

Revit railing enhancements with Dynamo

Lately I’ve been working on some Revit railing enhancements. This is still work in progress, but some of the Dynamo nodes are already available online in my updated Zhukoven.com (rev.2017.8.17) package. Below you can see available railing Dynamo nodes (please note that currently all of these nodes support only one railing instance at a time):

Railing.CalculateBalusterProfile

RailingBalusterProfile

Currently there’s no direct link between the railing element and its hosted balusters through the Revit API. So in order to get the baluster profile data, we have to explode railing geometry and extract surfaces. Output values are diameters / widths of baluster elements.

Railing.CountBalusters

RailingCountBalusters

This node calculates the number of railing balusters. See this post that explains the logic: Count railing balusters in Revit with Dynamo

Railing.GetHost

RailingGetHost

Check if the railing element is hosted, and get this host element as an output (if applicable).

Railing.GetPath

RailingGetPath

Get the list of lines that form the railing path.

Railing.GetTopRail

RailingGetTopRail

Get top rail element (instance) from the input railing instance.

Railing.TypeInfo

RailingTypeInfo

Input railing instance to get its type, primary handrail type, secondary handrail type, and top rail type. The node returns null values if selected railing type doesn’t contain handrails.

Download an updated package (rev. 2017.08.17) from: Zhukoven.com

Zhukoven.com dynamo package update brings Navisworks SearchSet XML creator

An updated version of my Dynamo nodes package (rev.2017.6.2) is now live at Dynamopackages.com. This version contains the Dynamo node that builds a Navisworks search set XML from the input data:

Navisworks.CreateSearchSet

Based on the original code by Luke Johnson from What Revit Wants (Bakery package), this node gives you the freedom in Navisworks XML file creation. You’re able to specify the Navisworks Search Set name & group, and choose which Navisworks parameter you’re going to use. This XML file stores data in the structured way that could be easily read by Navisworks. This means that you can use the power of Dynamo to automate your Navis searches, and even set the rules that couldn’t be otherwise done without workarounds. Zhukoven.com dynamo package update brings Navisworks SearchSet XML creator

Renumber rooms by level – Revit and Dynamo workflows explained

Our architect asked me recently, if it’s possible to add the level prefix to room numbers in Revit. Assuming that the building is relatively large, this is certainly the task that requires automation. However, this could also be done in a semi-automatic way via the Revit room schedule… So let’s take a look at both Revit and Dynamo workflows, and see the difference between them.

Revit semi-automatic renumbering

  • Create Room schedule with the following fields: Number, Name, Level, Shared parameter (RoomLevel in our case):

RoomSchedule Renumber rooms by level – Revit and Dynamo workflows explained

Visualize Revit element orientation in Dynamo

Yet another small Dynamo node that may be handy if you need to watch for an element orientation. There are different use cases for this – like placing wall openings by doors & windows, or placing elements with preset rotation (e.g. stadium seating). What it does – is simply illustrates element’s facing orientation by drawing a line in Dynamo:

Each line starts from element location point, and indicates its facing orientation. Resulting lines could then be used to place elements or set rotation angles.

I packed this workflow into the custom node called FamilyInstance.VisualizeOrientation to make it reusable. If you’ve already installed my zhukoven.com package, you’ll need to download the latest update (Rev.2017.5.25). Or simply follow this logic to build your own workflow:

FamilyInstance.VisualizeOrientationNode

 

 

Zhukoven.com dynamo package is live

To start with, I’d like to say that I’m not willing to build an all-in-one dynamo package, collecting everyone’s custom nodes. My intention is totally different: I’d like to share my ideas that cover some white spots in Revit and Dynamo. I mean that if I managed to find solution to one particular problem, that has not been solved yet on dynamo forums or somewhere else, why should I keep it in secret?

(drumrolls): Introducing the very first Dynamo package!

Well, while I’ve already published the first version – rev.2017.5.16 (and here’s the link to the dedicated packages page), it is still work in progress, and of course there are some unfinished nodes that I plan to include in the future releases. So stay tuned and enjoy! And don’t forget to report issues and your ideas via the contact form on dynamo packages page.

 

A few words about Dynamo and Visual Programming

What is Visual Programming , and why does it generate a lot of hype among AEC professionals? In simple words, Visual Programming lets you build your program by manipulating with graphical elements rather than by specifying them textually. VP basically acts as a mind map, connecting one’s design ideas with the software API (“application programming interface”) to put design ideas to life. You’ve probably seen my previous post with the “Hello, World!” image from Dynamo (Dynamo == Open Source Visual Programming Revit addin):

Dynamo_Hello

A few words about Dynamo and Visual Programming