Model checks with dynamo

Hi forum,

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

You can check that it is connected but you have to do this via its analysis lines/nodes.

The way to do this is to make sure your main geometry has “Enable Analytical Model” turned on then.

Then you need to get all analytical nodes and check the nodes because the end nodes have a parameter called “Connection Status” which will highlight if they are connected or note.

Note: the ones connected to a foundation may still show as unconnected so you therefore need to understand this and highlight this as not a issue.

Example Image of what they can look like with a filter applied:

Hi @Brendan_Cassidy,

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?

thanks a lot

Hi again,
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,…

** if i get this far it should be easy to add a few more test to ensure one surface is the top of the wall and the other the bottom
thanks in advance

1 Like

Geometry.Intersect can work. You’ve demonstrated very clearly.

The overall performance depend on the amount of input and for now it should be quadratic - unless you can eliminate meaningless comparisons like top floor to foundation.

Hi @yyi,
thanks for your reply.

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 :slight_smile: ).
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.

thanks in advance