List Management Rooms and Walls

Hello everybody,

I’m trying to get , for each Walls, the list of all the rooms that are enclosed by, to write later on a wall parameters the name of the rooms.

I found the nodes Room.Boundary or Room.Finishes that helps to know, for each room, what are the walls that enclose it, but I now need to “Invert” this list to get a list of the rooms by Wall.

Hello, did you get a solution to this topic already? I looking for the same…

Strikes me that this is the wrong way round?

Surely it’d make more sense to find the room then find the walls that surround it?

Also, a wall could be part of two rooms.

Yes, we model the wall coverings in each individual room. These wall coverings do not form room boundaries. The type names of the wall coverings always start with ‘WS_’. A Dynamo script would need to identify in which room these wall coverings are located, and then the room name should be automatically entered into a wall parameter.

Do you ever have a covering for from one room into another, such as between an open kitchen and dinning room?

Yes, but we can separate the wall coverings at this location.

I did a script a couple of years ago that created the wall coverings for the room… No one used it at work though :rofl:

Seems to make more sense to find the room / room type then model the wall lining from this rather than model an unknown wall covering of unknown width first?

If you already have the wall linings per room then maybe find the rooms, then find which walls they intersect with and apply the parameters required that way.

Yes, I am familiar with the method in which wall coverings are automatically placed based on room designations. Unfortunately, this doesn’t work for us because we have different wall coverings in the rooms. Here, we primarily take into account the underlying surface of the wall coverings. For instance, we have several wall types for plaster constructions. These differ depending on whether the underlying surface is masonry, reinforced concrete, or plasterboard.

You could tweak this to just output the rooms if you wanted.

Not sure I’m a fan of this as it’ll cause a good amount of pain with dimensions and alignments and modelling accuracy. I mean there wouldn’t be a seam there, why model it as such?

In any case, you could try this:

  1. Get all rooms
  2. Pull the room solids.
  3. Build a function to test the geometry of each wall against each of the solid room geometries.
  4. Use a List.FilterByBoolMask to get the room (#1, not the solids) which intersects the wall geometry.
  5. Intersect each wall’s geometry against the associated room’s geometry, and pull the object type
  6. Get the room associated with intersection result which contains a solid object type, and pull the parameter you want to copy over (name, number, whatever it may be)
  7. Set your wall’s parameter to the value of the parameter from the room

Note that if you have walls in multiple rooms you’re going to get incorrect results, which is why I asked the question above.

Sadly you can’t rely on point testing for the same reason - you’d either have to sample ALL points on the wall and get the room at that point to overcome that issue.