Tetrahedron: 24 Symmetries
Pyramid: 8 Symmetries
Design space = 24 X 8 = 192 permutations
So I decided to write a simple orientation script to iterate over all permutations. And this is the result. Below are some technical notes.
I used the vertices of the shapes for creating a 3 point plane, and used it for orientation.
I used compound transform to combine multiple steps of transformation.
The cross reference component is very handy, generating all the possible combinations without worrying too much about data tree.
The spatial relationship and the basic grammar A -> A + B and B -> A + B
The basic grammar and possible marker positions.
All results in 6 iteration steps
All results in 6 iteration steps (Top View)…
e alla comprensione e la gestione di algoritmi generativi progettati con lo strumento Grasshopper.
In classe, le informazioni saranno fornite in maniera accelerata ma organica e contestuale agli argomenti elencati. Per massimizzare i risultati, le lezioni saranno accompagnate da esercitazioni svolte in aula ed un progetto individuale finale. Per ottenere risultati ottimali, ogni giorno saranno effettuate piccole esercitazioni pratiche da svolgere con un tutor ART McNeel, il quale assisterà gli studenti nell’ultima fase del corso, durante l’ideazione del progetto finale, che si avvarrà degli strumenti di modellazione avanzata di Rhino e nozioni base di Grasshopper.
Durata 4 giorni (tre sessioni da 5 ore più una finale da 9 ore, 24 ore totali)
Prerequisiti Conoscenza base del software Rhino attraverso esperienze teoriche e pratiche. Predisposizione all’analisi algoritmica di base.
Il corso sarà attivato con un numero minimo di 5 iscrizioni. I partecipanti dovranno essere muniti di proprio laptop con software Rhinoceros 4 o Rhinoceros 5 già installato e l’ultima versione della plug-in Grasshopper. In ogni caso, sarà possibile scaricare una versione valutativa pienamente funzionante cliccando sul seguente link:
Rhino4: http://download.rhino3d.com/rhino/4.0/evaluation/download/
Rhino5: http://download.rhino3d.com/Rhino/5.0/evaluationtimed/
Mentre la plug-in e scaricabile in versione gratuita cliccando il seguente link
Grasshopper: http://download.rhino3d.com/Grasshopper/1.0/wip/
Destinatari Il corso è rivolto a tutti coloro che si vogliono affrontare i nuovi metodi di progettazione consapevoli e addestrati sui contemporanei strumenti di disegno ed analisi.
Obiettivi del corso
In una prima parte del corso Rh+Gh, si impara a costruire, modificare e analizzare le curve che saranno utilizzate per una modellazione di superfici di classe A, trattate tra gli argomenti principali. Nella seconda parte, il fine è quello di apprendere le basi di modellazione generativa attraverso la plug-in Grasshopper.
…
component and connect to L data from A and to i data from B I would like it to make tree like :
path {0,0}
a
b
c
path {0,1}
b
c
d
path {1,0}
e
f
g
path {1,1}
f
g
h
…
mpletes, i will be incremented. The default increment amount is 1.
If you change the syntax to be:
For i As Int32 = 0 To 9 Step 2
then i will be incremented by 2 each time. So now the loop will run 5 times:
first iteration i = 0
second iteration i = 2
third iteration i = 4
fourth iteration i = 6
fifth iteration i = 8
sixth iteration i = 10 which is more than 9 so the 6th iteration never happens.
If you use Step 0, i isn't incremented at all, and the loop should run forever, unless you have some other abort statement or if you adjust the iteration variables inside the loop. You are doing the latter. Your iteration variable is D. The loop itself does not increment it, but you manually increment it when you call D += T.
Although this is logically solid, it is very bad practice since it makes the code very hard to read.
Since D, R and N are not external variables, I would not expose them as Input parameters.
Also, you inner loop is very weird:
For R = R1 To R Step 0
Your iteration variable here is R, but your termination limit is also R. Not to mention the step is again zero.
Trying to debug this is very difficult because it's been written in a very unorthodox fashion. I have a distinct feeling this algorithm can be written down with far fewer variables and constructs.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
d having the entire surface adjust while maintaining equilateral triangles. The closest solutions I've come across are the equilateralize and shell and plate examples for Kangaroo (images below), but I don't think the definition in the equilateralize demo will work because I don't always want 6 triangles around each vertex (I want a range from 4 to 7.) The shell and plate example seems more promising, but when I open it in rhino/GH it says the C# component is old, and the code is missing. Also, the shapes I'm trying to model are much less spherical than the mesh in the demo, so I'm not sure if that method will work anyway. I'm also posting an image of some physical models that show what I'm going for.
Any advice would be much appreciated!
…
ocessed once Grasshopper is done with whatever it's doing now.
3) Grasshopper tells the Slider object that the mouse moved and the slider works out the new value as implied by the new cursor position.
4) The slider then expires itself and its dependencies ([VB Step 1] in this case, but there can be any number of dependent objects).
5) When [VB Step 1] is expired by the slider, it will in turn expire its dependencies (VB Step 2), and so on, recursively until all indirect dependencies of the slider have been expired.
6) When the expiration shockwave has subsided, runtime control is returned to the slider object, which tells the parent document that stuff has changed and that a new solution is much sought after.
7) The Document class then iterates over all its objects (they are stored in View order, not from left to right), solving each one in turn. (Assuming the object needs solving, but since in your example ALL objects will be expired by a slider change, I shall assume that here).
8) It's hard to tell which object will get triggered first. You'd have to superimpose them in order to see which one is visually the bottom-most object, but let's assume for purposes of completeness that it's the [VB Step 1] object which is solved first.
9) [VB Step 1] is triggered by the document, which causes it to collect all the input data.
10) The input parameter [x] is asked to collect all its data, which in turn will trigger the Slider to solve itself (it got expired in step 4 remember?). This is not a tricky operation, it merely copies the slider value into the slider data structure and shouts "DONE!".
11) [x] then collects the number, stores it into its own data structure and returns priority to the [VB Step 1] object.
12) [VB Step 1] now has sufficient data to get started, so it will trigger the script inside of it. When the script completes, the component is all ready and it will tell the parent document it can move on to the next object (the iteration loop from step 7).
13) Let us assume that the slider object is next on the list, but since it has already been solved (it was solved because [VB Step 1] needed the value) it can be skipped right away, which leaves us with the last object in the document which is still unsolved.
14) [VB Step 2] will be triggered by the document in very much the same way as [VB Step 1] was triggered in step 9. It will also start by collecting all input data.
15) Since all the input data for [VB Step 2] is either defined locally or provided by an object which has already been solved, this process is now swift and simple.
16) Upon collecting all data and running the user script, the component will surrender priority and the document becomes active again.
17) The document triggers a redraw of the Grasshopper Canvas and the Rhino viewports and then surrenders priority again and so on and so forth all the way up the hierarchy until Grasshopper becomes idle again.
[end boring]
Pretty involved for a small 3-component setup, but there you have it.
To answer somewhat more directly your questions:
- The order in which objects are solved is the same as the order in which they are drawn. This is only the case at present, this behaviour may change in the future.
- Adding a delay will not solve anything, since the execution of all components is serial, not parallel. Adding a delay simply means putting everything on hold for N milliseconds.
- [VB Step 1] MUST be solved prior to [VB Step 2] because otherwise there'd be no data to travel from [GO] to [Activate]. The only tricky part here is that sometimes [VB Step 1] will be solved as part of the process of [VB Step 2], while at other times it may be solved purely on its own merits. This should not make a difference to you as it does not affect the order in which your scripts are called.
--
The Man from Scene 24…
Added by David Rutten at 4:43pm on December 10, 2009
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…
tangent lines don't, causing a data mismatch. So...
'Cull' all 'MCX' points that equal the origin, and apply the same cull pattern to the 'iA' list (light blue group).
Move the "Second Point" merge and 'Sort' by distance to earlier in the process.
Add a 4th point to the 'List Item' index list (0, 3, 5, 6).
Remove the tree hack nonsense.
Voila! Perfection. Now that is... persistence.
“Two percent is genius and ninety-eight percent is hard work.” -- Thomas Edison, April 1898
By the way, there is another way to do this kind of thing that doesn't require such deep knowledge as this method. Not considered as elegant because it doesn't apply in all cases, but it would work here. Create just one curve/pipe and rotate it 26 times.
…
rring to the above image)
Area
effective
effective
Second
Elastic
Elastic
Plastic
Radius
Second
Elastic
Plastic
Radius
of
Vy shear
Vz shear
Moment
Modulus
Modulus
Modulus
of
Moment
Modulus
Modulus
of
Section
Area
Area
of Area
upper
lower
Gyration
of Area
Gyration
(strong axis)
(strong axis)
(strong axis)
(strong axis)
(strong axis)
(weak axis)
(weak axis)
(weak axis)
(weak axis)
A
Ay
Az
Iy
Wy
Wy
Wply
i_y
Iz
Wz
Wplz
i_z
cm2
cm2
cm2
cm4
cm3
cm3
cm3
cm
cm4
cm3
cm3
cm
I have a very similar table which I could import to the Karamba table. But I have i_v or i_u values as well as radius of inertia for instance.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
dimensjon
Masse
Areal
akse
Ix
Wpx
ix
akse
Iy
Wpy
iy
akse
Iv
Wpv
iv
Width
Thickness
Radius R
[kg/m]
[mm2]
[mm4]
[mm3]
[mm]
[mm4]
[mm3]
[mm]
[mm4]
[mm3]
[mm]
[mm]
[mm]
[mm]
L 20x3
0.89
113
x-x
4,000
290
5.9
y-y
4,000
290
5.9
v-v
1,700
200
3.9
20
3
4
L 20x4
1.15
146
x-x
5,000
360
5.8
y-y
5,000
360
5.8
v-v
2,200
240
3.8
20
4
4
L 25x3
1.12
143
x-x
8,200
460
7.6
y-y
8,200
460
7.6
v-v
3,400
330
4.9
25
3
4
L 25x4
1.46
186
x-x
10,300
590
7.4
y-y
10,300
590
7.4
v-v
4,300
400
4.8
25
4
4
L 30x3
1.37
175
x-x
14,600
680
9.1
y-y
14,600
680
9.1
v-v
6,100
510
5.9
30
3
5
L 30x4
1.79
228
x-x
18,400
870
9.0
y-y
18,400
870
9.0
v-v
7,700
620
5.8
30
4
5
L 36x3
1.66
211
x-x
25,800
990
11.1
y-y
25,800
990
11.1
v-v
10,700
760
7.1
36
3
5
L 36x4
2.16
276
x-x
32,900
1,280
10.9
y-y
32,900
1,280
10.9
v-v
13,700
930
7.0
36
4
5
L 36x5
2.65
338
x-x
39,500
1,560
10.8
y-y
39,500
1,560
10.8
v-v
16,500
1,090
7.0
36
5
5
I have diagonals (bracings) which can buckle in these "non-regular" directions too, and they do. If I could add those values then in the Karamba model I could assign specific buckling scenarios..... I can see another challenge which will be at the ModifyElement component, I will not be able to choose these buckling lengths, in these directions.
Do you think this functionality can be added within short, or should I try to find another way to model these members?
Br, Balazs
…