Pushing Space Name into Element Shared Parameter

Hi All,
I’ve been watching training tutorials and reading the forum for over a week now and can’t find a way of finishing this script.

Overview: I am looking to assign space information to structural elements for 4D planning, but while the project is still developing to RIBA Stage 4, the structural model will change frequently, and I need the script to update “automatically” in line with parameters I set later. (One problem at a time)

I am able to get the parameter info I need, but applying it to an Element Parameter is where I’m struggling. I have already created scripts for importing the space geometry (from a linked arch model), creating the project parameters (for all categories), now I need to assign the Space Name retrieved against an Element Parameter, so that in future I can link this with a Project Planners programme / schedule.

Also, rather than using the FamilyInstance node, it would be great to acheive an “apply to all elements that have this shared parameter” node.

I feel I’m missing a basic step here but have exhausted my eyes and mind trying to resolve.

All help / direction would be greatly appreciated.


This is the basic idea. You can add more relevant categories.
It will get more complicated once you start adding elements that are not placed but drawn in the project (like Floors or Walls) because you have to question them differently if you need to know their placement point or something similar. User families can use the FamilyInstance Nodes.

Just add your target parameter as a shared project parameter to the relevant categories in the project.

1 Like

Thanks Bjorn! Just working through some errors at the moment.

I had planned to “split” or “break” floors so that they related to the specific zones, but hadn’t decided whether to try through dynamo or manually.

Also, do you foresee errors for walls that intersect with several spaces, likewise with the floors?


It’s more that you cannot use the FamilyInstance.Space Node for system families, not that the wall.floor is spanning multiple zones.

So you have to decide what point of a wall you would like to find (start, end, center etc) to determine it’s space. And then look for/write a Node that does what Room.AtPoint does for a Space. (Or determine the point in a wall/floor and use DoesContain to check which space contains the point of the wall/floor you are checking.

Maybe you can go the route of geometry checking (get the wall geometry, get the space geometry and determine if something is outside of not?

The problem I’m mentioning is that you will have to change the way you approach this problem for System Families.

OK, I think I understand what you mean. I imagine I would grow this into the MEP elements in the future, so perhaps I should look from a different angle, as you say.

I could create an excel document, with a list of the FamilyTypes I need and use the FamilyInstances.Space node to control these. Then use geometry to control the other elements that can’t be controlled here.

I’ve created the below for the piling which worked like a treat for step 1, so i’ll have some play and see if I can get some sort of schedule of the elements that will work with this script.