ems in the same way. Lofting was particularly difficult, you had to have a separate loft component for every lofted surface that you wanted to generate because the component would/could only see one large list of inputs. Then came along the data structures in GH v0.6 which allowed for the segregation of multiple input sets.
If you go to Section 8: The Garden of Forking Paths of the Grasshopper Primer 2nd Edition you will find the image above describing the storing of data.
Here you will notice a similarity between the path {0;0;0;0}(N=6) and the pathmapper Mask {A;B;C;D}(i). A is a placeholder for all of the first Branch structures (in this case just 0). B is a place holder for all the second branch structures possibly either 0, 1 or 2 in this case. And so forth.
(i) is a place holder for the index of N. If you think of it like a for loop the i plays the same role. For the example {A;B;C;D}(i) --> {i\3}
{0;0;0;0}(0) --> {0\3} = {0}
{0;0;0;0}(1) --> {1\3} = {0}
{0;0;0;0}(2) --> {2\3} = {0}
{0;0;0;0}(3) --> {3\3} = {1}
{0;0;0;0}(4) --> {4\3} = {1}
{0;0;0;0}(5) --> {5\3} = {1}
{0;0;0;1}(0) --> {0\3} = {0}
{0;0;0;1}(1) --> {1\3} = {0}
{0;0;0;1}(2) --> {2\3} = {0}
{0;0;0;1}(3) --> {3\3} = {1}
{0;0;0;1}(4) --> {4\3} = {1}
{0;0;0;1}(5) --> {5\3} = {1}
{0;0;0;1}(6) --> {6\3} = {2}
{0;0;0;1}(7) --> {7\3} = {2}
{0;0;0;1}(8) --> {8\3} = {2}
...
{0;2;1;1}(8) --> {8\3} = {2}
I'm not entirely sure why you want to do this particular exercise but it goes some way towards describing the process.
The reason for the tidy up: every time the data stream passes through a component that influences the path structure it adds a branch. This can get very unwieldy if you let it go to far. some times I've ended up with structures like {0;0;1;0;0;0;3;0;0;0;14}(N=1) and by remapping the structure to {A;B;C} you get {0;0;1}(N=15) and is much neater to deal with.
If you ever need to see what the structure is there is a component called Param Viewer on the first Tab Param>Special Icon is a tree. It has two modes text and visual double click to switch between the two.
Have a look at this example of three scenarios in three situations to see how the data structure changes depending on what components are doing.
…
The best way is to use a C# or a VB component to transpose these
lists. I think in C# you can use transpose directly. You can ask this
on the VB/C# forum on our new website, www.grasshopper3d.com
- Scott
On May 27, 3:56 am, Tonsgaard wrote:
> Being a long time user of Generative Components trying to use
> grasshopper i miss the "transpose" command.
> I have a point list like this:
>
> 0, 1, 2, 3, 4, 5
> 0, 1, 2, 3, 4, 5
> 0, 1, 2, 3, 4, 5
> 0, 1, 2, 3, 4, 5
> 0, 1, 2, 3, 4, 5
>
> and a want to transpose dimensions to:
>
> 1, 1, 1, 1, 1
> 2, 2, 2, 2, 2
> 3, 3, 3, 3, 3
> 4, 4, 4, 4, 4
> 5, 5, 5, 5, 5
>
> Surely I am not the first in need of this...
> how would i go about and do this...? I suppose its quite easy in VB
> script, but being used to GC's C# like language, I kinda dont know how
> to do this...
>
> thanks...
>
> Tonsgaard…
e), {1;2}(line), {1;3}(line)... and on the other side to have {0;0}(all lines except {0}(0)), {0;1} (all lines except {0}(1)), {0;2}(all lines except {0}(2)), {0;3}(all lines except {0}(3)), {1;0} (all lines except {1}(0)), {1;1} (all lines except {1}(1)), {1;2} (all lines except {1}(2)) ,{1;3} (all lines except {1}(3))...The first tree is easy to achieve, simply grafting a branch for each element, and the other, what I've done is to copy all lines of each tree ({0},{1},{2},{3}), to have them in all branches of each tree ({0;0}(elements of {0}), {0;1}(elements of {0}),,{1;0}(elements of {1}), {1;1}(elements of {1})..., and then remove in the first branch({0;1} the first element(0), in the second branch the second element, the third branch the third element...And so correctly you compare each line with all the other within each branched tree.Aaaaapufff XD…
Dim S As New NurbsSurface
Dim k1 As New Integer Dim k2 As New Integer Dim k3 As New Integer
Dim pt_2 As New point3d Dim pt_3 As New point3d Dim pt_4 As New point3d
k1 = 13 k2 = 14 k3 = 15
For i As Integer = 0 To 7 If k1 > 15 Then k1 = k1 - 15 End If pt_2 = L_pts(k1)
If k2 > 15 Then k2 = k2 - 15 End If pt_3 = L_pts(k2)
If k3 > 15 Then k3 = k3 - 15 End If pt_3 = L_pts(k3)
S = nurbsSurface.CreateFromCorners(centre, pt_2, pt_3, pt_4) TAB.add(S)
k1 = k1 + 3 k2 = k2 + 3 k3 = k3 + 3
Next
A = S
You dont realy need to understand the script but I want to be able to declare a dim as a Surface and on the core creat different surface from 4 pt.
Thanks for your Help,
Best regards,
Renaud Ganière…