Collect All colliding surfaces

Hi,
Small question.

There are 2 lists
List A: containing surfaces
List B: containing surfaces

Challenge,
I would like to have a list, whereby every colliding surface is given.

In fact it is exactly what the ‘CollisionOne|Many’ does, except that it only returns the ‘first’ collision, instead of all the collisions.

How can I collect all colliding surfaces for each surface?

Any suggestions?

Thanks :slight_smile:

2020-06-19 multiple collisions.gh (23.0 KB)

Clash component in Rhino 7 WIP do exactly what you’re looking fo:


Clash.gh (16.6 KB)


Clash.gh (21.0 KB)

Hi!
Thank you :slight_smile:

This is still part of the bigger part.
Almost there however, I still encounter some new challenges. :sweat_smile: .

My current status;
There is a list A, with surface.
There is a list B, with surfaces (openings) with the same branch name as in list A.

So for instance;
surfaces in List A branch {0;0} have to get openings, which are present in list B branch {0;0}
surfaces in List A branch {0;1} have to get openings, which are present in list B branch {0;1}
etc.

I though the region difference would do the trick now. unfortunately this is not the case. ( I think because there are also empty branches {2;0} this is correct, but also if I delete {2;0} it is now working…).

Do you have any suggestion how to overcome this?

Thank you once again :slight_smile:

2020-06-19 multiple collisions_RE_re.gh (27.5 KB)


image

This is a sneaky difficult problem from a logic point of view.

There are a number of problems with the organization of the original panels that make the logic to cull through this much more complex then it needs to be. To simplify the problem:

  1. Remove all duplicate geometry. I Baked out the original objects an used SelDup to remove them.
  2. Joining the main wall panels really helps simplify the logic. At the end of this you could explod back into the separate wall panels if you need.

The Clash component was used to determine the clash pairs and in series with a List Cull component it identifies the surfaces that have no intersection. Those surfaces that have no intersection, get merged back into the list at the end.

Here is the definitnion

The attached files are for Rhino 7 WIP. Running Rhino 6 collision many to many probably could work here too. But, since Clash was mentioned, I thought I would give it a try.

clash-panels.3dm (301.0 KB) clash-panels.gh (24.1 KB)

1 Like

Interesting to note a couple logic challenges here. The Clash component really is only used here to determine the objects that have no clash in them.

And because one joined panel object has two cutouts, all cutters are run against all the wall panels. Unlike previous Clash examples that isolate each pair to boolean.