Bimorph 2.1 Nodes Implementing to existing work flow

Awesome work! I have been wanting a better procedure for a while now.
My question is will this still be able to locate the Intersecting Point? Based on our current workflow, we have the Geometry.Intersect returning geometry that we pull the Solid.Centroid and drop a “Clash Family” at the intersection.

Here’s one way of doing it. Its going to be more efficient as you’re avoiding geometry intersections in favour of curves, so although you’ll need Element.Solid on the walls, the workflow should still be rapid:

Thank you Thomas. I was able to recreate and get it working if I use Walls vs Ducts. What trips me up is trying to put Pipes vs Ducts…

I must be missing something…Any ideas?

Hi Tim

Here’s a simple workflow dealing with intersecting ducts and pipes. You’ll need to experiment with the other system fittings etc, but the base components are at your fingertips, its more a case of developing the workflow to suit your requirements:


Using Geometry.ClosestPointTo will ensure the point is created even where the pipe and duct location curves are offset:

Just a thought! Geometry.Instersect would also work here.

Hi Thomas,

I have tried your suggested graph and I am getting the Dereferencing a non pointer from the Element.GetLocation…

I’m very sorry to keep bugging you with this.

Thank you for any suggestions.

Thanks Kulkul. That is actually in my current workflow and its just too slow and taxing on my big projects.
With Bimorph’s new nodes, I was hoping to reduce the lag and speed up the clash location process.

Unless I’m missing something, which is very likely. :stuck_out_tongue_winking_eye:

@tlivingston Looking at your workflow it doesn’t look like you have ducts and pipe crossing with each other. Could you let us know are you trying to check Ducts, Pipes crossing through walls or something else. If you could share your plan view here.

Thank you for taking a look…
At my MEP firm I want to show our in-house clashes. Pipes running into Ducts is my starting point.

3D view of the pipes into the ducts

Plan view

After running the I get the following…

Thanks again.

Did I provide enough to get a resolution? I’m very sorry. I have installed 2.1.3 and I still can not get the workflow to work.

Thank you very much for any assistance on this.

Yellow Nodes with error messages.


The first thing you should have attempted was to narrow down on the Ducts and work out if its a problem with one of the elements in general as this would help everyone to ascertain if the problem is coming from the Element.IntersectsElement node.

So, connect your All Elements Of Category node which is collecting the Ducts directly into the Element.GetLocation node. Do you still get the same error? If so, either pinpoint which duct is causing the problem and exclude it, then connect the resultant collection of ducts into the Element.IntersectsElement node, or alternatively, report it as a bug on the Dynamo GitHub and include your files. To get more help, you should have uploaded sample files in the first place.

Thank you Thomas. I connected as you said and received no errors until I re-connect to the Element.IntersectsElement node. I am attaching my .dyf and .rvt samples.

Thanks again.

BTB BCE_In House Clashes_Mech Vs Plumbing.dyn (12.2 KB)
BCE_2017 Project Template_Clashes.rvt (2.3 MB)

Thanks, thats a lot more helpful.

So the cause of the error are the empty lists; the Element.GetLocation doesn’t handle them which throws the exception. They therefore need to be filtered out, but crucially, the results from the Element.IntersectsElement node and is output data structure needs to be preserved. Therefore, check which indexes contain empty lists using List.IsEmpty, invert the result (using NOT = not empty lists!), then filter both the pipes and ducts using the result of the List.IsEmpty as a bool mask. This will preserve the data structure. Then you can connect the result in the Element.GetLocation node and all will work as expected:

Dynamo - Filter Empty Lists and preserve data strcuture.dyn (11.2 KB)

You will never guess what worked…
Seriously though, Thank you for all the support.