the design of this series of vases is based upon the controlled randomness of radial dimensions inserted into the logistics of the rhinoscript. in theory, each vase will be unique when compared to its neighbor. the material make up of the series may be easily 3d printed, as each form is a closed polysurface. yet, cnc processes of manufacturing such as molding, makes the series available for a variety of material possibilities.

Option Explicit

‘Script modified by heath west

‘Script written by mark.bearak

‘Script copyrighted by dtls.Architecture

‘Script version Tuesday, October 28, 2008 1:48:31 PM

Call Main()

Sub Main()

Dim arrPlane, i, j, strCrv(), strInnerCrv(), intRadius, dblTwist, arrDomain, strSrf1, strSrf2, arrLftSrf1, arrLftSrf2, arrLftSrf3

For j = 0 To 5

For i = 0 To 10

ReDim Preserve strCrv(i)

ReDim Preserve strInnerCrv(i)

intRadius = RandomNumber(2,10)

arrPlane = Rhino.PlaneFromPoints (array(0,j*25,i*7), array(1,j*25,i*7), array(0,j*25+1,i*7))

strCrv(i) = Rhino.AddCircle (arrPlane, intRadius)

strInnerCrv(i) = Rhino.AddCircle (arrPlane, intRadius-1)

arrDomain = Rhino.CurveDomain(strCrv(i))

dblTwist = arrDomain(0) + (arrDomain(1)/10)*i

Rhino.CurveSeam strCrv(i), dblTwist

If i = 0 Then

Call rhino.MoveObject (strInnerCrv(i),array(0,0,0),array(0,0,1))

End If

If i = 0 Then

strSrf1 = Rhino.AddPlanarSrf (strCrv)

strSrf2 = Rhino.AddPlanarSrf (strInnerCrv)

End If

If i = 10 Then

arrLftSrf1 = Rhino.AddLoftSrf (array(strCrv(i),strInnerCrv(i)))

End If

Next

arrLftSrf2 = Rhino.AddLoftSrf (strCrv,,,1)

arrLftSrf3 = Rhino.AddLoftSrf (strInnerCrv,,,1)

Call Rhino.JoinSurfaces (array(arrLftSrf1(0),arrLftSrf2(0),arrLftSrf3(0),strsrf1(0),strsrf2(0)),True)

Call Rhino.deleteobjects (strCrv)

Call Rhino.DeleteObjects (strInnerCrv)

Next

End Sub

Function RandomNumber(nMin, nMax)

RandomNumber = Null

If Not IsNumeric(nMin) Then Exit Function

If Not IsNumeric(nMax) Then Exit Function

If nMin >= nMax Then Exit Function

Randomize

RandomNumber = Int((nMax – nMin + 1) * Rnd + nMin)

End Function