How to extract exterior curve of curtain wall panels in plan


I am trying to extract the exterior edge of a curtain wall and convert them to area boundaries on different levels.

I was trying to create planes at the respective levels of my model and see if I could intersect the curtain panel geometry and extract the curves, but I am hitting a block. I cannot find any nodes that seem to do this. I’m also not fluent in python yet.

Attached is a JPEG of the model in plan sketching out what I am trying to get.

Any help would be appreciated.

Have a look here for something similar.
I’m not saying its a solution, but a nudge in the right direction maybe.

Try embedding a curve in the family where you want the area separator to be, then use Element.Curves to pull the desired data.

1 Like

Thank you for your feedback. I kept working toward the intersection method and I made some progress… Attached is my node setup.

I now have to figure out how to get just the exterior curves of the curtain wall and convert them to Area Boundaries.

Thank you for your time.

Update, I was able to extrude the curves and boolean union them to make a solid. I am having trouble however deconstructing it with LunchBox Deconstruct Solid. Any ideas? Thank you.

One thing that might cause you problems is Revit ignores boundaries that create shapes below a minimum area. I would do a test manually.


I was able to get the edges of the solid. I am not trying to join the curves into poly-curves and select the poly-curve with the longest length (the exterior edge). When I use the node PolyCurve.ByJoinedCurves I get an error that says:

Warning: PolyCurve.ByJoinedCurves operation failed.
Curve join produced more than one WIRE in PolyCurve

Any ideas on how to get this to work?

Thanks again.

I don’t think you have to join the curves.
Just transfer them to Revit model lines in an area plan.
To get rid of the lines/outside on the inside, that’s another thing

Thank you for the reply. Yes I would like to isolate the lines on the outside/outside. not the lines on the outside/inside.

sorry for that. i’m from Holland.
You can get the line direction and get the normal of a line and a vector from that.
But if an object is drawn is it always drawn clockwise or are you not sure on that?
I’m not sure if perimeter curves are Dynamo curves or Revit ones in this case

i do not believe this curtain wall was drawn clockwise.

Then let me give you my thoughts.
Make a Room outside the building, confined with Room Separators away from the building, and get the contours of that Room.
Those are the Curves you want?

Thank you that sounds like a great strategy I will try it out. Just to clarify in this city calculating the zoning area is a particularly tedious act. The department of buildings wants the “edge” of the building to be the glass line of the curtain wall including any articulation within the mullions. Hence why I am trying to to get the outside exterior edge of the curtain wall as the area boundary.

I guess you can toy with at which height a Room starts, Per Level

Why not draw the line at the face of glass excluding the articulation, and key curves nested in the million family define the associated articulation?

Hi Jacob,

You’re absolutely right. I’m sure that strategy would work. In my particular situation I am not the owner of the facade curtain wall nor it’s families. It is a model linked into my model. Typical coordination hell in an architecture office. I’m sure you’ve had your fair share. So I’m hoping to find a flexible workaround that can measure areas to the 200 or so different schemes we will inevitably try out during this process.

Ah! Well then same start point with a different twist:

  1. In Revit make your initial area separation line at the location line of the curtain walls and place areas bound to those lines.
  2. Select a curtain wall.
  3. Then get all of the panels and mullions at your cut plane/floor line/wherever the AHJ indicates the area is calculated (they did this right? If not you could just use the interior face of the horizontal millions.) for the selected curtain wall.
  4. Get the solids of the panels and millions and merge them into one solid.
  5. Intersect the merged solid with the cut/measurement plane.
  6. Create area separation lines for all of them. Yes, all of them.
  7. Get the boundary lines of the area post creation (watch your transactions).
  8. Filter out any non-bounding lines from the list of area separation lines created in step 5, and delete them.
  9. Clear all file bindings and repeat 1-7 via Dynamo player for each CW in the file.

Thank you Jacob for the breakdown. I have successfully created an intersect. I am trying now to take the longer curve (the exterior) and place it in the view. My area separator node however has an error that says custom node not loaded.

Any idea how to fix this?

Thank you in advance

Update your version of Clockwork. :slight_smile:

Thank you, this may seem like a dumb question but how do i actually get the curves onto my specific view as area boundaries? What do i do with the output node of Area.Separator?