Find intersection points between multiple curves on a spheric surface

Hi All,
I’m pretty new with grasshopper and I have an issue:
I have a portion of a spherical surface with multiple curves (obtained by brep- plane intersection), and I want to find and select all the intersection points of the grid. With the first brep-plane intersection i get the horizontal curves, with the second the vertical ones (image 2); I tried with the multiple curves intersection but it does not work and i got just the points you see in image 1.
I think this is because the output of the brep-plane intersection is not a set of curves but sort of a mixture between points and curves ( see image 1) and I don’t manage to split them (i tried with cull pattern but it s not working).
I have the possibility to increase the number of curves in the 2 directions with a slider and I want all the intersection points (underlined in blue) to be found in order to then define a pattern.
Any suggestions?
thanks a lot for helping


Are you trying to get the point data to be organised like a grid of cells, point rows as branches, or you just need those points but their order does not matter?

Also, always attach your file even if it is wrong or bad - saves us time recreating things.

Hi, the quick fix is to flatten the input to the multiple curve intersections node…

I want them to be organized, better if in rows, because with this points i than have to define an hexagonal pattern on the surface like in picture, using certain points as nodes. Sorry but I cannot share the original file as long as it is an entire project…i know it would help a lotpattern

This is a way you could do it. Using Pufferfish’s Parameter Grid On Surface component (green in screenshot) you can get the grid cells and grid points from your planes by intersecting the planes with a U and V surface edge and using the reparameterized t values of the intersections. Then do whatever you want with the grid (like connecting dif ways for hexagon) (10.6 KB)

You were right, was just a matter of flattening the inputs, thx a lot!

I tried with Pf but in the end was much quicker to just flatten the input in multiple curves intersection! It worked…
Thanks anyway a lot for the quick answer!

PF solution would be much better to have the points organized, but with the structure you gave me I have issues with the surface…probably because it comes from a brep deconstruction! Thanks anyway!

You’re welcome, but it is as @Michael_Pryor asks you, you will not get the points in a structured way, like in branches. You’ll loose the “structure” of the data when you flatten.

How about you take a two step approach?

  1. Intersect Brep with “Row” planes…
    … graft
  2. Intersect each result cuve with “Column” planes
    … sort by curve parameter if you like

have a tree of points in row/colum order

I don’t have pufferfish installed, but what you say is probably true. The surface type is typically an untrimmed surface. For trimmed surfaces you should stay with the Brep type even if it contains just one single face.

You can evaluate surface coorinates regardless of trim curves. Normally you’d have to check trim inclusion for yourself.

I’m just going to assume your H-Points have their first and last item intentionally outside of the surface boundaries (?) Other then that, here’s what my previous post was meant to describe:

that seems to work! thx a lot!

Perfect example of why you should always post the file first.

you were right I’m sorry

Hi guys, sorry to be back again but I’m really stack in this problem since yesterday…once I defined the grid of points that now works correctly, i want to define a pattern to selects some points to create exagons like in picture ( the number or rows and colums can be adjusted by sliders and also we can “condense” the structure at the edge and in the mid-line, in order to change shape and number of hexagons). My idea was first to separate odd and even rows. Than on any of the 2 rows of points define a true false pattern (cull pattern/ dispatch). The problem is that when I apply a true false relation I don’t know why the pattern is not applied correctly and if i make a true/false happens that I get a true true/ false false relation.
I tink this issue could derive from the construction of the points through which i then built the crossing planes and curves. ( points derives from curve division lenght )
In the end the result I want to obtain is to have a pattern of points like in figure

So I ask you: how would you solve that issue of the non working pattern?
Do you have other solutions ?
The all structure must of course work increasing the number of rows and columns that means increasing the number of hexagons. We don’t really need to cancel the points not needed ( XX i image) but is important to get the other isolated. ( OO in image).
Any suggestion on how to connect them once isolated?
Thanks a lot in advance, following the grasshopper file: (49.4 KB)

First things first: the failure of the pattern is indeed due to the order of your cutting planes.
B-Planes are ordered from to bottom, so you don’t need to change that.
A-Planes are “random”. Since you get your A-Input to the Plane from evaluating a curve with length parameter, you can use just that to sort your A-Planes as well. Just sort the L-Input to the Eval Component and sync-sort A and C Point inputs to your A-Plane.

Your points should be correctly ordered now.

As for the hex grid… did you try google? I quickly found this:
maybe you can work from there.

First thanks for your immediate answer; but I’m really new to GH and I don’t manage to figure out what you mean by sorting…would you be so kind to explain it more clearly for a beginner?

Using the sort component

It is not an easy task at all (especially with little understanding of data trees). More suited for a loop to navigate branches that way. Most people use plug-ins for this such as Lunchbox or Paneling tools.

Thanks a lot, took us a while but in the end it worked!