Sort intersected curves

I have some random planar curves, some of them have intersections. I’d like to sort list of intersected curves. For example I’m figured out that curve 0 2 intersected, and 1 3 intersected - i wanna have list of 2 branches with 0 2 and 1 3 items. If curve 0 intersected with 2 and 3 - one branch with 0 2 3 items.

Intr603.gh (12.2 KB)

Maybe there are other simple ways

Intr2.gh (9.4 KB)

4 Likes

OMG, you’re right. Really clear and simple solution. But in occasion when one curve intersect another more then one time your solution didn’t work as i expect. And also your def is not detect intersected curves inside other curve.

1 Like

You didn’t ask that in the first post :wink:

1 Like

Ma bad =( Sorry if i set objective wrong. I thought that “Random curves” means many ways of collisions. i’ve already found the way how to detect that one curve intersect another (maybe multiple times). I have list of pairs of curves with intersections. My problem is how to sort this results. For example curve 1 intersect curve 0 and curve 0 intersect 2 (no matter how much times). Also there’s curve 3 and 4 with intersection. So i need to sort result to have one branch with 0 1 2 curves, and second branch with 3 4 curves inside it.

Check this topic.

And search or wait for more simple solutions, sometimes few components can solve a complex problem

Intr3.gh (14.4 KB)

2 Likes

Here something crazy :upside_down_face:


curve_intersection_grouping.gh (27.1 KB)

This is a possible solution by exploiting manifold edges of meshes, by using [Mesh join] and [Split disjoint meshes] functions.

First used MCX to have all the possible intersections.
Then used indexes to create single-faced quad meshes on XZ plane with Z edges with X coordinate equal to the indexes.
Join mesh will then join quads that share an edge , but it is not limited to a single coupling: all the quad faces that share a single edge will be merged into a single mesh.
(3 curves touching into a single point cannot be joined into a single object, but meshes can and will)
Disjointed the meshes.
Extracted the vertexes of the mesh and re-converted X values into indexes.

Edit:
Better version of the same concept by @seghierkhaled here Sets question

5 Likes

It’s absolutely brilliant and crazy at the same time =)!
Thant you so much! And thank you all who help me to find solution!

Check this
I use script of David Rutten to combine branches where items have the same value

Grp crvs int .gh (13.4 KB)

find a way to get the same result as David script

4 Likes

This more simple, intersection component already do the job
@DavidRutten, Hello David can you convert your script to a component ? this solve many problems like this

1 Like