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.
…
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
al other things:1. the minimum and maximum spacing between points (a certain 'x' and 'y');2. the jump between two next points - let's say it is always 2. So if a minimum possible spacing is 'x' (pt.1) then the next one would be x+2, then x+4, x+6 etc. until it gets to x+n=y (the maximum);3. how many maximum/minimum points there are in a row - when a division reaches the minimum 'x' or maximum 'y distance I want it to stay there for a while (e.g. [...] x+(n-2), x+n=y, y, y, y, y, x+(n-2), x+(n-4)...) Therefore, what I want to get after dividing the base curve are curve pieces of following lenghts/points on the curve with following distances between them (for example):x, x, x, x+2, x+4, x+8 . . . x+n, y, y, y, y, y, x+n . . . x+4, x+2, x, x, x, x, x, x, x, x+2, x+4 . . . x+n, y, y, y, x+n . . . x-2, x, x, x, x, x-2 . . . and so on and on.As you can see the amounts of x's and y's in a row changes (Rule no.3).I've tried this with graphs and attractor points and got nowhere in almost 2 weeks (though I'm a beginner).. Perhaps someone here will have an idea :)I'm attaching a picture of what I have in mind (may be easier to understand than what I wrote for some people :))Cheers…
next level.
This Parametric Design course will provide the participants with the necessary knowledge and ability to use Grasshopper, a free visual programming plugin in Rhinoceros; you will be guided through a series of hands-on exercises that highlight NURBS modeling and its concepts. We will introduce Grasshopper as a graphical algorithm editor tightly integrated with Rhino’s 3D modeling tools. You will also learn how Rhino is used to render models for visualization, translate 3D models for prototyping, and export 3D models into 2D CAD or graphics programs.
English is the course main language.
Location: Düsseldorf city center
Registration and buying Tickets
www.digitalparametrics.eventbrite.de
Course Calendar:
4 Days 6 hours each
Total duration 24h
2 weekends
Date:
Sat. 17 - Sun. 18 June
Sat. 24 - Sun. 25 June
10:00 - 17:00
Getting Started in Rhino. 2 days (17 - 18 June)
Getting Started in Grasshopper. 2 days (24 - 25 June)
-----------------------------------------------------------------------
Participants will be given a certificate of participation at the end of the course.
-----------------------------------------------------------------------
Course fees:
Professionals: 600€ (excl. MwSt.) Students: 500€ (excl. MwSt.) Students need to provide: Copy of current student ID or proof of student enrollment at University/School.
Group discounts:
Group of 3 professionals: 3x500 = 1500€ (excl. MwSt.)
Group of 3 Students: 3x400 = 1200€ (excl. MwSt.)
Participants are kindly asked to bring their own laptops and have pre-installed Rhino + Grasshopper.
Useful Resources:
Rhinoceros Installation (90 days full version trial available): http://www.rhino3d.com/download
Rhinoceros for Mac (includes Grasshopper) http://www.rhino3d.com/download/rhino-for-mac/5/wip
Grasshopper Free Installation: http://www.grasshopper3d.com/page/download-1
Grasshopper Free Plugins: http://www.food4rhino.com/app/lunchbox http://www.giuliopiacentino.com/weaverbird
Main Tutor:
Rihan
M.A. Dipl.Ing. Architect
Architect at RKW Architektur + Düsseldorf
For any questions about the course, please email: info@immersive-studio.com…