skip to main |
skip to sidebar
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.
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.
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
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
///////////////////////////////////////////////////////////////////////////////////////////////
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 & teaching 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