In one project we have the demand to verify our model before submitting to the architect. We do our Clash detection with Navisworks. But we have been asked to verify that all structural components connect to an element underneath and over neath. This is not possible with navisworks ( as far as i know…) so i am wondering if this could be possible with dynamo.
Does anybody have an idea if this is possible?
thanks in advance
As far as I know, unlike MEP models, structural elements do not have inherent information about its connection(correct me if I am wrong). So I guess there are not straight answer/API function to achieve your goal directly.
However, a work-around is to obtain raw geometry info from all structural components and then check it based on certain criteria(by scripting). I have done a script that check if all columns in two revit models match - very similar idea. A little bit scripting though, but still possible.
If you can upload some work, we can help you proceed.
thanks for your reply. Yeas i thought too to grab the geometry part of the model and then do some intersections. I found more direct way that i am trying out. When i have a little time i will look deeper into this and certainly come up with more questions
thats exactely what i am doing: running the built in stuctural Settings Check ( see image). I really a lot of the following messages:
“Structural Element may not be supported – verify support for Element. SA_002_BT-100+200-E0-E2 : Analytical Columns : id 476849”
"Structural Element may not be supported – verify support for Element. SA_001_BT-100+200-U2-U1 : Analytical Walls : id 478874 "
I suppose this is because the floor analytical floor is not enabled ( see other picture) plus it is grayed out.
the floor has been created with the Copy/Monitor tool from the arcitecture file.
Is there a way to enable the analytical model of the floors to reduce the number of warnings?
The built in Structural settings don’t get me very far, probably since the model is pretty much a mess… so i gave it a shot with dynamo because i need to get this started eventually. This is one of my first scripts so please bare with me.
here is the general idea: ( Robin & Ted saluting )
I want to test every wall against every floor ( later i will have to add structural columns & foundations and beams , but one step at a time) so for now just one Wall against all the floors.
with the Geometry.Intersect Node applied to a wall with all floors in the model i get either of the following results:
empty list meaning elements elments do not intersect
List with one solid item meaning the wall and floor intersect each other which is wrong. this mistake i find very easily with Navisworks
List with one Line meaning wall & floor only touch each other,
List with 4 Lines meaning they share a surface.
I will try to filter all the walls that do not share at least 2 surfaces with some other elements ( top and bottom, **). the rest of the walls should be inspected because they seem to be flying freely in the model.
what do you think? what about performance on a big model if i test each wall against all the floors, columns, foundations,…
I think too it could work but i don’t know how to go on since i dont know dynamo enough.
You are right, i could significantly improve the performance if i avoid testing everything against everything, but i would like to see if i get a usable result first before optimizing ( that’s where i get lost often - optimizing an unfinishished product ).
So the next step would be to filter the Result node of the Geometry.Intersect - but i do not get how
Create a list with Clashes:
here i want to isolate for each wall instance where the Geometry.Intersect-Node is returning a Solid.
So the list would optimally contain the following:
Id of wall
Id of floor
this way i could color these elements in a different color in the active view which would make it easy findable for the user to correct.
Could someone give me a hint how to perform such a filter, i spent quite a while on it but i can’t figure out how to apply a filter on the 3 level of my nested list.
Once i get the idea i could apply the same for
filter out every wall that has at least 4 lines intersecting with a floor
make sure the lines are on different levels and correspond to the walls height
–> this should leave me with elements that are ok concerning the attachement of the walls
the elements that share less than 8 lines with either floors, structural foundations or structural framing elements need to be revised by the user.
I know this is quite some work but i think it is at least a good exercise to learn dynamo.