Automatically generate room separation lines

Hello all.

I am looking for help with generating room separation lines from walls via script. We generally need to reduce the room area by a certain offset (say 4") from the finish surface of each wall. I think the script would need to do the following:

  1. Extract a polygon of the room boundaries.

  2. Extract the centroid of the room object.

  3. Offset the room bounding polygon by a specified distance towards the centroid.

We basically need this because there is no way to add an offset to the room bounding property in the settings. It only goes by center and finish surface of the wall or structural core. On the particular project we are looking at we need to offset the room defining area to allow for wall trim and other elements that will not be counted in the net area.

Thank you for your help in advance.


Hello Zach Kron: Can you please solving his query.

You should look into the great “Lunchbox for Dynamo” custom nodes. There’s a “Room element collector” that can provide you with both the room boundary and location.

I don’t think there’s a way to modify the existing rooms’ boundaries, so you may need to look into recreating the rooms on top of the existing ones.Tho I’m not sure what’s the best method to create the new rooms.


Thanks for the responses.

@ Dimitar: I was looking to turn these boundaries into room separation lines, which is a Revit object that can bound rooms.


The lunchbox node was helpful but the problem is that the offset does not work in a consistent direction. Some rooms offset out, some rooms offset in. It has to do with the direction the walls were drawn in (clockwise vs. counter-clockwise.) Unfortunately I cant control every wall in a project to have the same direction of start and endpoint. Is there a way to tell it to offset towards the room location point?

Also some rooms don’t come through with the node. Its like it fails to gather all the bounding elements.

Darn the current tools don’t allow us to specify the offset direction. The only other alternative that comes to mind is to use Geometry.Translate on each curve. That way you could specify a vector from a point on the curve towards the room location point. But then I’m not sure how to combine the new curves into a closed poly curve.

Do you have any rooms(or room boundaries) inside a model group or a linked revit file? Maybe that’s why the room collector isn’t able to get those.