This node will allow you to check what Floor, Wall, Roof, Ceiling and Room elements are owned by a particular level. This node will work in both 2D and 3D views.

You have the options to isolate the elements, colour the elements and reset aforementioned colouration.


Note: If the isolation element isn’t working, it’s most likely due to conflicting Clockwork packages.

Dependent packages: Spring Nodes and Clockwork

Set Worksharing Display Mode for Views on Sheets

This takes two inputs:

· part of a Sheet Number

· Worksharing Display Mode name (string, default value is ‘Off’)

Then, it will collect all the Views on Sheets that contain that Sheet Number, and it will then attempt to set the Worksharing Display Mode for those views to the desired mode that was input. It will report true/false in the Set OK? Output. Also, the ListOfAllModes output shows all of the Worksharing Display Modes that are available in this project.

DirectShape.ByGeometry, DirectShape.Transform

You are probably wondering what these DirectShape objects(refered to as DS from now on)  you’ve been seeing in the last few releases of Dynamo are all about and how are they any better than the built in “ImportInstance” SAT objects or family instances? Well here’s a brief summary:

  • They are very lightweight. They produce 3d geometry that is usually 20-30% smaller in size compared to conventional form based family instances.
  • DS objects belong to a category. This means that they can have type and instance based project parameters. They can also be scheduled or have rule based filters applied to them.
  • They can be transformed and translated incredibly quickly. Read on to find more about how to do that.

The “DirectShape.ByGeometry” node converts a Dynamo surface, poly-surface or solid into a Revit design script object type (which is a system type) and places an instance of that type inside your project, reflecting the geometry position from inside Dynamo. It currently supports Revit 2015 and 2016.


The most important inputs are:

  • The geometry objects
  • A unique type name for each geometry object

The optional input is:

  • Category. The default value is Generic Model. Direct shapes have much less restrictions on categories compared to families.

Spring nodes’ DS implementation differs from the built in DS nodes in a few ways. The main difference is that this implementation produces smooth curved surfaces(similar to the SAT imports), instead of tessellated objects. This however comes at a price – you can not assign material properties to DS objects due the current restrictions in the Revit API.

The other major difference is that spring nodes’ DS objects have a type.This means you can assign type parameters to them and reuse the type’s stored geometry either by translating or transforming it. This can result in the quick generation of large compilations of complex geometry arrays. Let us build up on the previous graph:


This graph manages to produce over 300 uniquely orientated, complex geometry elements in less than a second! Try to do that with any other Revit object.

The “DirectShape.Transform” node takes the following inputs:

  • a spring nodes typed direct shape instance
  • one or more coordinate systems

DirectShape sample 1.png

And the best part?explorer_2016-02-19_00-14-24.png

It does so by consuming just a few megabytes!

Once you’ve finalized your design, you can start populating the DS elements with different parameters and start scheduling them:

DirectShape schedule

You can not add any materials, but you can easily override their visual graphics representation or create rule based filters:

DirectShape filters.png

DS objects have both pros and cons. I personally see them as the perfect “temporary objects” or placeholder geometry in the early design stages of a project. Think of the possibility of creating tens or even hundreds of unique and lightweight design options that can coexist in a single Revit project. You’ll be able to quickly quantify and compare the different designs and once ready, send them along to the client in a nicely wrapped Revit file. Or if you are rushing for a deadline and do not have the time to create highly specific parametric content for an iteration that could very likely be thrown away by next week, you could quickly pop in a few DS elements and be good and ready.

Alternatively, imagine the following situation  –  you need to share your model with one of your biggest rivals. You have used hundreds of internal highly – parametric and intelligent families, that you’ve invested thousands of man-hours developing. You must  share all your geometry and data but you still want to keep your competitive advantage.Well, why not simply “freeze” some of your families by converting them to static DS objects? You’ll be able to transfer their entire parameter information and preserve the geometry without delivering your secret sauce to the competition on a silver platter. This sounds more sinister, but still could be a valid use for the DS nodes.

You can download this sample and others from the Spring Nodes repository:


Create Parts for Linked Elements

Using a List of elements from Linked Documents, and a 1:1 matching length list of Document objects, this node will attempt to Create Parts in the current document for each linked element. It will report True if successful, False if it fails. Note: This first version only handles situations where there is one Link Instance for each Link Document.