Revit Element Clash Detection v1

We can easily use builtin nodes like Element.Geometry, Geometry.DoesIntersect and Geometry.Intersect to put together a simple clash detection process in Dynamo. However, these geometry nodes bring some processing overhead.

To speed things up, I packaged it all into a Python Script in this node. Basically, it doesn’t have to unpack or ‘draw’ the actual element geometries, so the performance should be better than the standard nodes.


· RevitElementSetA – the first set of elements

· RevitElementSetB – the elements to clash against set A

The node does a full cross-product check to find the clashes.


· clashSetA – elements that clash with same index in set B

· clashSetB – elements that clash with same index in set A

· SetA_GeometryFailures – instances where Element.Geometry (pythonic / api) failed to make a geometry

· SetB_GeometryFailures – as above

· IntersectingSolid – the full geometry intersection between the two clashing elements

· clashPoint – the centroid of the intersectingSolid

This will be made available in Bakery package.

Future versions will likely be ‘chasing more speed’.

Filter Element List by Revit Z Value

This node takes a list of Revit points (feet, XYZ format), unpacks the Z values, converts to mm, and then filters an input list by a given benchmark value.

So, if you know that 90% of your Grids are set correctly with a -300mm lower Grid Z extent, place -300 in the input benchmark value, and you will get a list of ‘not matching’ elements. This allows quick checking of Grid extents that may be inconsistent.

Get Grid Extents

This node uses Python and the Revit API to extract the outline object from each Grid element, and then get the minimum and maximum points from those outline objects. These points are delivered in Revit API format: units are feet, comma separated XYZ.