Room boundaries from walls

Hi All,

I am wandering is there a way to get a room boundary from just walls? Or specify rooms just from walls? Any one have any ideas? The names and order can be random.

Thank you for your help in advance!


Jonas Blazinskas

Not exactly sure what you’re asking, but both Archilab and Clockwork have a node called Room.Boundaries that returns the boundaries of a room. You can then cross-reference every room’s boundaries with a list of your specified walls to find rooms being bounded.

Room boundaries come from rooms.
You can save the model with walls in a different file, Link that in and set it to be room bounding in the link properties, Make some rooms and extract the boundaries if that is the problem.

Room boundary requires a room. I am after forming a room in a first place from bare walls. Is there a node to do so?

I would like to form a room from wall elements directly as this is part of much bigger graph.

So i think you’re looking for the node called Room.ByLocation. You can get the point from the average location of the walls (probably works 95% of the time).

Need a 100% accuracy and something that would scale to multiple rooms. There must be a way to figure out the room point logically.

Room.ByLocation and then Center Rooms

Or you can use the native Revit command to create all possible rooms automatically first.

How would one find the location of the room before creating the room tho?

Is there no equivalent dynamo node to create all possible rooms automatically?

The MEPover package has a node that places Rooms automatically. I personally haven’t used the node, and I’ve had mixed success with their automatic Space creation node.

1 Like
  1. Get the location line of all the walls - likely you have this already in a prior step so don’t use Element.GetLocation as that will decrease speed a lot.
  2. Group Curves from the Archilab package (assuming you need this as you may have donut shaped rooms - if not skip to Curve.Offset a few steps later).
  3. Polycurve.ByJoinedCurves
    4)Surface.ByPatch, and Surface.Area to get the area of the resulting polycurves.
  4. List.SortByKey using your polycurves as the list and the areas as the key.
  5. List.LastItem on the sorted list to get the outter polycurve.
  6. Curve.Offset with a negative value to offset the polycurve to the inside.
  7. Curve.PointAtParameter to find a point on the offset loop. This should be inside your room with a high degree of incidence.
1 Like

The previous post seems like a better solutions especially because an internal separating wall counts for both rooms and the line is in the middle of the wall so offsetting causes issues.

Thank you for your help!