l the changes you want and then close it again, you'll only have to recalculate once, whereas adding 3 inputs via the ZUI would recalculate 3 times right away and once more after you've changed the cluster to hook up the new inputs.
Does the cluster recalculate the entire solution, even though the new input hooks aren't connected to anything? Would it be possible to not recompute (not call ExpireSolution or its equivalent?) when an input parameter is added via the ZUI only? Could this be done by adding a flag on each input hook added by the ZUI, triggering the flag when the input hook is connected to a parameter, and recalculating the cluster only when the flag has been triggered?
Also, the current behavior, I think, is actually different. In order to work with the cluster, you need to see the geometry/data you're working with, so you have to enter the cluster, add the hooks, leave the cluster, connect the hooks to parameters, enter the cluster, play around in Grasshopper, exit the cluster:
Double click cluster.
Navigate to where you want to add new hooks.
Add hook (either from the toolbars, or by copy/pasting existing ones, or by double click search)
Close and Save Cluster. This will cause a new extra-cluster solution which may take some time to complete. (1 ECSOLUTION)
Connect new inputs with relevant parameters in the parent document.
Double click cluster.
Connect hook to relevant parameter. This will cause a new intra-cluster solution which may take some time to complete. (input * ICSOLUTION)
Repeat 7 until satisfied.
Close and Save Cluster. This will cause a new extra-cluster solution which may take some time to complete. (1 ECSOLUTION)
Which comes to: 2 extra-cluster solutions, and N intra-cluster solutions, where N is the number of new inputs. The cluster was opened and closed twice.
Zoom in on cluster.
Click on the (+) symbols to add inputs. Each input added via the ZUI doesn't recompute, since we know that the input hooks created this way aren't connected.
Connect new inputs with relevant parameters in the parent document. Also no new solutions.
Double click cluster.
Navigate to where the new input hooks were created (Perhaps aligned vertically, below the last-most input hook?)
Probably move the hook to a more meaningful location.
Connect hook to relevant parameter. This will cause a new intra-cluster solution which may take some time to complete. (input * ICSOLUTION)
Repeat 7 until satisfied.
Close and Save Cluster. This will cause a new extra-cluster solution which may take some time to complete. (1 ECSOLUTION)
Which comes to: 1 extra-cluster solutions, and N intra-cluster solutions, where N is the number of new inputs. PLUS, you only had to enter/exit the cluster once.
Thanks again, David!
Dan…
Added by Dan Taeyoung at 8:47am on January 11, 2014
ay how many valid permutations exist.
But allow me to guesstimate a number for 20 components (no more, no less). Here are my starting assumptions:
Let's say the average input and output parameter count of any component is 2. So we have 20 components, each with 2 inputs and 2 outputs.
There are roughly 35 types of parameter, so the odds of connecting two parameters at random that have the same type are roughly 3%. However there are many conversions defined and often you want a parameter of type A to seed a parameter of type B. So let's say that 10% of random connections are in fact valid. (This assumption ignores the obvious fact that certain parameters (number, point, vector) are far more common than others, so the odds of connecting identical types are actually much higher than 3%)
Now even when data can be shared between two parameters, that doesn't mean that hooking them up will result in a valid operation (let's ignore for the time being that the far majority of combinations that are valid are also bullshit). So let's say that even when we manage to pick two parameters that can communicate, the odds of us ending up with a valid component combo are still only 1 in 2.
We will limit ourselves to only single connections between parameters. At no point will a single parameter seed more than one recipient and at no point will any parameter have more than one source. We do allow for parameters which do not share or receive data.
So let's start by creating the total number of permutations that are possible simply by positioning all 20 components from left to right. This is important because we're not allowed to make wires go from right to left. The left most component can be any one of 20. So we have 20 possible permutations for the first one. Then for each of those we have 19 options to fill the second-left-most slot. 20×19×18×17×...×3×2×1 = 20! ~2.5×1018.
We can now start drawing wires from the output of component #1 to the inputs of any of the other components. We can choose to share no outputs, output #1, output #2 or both with any of the downstream components (19 of them, with two inputs each). That's 2×(19×2) + (19×2)×(19×2-1) ~ 1500 possible connections we can make for the outputs of the first component. The second component is very similar, but it only has 18 possible targets and some of the inputs will already have been used. So now we have 2×(18×2-1) + (18×2-1)×(18×2-1) ~1300. If we very roughly (not to mention very incorrectly, but I'm too tired to do the math properly) extrapolate to the other 18 components where the number of possible connections decreases in a similar fashion thoughout, we end up with a total number of 1500×1300×1140×1007×891×789×697×...×83×51×24×1 which is roughly 6.5×1050. However note that only 10% of these wires connect compatible parameters and only 50% of those will connect compatible components. So the number of valid connections we can make is roughly 3×1049.
All we have to do now is multiply the total number of valid connection per permutation with the total number of possible permutations; 20! × 3×1049 which comes to 7×1067 or 72 unvigintillion as Wolfram|Alpha tells me.
Impressive as these numbers sound, remember that by far the most of these permutations result in utter nonsense. Nonsense that produces a result, but not a meaningful one.
EDIT: This computation is way off, see this response for an improved estimate.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
Added by David Rutten at 12:06pm on March 15, 2013
ter that bakes the object, assign V-ray materials to the objects and render image with V-ray. Than changes the value of animation slider and again the hole automation process.
I have written this automation with python.
but because of the animation slider rhino crashes everytime in a different value of the animation slider (frame number).
I have tried the hole thing without running the automation. I have left the computer to recompute only the objects without,baking, aissigning a material and render but rhino still crashes.
I am usin rhino 5 sp10 with the latest grasshopper and V-ray for Rhino.
Windows 7 64 -bit Ultimate with latest updates for .NET Framwork.
The error message is:
System::AppDomain::CurrentDomain->UnhandledException event occured
SENDER: Name:DefaultDomainThere are no context policies.
EXCEPTION: System.Runtime.InteropServices.SEHExceptionMESSAGE: External component has thrown an exception.SOURCE: RhinoCommonCALL STACK at UnsafeNativeMethods.CRhCmnUserData_Delete(IntPtr pUserData, Boolean only_if_no_parent) at Rhino.DocObjects.Custom.UserData.Dispose(Boolean disposing) at Rhino.DocObjects.Custom.UserData.Finalize()
Is there somebody that can help me to solve this. It is very important for me. This is a very big project that i am working on. And I don't know how to fix it.
Is there any other solution to the problem.
Thank you in advance
…
Added by Todor Todorov at 2:36am on January 31, 2015
pending on registered students
Who is it for > Aimed to professionals or students in engineering, architecture, art, design (interior, industrial, product, jewelry, furniture...) and backgrounds related
Requirements > Zoom app and Rhino 6 or 7 for Windows or Mac.
Is previous knowledge in Grasshopper required?
It is expected students know the Grasshopper interface, connections, basic operations and transformations, simple data list structures: longest list, flatten, graft... We do recommend check the program of the course "Grasshopper Basics" HERE in order to make sure you have knowledge on these tools.
Dates April 9-10
Registration deadline Monday April 4
Schedule: Saturday and Sunday. 3,30 - 8,30pm
More info:
https://controlmad.com/eng/formacion/curso-grasshopper-intermedio/
…
During the the first 3 days we have prepared a training course where the participants will get acquainted with the basic notions and elementary algorithms in Grasshopper. Within the following 4 days you will have to apply your general knowledge in order to design and produce a 1:1 mockup of the digital model.
It’s going to be massive!
_SPECIAL GUESTS:
Andrei Gheorghe [Die Angewandte] Bence Pap [ZHA Architects]
_GUEST:
Alexander Kalachev [AL-TU]
_HOSTS:
Tudor Cosmatu [AL-TU, T_A_I] Andrei Raducanu [T_A_I] Irina Bogdan [T_A_I]
Make sure to keep an eye our blog and keep yourself updated by following our facebook page.
See you at UAUIM, Bucharest on the 23rd of May!…
. This means that we know both point's Y values, and the relation of one X value to the other. What we are missing is where the apex point's X value is. If we add to both points a "fudge factor, Xo" allowing for the apex point's X value to be variable, we get 2 simultaneous eqns with 2 unknowns, Xo and A, which is the catenary function coefficient. [this is important so that we don't unintentionally preset the catenary coefficient]
so..
Y1 = A cosh ((X1-Xo)/A) - A
Y2 = A cosh ((X2-Xo)/A) - A
This is solvable, but because cosh (x) = (e^x + e^-x) / 2, we can't separate one of the unknown variables or use one of the other easy techniques. I used Matlab's fsolve function, but obviously while it is very doable to hitch up Matlab to Grasshopper, having this functionality in your script would be ideal.
These are just my meandering thoughts, I'm sure someone on the internet that is better at maths than me has an explicit solution worked out.
Here is what I wrote in Matlab:
iA=1;
iXo=1;
X1=4;
Y1=10;
X2=-3;
Y2=7;
F = @(V) [V(2)*cosh((X1-V(1))/V(2))-V(2)-Y1;V(2)*cosh((X2-V(1))/V(2))-V(2)-Y2];
InitialGuess = [iXo;iA];
Options = optimset('Display','iter');
XY = fsolve(F, InitialGuess, Options);
*Matlab code taken/edited from help file on solving nonlinear simultaneous eqns: http://www.mathworks.com/support/solutions/en/data/1-15NRJ/index.html…
I said to myself : post (again) something in the errors/bugs category. But then I said (also to myself) : why ? everybody knows that ... post something fun(?) in the examples that can(?) guide(??) people out of the rabbit hole.
And here we are : 4 test surfaces, 4 paneling methods, 2 profile "classes", 2 orientation options, 3 methods to skin a cat, 2 methods to find intact panels (in "any" surface - trimmed or not with or without holes), 2 presentation alternatives, 7 gates, 2 filters, 1 Branch controller(?), 1 secret component (related with sardines) = let me make the maths : about 123,45 Loft examples (a bit primitive to indicate the main issue).
NOTE: GH quite frequently (a) fails to internalize data (b) internalizes them and reports the data as "null". Use Rhino file if this is your lucky day.
NOTE: Lunchbox is required
NOTE: Proper Named Views were defined ... but then components are moved ... blah blah: make your own.
best, Peter
…
e actual method.
Below, I descibe how they work:
1) drag "scheduleDay" onto the canvas
2) drag some Gene Pool lists onto the canvas and connect a number slider - from 0 to 3.
3) connect the Gene Pool list to _genePool input. The component change some important features of the Gene Pool list automatically. Now you have LB_GenePool!!
4) choose the template that it's suitable for you.
5) disconnect LB_GenePool and if templates are not good, you can change them manually
6) drag "Ladybug annual schedule" onto the canvas
7) Connect LB_GenePools to inputs for the days of the week, Epw file and if you want to "_holiday" (in this way you consider holidays). Now you have your simple schedule.
8) a small workflow to visualize it into Rhino..
9) Connect "Ladybug annual schedule" to "Honeybee_Create CSV Schedule" to make your csv Schedule
You could make a schedule more complex than the one in the example above.
You can do that with _analysisPeriod input.
Bests
Antonello…