Question about wall penetration

Hi all,

What I have done so far is; I can compare the walls to ducts to walls and create at that point the penetration. And I also can find the distance between the opening bottom vs the wall bottom and opening bottom vs wall top vice versa.

But the supervisor in the office wants to describe the distance with respect to the bottom of the structural floor below and the structural floor above.

I tried to put a cylindrical body into the hole (wall reservation) that cuts through the floor below and above, but the geometry.does intersect node does give wrong answers with respect to my experiments.

Anyone has any other suggestions? Thanks in advance.

If you are familiar with python you could use a reference intersector to find floors below and above:

Maybe smth like that is possible also in pure Dynamo?

Indeed, there’s an OOTB node for that :

1 Like

If it is bouncing won’t it bounce off ? - if there is a finishing floor above the structural one? (or a false ceiling below).
Maybe a straight ray would be more appropriate, getting a list of intersecting elements - and then finding a closes structural one?
Just thinking out loud…

1 Like

Yes you’re right, you can set the number of bounces. In case you detect several elements you have to use a filter, let’s say keep only structural floors for instance. Then among the filtered elements you get the first item which will be the first item detected.

I hope what I say is clear enough.

1 Like


I am not familiar with python. And I am dying to learn it. Still trying to find other solutions.


Will try that and report back here with the solution.


I need only comparison with structural floors and that I will be filtering at first, therefore no worries. Ceiling is another category and I am not interested in that yet and won’t cause any problems on my side.

Before reading your answer I tried some other not practical but easy solution. As I post, I am assuming you guys wont be laughing at me:

I have created a giant cylinder that clashes with the structural slab above and below. The thing is I cannot cross reference the cylinder and the connected floors.

This is an interesting approach. For this, I recommend using the Element.IntersectElement node from the BimorphNodes package. As you are testing all the cylinders against all the floors, it could lead to a huge amount of tests according the project scale.

This node is optimized and from my experience it’s the fastest to deal with heavy intersection checking.

As you can see on the snippet below, this node also allows you to get the floors intersecting with each elements of the elementSetA.

This is actually what I was looking for. A list of lists of 2 combinations. Will try that and report back.

I would have done:
-trace one of the lines that goes through the opening point

  • recapture surfaces on slabs
  • cut the curve at the end of the intresection
    -Search for the curve that passes through the point of opening
  • take out the length of the curve
    sorry for my english
    if you find difficulties, I can join you a beginning of a script

Yes that is what I am going to do also, but geometry does intersect doesnt work really good.

what geometry that do not intersect
See test
test.dyn (29.7 KB)

Sorry mine is 1.2. I cannot open your test.dyn.

then it’s time to move to 2.

Very interesting. But anyway I don’t like OOTB geometry does intersect. When it is crowded, it doesn’t work.

I do not understand what do not intersect
I have already developed a script like this

I believe @Cem_Altineller is refering to this kind of issue :

I faced the same problem, with inconsistent results even with obvious intersections.


Yes, Sir! That is the issue. My version of dynamo and Revit also. Thank you for proof.

In this case you can use the node Curve.ParameterAtPoint
get the parameter between 0 and 1

Hi guys,

I came back. Sorry for late answer, but I had to work on this.
Durchbruch Teil 3 v11.dyn (53.0 KB)
Durchbruch 041.rvt (1.4 MB)

And these are my packages.

Revit version 2017 service pack 2 and Dynamo Core and Revit version

Now everything works. The cylinder in the wall penetration finds the structural floor above and below. Compares the surfaces of these floors to the centroid of the wall opening. If the difference is negative to biggest negative number plus the height of the reservation gives the floor below, and if the difference is positive the smallest positive number gives the distance to the floor above(the bottom surface of the floor)

Thank you all for brainstorming.