Create area boundaries by offset from level



What i would like to do in Dynamo is create areaboundaries 1,5 meter above my selected level to calculate my rentable area. In Holland we have different rules (compared to the standard Revit USA rules) how to caculate this area (NEN2580), so what i would like to do is create a plane 1,5 meters above my level, on this new plane i want the outline of all (bearing) walls, roofs and stairs bij intersection, then transform those lines into areaboundaries. For exanple: The area under the stairs wouldnt count unless its 1,5 meters high (rentable). The rules i just mentioned are just the basic rules i have to comply with, but just getting these outline would automate most of the the dull work.

As you can see, English is not my native language, sorry for that.




Lunchbox Room element collector gets me the room boundaries, so almost there, but not all the way

Thnx in advance



I checked tha revitapi help and found the RoomSeparator.FromCurve in the Clockwork package, studied it and came up with this:


What i need to do now is get my intersections and make curves.

Any help would be appreciated.




I’m having the same exact issue, and also chose the Clockwork Room Separator node as a starting point. At first glance, the API documentation seems that it should allow us only to switch NewRoomBoundaryLines(…) with NewAreaBoundaryLine(…) – notice in the API documentation we need to drop the “s”, Line instead of Lines – but this didn’t do the trick. After a closer look at the documentation it appears that the parameter for NewRoomBoundaryLines is a CurveArray while the NewAreaBoundaryLine accepts only Curve, which could be an indicator of why things aren’t clicking.

This is my first attempt to dive this deep into the API so I’m afraid this is all I can conclude on my own for now – anybody out there able to spot what we’re missing?


Hi guys,

as Ian has observed, the NewAreaBoundaryLine method expects a curve, not a curve array.

In the room separator script I am first creating a curve array and then pass that to the function that creates the boundary lines:

curvearray = CurveArray() for curve in curves: curvearray.Append(curve.ToRevitType()) separatorarray = doccreation.NewRoomBoundaryLines(sketchplane, curvearray, view)
For the area separators i need to cycle through all of the curves instead and call the function separately for each curve:
for curve in curves: separator = doccreation.NewAreaBoundaryLine(sketchplane, curve.ToRevitType(), view)
I added an AreaSeparator.FromCurve node to package Clockwork - it will only work in an area plan, because otherwise it'll just create model lines.


Thank you Andreas.

Merry Christmas


guys, especially @, following your discussion i was wondering if there is a built-in function to calculate a polycurve’s area? i scrutinized the api manual without success.



I don’t think there is, Peter. My current workflow for that is usually Surface.ByPatch and then pull the area.

See also:


Unbenanntes Bild@AndreasDieckmann looks familiar hoped there were optoins to streamline my code.



Peter, is your goal getting the room’s area or just a polycurve’s area in general?

You might be able to simplify it a bit:



@DimitarVenkov : actually both.

  1. i was wondering if there is a way to directly query the area of a closed boundary of any kind with an api function. the answer obviously is no. you have to do a detour via surfaces.

  2. i started my examination of options after reading marcel’s post. namely creating a room’s area in lets say 1.5 m elevation from the ground level. As this might be interesting if you have a room under the roof and only the parts of the room with a height UNDER_ROOF> 1.5 m are taken into account. that is why i implemented the cutting plane to query the area.

here is the example


Then in that case it might be more helpful to extract the volume of the room as a solid straight away with “Element.Geometry”:






TRUE :wink:


thnx guys