Short of going the geometry intersect route (rather cumbersome), does anyone know of a way to find the element ID of the Mass that a Mass Floor belongs to? Or do Mass Floors get listed in the exact same order as their Mass counterparts?
Have you considered extracting the “Mass: Family” parameter from the mass floors?
Brilliant! Never thought that would give me anything but the family name! I wonder how many more of these gems I’ll be missing because my mind is stuck in Revit mode. Thnx!
Turns out I needed to go a little bit further to get what I needed. The above graph gets me the family, not the element. Family.ByName needs to be wired to Family.Symbols, and that into FamilyInstance.ByFamilySymbol.
Warning: cleanup required!
First, not all mass floors in the model are ‘placed’, if the level for which a mass floor is generated does not intersect the mass, they are there, but have no value. Look for the "Floor Area"parameter and the value “”, for instance.
Second, not all types of a Mass Family are ‘placed’. Those generate empty lists. You probably want to get rid of those as well.
Well, that blew up in my face. FamilyInstance.ByFamilySymbol gets me all the instances, not just the one that hosted the original mass floor. Works fine for in place masses, not for loadable mass families. Back to geometry intersections I guess?
Don’t give up so fast. That’s something we can easily obtain through the Revit API. I added a node called MassFloor.Mass to package Clockwork that will do the trick.
Great stuff! I’ll try it out asap and let you know.
Like Clockwork! Measly pun intended…
Not to disparage your efforts Andreas, I’m a little hestitant to incorporate python scripted acces to the API into my medium sized office workflows. The API could change, Python could change, Dynamo’s attitude towards Python could change, and no-one here knows either C# or Python (though I’m starting to get the hang of it studying your scripts). Up-a-creek-without-peddle-scenario seems likely in the future. I’m just getting people here to trust that Autodesk is backing Dynamo, including support to fix nodes when the Revit API changes.
Apart from this little issue (https://github.com/DynamoDS/Dynamo/issues/4829) I encountered, I’m leaning towards the geometry intersection method, just because I can do that without Python. Probably takes much more time that way.
Would be a huge win if Dynamo incorporated some of your work though, this one least among them. You’ve got my vote: https://github.com/DynamoDS/Dynamo/issues/4828