spaces and space tags w/ dynamo

image by archi-lab

Ok, so recently I have made contact with a Mechanical Engineer that was getting his toes wet with Dynamo. Of course he has had some questions about workflows and different things that you can and cannot do to Revit with Dynamo. So far, our email exchanges has resulted in some new custom nodes being built as well as some old ones getting a face-lift. First workflow is based around spaces and tagging spaces using Dynamo. It resulted in me looking at creating a Space Tag which happens to have a separate method in Revit API. Since I have already had a Create Annotation Tag node that was able to tag elements and rooms then why not just add spaces? Here’s how you can tag spaces using that particular node:



This is possible because Create Annotation Tag node now has a new method embedded for handling SpaceTags. Here’s the code for it:
There was also another thing that I was looking at: creating walls from Room Separation Lines. This can be achieved like this: Walls from Room Separation Lines This method introduces two new nodes. One is called Curve.Level and will take an input of Model Curves and return a Level that they were created on. Room Separation Line is nothing more than a Model Curve with some additional properties so that’s the easiest way to get a level that it was drawn on. Also, as you can see, the goal here is to get the level that the line was drawn on and level above it to generate Wall Base and Top constraints. Here’s code for Curve.Level:


Next node used here is one that will take a Level and return Level directly above it. Keep in mind that levels here are sorted by their Elevation. After that it’s pretty straight forward – just feed all that information to Wall.ByCurveAndLevels node and you have your Walls.

I hope that these two simple workflows can make some of your lives easier. Good luck!

Ps. Let me know if there is anything that I have missed here. I will be more than happy to fix any issues.

Support archi-lab on Patreon!


  1. Joe Lally says:


    Thanks for these, it would be good if you could also look at the auto creation of MEP spaces. As an MEP engineer we have to spend ages creating MEP spaces, only for the rooms to move around and for everything to break.

    Would there be a simple way to create the MEP spaces, either by finding the rooms in a linked file and copying the properties, name, number, location etc. and creating the spaces accordingly or by finding the bounding elements just like the ‘place spaces automatically’ button does in the native program?

    Your help would be appreciated I have been wanting to do this with Dynamo for a while but I keep hitting stumbling Blocks.


  2. Michal says:

    Konrad, I run this script for Tags and sth is not right. I can see that there is more element created that should be in one view also number does not match,

    Attachment:  tag1.png

  3. Steve says:

    You should read the following AUGI article:
    It even references Grimshaw package by K. Sobon. The only modification you need to make is a way to handle rooms that are in the linked architecture file, but not placed. The unplaced rooms seem to irritate Dynamo, but they are easy enough to filter out. Once you do that, it works great.

  4. Benjamin Barfoot says:


    I added something within your code that will stop the tag getting reapplied to a space that already has a tag I don’t know if you want to add that into your get upload or not as I know I would be rerunning this script to pick up new elements within the model.


Leave a Comment