# Curves through multiple grids

Hello All,

First time posting here and somewhat new user to GH. I’m interested in creating some 3D lattice/grid structures by flowing curves through the points on 2 separate grids. I have been doing a lot of different experimenting and seem to have some success with the Weave command, but I seem to be limited to a strict Z axis connection of points. The closest success I’ve come to altering the pattern is using a SHIFT LIST command to alter the point data but it is still not connecting in any other axis besides Z.

From what I can find online it seems I need to better understand how to change the point data of my grids, because that is how the curve is interpreting what order to go from point to point.

Thanks All

Since you didn’t upload the gh file, and since I do not know those grid components you’re using, this will necessarily be a somewhat general answer.

Components like [Polyline] or [Interpolate Curve] operate on lists of points and they output individual curves. This is of course what you need since it’s no good fitting a curve through single points, or indeed fitting a single curve through all the points in a specific datatree. You want to be able to create many different curves based on some complicated point data structure using just a single component.

So working back from that, you need to figure out how to supply your points to the [Interpolate Curve] component in such a way that all the points that define a single curve are all in the same list, and all the points that are supposed to end up on different curves are all in different lists.

Using the standard Grasshopper grid components (not the ones you’re using, but I’m assuming they work in a similar fashion), the output of a single [Square Grid] is a bunch of points, organised in the separate columns of the grid. So, assuming a 5x7 grid, you’d end up with a datatree containing 5 separate list, and each list containing 7 different points. This will look something like:

{0;0} (N = 7)
{0;1} (N = 7)
{0;2} (N = 7)
{0;3} (N = 7)
{0;4} (N = 7)

(Actual amount of zeroes in paths may differ). If you were to connect this output to the [Interpolate Curve] component, you’d end up with 5 different curves, each one connecting the 7 points in the associated list.

If you wanted to have your curves connect all points in a row-like fashion rather than a column-like fashion, you’ll have to modify the data tree to look like this instead:

{0;0} (N = 5)
{0;1} (N = 5)
{0;2} (N = 5)
{0;3} (N = 5)
{0;4} (N = 5)
{0;5} (N = 5)
{0;6} (N = 5)

This can be achieved using a [Flip Matrix] component, or using a custom mapping pattern and the [Path Mapper] object.

You seem to have two grids (one positioned some distance above the other) and you somehow want to create connecting curves through both. I do not know how you want them to be connected, you only posted an image of what you have now, not what you’re after. Assuming you want your curves to connect points from both grids, further data tree manipulation will be required.

Can you upload a sketch of the connections you need?

Thanks for you reply David. I’m going to upload a picture in Rhino of how I would like to the curves to flow which I did by manually assigning the points for 2 different curves. Hopefully this helps. Basically I am more at an experimenting stage of try to bring these type of woven patterns into a more 3D/Lattice structure, so I am also interested in what grasshopper might surprise me visually as I explore this process. It seems I definitely need to do deeper learning into data trees and probably the custom mapping pattern command you mentioned.

As for what I am using Grid wise, it is a grid command from the Paneling Tools plugin. I’m using the Surface Domain Number Grid command because in the future I want to apply this to more organic flowing surfaces and in my experience this does a very good job. At the moment I’m using a simple flat surface plane with a grid with sliders for my U and V numbers, then it is hooked into an Offset Grid command creating the secondary surface above.