to panelize & planerize in Grasshopper using the Kangaroo plug-in.
I’d like the “funnels” to taper upwards from a small base circle to a larger square. The problem is very similar to the one tackled in another post:http://www.grasshopper3d.com/forum/topics/how-to-get-continuous-panels
So far I have simply attempted to apply the tutorial at the address below to my surface…which resulted in a wild simulation where no equilibrium was reached. I’ve played around with tolerances but to no avail.
Going forward I have some very broad questions:
1. Quite simply; how would you experienced types recommend I model the initial funnel? (Revolution surface? Mesh? Successive lofts?…)
2. Would you recommend paneling with a particular shape? Maybe it is my choice of working with only hexagons that is geometrically instable?
3. Would you apply a different technique than that used in the tutorial below, or simply change some elements? I’ve heard that the Weaverbird plug-in can be useful for use with Kangaroo for this sort of problem?
Tutorial followed: “How to create planar Honeycomb Shells using Kangaroo´s Planarization Forces” by ThinkParametric https://www.youtube.com/watch?v=MsbyfC2usUk
Thanks in advance for any feedback!…
uest Tutors: Olga Kovrikova (AL_TU), Alexandr Kalachev (AL_TU), Tudor Cosmatu (AL_TU)
Materialized Algorithm - Digital Tectonics workshop focuses on finding an appropriate design algorithm by implementing and embedding the material qualities into the design process.
Through the Rhino software tutorials, participants will get a short introduction to the nurbs-surface modeling techniques, which will be further used as a basis for form-finding and component development.
Grasshopper is a graphical algorithm editor tightly integrated with Rhino’s 3-D modeling tools which requires no specialized knowledge of programming or scripting. Sinceits existence it has been helping more and more professional designers to understand and use parametric modeling techniques. This workshop will start with the basic operation of Grasshopper integrating specific examples (Kangaroo, KingKong) which will help develop the concepts into built proposals.
Participants will have to start designing with physical models, creating a constant feedback loop between the physical and digital world allowing for the creation of differentiation and achievement of the desired geometric complexity. Finally a number of maximum two projects will be thoroughly developed and built.
For more information visit:
http://zhan.renren.com/damlab?gid=3674946092080649725&checked=true…
Added by Tudor Cosmatu at 12:28pm on August 28, 2013
ructural member. It can only be used as a Veneer / Cladding. You may observe from my sketch that structural member is only a timber frame. Hence we do not need to have a valid bond as long as the brick veneer is tied together with each other and to the timber structural frame behind.
Nevertheless, though i understood the components used in the definition, i only partially understood the logic behind your definition i.e. only until 'Divide Dist' and Extracting the points. After that I did not understand the logic behind using
a) Extracting 40 random values and than using those values as input for Seed to extract another set of 40 random values.
b) Extracting list length, subtracting with random values created in (a) above and then dividing with number 3.
c) Duplicating the Datas
d) The most perplexing is using above logic (a,b,c) to to extract number of branches (number-40) by using Tree Statistics. If number 40 is the input we required for 3rd Random component Why couldn't we connect the List Lenght to Pramviewer and extract the number of branches (40) and connect the output to the Random Component?
e) Finally i did understand the logic behind creating 2 Vector to create the bricks. But i did not understand the addition following the vector.
f) Why do you use the function 'simplify'? - what does it do? I know it simplifies the data tree, but what does simplifying a a data tree do to the entire definition?
Hannes, i know this is quite comprehensive list of doubt, but your help is and will be always appreciated.
Cheers
AB
…
( http://en.wikipedia.org/wiki/Honeycomb_(geometry) )To fill a 3d space you can use structure already existing, like cubic or octahedra and tetrahedra.Starting from cubic structure then (the easiest).
1 - make few(x) random points
2 - 3dArray them
3 - make voronoi cells wih all the points
4 - extract just the (x) cells at the center
now you get x cells with a random shape, but that completely fill a 3d space with a cubic pattern
(the same thing can be done with octahedra and tetrahedra pattern, just its a bit harder to do the array)
Change seed to achieve a decent initial result.
You can then manually "fix" those cells removing small faces.
(by moving small parts of volume to one cell to another)
Those cells will just have a single orientation, the final pattern maybe will still look cubic-ish.
there are also structures with standard cells but non-repetitive patterns:
http://en.wikipedia.org/wiki/Penrose_tiling
but i have no idea to how to apply this in 3d (even in 2d! :S )…
e. What is the interesting thing with these? Well since are created by iterating trough the mesh faces (mesh face Normal * d + flip option ... etc etc) ... their enumeration (order) in the resulting wPtsList list ... is exactly the same with the enumeration (order) of the mesh Faces list.
2. So a ff connectivity Tree [Lord way or Sandbox] (where f(ace)-to-f(ace) actually means: neighbor faces(indices) that a given mesh face has) is the only thing that we need in order to achieve this type of "top" struts layout. Spot the extra crude List.Distinct().ToList() "clean" up method (but why bother? he he).
3. The other way ("top" layer struts - option: ballPivot) well ... it does the obvious.
…
) Take it apart, trim holes, connections, and other stuff needed for the fabrication > (c) Make 2d drawings out of them. (d) exporting them
I've got a few findings that might be useful in that context:
1. When using large amount of components, the show selected only is pretty much the weapon of choice to debug. In this context it would be useful if the Custom Preview components (also the custom vector preview component) would not turn green when selected in "Draw Only Selected Geometry" mode, since it turns them pretty much useless in this mode.
2a. A second step up to the same problem would be if turning objects on/off (enable/disable) (preview/disable preview) could be done at the group level. (Perhaps the ZUI-kung fu you've introduced could be the way to go?). This would make creating scripts that can have different stages that do not always have to be enabled a bit easier to manage.
2b. This would of course even be better if the groupwise-enable/disable operations are overrides. (in the sense that a component is only enabled when the group and the component are enabled).
3. Colours. Would it be possible to add a small pallette to the GH colour picker? Right now if we for example pick a convention "Let's make all the functionality that's for debugging yellow, all operating code that should not require messing about with green, and the parts that require human interaction Red", is a bit cumbersome, because picking the same yellow will require me to remember the colour values to get the same colour (The pipet tool will also give different colours)
4. Scribble: Can I please easily align text to 0,90,180 or 270 degrees rotation? :)…
e below).
Explanation of my intent:
The first input (crvTree) has the exact same data structure as the second input (cell_name). crvTree contains one or more Curves in each branch, while cell_name contains exactly one string per branch.
The third input (system_names) is a list of string data, and I compare the single string from each branch of cell_name and find a match, then return the index of system_name.
So, for example:
crvTree brings in:
{0} bunch of Curves
{1} bunch of other Curves
{2} another bunch of Curves
cell_name brings in:
{0} "curve type A"
{1} "curve type D"
{2} "curve type A"
system_name brings in:
{0;0} "curve type A"
{0;1} "curve type B"
{2;0} "curve type C"
{2;1} "curve type D"
{2;2} "curve type E"
{3;0} "curve type F"
output should be:
{0;0} bunch of Curves (and) another bunch of Curves
{2;1} bunch of other Curves
I'm pretty sure that I can't keep accessing cell_name as an item, but instead as a tree. I was only doing that to first get the strings to match, which I did.
protected override void SolveInstance(IGH_DataAccess DA) { //Declare a new List(Of T) to hold the input text data. string cell_name = "nothing yet"; List<string> system_names = new List<string>(); int index; Grasshopper.Kernel.Data.GH_Structure<Grasshopper.Kernel.Types.GH_Curve> crvTree = new Grasshopper.Kernel.Data.GH_Structure<Grasshopper.Kernel.Types.GH_Curve>();
//Retrieve the whole list of System Names using DA.GetDataList(). if ((!DA.GetDataTree(0, out crvTree))) { return; } if ((!DA.GetData(1, ref cell_name))) { return; } if ((!DA.GetDataList(2, system_names))) { return; }
index = system_names.IndexOf(cell_name);
int index2 = -1; for(int i = 0; i < system_names.Count; i++) { if(String.Equals(system_names[i], cell_name, StringComparison.OrdinalIgnoreCase)) { index2 = i; break; } } DA.SetData(0, index2); DA.SetDataTree(1, crvTree);
}…
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.
…