How can I check if a slab in Revit has an opening by using Dynamo?


If I have a slab or a floor in Revit and I wanted to use Dynamo to check if it has any openings in it??

Any ideas of how I can do that in Dynamo?

Thanks in advance

A workflow would depend on how openings had been created. Whether by an Opening Element or modification of the sketch.

If you are only looking for a yes/no answer, one way would be to get the perimeter curves of the slab. Use them to create a polygon, calculate the total area, then get the area of the largest face and compare that values.

I encourage you to have a play around and see what works best for you, then post back on your findings. :grinning:

1 Like

many thanks, dear, I want to create a dynamo checking tool that can check the holes in both types you described, I managed to take the floor from revit to dynamo and did most of the steps you described, with surface.perimeter curves and yet not really a successful combination.

Many thanks again for the advice

Can you post a screenshot of what you have tried in Dynamo?

1 Like

I tried, and the browser said “New user cannot upload!!!”" WHYYYYYYYYYY!!! :frowning:

Can I send it to you on email or FB?

Are you trying to upload a dyn or a jpg? You could always use a service like Google drive or Dropbox to post a link here.

1 Like

you are right, I forgot, thanks

@firas007noori - you’re close.

From your Element.Geometry node, run these nodes in sequence: Geometry.Explode, Surface.PerimeterCurves, Polycurve.ByJoinedCurves, List.ContainsItem set with the list at level 2 and a code block containing null as the item.

That Boolean will serve as the mask input for a List.FilterByBoolMask node, with your initial element selection as the list input. The included items have an opening of some sort in them, where as the excluded items do not.

Note that this hole could be vertical or horizontal, but you can utilize the same filter by normal method you have in your current graph. I’d recommend a few alterations though - use a number slider as the Y input to adjust the amount of surfaces you grab, like sloped floors (0.99654575824488 is the normal of the walk surface of a 1:12 ramp) and roofs.


Many Many thanks, I almost did it !!! but again something is just broken, can you have a look please?? many thank in advance for this help

Once you have filtered your Faces (getting the largest face of the floor using your bolleans / or use the Select Face node) you can determine if a Face has openings by counting the number of “Groupable” surface perimeter control curves. :wink:



@firas007noori - please post an image of your graph made via image export (camera button on the top right corner of the screen). I’m not on my laptop so I can’t download/open those files at the moment.

1 Like

I do really appreciate your help, and I thank you.

Many thanks for you help

I got this great idea from “Ewan_Opie” and here are my code for it, many thanks dear, I do appreciate your help

1 Like