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.”
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”.
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)
Thank you so much Andres, without seeing the graph you shared I did the same 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
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 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
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.