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’.
3 thoughts on “Revit Element Clash Detection v1”
Also interesting reading on performance at https://github.com/DynamoDS/Dynamo/wiki/Efficiently-Working-With-Large-Data-Sets-In-Dynamo
Is Dynamo be able to calculate derivatives and integrals?
Dynamo can do whatever you teach it to do? So you could borrow or build some math logic in a Python node to accomplish this.