I’m using a Dynamo graph with BimorphNodes’ Elements.Intersect to pull room data (Name and Number) from Rooms and write those values into a shared/family parameter for elements inside each room (e.g., Casework, Furniture, Plumbing Fixtures, etc.).
The problem: every target element ends up with the same Room Name and Room Number, instead of getting the values from the specific room it’s in.
What the graph does:
Collect all Rooms
Get elements by categories (Casework, Furniture, Plumbing Fixtures, etc.)
Use Elements.Intersect to find elements in each room
Push Room Name and Room Number to parameters on the intersecting elements
Expected: Each element receives the Room Name/Number of the room it actually belongs to. Actual: All elements get the same Room Name/Number (appears to be coming from one room in the list).
How do I sort this out ?
The screenshot is not very clear, it’s hard to see the names of nodes.
But my guess is that you need to select cross-lacing in Element.Intersect to check every bounding box with every element.
But also, keep in mind that bounding box of room can give you false positive results, because it may get bigger volume than room itself. As example - non-rectangular rooms or corridors with complex shape
I would highly recommend to use LinkElement.Solids to get exact geometry of rooms, and get location points of elements and then use node Geometry.Doesintersect
There are multiple threads related to the same topic. refer to them for details.
The Genius Loci package has the “Room ToElement” node, and Clockwork and Archi-lab also have similar nodes. Please check them and use whichever is suitable for your requirement
This reads like a lacing and list levels issue. Try setting the elements input of the Element.SetParameterValueByName node to @L2 and the values input to @L1 to see if that resolves it. If not you may need to set the lacing to longest as well. If even that doesn’t fix it expand he data preview bubble for all nodes leading into the set parameter by name node and export your workspace as an image using the instructions I just linked.
It would be helpful if we could see the structures of all your inputs. The easier option, however, would probably be to use something like RoomAtPoint to get the room at each element’s location and then assign values. That ensures that you have one room (and therefore one parameter value) per element.