this occasion, but it could be converted for DT in no time). Requires some minutes more as regards ... some things, but the usual update is due to some days.
Bad news: it's C#
Good news: User's Manual :
1. That thing (the C#, not me) after sorting (in a "sequential way", so tho speak) the panels (their order was chaotic) allows you to start the massacre by locating a focus of interest (and the user controllable +/- Range derived from it).2. The Range is variable (obviously) and takes care not to exceed the indices of the panel list (OK, that's elementary).
3. If you click the right button (Sadistic Q: where is it? he he) things are deleted and a new constantly self-updating list is your new List. Thus the massacre of panels is totally controllable. An autoZoom thing is also included (free of charge, but it's a bit nerve braking). Zoom factor is variable as well.
4. Then you move over (via the index slider) and start the massacre again. Notice the change of Range.
5. If you turn begin to false (initialization) and then begin to true > start all over again.
6. The other C# thing allows you to increment the index slider in a rather more convenient way. It's a bit weird: it uses delegates (A delegate is an object that knows how to call a method) and events (An event is a construct that exposes just the subset of delegate features required for the broadcaster/subscriber model - but don't ask what this means, he he) in order to talk with your slider (with a defined NickName) and perform the required value control.
NOTE: without realizing it you've just (indirectly) asked one of the most important questions even exposed in this Noble Forum. I hear you : what question? Well ... wait some days for the mother of all threads: "Total control in collections on a per Item basis"
may the Force (the dark option) be with you (and me)
best, Peter…
Rubicon (ii.e. some programming language [I would strongly recommend C#] > the Dark Side > years of pain + tears > hell or heaven?).
Back to that pile or worms of yours (I hate "simple" cases, he he).
0. if you want rounded lips ... Styrofoam is the only solution (+ sanding [buy a mask and some decent cigars ... path is long and hilly]). if not > goto 5/6.
1. by what means you think that you can shape Styrofoam? Do you have access to some CNC foam cutter? Or the only tools that you have are ... 2 hands and a knife? (or a thermal cutter). Accuracy is a BIG issue here: chances are that panels won't "fit". Solution is available in the forthcoming V3.
2. male "protrusions" on Styrofoam is kinda 3rd marriage > AVOID at any cost > this would end up in tears.
3. female ones are safe ... thus we need a proper "insert stripe" that must be compatible with the Styrofoam adhesive and strong enough to hold the pieces until the glue cures (it takes time, there's no instant Styrofoam adhesives around). Maybe aluminum (hard to cut by hand) or balsa (very expensive) or plywood (best option).
4. Some CNC foam cutters they can't shape the female "crevices" > be prepared (a thermal tool may(?) cut the mustard).
Note: panels made with Styrofoam look miserable because reality and theory differ. They also look miserable as well (and kitsch and miserable).
5. making the panels with (marine) plywood ... well this yields far superior accuracy and therefor aesthetics but (a) yields max panel thickness constrains, (b) introduces max panel dimensions constrains (c) yields packing issues [waste material] and (d) requires a totally different "connection" approach: it doesn't make sense to do some female crevice ... unless the plywood is very thick (expensive + heavy).
Note: Designing (pro option) self supporting "rib" reinforced sandwich composite panels ... well this is a bit far and away from what you can handle at present time.
So ... I've suspended the male/female thingy until you decide the final policy: it's the material/detailing that should dictate the method(s) AND the whole design and not the other way.
This is what we call bottom-top design approach (dinosaur Architects follow the top-bottom: disastrous + naive + naive + naive + avoid).
6. Plan ZZTop: make a stand alone autonomous perimeter frame per panel (marine plywood: imagine "thickening" these abstract beams shown inwards per panel) then join these frames by means of bolts (easy) and fill the "gaps" with Styrofoam (hmm). Note: you can reinforce the frames by a variety of means (say: a secondary "beam" sub-structure) achieving a rather elegant all overall solution.
This is the best solution by roughly 666 miles.
…
The PC actually stops working because after a few seconds the simulation starts the fan inside the PC all of a sudden stops and for the next 5-10 mins I cannot do anything, even alt+ctrl+canc. After I wait for that time i get the followig error:
the ReadMe says:
{0;0;0}0. Grid-based Radiance simulation1. The component is checking ad, as, ar and aa values. This is just to make sure that the results are accurate enough.2. -ar is set to 300.3. Good to go!4. Current working directory is set to: C:\Users\Luigi\Desktop\Prova__\Prova_1\gridBasedSimulation\5. Found a trans material... Resetting st parameter from 0.85 to 0.011276004966. WMIC PROCESS get Commandline7. WMIC PROCESS get Commandline8. WMIC PROCESS get Commandline9. WMIC PROCESS get Commandline10. WMIC PROCESS get Commandline11. WMIC PROCESS get Commandline12. WMIC PROCESS get Commandline13. WMIC PROCESS get Commandline14. WMIC PROCESS get Commandline15. WMIC PROCESS get Commandline16. WMIC PROCESS get Commandline17. WMIC PROCESS get Commandline18. WMIC PROCESS get Commandline19. WMIC PROCESS get Commandline20. WMIC PROCESS get Commandline21. WMIC PROCESS get Commandline22. WMIC PROCESS get Commandline23. WMIC PROCESS get Commandline24. WMIC PROCESS get Commandline25. WMIC PROCESS get Commandline26. WMIC PROCESS get Commandline27. WMIC PROCESS get Commandline28. WMIC PROCESS get Commandline29. WMIC PROCESS get Commandline30. WMIC PROCESS get Commandline31. WMIC PROCESS get Commandline32. WMIC PROCESS get Commandline33. WMIC PROCESS get Commandline34. WMIC PROCESS get Commandline35. WMIC PROCESS get Commandline36. WMIC PROCESS get Commandline37. WMIC PROCESS get Commandline38. WMIC PROCESS get Commandline39. WMIC PROCESS get Commandline40. WMIC PROCESS get Commandline41. WMIC PROCESS get Commandline42. WMIC PROCESS get Commandline43. WMIC PROCESS get Commandline44. WMIC PROCESS get Commandline45. WMIC PROCESS get Commandline46. WMIC PROCESS get Commandline47. WMIC PROCESS get Commandline48. WMIC PROCESS get Commandline49. WMIC PROCESS get Commandline50. WMIC PROCESS get Commandline51. WMIC PROCESS get Commandline52. WMIC PROCESS get Commandline53. WMIC PROCESS get Commandline54. WMIC PROCESS get Commandline55. WMIC PROCESS get Commandline56. WMIC PROCESS get Commandline57. WMIC PROCESS get Commandline58. WMIC PROCESS get Commandline59. WMIC PROCESS get Commandline60. WMIC PROCESS get Commandline61. WMIC PROCESS get Commandline62. WMIC PROCESS get Commandline63. WMIC PROCESS get Commandline64. WMIC PROCESS get Commandline65. WMIC PROCESS get Commandline66. WMIC PROCESS get Commandline67. WMIC PROCESS get Commandline68. WMIC PROCESS get Commandline69. WMIC PROCESS get Commandline70. WMIC PROCESS get Commandline71. WMIC PROCESS get Commandline72. WMIC PROCESS get Commandline73. WMIC PROCESS get Commandline74. WMIC PROCESS get Commandline75. WMIC PROCESS get Commandline76. WMIC PROCESS get Commandline77. WMIC PROCESS get Commandline78. WMIC PROCESS get Commandline79. WMIC PROCESS get Commandline80. WMIC PROCESS get Commandline81. WMIC PROCESS get Commandline82. WMIC PROCESS get Commandline83. WMIC PROCESS get Commandline84. WMIC PROCESS get Commandline85. WMIC PROCESS get Commandline86. WMIC PROCESS get Commandline87. WMIC PROCESS get Commandline88. WMIC PROCESS get Commandline89. WMIC PROCESS get Commandline90. WMIC PROCESS get Commandline91. WMIC PROCESS get Commandline92. WMIC PROCESS get Commandline93. WMIC PROCESS get Commandline94. WMIC PROCESS get Commandline95. WMIC PROCESS get Commandline96. WMIC PROCESS get Commandline97. WMIC PROCESS get Commandline98. WMIC PROCESS get Commandline99. WMIC PROCESS get Commandline100. WMIC PROCESS get Commandline101. WMIC PROCESS get Commandline102. WMIC PROCESS get Commandline103. WMIC PROCESS get Commandline104. WMIC PROCESS get Commandline105. WMIC PROCESS get Commandline106. WMIC PROCESS get Commandline107. WMIC PROCESS get Commandline108. WMIC PROCESS get Commandline109. WMIC PROCESS get Commandline110. WMIC PROCESS get Commandline111. WMIC PROCESS get Commandline112. WMIC PROCESS get Commandline113. WMIC PROCESS get Commandline114. WMIC PROCESS get Commandline115. WMIC PROCESS get Commandline116. WMIC PROCESS get Commandline117. WMIC PROCESS get Commandline118. WMIC PROCESS get Commandline119. WMIC PROCESS get Commandline120. WMIC PROCESS get Commandline121. WMIC PROCESS get Commandline122. WMIC PROCESS get Commandline123. WMIC PROCESS get Commandline124. WMIC PROCESS get Commandline125. WMIC PROCESS get Commandline126. WMIC PROCESS get Commandline127. WMIC PROCESS get Commandline128. WMIC PROCESS get Commandline129. WMIC PROCESS get Commandline130. WMIC PROCESS get Commandline131. WMIC PROCESS get Commandline132. WMIC PROCESS get Commandline133. WMIC PROCESS get Commandline134. WMIC PROCESS get Commandline135. WMIC PROCESS get Commandline136. WMIC PROCESS get Commandline137. WMIC PROCESS get Commandline138. WMIC PROCESS get Commandline139. WMIC PROCESS get Commandline140. WMIC PROCESS get Commandline141. WMIC PROCESS get Commandline142. WMIC PROCESS get Commandline143. WMIC PROCESS get Commandline144. WMIC PROCESS get Commandline145. WMIC PROCESS get Commandline146. WMIC PROCESS get Commandline147. WMIC PROCESS get Commandline148. WMIC PROCESS get Commandline149. WMIC PROCESS get Commandline150. WMIC PROCESS get Commandline151. WMIC PROCESS get Commandline152. WMIC PROCESS get Commandline153. WMIC PROCESS get Commandline154. WMIC PROCESS get Commandline155. WMIC PROCESS get Commandline156. WMIC PROCESS get Commandline157. WMIC PROCESS get Commandline158. WMIC PROCESS get Commandline159. WMIC PROCESS get Commandline160. WMIC PROCESS get Commandline161. WMIC PROCESS get Commandline162. WMIC PROCESS get Commandline163. WMIC PROCESS get Commandline164. WMIC PROCESS get Commandline165. WMIC PROCESS get Commandline166. WMIC PROCESS get Commandline167. WMIC PROCESS get Commandline168. WMIC PROCESS get Commandline169. WMIC PROCESS get Commandline170. WMIC PROCESS get Commandline171. WMIC PROCESS get Commandline172. WMIC PROCESS get Commandline173. WMIC PROCESS get Commandline174. WMIC PROCESS get Commandline175. WMIC PROCESS get Commandline176. WMIC PROCESS get Commandline177. WMIC PROCESS get Commandline178. WMIC PROCESS get Commandline179. WMIC PROCESS get Commandline180. WMIC PROCESS get Commandline181. WMIC PROCESS get Commandline182. WMIC PROCESS get Commandline183. WMIC PROCESS get Commandline184. WMIC PROCESS get Commandline185. WMIC PROCESS get Commandline186. WMIC PROCESS get Commandline187. WMIC PROCESS get Commandline188. WMIC PROCESS get Commandline189. WMIC PROCESS get Commandline190. WMIC PROCESS get Commandline191. WMIC PROCESS get Commandline192. WMIC PROCESS get Commandline193. WMIC PROCESS get Commandline194. WMIC PROCESS get Commandline195. WMIC PROCESS get Commandline196. WMIC PROCESS get Commandline197. WMIC PROCESS get Commandline198. Runtime error (IndexOutOfRangeException): index out of range: 0199. Traceback: line 320, in script
The thing is that if I raise the -aa parameter from 0.05 to 0.1 all works fine..
Is this only related to my PC then?? What should I do to solve this issue?
Thanks again for your help
Luigi…
being driven by the wii nunchuck... But, here's my issue. I tried it first by having the output from the listener be a 6-digit number... so, I'm using the (CInt(Val(StoredValue))) command and it's writing out 181130... and I can easily split it up selecting the Left(x,3) or Right(x,3)... I first rant that number through a Format("{0:000000}",x) so that even if one of the accx or accy numbers were a 2-digit number (so my overall number would only have 5-digits)... with this Format function... I'm always assured a 6-digit number. And this method works... except...
If the first group of numbers coming in only has 2-digits... So, lets say the accelerometer read out of the first one (accx) is 89. Let's say the accy read out is 119. So, when I run this through the Format function to make it have at least 6 digits, my number now reads 011989. So, if I were to take the first three numbers on the right, my read out would be 989... which is much higher than my expected (60-180 range that is really coming over the Serial Port)... So, I'm back to where I started... in that I need to figure out a better way to split up the data.
Which brings me to your method. I tried it as well... in fact, I added a comma in the serial readout, so the string coming out of the listener reads 89,119. So, I can use your trick to go look for a delimeter and then read to the left and right a certain number of digits... The problem I still have is that the data going into the function is a string, and thus even if I split the 3 digits to the right of the comma out (so, my output says 119)... it's still a string, and my number parameter is still red. In your picture above, was your original 181 130 a number or a string? My guess is that it was understood as a number, because your number parameters at the end are accepting the value. But, in my case... I'm still stuck with the inability to convert a string to a number... Does this make sense? And are their any other workarounds?…
Added by Andy Payne at 9:42am on September 3, 2009
e existing wires.
2) The capsule display is very similar to the first graph, but instead of drawing a line connecting relative y-values for each slider, each slider get's assigned a colour (from dark red to yellow) based on it's relative position. It allows you to see whether two genomes are similar or not without taking up too many y pixels.
3) This is a tricky one to explain. Every genome in a single species has the same 'dimensionality'. For example, if there are only two sliders you can say that the entire genome space for the species is 2-dimensional. For every possible combination of these two sliders, there is a fitness value (or a height) on this two dimensional plane. If your genome consists of 6 sliders, then we're talking about a 6-dimensional space.
As you probably know, distances between points are computed with the same formula, regardless of the dimensions of these points. Pythagoras' method works for all points with identical and integer dimensions. So even though I cannot display a 6-dimensional genome space on a two-dimensional computer screen, I can compute the distances between all the genomes in a species/generation. This then gives me a matrix with the distances from every genome to every other genome. I translate this distance matrix to a node-spring particle system and solve that system in two-dimensions, which ultimately results in the point-scatter graph you see on the screen.
The axes of this 2D representation of the ND distances are meaningless. The absolute position of the points inside this grid are governed partly by chance. However the relative positions are meaningful in that they convey which genomes are similar and which ones are different. Points which appear close together represent similar genomes, points which appear far apart represent different genomes.
Basically it becomes very simple to see the entire collection of genomes and get a feel for how varied the set is. You can often even see sub-species appear as distinct clusters of points.
4) For every generation, I display the fittest genome (upper boundary of yellow area), the worst genome (lower boundary of yellow area), average genome fitness (the thick red line) and the standard deviation of the fitness distribution in both directions (the orange area). Everything below the average is hatched.
Have you seen the Blog entry about galapagos?
--
David Rutten
david@mcneel.com
Seattle, WA…
Added by David Rutten at 1:37pm on November 26, 2010
s).
I don't know how the speed/efficiency will compare with other spatial tree structures, but for me the main appeal would be getting the surface triangulation from the same process as the neighbour queries.
I figured someone has probably tried this idea before - did some searching and sure enough, for granular simulations it has been used for detecting collisions in 'discrete element modelling', but not very widely as far as I can tell (and not the part about a changing triangulated surface from the tetrahedra). Some info on this here:
http://www.apprendre-en-ligne.net/auteur/roso/boston.pdf
and in more detail here:
http://infoscience.epfl.ch/record/32908/files/EPFL_TH2432.pdf
(see Fig 2.15)
and a similar approach can even be extended to collision detection between polygons, not just spheres
http://www.apprendre-en-ligne.net/auteur/roso/marseille.pdf
@Dan H
If I understand correctly, what you are suggesting is a little bit like what they use here for splitting the surface when handles get too thin, though in this case based on unflippable edges not aspect ratios:
http://research.microsoft.com/en-us/UM/people/yangliu/publication/cmc.pdf
(see figure 3)
However, this only works for splits, and won't help 2 blobs which start separate then need to merge.
Another possibility could be to do constant local connectivity updates together with occasional more expensive global checks for topology change by using some spatial tree to check proximity.
Similar to what is described here:
http://hal.inria.fr/docs/00/60/65/16/PDF/Freestyle.pdf (Fig. 6)
and implemented rather nicely here:
http://stephaneginier.com/…
Added by Daniel Piker at 3:19am on October 11, 2013
ngle list is identified by a unique path. For example {0}, {0;0;0} or {0;3;0} are all different paths. When data form multiple sources is merged (as in the [V] input of your polyline component), then the various paths are also merged. Thus, the point in the first panel at path {0;0;0} will be put in the same list as the point in the third panel at {0;0;0} as well as the point in the fourth panel at {0;0;0}. Thus, the polyline component will create a polyline through those three points. The second panel contains data with a different path format (only two numbers) and these points will not be merged with anything else because their paths are unique. However a polyline through a single point cannot be made which is probably why the component is orange.
I cannot fix your file because you didn't upload it, but here's some general advice:
Don't put panels in between source and target components. Panels convert the data into text, and this text will then be converted back into whatever type is required on the right. Sometimes this works fine (for example with booleans or integers), sometimes it won't work at all (for example with curves, meshes or breps) and sometimes it will work poorly (for example with points and vectors). The reason it works poorly is because the panel rounds the coordinates to 6 decimal places because this makes for easier viewing. However when points are recreated from the text, the remaining 10 decimals are now lost.It's fine to use panels to inspect data, but inserting them in between source and target components is rarely a good idea.
If you have data that exists in multiple lists but you want to put it all into a single list, you should use a Flatten component.
If you have data in various lists that you want to merge into a single tree (tree = list of lists), but you want to keep all the lists separate, you can use the Entwine component.
You should flatten all your individual point lists, then use Entwine to put them all together and finally plug the result of Entwine into the Polyline V input.…
Added by David Rutten at 3:04pm on September 9, 2016
h tree is actually a number of curves in rhino. I am then refreancing those groups of curves [trees] into grasshopper so each tree [group of curves] is held in one crv compnent. this is where my problem starts. The end goal is to extract endpoints from branches in each tree, then add splines that go through those endpoints of each tree in order, i.e. point 0 - tree 0, point 0 - tree 1, point 0 - tree2, point 0 - tree 3 ......... My problem is that i cant seem to get the data structured in a way that each branch holds each tree or group of curves, my problem may be that i start with (x) lists of (y)curves in each list. corresponding to x curve components [each a tree] with y curvres in them [each a crv of respective tree in rhino] Now i say x lists with y curves becuase right now its set up 6 lists each with somewhere between 20 and 45 curves in each, but those both will be changing often through iterations. so my problem may not be changing the structure of the data but getting it structured the way i want from the begining. I cant see to pass each of those trees into a component and have it come out as x lists/branchs of y crvs each, i either get one branch with (x*y) curves in the list, so essentiall all curves in the model. or i get (x*y) branches each with 1 curve per branch, essentially creating a new branch for every single curve. I have been working with the path mapper to try and solve but no luck, like i said i think it may be somethign to do with how it is structured from the begining rather than changing it down the line. attached def and model for referance, any thoughts /ideas greatly appreciated, midcrit on wednesday and need to get this base def working so i can start pumping out iterations with added attraction and repulsion fields built into trees/points.…
the past 6 months).
You can download this release from the usual location. The internal version number for this release is 0.9.0068.
Fixes:
All expressions inside parameters now use 'x' as the variable instead of the nickname. Old files should be converted automatically.
GetDataTree method calls with mismatched parameter access would display the wrong error message, this is fixed.
Menu items on submenus that are disabled due to document states could not be triggered by shortcuts or buttons, this is fixed.
Lofting would fail with zero-length start and end profiles, this is fixed (they are now treated as points).
When lofting failed due to invalid profile curves, the error message was useless, this is fixed.
Under rare conditions null entries in persistent data would cause the Manage X Collection window to crash, this is fixed.
Mouse Leave events on the Expression Editor window would sometimes cause a crash due to null timers, this is fixed.
Offsetting curves would sometimes result in superfluous control points, this is fixed.
Trim Solid would fail if one of the trimming shapes did not intersect the base shape, this is fixed.
Solid Difference would fail if one of the trimming shapes did not intersect the base shape, this is fixed.
The annealing history curve in the Galapagos window would sometimes crash on repaint, this is fixed.
Having a (partially) transparent background colour for a Text Panel would crash the panel editor window, this is fixed.
The Evaluate component would crash when editing an expression with coincident variable names, this is fixed.
--
David Rutten
david@mcneel.com…
Added by David Rutten at 9:07am on January 26, 2014