Refer to the room within a shared parameter included in a family

Hello Geeks,

New to Dynamo and could use some help with a task. I’ve got a Revit file with rooms, each labeled with a room number in a shared parameter named “room number.” In each room, there are curtain wall panels, and I’m looking to add the room number to each panel using a shared parameter called “room number.”

Thanks a bunch for your assistance!

Use Room.Boundaries node to get the list of all walls that are surrounding a room. Simultaneously, get all curtain panels in the project, and use node Get.Host (or GetHost, I dont remember the spelling). Filter all curtain panels by match between their host and room boundaries (== operator, and FilterByBoolMask). Transfer values from rooms to the filtered curtain panels (Use GetParameterValueByName, and SetParameterByName).

p.s. Why did you create a shared parameter? There is a built-in parameter “number”.

Hello andres,

really appreciate your help, I’m not that good at dynamo, I tried to do this but I dont get the list of the room.boundaries. and also I dont know how to user the == and the list.filterbyboolmask
And for the shared parameter I would build it the panel to receive the room number

Then, your first post was not clear. You created a shared parameter for the panels, not rooms. Anyway, that paramater does not need to be shared, because its project specific. Make a simple project parameter “Room number” and assign it to the curtain panels, while I make the graph for you.

To correct myself, == would not work in that situation, but List.Contains would.

Anyway, I proposed a method that is not good, because a single curtain wall can be a boundary to multiple rooms. Therefore, I recommend using clash detection. If a solid made by curtain panel is clashing with the solid made by room, then we transfer values between that room and panel. I’m uploading an image for you to follow, because I would like you to build this yourself. Download the image. If you stumble into some parts of the graph that you don’t understand, pls feel free to ask. Its a way to learn. Tip: to better understand, run the graph after placing each node

p.s. Notice that I’m using number 50 in some code blocks. In my setup, it is basically 50 cm (random length to offset the curves and thicken the solids in order to get the best intersection results, you can alter this to your needs)

1 Like

Hello @Hakim_Boucekkine here is another way as test for room to room if the curtain wall is interior

1 Like

Thank you so much Andres, without seeing the graph you shared I did the same :smiley: yesterday, and I confirmed with yours now and it worked for a small test project, but I had some problems with my project because it is inclined, so when creating the scope boxes around the panels it did not do it great

Thank you Sovitek, but is there a way to check its room

Team, quick update:

Using only Revit, without Dynamo and without creating a project parameter, I managed to obtain data on the panels’ room locations. I achieved this by modifying the panel family and then creating a schedule of windows instead of panels. This way, the windows schedule was were somehow allowing me to identify in which room every panels are placed.

Thank you so much Andres, without seeing the graph you shared I did the same :smiley: yesterday, and I confirmed with yours now and it worked for a small test project, but I had some problems with my project because it is inclined, so when creating the scope boxes around the panels it did not do it great

Exactly the same?

I can notice you did not set the name for SetParameterByName node, but more importantly, those geometries might not clash, even though you wanted to. In my graph, I’m expanding the geometry of curtain panels, to make sure it clashes with the nearby room. Maybe there are some other differences as well.

1 Like

Ah I see, thank you so much
I’ll try this at work next week

yeas thats what is actuelly do…you can give it a try :wink:



forum curtain.dyn (42.4 KB)