[BimorphNodes] Element.IntersectElement error with linked model

Element.IntersectElement node works weird in Revit 2022 (bimorph 4.X)when it used for project elements against linked elements. It worked well in Revit 2019 (bimorph 3.x). Any thought?

below is from Revit 2019

Hi @Hyunu_Kim there were breaking changes made to all the intersection nodes in V4. Full details here. I’ve copied the bit which is relevant to your problem below in any case:

Element.IntersectsElement

  • Element.IntersectsElement node returns a list of the new ElementIntersectionResult type.

The previous version of the node had output port labels which lacked clarity, and data matching (lacing) between the indexes of the ‘Element’ output and the ‘intersectsWith’ output was necessary to establish which element from set A clashed with elements from set B:

The new ElementIntersectionResult output clarifies the clash result significantly; use the Element query node to return the element which was used to create the result. To get the elements (from set B) which clashed with it, use the IntersectingElements query node:

3 Likes

Oh, Thanks.
BimorphNode is Awesome BTW. :slight_smile:

1 Like

Cheers, pleased to hear that :+1:

Tomas, one more question.
What’s the advantage of this inconvenience?

It wasn’t a decision that was taken lightly as I know how much of a pain breaking changes cause. We basically refactored the entire codebase for v4 following professional development standards (SOLID, and an adherence to OOP). What resulted were lots of new classes which helped to encapsulate data, e.g. the new ElementIntersectionResult node class.

Once these classes were established it was counter-productive to then disband their property values via multi-output ports, especially as they add more meaning to the node outputs - it seemed far better to simply stick to the new object model and output these new types directly.

An instance of the ElementIntersectionResult for example encapsulates element A (Element query node) with its clashing elements from set B (IntersectingElements query node). Prior to this, the user would have to know that data matching indices from the old Element[][] output with the indices from the intersectsWith[] output provide the result, which is counter-intuitive and quite esoteric. Having dedicated nodes to query the result also provides an opportunity for us to describe what the node does to further clarify the outputs to the user.

If you follow the example shown above using the Element and IntersectingElements query node, the output is identical to v3, granted you will have to update any graphs which use these nodes and ensure all users have v4 installed.

2 Likes