Insert pipe sleeve at wall intersection with rotation and size

I’ve been making some headway on a script to insert a pipe sleeve at any pipe penetration of a fire rated wall from a linked model. I’ve been able to get it to automatically select the linked model and all of the walls in it, then filter it down to only show the Fire rated walls. Next I select all of the horizontal pipes in my model, then I find any intersections of those elements. Then I insert the pipe sleeve at that point.

But I’ve hit a roadblock; I can’t seem to figure out how to get the pipe sleeve to rotate to the same orientation of the pipe. I’m also trying to get the pipe size and wall width and apply them to the sleeve. I have been able to pull the orientation of the pipes but I have not been able to get the angles to properly assign to the sleeves.


Here are two nodes from custom packages that might help

Can you show where you’re getting the pipe orientation? From there you usually have to compare the pipe direction (vector) with the zero rotation angle (usually the positive x-axis) to find the angle of rotation. The nice thing about this case is your pipe sleeve is probably non-directional and only needs to be aligned to the correct angle so you shouldn’t have to mess with positive/negative values.

As for getting pipe size and wall width, you’ll probably need to use a Geometry.DoesIntersect node as well. That way you can filter out which pipe intersects which wall and get the parameters that way.

And also you could take a look at these nodes from Bakery:

Thank you everyone for pointing me in the right direction! I was finally able to finish it up with your suggestions.

I ended up using the following packages:
Archi-lab Grimshaw
and I think I have something from Springs

So, here’s what it does:

  1. Automatically find 1 and 2 hour fire rated walls in a linked model.
  2. Select all horizontal pipes in the current model.
  3. Clash for insertion point and filter out any pipes that do not intersect.
  4. Insert a pipe sleeve at clash point.
  5. Set rotation of sleeve to match pipe.
  6. Set diameter of sleeve to outside diameter of pipe.
  7. Set sleeve length equal to wall thickness.

1 Like

Hi @Jona

Could you mark the post as solved. You’re welcome!

Is there a DYN you can share? I am hoping to adapt this for vertical pipes through floors.

Here you go. Let me know if it works for you.

Walls Pipes intersection.dyn (138.3 KB)

Guys, I used the above code to create vertical penetrations, place a sleeve family and get the coordinates of the sleeve positions. It is working fine when I have the Revit link model set as “origin to origin”. When I’m working in a project using shared coordinates however, the code does not work. Particularly the node “Revit Element Clash Detection v1”

I found a version 2 of the node “Revit Element Clash Detection” in the bakery nodes, it seems to be exactly what I was looking for, but for some reason it doesn’t work as well. When I right click on that and “edit custom node” it shows another custom node “Element Geometry with Try”. But this one doesn’t seem to be loaded. And I have no idea where I can get it.

Any ideas??


Hello, I’m really new to the Dynamo stuff. The company I work on are using MEP Fabrication Pipework; and we just trying to do a simple task by putting sleeves to a generic wall. I found this post really helpful; I tried to reverse engineer your Dynamo script by changing the Categories to MEP Fabrication Pipework, Load in generic sleeves family and set the family type in the Dynamo, linking a rvt file with just a basic generic wall (no Error) but failed big time; no sleeves are added… Will you be kindly enough to share your thought please. I appreciated it.

I tried adapting the same for vertical pipes through floors but have not been super successful. Do you mind sharing your DYN?

1 Like

Kind of a long shot, but did you ever get it fixed?

Thanks Jona… this will be really helpful for us. I need one more help. We have done piping in Autoplant 3D and building in revit. So if i run dynamo code, pipe is not detected as it is autoplant modelled pipe. Can u help me in converting plant 3d pipe to revit pipe.

Can you take a video show how to use………………………thank you very much


It’s a long shot but were you able to solve your issue. I have the similar problem. After link file is moved from origin sleeves are still placed in it’s original location. Is there anyway to make dynamo refer to actual link location?

Thank You in advance

I am facing the same issue. I am trying to insert sleeves at the clashing point of ‘Floor’ and ‘Pipe’ But I am using MEP Fabrication Pipework and not Revit Pipe which is why the ‘Clash Detection Node’ is returning a null value. Probably a long shot, but has anyone figured out how we can use the same script/logic for MEP Fabrication Pipework?