List correspondance data


I’ll try to explain my problem the most simple way :slight_smile:

I have a list of WALLS with ID.

I transform those walls elements into geometry and I intersect them with another geometry.

So far, no problem.

If I have 1 wall intersecting with 1 object, then I have as a result a solid corresponding to my wall id list.

But if I have a wall intersecting 2 elements, then I have as a result 2 solids. Then my solid results is not correspond to my wall id list. I’ll need to have 2x this wall id in my first wall id list to correspond with my solid results.

Do you have any idea how I can achieve this ?

For example, in the picture below, I have 8 walls and 10 solids as results.

I want to associate each solid to a wall in order to have a list of 10 Walls (some of them will have the same id).

I have this information : Element.Geometry is giving me 8 solids, which are corresponding to my wall id list.
But when I use Geometry.intersect (with vectorial product) I get more solid than number of walls.

Am I clear ? Don’t hesitate to ask me more question about it.

My idea is to extract data from Geometry.intersect to identify how many solids get created for evert wall, then have a list with these wallsResa_V4_Help.dyn (62.0 KB)

Don’t flatten your data. That’s causing you to lose the necessary list structure. If you look at the output from Geometry.Intersect it’s in sublists corresponding to each element in your original list structure. You have (8) sublists (representing 8 walls) each with (5) intersections (representing the 5 ducts).

Exactly you’re right.

But which node/function would you suggest to have the corresponding walls to these solids ?

Unless you care about the specific geometry of the intersection, you would use Geometry.DoesIntersect and FilterByBoolMask.

Hello @Jeremy_Artelia
I think you are looking for this type of solution
although i dont understand the complete script but created small python script for you.

I1 Resa_V4_Help1.dyn (109.1 KB)

If i understood correctly :slight_smile:
List 1i s the result of your intersection. For each wall that you test you have a list of sublist that returns solids… or not.
Assuming that you need to enter an integer in each wall to show the number of intersection i would

1 - Count all the solids in each sublist (Count @L2)
2 - Filter out all the walls that returns no solids (Count == 0)
3 - Set the value to a parameter with SetParameterByName