creating curtain wall plans/elevations

image by archi-lab

I am not sure this would be useful for anybody, but some time ago, I was tasked with creating floor plans and elevations for each interior curtain wall partition. The idea was to create a Floor Plan and Elevation cropped to each Curtain Wall, and then automatically add some dimensions to them. It turns out that it’s possible in Dynamo, but boy did that workflow meant developing some custom nodes. Anyways, I went ahead and wrote bunch of custom code to accomplish it, so here it is. However since it’s a pretty long and involved process, I will be splitting it into a series of posts. In this first installment of documenting curtain walls, I will be talking about creating the Floor Plans, cropping them and naming them properly. In the next one we will discuss creating elevations and dimensions.

Let’s talk about individual steps that I am taking here, and what my thinking is for these components.

  • First thing we do, is collect all Walls at a given Level. I do this by Level, because I also use the Level Name to generate Floor Plan name later in the workflow.
  • Next we have to filter them for some particular things. I am only interested in Curtain Walls, because later in the workflow I will be creating Dimensions for all of the panels. We can find out if Wall is a Curtain Wall by getting its Type and then checking its “Kind”. Once we have all of the Curtain Walls, we also have to exclude everything that is not Line based. Creating Dimensions for Arc based Walls is possible, but not very straight forward, so for now we will just focus on straight Walls. Here’s the whole filter:
  • Next we need to generate names for the new Floor Plans. The way I wanted to name these was “Level Wall Number” so it would result in Level 1 Wall 1, Level 1 Wall 2… We can do that pretty easy by getting Level Name and then concatenating that with a number range.
  • Once we have our names ready, we can create the Floor Plans, and then rename them. In order to create a Floor Plan, we can either use a node from Dynamo OOTB, or a custom one that I have made. The default Dynamo node creates a Floor Plan by Level only, while one that I have created also allows to specify a View Family Type, so if you have a specific Floor Plan Type, you can specify it here.
  • When all that is done, what we have left to do, is get the Bounding Box around the Wall, and set that as a Crop Box for the Floor Plan. For that specific task, I have created a custom node and a custom little utility called Offset to control the amount of space around the object (Wall) that we want to lave for dimensions etc.

As you can see the code for this function is not that complicated. All we do is the the Bounding Box of the Wall, and then offset it. We just have to remember to convert Revit units when creating a Dynamo geometry, otherwise we would be potentially forcing it to work with Revit’s internal units of decimal feet.

All of that stuff comes together with us setting the name and setting the crop box.

The result is bunch of views, named after Level and Wall Number that are cropped around the Wall with a nice consistent offset.

Next up, I will want to look at creating elevations, placing some dimensions in the views, and then finally, perhaps placing these on a sheet.

As always downloadable files will become available for my Patreon supporters, and for everyone else just follow the images here. Please make sure that you have the latest installed from the Package Manager.

Support archi-lab on Patreon!


  1. Joe Walton says:

    Hi Konrad, I’m very interested in your project. I’m developing views of exterior wall panels very much as you. I was hoping your Walls.GetAlignedBoundingBox would solve the problem I’m having with walls that are not aligned with an axes. You might consider generalizing your application so it easily take views on non-axes aligned walls. Thanks for all your contributions. .

  2. Renée says:

    So far this works great! I will be super interested in how can I create elevations and place the dimensions in the views!

  3. Renée says:

    I am pretty new with Dynamo but I’ve been playing with it a lot the past couple of weeks, I am not sure if I can make the Python script work, but I would love to give it a try! :)

  4. Renée says:

    That is awesome! Thank you Konrad!! :)

  5. Ming CHAN says:

    I was also tasked with creating and documenting curtain walls in my company. My approach was to create them as an assembly and just create views using the assembly feature.

Leave a Comment