A playground for University of Bologna Students and a 6-days seminar about digital tools.

Digital generative tools are a very important part of architectural education. Andrew Kudless during his conference at SimAE was telling about chinese traditional woodcraftsmen: they spend their first two years of apprentice in making their own tools. Today, we have a large pool of digital ready made tools, built to respond to more or less specific problems or tasks, while keeping a level of flexibility and personalization. The majority of these tools have hidden capabilities, which can only be accessed bypassing the conventional interface and getting close to the machine logic of programming or building parametric components which generate shapes. Thus, seriality, differentiation, complexity can be implemented in architectural projects through code, in order to exploit the power of algorithmic based complex systems which are the basis of biological systems.

But, before going through such complexity, we must start with simple tasks and simple rules. Before playing seriously we need practice. This is the playground where a bunch of students will start to practice, a pool where they will share their results and questions. Maybe the stuff here that will be posted will seem obvious or naive to the navigated code-monkey, but, as I mentioned before, we all start from the basics and this is intended as a place to start. However, any comment and contribution is appreciated.

Playground is open, let's play! _ Alessio



This is the first attempt to recreate the phenomenon of Thigmotropism. This system of growth is genereted by the physical conctact between a plant organ and a solid object. A directional response caused by a differential growht. I want to improve this model with a larger adherence to the real growth process, for example recreate the influence of the vegetal hormone auxine that causes this behaviour operating locally. 
I link also a video releted to this process.                             

Option Explicit
'Giacomo Damiani
'Script version domenica 8 marzo 2009 18.52.06

Call Main()
Sub Main()

Dim i, arrcirc, dblparam, dblradius,arrplane
'scelgo una curva intorno alla quale crescere
Dim strCurve: strCurve = Rhino.GetObject("select curve", 4)
If isNull (strCurve) Then Exit Sub
Dim IntNPts: intNPts = Rhino.GetInteger("how many samples?", 100, 50, 500) 'chiedo il dimensionamento
If isNull (intNpts) Then Exit Sub
Call Rhino.EnableRedraw(False)
Dim arrDom: arrDom = Rhino.CurveDomain(strCurve)
ReDim arrCirc(intNpts-1),arrpoints(intNpts-1)
Dim dblstep: dblStep = (arrDom(1)-arrDom(0))/intNPts
Dim arrpt,strpt,arrpt2,arrpte,strpt2, dblradius2, strcurve1,strsrf
ReDim arrpt2(intNpts-1)
ReDim arrpte(intNpts-1)
ReDim arrpt(intNpts-1)
For i=0 To intNPts-1
dblParam = arrDom(0) + i*dblStep
arrPlane = Rhino.CurvePerpFrame(strCurve, dblParam)
arrPlane = Rhino.CurvePerpFrame(strCurve, dblParam)

dblRadius = 0.5
arrCirc(i) = Rhino.AddCircle(arrPlane, dblRadius)
arrpt(i) = Rhino.EvaluateCurve(strcurve,dblparam)
strpt = Rhino.AddPoint(arrpt(i))
arrpte(i) = Rhino.EvaluateCurve(arrcirc(i),dblparam*50)
arrpt2(i) = Rhino.MoveObject(strpt,arrpt(i),arrpte(i))
'sposto i punti sul cerchio
Call Rhino.Addloftsrf(arrcirc)
Call Rhino.ObjectColor(arrCirc,RGB(255,0,0))
strcurve1 = Rhino.AddInterpCurve(arrpte)
Dim  dblparam2, arrplane2
ReDim arrcirc2(intNpts-1)
Dim arrDom2: arrDom2 = Rhino.CurveDomain(strCurve1)
ReDim arrCirc2(intNpts-1)
Dim dblstep2: dblStep2 = (arrDom2(1)-arrDom2(0))/intNPts
'un secondo ciclo per la seconda serie di cerchi nei punti spostati
For i=0 To intNpts-1
dblParam2 = arrDom2(0) + i*dblStep2
arrPlane2 = Rhino.CurvePerpFrame(strCurve1, dblParam2)

dblRadius2 = 2/(i+3)
arrCirc2(i) = Rhino.AddCircle(arrPlane2, dblRadius2)
Call Rhino.AddLoftSrf(arrCirc2)
Call Rhino.ObjectColor(arrCirc2,RGB(0,0,255))

Call Rhino.EnableRedraw(True)
End Sub

No comments:

Post a Comment