Add the Same Room Parameter to the Floors, Walls, Ceilings, Doors, Windows and Furniture

Hello everyone!

I am new to Dynamo and therefore struggling with my script.

My goal:
I have a Room parameter that I need to insert to all of the Walls, Ceilings, Floors as well as to the Doors, Windows and Furnitures. (it’s a modular building so that particular Room parameter is the same for all of the Rooms in one module, hence there is no need to worry about the interior walls separating two Rooms, the parameter on both sides is the same).

What I have done so far:
I used a custom node from Archilab package called “Elements in Room” to define which elements (internal doors, shaft hatches, furniture) are in which rooms and then add my room parameter to each element according to the Rooms they are located in. This all works well with all the elements that are inside the Room volume, so to say.
Since the “Elements in Room” node only checks whether an element is inside the Room or not, I also used a custom node from Archilab package called “Room.Boundaries” to define all the room bounding structures and then add my Room parameter to all of them. This also works well, but only if the element is room bounding.

So my question is:
How to add a room parameter to the elements that are neither inside a room nor are room bounding?

For example, if my floor construction consists of at least two separate floor types, the top one gets the room parameter, since it is room bounding but the bottom one doesn’t. Or what about the external doors and windows? Internal doors get the parameter since they are inside the Room, but external doors and windows don’t.

Hi @Kkartsep and welcome, try to get the geometry of the room, scale it by a convenient ratio 1.1-1.2 to include all of the elements that you think they should be inside the room, get the elements location that are not filtered by the methods you are using (walls, floors, doors, windows, …), then use Geometry.DoesIntersect node to check if these elements are inside your room, can’t think of any other method, maybe someone else have a better idea.


We also used the package datashapes with the raybounce options. So can catch vertical elements and map parameters.



Thank you for your reply @ tradelie.

This approach could work but I must be doing something wrong while trying to scale the geometry of the room. I created a simple model with just four walls and the scaled the geometry of the room inside these four walls. The result I got is not as I would like it to be - it seems like the geometry of the room is scaled upwards (into the ceiling) but not downwards (into the floor). On plan view it also seems like the room geometry is scaled, but it also moves the geometry to the left for some reason, giving a false statement for one wall out of these four. (I attached an illustration of the plan and section view).

Could you please have a look at my script and tell what should be done differently in order to scale the geometry to every direction evenly?

@Kkartsep try to get the walls enclosing the room locations (GetLocation node), make a polycurve out of the collected curves, extrude the polycurve from level to level, this way you ensure you have the correct bounding geometry (GetLocation of the walls will extract offset curves of the room boundaries by half of the thickness of the walls, including any missed doors, windows, and level to level extrusion, alongside walls hosted by level will get any floor, above ceiling elements)

1 Like

Hello…for doors and windows i would find its centroid or location point and offset that point in normals 2 direction and intersect with room…can belong to more than one room…for ceiling i would find its location point and offset negative for hit room again there can be many different ceiling in room…for floor i would find room location and intersect to floor…but again there can be many floortypes in room…for wall i would use clockwork room bounderies…

PS a great node for find elements room or spaces is this one here mepower [works on linked room to]just group the result and you have whats inside room or space…for find rooms without a ceiling example use set difference…