Automation of Area Boundary Lines


Does anyone know if it is possible to automate the placement of all area boundary lines in a plan view by the wall centerline? To take this a step further, would it be possible to only place area boundary lines in a plan view by wall centerline for walls only on a certain workset?

When creating a new area plan, Revit will generate boundaries for walls to the interior or exterior of what Revit perceives as shell walls.

In reading this post: It seems possible to generate area boundary lines from a single room. Would it be possible to do this with multiple rooms as well?

I am working through the previous example with some errors. I am pretty new to Dynamo.

Thanks! Em
<p style=“font-weight: 300;”>


Hi Emily,

Yes it is possible, see below how.



WOW! Amazing - thank you. I am going to test this right now. Very exciting.

Early joy :). Let me know the result. Good Luck!

This is SO incredible. This literally saves days and days and days of work. Thank you so much! :slight_smile:

I am finding that the script generates 2669 lines for me in about 5 - 10 minutes. I probably only need half that amount.

The project I am testing this in has 5 phases and 5 different buildings combined to make one building. (museum renovation typology)

This script is picking up all of the lines for all of the walls in all of the phases. Is there another node for filtering either by phase or workset?

I’ll google it, but I figured I would ask.

This is seriously incredible. Thanks again!




Index was outside the bounds of the array. at ProtoCore.DSASM.Executive.GetProcedureNode(Int32 blockId, Int32 classIndex, Int32 functionIndex) at ProtoCore.DSASM.Executive.UpdateMethodDependencyGraph(Int32 entry, Int32 procIndex, Int32 classIndex) at ProtoCore.DSASM.Executive.SetupEntryPoint() at ProtoCore.DSASM.Executive.SetupExecutive(Int32 exeblock, Int32 entry) at ProtoCore.DSASM.Executive.Execute(Int32 exeblock, Int32 entry, Language language) at ProtoCore.DSASM.Executive.BounceUsingExecutive(Executive executive, Int32 exeblock, Int32 entry, StackFrame stackFrame, Int32 locals, Boolean fepRun, Executive exec, List1 breakpoints) at ProtoScript.Runners.ProtoScriptTestRunner.ExecuteLive(Core core, RuntimeCore runtimeCore) at ProtoScript.Runners.LiveRunner.Execute(Boolean isCodeCompiled) at ProtoScript.Runners.LiveRunner.CompileAndExecute(List1 astList) at ProtoScript.Runners.LiveRunner.CompileAndExecuteForDeltaExecution(List`1 astList) at ProtoScript.Runners.LiveRunner.UpdateGraph(GraphSyncData syncData) at Dynamo.Core.Threading.AsyncTask.Execute()

Any thoughts on where I am going wrong? Thanks! Em

Hi Emily,

I think your parameter name is not correct it should be “Phase Created” instead of Phase. That’s the reason your getting null values.

I was trying to match this parameter:

I get the same issue with this alteration:


I think she needs to filter the walls by phase… " I am trying to filter the wall selection by phase and I am using the list.filterbyboolmask node but I am running into this error: "

Hi Organon,

According to the above image it shows that she is looking to get parameter “Phase” from Area Plans.


Ah - ok. I am the problem :wink: I was looking at the view parameter and not the wall parameter. So, for the wall, the parameter is Phase Created, although I still ran into the problem above. I will look at both examples and see how they work. I am trying to filter the walls by phase. Thanks! Sorry for the confusion. :slight_smile: Thanks for all the advice.

Me again - I got this script to work:


Now I am having trouble because this places area boundary lines for all levels, and not just the levels shown in the view.

For example:

If level 1 looks like this:

And Level 2 looks like this:

Then I get this return for boundary lines on a level 1 area plan:

I will fiddle around with adding another filter for the wall level?

Any advice would be appreciated.





Maybe instead of All Elements of Category, I should use Get Elements by Category / Level?

1 Like

Hi Emily,

Good Job


1 Like

This is an interesting workflow. I wonder if we could work it so that, instead of every wall, of every room (the net area), we took the gross area for multiple adjacent rooms. My reading of the IBC says that the gross area for office use, as an example, should ignore interior partitions when the uses are adjacent. A floor full of offices, for example, is calculated as one area for the entire space rather than 20 individual offices. If I added a parameter to my rooms for use, I should be able to get the walls that bound multiple rooms. This would make changes to the area plans we use for code calculations much easier. Hmm… something to work on me thinks.

Hi, This is a really cool workflow for Room Boundaries. Is it possible to create area boundary lines from floor plate sketch lines? I would like to automate the process of creating areas plans but selecting floor edges or sketch lines to generate the Area Boundary model lines. Tried to create this using Emilies definition for walls as a starting point. Can’t find’ area separator by Curve ’ or ‘Element.Locatrion’ nodes. Do I need to download a particular package to get this node as it doesn’t appear in the node search? Thanks, Kong