Creating Wall Penetrations based on MEP

I’ve been working on a script to place voids in walls based on where ducts and pipes intersect wall geometry. I’ve succeeded in placing the voids at the locations where they should be, but I’m running into a sizing issue were all the voids are sized to the last duct that is selected.

Ideally, I’d like the script to size voids for multiple different ducts of different sizes simultaneously, rather than having to run it multiple times for each different size duct. I’m currently using a generic void that has dimensions that are set based on the dimensions of the selected duct, and is placed at the centroid of the intersections of duct and walls.

Here is the script I’m using:

(Packages used are Rhythm and Spring Nodes, it does not always cut the voids properly, but I’m not concerned with that issue at the moment because I have another small script that cuts all the voids in a model)

Because this is my first post I can’t upload the void family, but it is a generic void that has dimensions that are set h/2 and w/2 from the reference planes. Depth equals width as well because I’m not currently trying to read the wall thickness, may add later.

I’m fairly positive the problem is because of how the lists are being parsed (sizing ends up being based on the last duct dimensions that are read), but I’m not sure how to go about setting it up to iterate through each intersection location properly. Any help/ideas are appreciated!

1 Like

Either provide a sample file or at least a screenshot with expanded preview bubbles.
Let us see the list structures, that way we can avoid assumptions and educated guesses.

Here are the files from a google drive, since I’m still getting flagged with the “new user can’t upload files” message.

Wall Penetration Files

There is already a free plugin developed by Tools4Revit that does that:

Hope this helps,


Exactly what I was looking for, thank you!