I have a database with about 80 tables on it, so i wanna connect to the database, make 5/6 different queries, extract the info and use it as an input to grasshopper.
. The rules to dispatch the lines are the next:
I start with a list that alternate true/false; like that: true, false, true, false.
If the angles between those lines are greater than 89° I want to inverse the next part of the list:
True, False, True, False, True, False,...
become
True, False, [>89°] False, True, False, True, [>89°] True, False,...
I managed to create a true false list, to check for the greater than 89° angle, to separate the lines relatively to the angles, but I don't know how to inverse part of the list at certain index.
(In the picture, I have written 90° but it should be 89°, I check for greater than 89° and not equal to 90° because in the real rhino model, the lines won't be exactly orthogonal)
If you have another idea to to reach the same result, it's also okay, I tried to find rules to solve the problems, but I may have overlooked other solutions !
And if there is some part of the patch that are correct but there is easier solution, I would love to learn as I am still new to grasshopper.
Thanks for taking the time to read. :)
…
exact formula is inside /lib/skybright.cal if this can help you to find the name.
{ RCSid: $Id$ } { Sky brightness function for sunny and cloudy skies.
Additional arguments required for calculation of skybright:
A1 - 1 for CIE clear, 2 for CIE overcast, 3 for uniform, 4 for CIE intermediate A2 - zenith brightness A3 - ground plane brightness A4 - normalization factor based on sun direction A5,A6,A7 - sun direction }
cosgamma = Dx*A5 + Dy*A6 + Dz*A7;
gamma = Acos(cosgamma); { angle from sun to this point in sky }
zt = Acos(A7); { angle from zenith to sun }
eta = Acos(Dz); { angle from zenith to this point in sky }
wmean(a, x, b, y) : (a*x + b*y) / (a + b);
skybr = wmean((Dz+1.01)^10, select(A1, sunnysky, cloudysky, unifsky, intersky), (Dz+1.01)^-10, A3);
sunnysky = A2 * (.91 + 10*exp(-3*gamma) + .45*cosgamma*cosgamma) * if( Dz - .01, 1.0 - exp(-.32/Dz), 1.0) / A4;
cloudysky = A2 * (1 + 2*Dz)/3;
unifsky = A2;
intersky = A2 * ( (1.35*sin(5.631-3.59*eta)+3.12)*sin(4.396-2.6*zt) + 6.37 - eta ) / 2.326 * exp(gamma*-.563*((2.629-eta)*(1.562-zt)+.812)) / A4;
…
), my script is triangulating slabs by drawing line in a crossreference way. This part was "easy"
What I want to do now is to link those slabs together
ie : if a slab is a surface AxBxCxDx
I want to link A1 to A2, B1 to B2, C1 to C2 etc.
I know it's a simple question of restructuring the tree in my Pshift component, so that I can use the line component with shortest list, and link each of those points.
Any ideas on how to fix that?
Thank you
Simon…
rence not set to an instance of an object. (line: 80)
Both .dlls appear to have been successfully imported.
Thanks in advance,
Charles
RStatSystem rs = ri as RStatSystem;
List<Line> slines = new List<Line>();
foreach(RStatBeam b0 in rs.Beams) { <------ line 80
if (b0.StiffnessMultiplier < 0.3) continue;
slines.Add(new Line(b0.P0.ToPoint3d(), b0.P1.ToPoint3d())); }
A = slines;
…