29 January 2010

Image Field04 ///////////////////////////////////////////////////////////


Investigation on the potentiality of numerical field generated by a source image. The height of one ellipse control point is linked with grayscale value of the image generating parametric variations in the starting flatten pattern.

27 January 2010

Image Field03 ///////////////////////////////////////////////////////////

A quick test from image field definition (link1, link2). Height of panels and apertures are controlled by an image in grayscale.

20 January 2010

Rhino Tessellation04c_GH curvature analisys pattern01///////////////////////////////

I've translated this rhinoscript (link1, link2) in a grasshopper version.
The definition:
.subdivides a surface into a quadrangular panels.
.plots a circle or a closed spline(similar to an ellipse) with center in the centroid of each panels.
.scale the radius dimension trough a numeric values extrapolated from the curvature analisys of the input surface.

17 January 2010

rh lattice tesselation01//////////////////////////////////////////

Just another code done some time ago on lattice tesselation. The code :
.divides a surface in U&V points defined by the user
.draws a matrix of points that follows the simple pattern of two splines
.creates circles ( number of circles are defined by the user) perpendicular to a curve
.creates a loft surface trough the circles



here the code:
Option Explicit
'Script written by Davide del Giudice
'Script copyrighted by www.madeincalifornia.blogspot.com
'Script version venerdì 28 agosto 2009 16.07.36
'Original code SUPERMANOEUVRE


MsgBox " LATTICE TESSELATION/// Script written by Davide del Giudice/// www.madeincalifornia.blogspot.com "

Call DivideSurface()
Sub DivideSurface()
'--------------------
'DEFINE INPUT
Dim strSrf:strSrf= rhino.getobject("Select surface",8,16)
If isNull(strsrf) Then Exit Sub
Dim intUint: intUint= rhino.getInteger(" U divisions", 20,4,100)
Dim intVint:intVint= rhino.GetInteger(" V divisions", 20,4,100)

Dim IntNPts: intNPts = Rhino.GetInteger("how many samples?", 10, 2, 100) 'chiedo il dimensionamento

If isNull(intUint) Then Exit Sub
If isNull(intVint) Then Exit Sub
If isNull(IntNPts) Then Exit Sub



'-----------
'SCRIPT BODY
rhino.print" script started now, enjoy!"
'-----------
'Get U values
Dim arrSrfDomU : arrSrfDomU= Rhino.SurfaceDomain(strSrf,0)
Dim uMin: uMin= arrsrfDomU (0)
Dim uMax:uMax = arrsrfDomU (1)
Dim uStep:uStep=(uMax-uMin)/intUint

'-----------------
'Get V values
Dim arrSrfDomV : arrSrfDomV= Rhino.SurfaceDomain(strSrf,1)
Dim vMin: vMin= arrsrfDomV (0)
Dim vMax:vMax = arrsrfDomV (1)
Dim vStep:vStep=(vMax-vMin)/intVint


'------------------
'crate panels
Dim i,j
Dim arrpt01,arrpt02,arrpt03,arrpt04,arrpt05,arrpt06,arrpt07,arrpt08,arrpt09,arrpt10,arrpt11,arrpt12,arrpt13,arrpt14,arrcnrpts1,arrcnrpts2,arrpoints,strline1,strline2


For i=uMin To uMax-uStep Step 6*uStep

For j= vMin To vMax-vStep Step 2*vStep

'first panel

arrpt01=rhino.EvaluateSurface(strSrf,array(i,j))
arrpt02=rhino.EvaluateSurface(strsrf,array(i+ustep,j))
arrpt03=rhino.evaluateSurface(strsrf,array(i+2*uStep,j+vstep))
arrpt04=rhino.evaluateSurface(strsrf,array(i+3*uStep,j+vstep))
arrpt09=rhino.evaluateSurface(strsrf,array(i+4*uStep,j+vstep))
arrpt10=rhino.evaluateSurface(strsrf,array(i+5*uStep,j))
arrpt11=rhino.evaluateSurface(strsrf,array(i+6*uStep,j))



'second panel

arrpt05=rhino.EvaluateSurface(strSrf,array(i,j+2*vstep))
arrpt06=rhino.EvaluateSurface(strSrf,array(i+ustep,j+2*vstep))
arrpt07=rhino.EvaluateSurface(strSrf,array(i+2*ustep,j+vstep))
arrpt08=rhino.EvaluateSurface(strSrf,array(i+3*ustep,j+vstep))
arrpt12=rhino.EvaluateSurface(strSrf,array(i+4*ustep,j+vstep))
arrpt13=rhino.EvaluateSurface(strSrf,array(i+5*ustep,j+2*vstep))
arrpt14=rhino.EvaluateSurface(strSrf,array(i+6*ustep,j+2*vstep))

'point in an array

arrcnrpts1= array(arrpt01,arrpt02,arrpt03,arrpt04,arrpt09,arrpt10,arrpt11)
arrcnrpts2= array(arrpt05,arrpt06,arrpt07,arrpt08,arrpt12,arrpt13,arrpt14)

Rhino.AddPoints (arrcnrpts1)
rhino.AddPoints(arrcnrpts2)

strline1= rhino.addcurve (arrcnrpts1)
strline2= rhino.addcurve(arrcnrpts2)

Dim arrDom: arrDom = Rhino.CurveDomain(strline1)
Dim dblparam,dblStep
ReDim arrCirc1(intNpts),arrCirc2(intNpts)
Dim k,arrplane1,dblradius,arrplane2

dblStep = (arrDom(1)-arrDom(0))/(intNPts)


For k=0 To intNPts 'Step 0.1


dblParam = arrDom(0) + k*dblStep

arrPlane1 = Rhino.CurvePerpFrame(strline1, dblParam)
arrPlane2 = Rhino.CurvePerpFrame(strline2, dblParam)

arrCirc1(k)= Rhino.AddCircle(arrPlane1, .05)
arrCirc2(k)= Rhino.AddCircle(arrPlane2, .05)
Next

Call Rhino.AddLoftSrf (arrcirc1)
Rhino.AddLoftSrf (arrcirc2)


Next 'end j loop
Next 'endi loop

rhino.HideObject strSrf

rhino.print " script end"

End Sub




07 January 2010

Rh array 01 //////////////////////////////////////////////////////////////////////////////////



Here some codes about array in rhinoscript. The code works with a simple array of points and creates spheres with growing radius. The position of the points in the 3d space is determinated by a formula. These are some exercises starting from scratch in rhinoscript code done some time ago.

MIC Sphere array1a
///////////////////////////////////////////////////////////////////////////////////////////////

Option Explicit
'Script written by davide del giudice
'Script copyrighted by www.madeincalifornia.blogspot.com
'Script version Thursday, 16 September 2009 17:43:39
'----------------------------------------------------------------------------------------------
Dim i,arrpoint1,strSphere


For i=0 To 100

arrPoint1 = Array(i/5,cos(i),sin(i))


Rhino.AddPoint arrPoint1
Rhino.AddSphere arrPoint1, i*0.01

Next
///////////////////////////////////////////////////////////////////////////////////////////////



MIC Sphere array_circle vector n-1_02
///////////////////////////////////////////////////////////////////////////////////////////////
Option Explicit
'Script written by davide del giudice
'Script copyrighted by www.madeincalifornia.blogspot.com
'Script version Thursday, 16 September 2009 17:43:39

'----------------------------------------------------------------------------------------------




Dim i,j,arrpoint1,arrPoint2,arrPoint3,strSphere,arrPlane,arrLine1,arrLine2
Dim arrCircle1,arrCircle2,arrDynamic(0),arrVector1,arrVector2,arrPlane1,arrPlane2

For i=0 To 200

arrPoint1 = Array(cos(i)*i*0.01,sin(i)*i*0.01,i*0.05)
arrPoint2=Array(cos(i+1)*i*0.01,sin(i+1)*i*0.01,(i+1)*0.05)
arrPoint3=Array((i-1)*0.05,cos(i-1)*i*0.01,sin(i-1)*i*0.01)
Rhino.AddPoint arrPoint1
'Rhino.AddSphere arrPoint1, i*0.001

arrVector1=Rhino.VectorCreate (arrPoint1, arrPoint2)
arrVector2=Rhino.VectorCreate (arrPoint1, arrPoint3)

arrPlane1 = Rhino.PlaneFromNormal (arrPoint1, arrVector1)
arrPlane2= Rhino.PlaneFromNormal (arrPoint1, arrVector2)

arrCircle1=Rhino.AddCircle (arrPlane1, 0.05)
arrCircle2=Rhino.AddCircle (arrPlane2, 0.05)

arrLine1= Rhino.AddLine (arrPoint1, arrPoint2)

' rhino.AddLoftSrf arrCircle1,arrCircle2

Next

For j=0 To ubound (arrDynamic)

'rhino.AddLoftSrf arrCircle1,arrCircle2

Next
End Sub
///////////////////////////////////////////////////////////////////////////////////////////////





MIC Sphere array_phyllotaxis2
///////////////////////////////////////////////////////////////////////////////////////////////

Option Explicit
'Script written by davide del giudice
'Script copyrighted by www.madeincalifornia.blogspot.com
'Script version Thursday, 16 September 2009 17:43:39
'----------------------------------------------------------------------------------------------

Dim i,arrpoint1,arrPoint2,strSphere

For i=0 To 500

arrPoint1 = Array(cos(i)*i,sin(i)*i,i/1000)
arrPoint2 = Array((cos(i+1)*i),(sin(i+1)*i)+1,(i+1/1000))

Rhino.AddPoint arrPoint1
Rhino.AddPoint arrPoint2
'Rhino.AddSphere arrPoint1, i*0.1

rhino.AddLine arrPoint1,arrPoint2
Next
///////////////////////////////////////////////////////////////////////////////////////////////

04 January 2010

Co-de-iT website launch 01012010



I'm very happy to announce that with Andrea Graziano and Alessio Erioli we are starting a new adventure called Co-de-iT.

Co-de-iT is a connectivity HUB for computation, design, research & teach
ing in architecture. Project development and consultancy happen here, both first person by our team members or by building communication with specific required knowledge subjects, bridging different fields to the project.

Co-de-iT is also configured as a HUB that means to operate as a catalyzer in the architectural process to trigger and engage (both conceptually and technically) levels of complexity and differentiation as an evolved answer to project instances that range from conceptual design to personalized fabrication.

Co-de-iT try to promote in Italy, but not only, events and workshops about digital tools and generative methodology into architectural and design process.
Co-de-iT website
Co-de-iT about us page
Co-de-iT (starting) code page
Co-de-iT twitter page
Co-de-iT facebook page