(n)certainties – Columbia – Fall 2008

Entries categorized as ‘Adolfo Nadal’

November 24, 2008 · Leave a Comment

82

Categories: Adolfo Nadal

Porosity_trajectory

November 21, 2008 · Leave a Comment

17233342

Categories: Adolfo Nadal

October 29, 2008 · Leave a Comment

Categories: Adolfo Nadal

Materiality: order and chaos

October 28, 2008 · Leave a Comment

Pseudo-ordered distribution in scattered spaces

Pseudo-ordered distribution in scattered spaces

Certain organization along trajectories

Certain organization along trajectories

path along trajectory
Curve_strategy: path along trajectory
highly chaotic around cores

Distribution 1: highly chaotic around cores

Categories: Adolfo Nadal

Strategy of dispersion: density-porosity

October 28, 2008 · Leave a Comment

Quarrels as high geometrical places

Quarrels as high geometrical places

Quarrels become places of high density

Quarrels become places of high density

Density as consequence of proximity to material source

Density as consequence of proximity to material source

Categories: Adolfo Nadal

Tracing trajectories (trajectory update)

October 28, 2008 · Leave a Comment

agglomeration

Density and trajectories: agglomeration

Categories: Adolfo Nadal

Trajectories

October 23, 2008 · Leave a Comment

It seems that y clay machine requires certain boundary conditions in order to operate properly. Therefore I have briefly continued my exploration of how to design those, by setting up a system in which only 3 factors are implied: machine, clay sources (desirable spaces) and urban sprawls (non-desirable spaces). Here the first results.

Several machine trajectory - studies

Several machine trajectory - studies

Categories: Adolfo Nadal

Landscape

October 23, 2008 · Leave a Comment

High chances this is not happening

High chances this is not happening

Categories: Adolfo Nadal

Vision

October 21, 2008 · Leave a Comment

What it could be... (but will quite likely not be)

What it could be... (but will quite likely not be)What will likely not be

What will likely not be

What will likely not beOther

Other "what it will not be..."

Other

Categories: Adolfo Nadal

Landscapes

October 21, 2008 · Leave a Comment

meander1

meander1

Several studies of forms created by the meanders... the curves touch every second editpoint to create the relationship between machine and its actual paths

several studies: Several studies of forms created by the meanders... the curves touch every second editpoint to create the relationship between machine and its actual paths

New variation

New variationHow to populate space with machines?

Possible machine trajectories

Possible machine trajectories

Initial study of offset

Initial study of offset

meander3

meander3

meander2

meander2

Categories: Adolfo Nadal

Diggin’ on hell’s door

October 8, 2008 · Leave a Comment

Option Explicit
‘Script written by Ado

Call Main()
Sub Main()
 
 Dim inLayer
 inLayer = Rhino.GetString(“Introduce new Layers?”,”yes”,array(“yes”,”no”))
 If inLayer = “yes” Then
  Call AddLayers
 End If
 
 Dim arrPtSeed : arrPtSeed = Rhino.GetObject(“Base Point”,1)
 arrPtSeed = Rhino.PointCoordinates(arrPtSeed)
 
 Dim n : n = Rhino.GetInteger(“nr of points”, 10)
 
 ” SPEED:
 ’Dim bbox : bbox = Rhino.BoundingBox(strSrf)
 Dim min : min = -500 ‘Rhino.Distance(bbox(0),bbox(6))/8
 Dim max : max =  200 ‘Rhino.Distance(bbox(0),bbox(6))/4
 Dim Density : Density = 2
 
 Dim i, j, k : k = 1 : i = 0
 Dim arrPt, arrLines()
 Dim arrPtsCollect()
 
 ReDim Preserve arrPtsCollect(0)
 arrPtsCollect(0) = arrPtSeed
 
 Do Until k = n+1
  arrPt = array(arrPtSeed(0)+arbitraryValue(min, max),arrPtSeed(1) + arbitraryValue(min, max),arrPtSeed(2)- abs(1/2*arbitraryValue(min, max)))
  
  Dim arrPtNeighBor : arrPtneighbor = shortestPt(arrPtsCollect, arrPt)
  
  If arrPtneighbor(2) < min/2 Then
   arrPtneighbor(2)=0
  End If
  
  ReDim Preserve arrLines(k-1)
  arrLines(k-1) = Rhino.AddLine(arrPt, arrPtNeighBor)
 
  ReDim Preserve arrPtsCollect(k)
  arrPtsCollect(k) = arrPt
  k = k + 1
 Loop
 
 Dim arrPoly : arrPoly = Rhino.JoinCurves(arrLines,True)
 Rhino.Print “From ” & Ubound(arrLines)+1 & ” segments ” & Ubound(arrPoly)+1 & ” polylines were extracted. Segments erased”
 
 For j=0 To Ubound(arrPoly)-1

  Dim StrtPt, EndPt
  StrtPt = Rhino.CurveStartPoint(arrPoly(j))
  EndPt = Rhino.CurveEndPoint(arrPoly(j))
  
  Dim strtvl, endvl, endvllength
  ’sometimes complains it does not find a string!!!
  If StrtPt(2)<>0 Then
   strtvl = Rhino.AddLine (StrtPt,array(StrtPt(0),StrtPt(1),0))
  End If
  
  If EndPt(2)<>0 Then
   endvl = Rhino.AddLine (EndPt, array(EndPt(0),EndPt(1),0))
   endvllength= Rhino.CurveLength(endvl)
   Rhino.Print endvl
  End If
  
  If Not IsNull(strtvl) Then
   ReDim arrPolyfinal(j)
   ’—————————————————————
   ’arrPolyfinal is a temp array to store the result, since the method joinCurves returns an array… this way we can avoid having nested arrays.
   arrPolyfinal(j) = Rhino.JoinCurves(array(arrPoly(j),strtvl),True)
   arrPoly(j) = arrPolyfinal(j)(0)
   Rhino.Print “so far, index j is ” & j
   If endvllength > Rhino.UnitRelativeTolerance Then
    If Not IsNull(endvl) And IsCurve(arrPoly(j)) Or IsPolyCurve(arrPoly(j)) Or IsPolyline(arrPoly(j)) Then
     ReDim arrPolyfinal(j)
     arrPolyfinal(j) = Rhino.JoinCurves(array(arrPoly(j),endvl) ,True)
     arrPoly(j) = arrPolyfinal(j)(0)
    End If
   End If
  Else
   If Not IsNull(endvl) Then
    arrPolyfinal(j) = Rhino.JoinCurves(array(arrPoly(j),endvl) ,True)
    arrPoly(j) = arrPolyfinal(j)(0)
   End If
  End If
  
  Dim Length
  Length = Rhino.CurveLength(arrPoly(j))
  If Length < max/density Then
   Rhino.DeleteObject(arrPoly(j))
   j=j-1
  End If
  
  Dim hl
  ’Add a (horizontal) line between end and start points
  StrtPt = Rhino.CurveStartPoint(arrPoly(j))
  EndPt = Rhino.CurveEndPoint(arrPoly(j))
  hl = Rhino.AddInterpCurve (array(StrtPt,EndPt))
  
  ’Add annotation text
  Dim txt1: txt1 = Rhino.AddText (“Curve: ” & j & “, (StrtPoint).” & vbCrLf & “Length: ” & Length,StrtPt,CInt(Length/75),”Verdana”)
  Dim txt2: txt2 = Rhino.AddText (“Curve: ” & j & “, (StrtPoint).” & vbCrLf & “Length: ” & Length,EndPt,CInt(Length/75),”Verdana”)
  
  ’Change layers  
  Rhino.ObjectLayer hl,”annotations”
 Next
 Rhino.ObjectLayer arrPoly,”Polylines”
End Sub

Function shortestPt(arrPtsCollection, arrPtTest)
 Dim i
 Dim dblDistMin : dblDistMin = 100000000
 For i = 0 To UBound(arrPtsCollection)
  Dim dblDist : dblDist = rhino.Distance(arrPtTest, arrPtsCollection(i))
  If dbldist <> 0 Then
   If dblDist < dblDistMin Then
    dblDistMin = dblDist
    shortestPt = arrPtsCollection(i)
   End If
  End If
 Next
End Function

Function arbitraryValue(min, max)
 Randomize
 arbitraryValue = Int((max – min + 1) * Rnd + min)
End Function

Function AddLayers
 If Not IsLayer(“Script”) Then
  Rhino.AddLayer “Script”,RGB(0, 0, 0),True,False
 End If
 
 If Not IsLayer(“Polylines”) Then
  Rhino.AddLayer “Polylines”,RGB(128, 0, 128),True,False,”Script”
  Rhino.LayerLinetype “Polylines”, “Continuous”
 End If
 
 If Not IsLayer(“Points”) Then
  Rhino.AddLayer “Points”,RGB(0, 0, 0),True,False,”Script”
  Rhino.LayerLinetype “Polylines”, “Continuous”
 End If
 
 If Not IsLayer(“Annotations”) Then
  Rhino.AddLayer “Annotations”,RGB(128, 128, 128),True,False,”Script”
  Rhino.LayerLinetype “Polylines”, “Dots”
 End If
 
 If Not IsLayer(“Helix”) Then
  Rhino.AddLayer “Helix”,RGB(128, 128, 128),True,False,”Script”
  Rhino.LayerLinetype “Polylines”, “Dashed”
 End If
End Function

<br>

<hr>

Digging and back overground!

Digging and back overground!

Categories: Adolfo Nadal

Diggin’ on hell’s door

October 8, 2008 · Leave a Comment

Option Explicit
‘Script written by Ado

Call Main()
Sub Main()

‘Dim strSrf : strSrf = Rhino.GetObject(“closed surface”,16)

Dim arrPtSeed : arrPtSeed = Rhino.GetObject(“Base Point”,1)
arrPtSeed = Rhino.PointCoordinates(arrPtSeed)

Dim n : n = 1000 ‘Rhino.GetInteger(“nr of points”, 10)

” SPEED:
‘Dim bbox : bbox = Rhino.BoundingBox(strSrf)
Dim min : min = -500 ‘Rhino.Distance(bbox(0),bbox(6))/8
Dim max : max = 500′ Rhino.Distance(bbox(0),bbox(6))/4

Dim i, k : k = 1 : i = 0
Dim arrPt
Dim arrPtsCollect()

ReDim Preserve arrPtsCollect(0)
arrPtsCollect(0) = arrPtSeed

Do Until k = n+1

arrPt = array(arrPtSeed(0)+arbitraryValue(min, max),_
arrPtSeed(1) + arbitraryValue(min, max),_
arrPtSeed(2)- abs(arbitraryValue(min, max)))

Dim arrPtNeighBor : arrPtneighbor = shortestPt(arrPtsCollect, arrPt)
Call rhino.AddLine(arrPt, arrPtNeighBor)

ReDim Preserve arrPtsCollect(k)
arrPtsCollect(k) = arrPt
k = k + 1

Loop

Dim strCrv : strCrv = rhino.AddInterpCurve(arrPtsCollect)
Call rhino.ObjectColor(strcrv, vbred)

End Sub

Function shortestPt(arrPtsCollection, arrPtTest)
Dim i
Dim dblDistMin : dblDistMin = 100000000
For i = 0 To UBound(arrPtsCollection)
Dim dblDist : dblDist = rhino.Distance(arrPtTest, arrPtsCollection(i))
If dbldist 0 Then
If dblDist < dblDistMin Then
dblDistMin = dblDist
shortestPt = arrPtsCollection(i)
End If
End If
Next
End Function


One more of the series… this one is almost working… i guess what i wanted is to have different possibilities to explore boundary populations, starting from surfaces to go to closed lines and finally redefine those conditions in the polysurfaces.

Digging algorithm

Digging algorithm

Categories: Adolfo Nadal

Bound to the ground (2)

October 8, 2008 · Leave a Comment

Option Explicit
‘Script written by
‘Script copyrighted by
‘Script version domingo, 05 de octubre de 2008 20:28:50

Call Main()
Sub Main()
Dim strCrv, bbox, strBBCrv
strCrv = Rhino.GetObject(“Curve”, 4)
If isNull (strCrv) Then Exit Sub
bbox = Rhino.BoundingBox(strCrv)
strBBCrv = Rhino.AddPolyline (array(bbox(0),bbox(1),bbox(2),bbox(3),bbox(0)))

Dim radius, centBBPt, centPtCrv
centBBPt = Rhino.CurveAreaCentroid(strBBCrv)(0)
centPtCrv = Rhino.CurveAreaCentroid(strCrv)(0)
radius = Rhino.Distance(centBBPt,bbox(0))
Rhino.Print “radius” & radius

Dim arrItems, arrBoolean, blnVal
arrItems = array(“Stepmode”,”Steps”,”Width”)
arrBoolean = Rhino.GetBoolean(“Select mode of population”,arrItems,array(True))

Dim steps, width, n
For Each blnVal In arrBoolean
If blnVal = True Then
steps = Rhino.GetInteger(“Number of steps for machine”,10)
n = steps
Else
width = Rhino.GetReal(“Width of the machine”)
n = CInt(radius/width)
End If
Rhino.Print n
Next

Dim Rad, crvDomain, t, m, i, p, crvCurvature
Dim crvPt()
‘Rhino.AddLine centBBPt,array((bbox(0)(0)+bbox(1)(0))/2,(bbox(0)(1)+bbox(1)(1))/2 ,(bbox(0)(2)+bbox(1)(2))/2 )
Rad = Rhino.AddLine(centBBPt,bbox(0))
Dim arrPlane, circ(), arrPts(),arrPtsCoord(), arrPtsCrv(), a, arrCCX()
arrPlane = Rhino.PlaneFromFrame(centBBPt,array(1,0,0),array(0,1,0))

m=-1
crvDomain = Rhino.CurveDomain(Rad)
For t = crvDomain(0) To crvDomain(1)+1e-9 Step (crvDomain(1)-crvDomain(0))/n
m=m+1
crvCurvature = Rhino.CurveCurvature(Rad, t)
If isNull (crvCurvature) Then
ReDim Preserve crvPt(m)
crvPt(m) = Rhino.EvaluateCurve (Rad,t)

‘——————————————————————
‘IS THERE ANY WAY OF NOT REPEATING ALL THESE???
radius = CDbl(Rhino.Distance(centBBPt,crvPt(m)))
If radius < 1 Then
radius = 1
End If

Rhino.Print “radius :” & radius

p = -1
For a=0 To 2*PI +1e-9 Step PI/8
p = p+1
ReDim Preserve arrPts(p)
arrPts(p) = Rhino.AddPoint(array(radius*sin(a)+centPtCrv(0),radius*cos(a)+centPtCrv(1),centPtCrv(2)))
ReDim Preserve arrPtsCoord(p)
arrPtsCoord(p) = Rhino.PointCoordinates(arrPts(p))
Next

Rhino.DeleteObjects arrPts
Rhino.AddPoint crvPt(m)

ReDim Preserve arrPtsCrv(m)
arrPtsCrv(m) = arrPtsCoord
ReDim Preserve circ(m)
circ(m) = Rhino.AddInterpCurve (arrPtsCrv(m))
Rhino.ObjectColor circ(m),ParamColor(t)

ReDim Preserve arrCCX(m)
arrCCX(m) = Rhino.CurveCurveIntersection(circ(m),strCrv)
If isArray(arrCCX(m)) Then
Call Rhino.Print (“curves intersect”)
For i = 0 To UBound(arrCCX(m))
Dim strText
If arrCCX(m)(i,0) = 1 Then
Call Rhino.AddPoint (arrCCX(m)(i,1))
strtext = Rhino.AddText (“Point: ” & m+i & “Crv: ” & m & ” Intr: ” & i, arrCCX(m)(i,1),.5)
Rhino.ObjectColor strtext,ParamColor(t)
Else
Call Rhino.Print (“no intersections”)
End If
Next
End If
‘——————————————————————
Else
ReDim Preserve crvPt(m)
crvPt(m) = crvCurvature(0)

‘——————————————————————
‘IS THERE ANY WAY OF NOT REPEATING ALL THESE???
ReDim Preserve circ(m)
circ(m) = Rhino.AddCircle(arrPlane,Rhino.Distance(centBBPt,crvPt(m)))

Rhino.AddPoint crvPt(m)
ReDim Preserve arrCCX(m)
arrCCX (m) = Rhino.CurveCurveIntersection(circ(m),strCrv)

If isArray(arrCSX(m)) Then
Call Rhino.Print (“curves intersect: ” & “Circle: ” & m)
For i = 0 To UBound(arrCSX(m))
If arrCSX(i,0)(m) = 1 Then
Call Rhino.AddPoint (arrCSX(i,1)(m))
Else
Call Rhino.Print (“no intersections”)
End If
Next
End If
‘——————————————————————
End If

Next

End Sub

Function ParamColor(t)
Dim RedComponent : RedComponent = 255 * Abs(t)
If RedComponent <0 Then RedComponent=0
If RedComponent <255 Then RedComponent=255
ParamColor = RedComponent + 0*256 + (255-RedComponent)*65536
Rhino.Print ParamColor
End Function

Function ObtenerRGB(ByVal Color,ByVal Rojo,ByVal Verde,ByVal Azul)
Azul = (Color And 16711680) / 65536
Verde = (Color And 65280) / 256
Rojo = Color And 255
End Function


Categories: Adolfo Nadal

Curve_growth (not working! -yet)

October 8, 2008 · Leave a Comment

Option Explicit
‘Script written by Ado
‘Script copyrighted by archi.o.logies
‘Script version Monday, September 29, 2008 2:37:08 PM

‘WHAT THE HELL IS GOING ON WITH THIS VARIABLE DECLARATION?
‘Dim arrPtPoly()
Call Main()
Sub Main()
Dim inPt,inPtCoord, newPt
Dim arrPt()
Dim boud, boudbox, speed, radius
Dim n, j
Dim arrPtCoord()
Dim arrLines()
Dim arrPtPoly()

inPt = Rhino.GetObject(“Please pick initial point”,1,True)
If IsNull (inPt) Then Exit Sub
inPtCoord = Rhino.PointCoordinates(inPt)
n = Rhino.GetInteger(“Nr of iterations”,5,5)
boud = Rhino.GetObject(“please select boundary object”)
boudbox = Rhino.BoundingBox(boud)
speed = Rhino.GetInteger(“Speed”,5,5,10)
radius = Rhino.Distance(boudbox(0),boudbox(6))/speed

For j = 0 To n-1
Call RndPt (inPt, radius,j, n, boud, arrPtPoly)
Next
Rhino.Print(“i am so far2″)
‘——————————————————
‘QUESTION FOR MARK: HOW NOT TO HAVE AN ERROR HERE?????????
Rhino.AddPolyline(arrPtPoly)
‘——————————————————
End Sub

Function RndPt (inPt,radius,i,n, boud, arrPtPoly)

Dim inPtCoord, k
Dim alpha0, alpha1, alpha2, min
Dim Line
Dim intobjectType, strLayername

min = -radius

inPtCoord = Rhino.PointCoordinates(inPt)

alpha0 = arbitraryValue(min, radius)
alpha1 = arbitraryValue(min, radius)
alpha2 = arbitraryValue(min, radius)

‘Rhino.AddPoint array(0,0,inPtCoord(0))
ReDim Preserve arrPt(i)
arrPt(i) = Rhino.AddPoint (array(inPtCoord(0)+alpha0,inPtCoord(1)+alpha1,inPtCoord(2)))

ReDim Preserve arrPtPoly(i)
arrPtPoly(i) = Rhino.PointCoordinates(arrPt(i))
Rhino.Print Pt2Str(arrPtPoly(i))

If i>0 Then
k=i-1
‘——————————————————
‘MARK: HERE IT DOES NOT MAKE LINE BETWEEN 1ST AND 2ND POINTS
ReDim Preserve arrLines(k)
arrLines(k) = Rhino.AddLine (arrPtPoly(i), arrPtPoly(i-1))
‘——————————————————

‘USE CASES to call funtions according to objecttype(boud)
intObjectType = Rhino.ObjectType(boud)

Select Case intobjectType
Case 1, 2
strLayername = “Points”
inPt = arrPt(i)
Case 4
strLayername = “Curves”
inPt = arrPt(i)
Case 8
strLayername = “Surfaces”
inPt = arrPt(i)
Case 16
Call CSX (arrLines(k),boud, i, inPt, arrPt(i))
’strLayername = “PolySurfaces”
Case 32
strLayername = “Meshes”
inPt = arrPt(i)
Case Else
strLayername = “Not suported object type, please enter (poly)surface/s”
End Select

If i = (n-1) Then
Rhino.Print(“i am so far 1…”)
Rhino.Print(“n is: ” & n & ” ||| i is :” & i)
‘Poly = Rhino.AddInterpCurve (arrPt)
End If

End If
‘inPt = arrPt(i)
End Function

Function arbitraryValue(min, max)
Randomize
arbitraryValue = Int((max – min + 1) * Rnd + min)
End Function

Function CSX (arrLines,boud,i,inPt, Pt)
Dim arrSrf
Dim arrCSX()
Dim l, m
Dim newPt

arrSrf = Rhino.ExplodePolysurfaces(boud,True)
If IsArray (arrSrf) Then
‘——————————————————
‘MARK: WHY DOES IT ONLY DO IT WITH THE FIRST SURFACE…????
For l=0 To Ubound(arrSrf)
ReDim Preserve arrCSX(l)
arrCSX(l) = Rhino.CurveSurfaceIntersection(arrLines, arrSrf(l))

If Not IsArray(arrCSX(l)) Then
Rhino.Print “Curve and surface ” & l & ” do not intersect.”
boud = Rhino.JoinSurfaces(arrSrf)
Rhino.DeleteObjects(arrsrf)
inPt = Pt
Rhino.AddText “Point number ” & i & “.” & vbCrLf & “ID: ” & inPt & “.” & vbCrLf & “Coordinates: ” & Pt2Str(Rhino.PointCoordinates(Pt)),Rhino.PointCoordinates(Pt),0.5,”arial”
Exit Function

Else
‘if the object intersects with the surface, then tell and do new point on surface instead of the calculated one
For m = 0 To UBound(arrCSX(l))
If arrCSX(l)(m,0) = 1 Then
Rhino.Print “Point”
Rhino.Print “Intersection point on curve: ” & Rhino.Pt2Str(arrCSX(l)(m,1))
Rhino.Print “Intersection point on surface: ” & Rhino.Pt2Str(arrCSX(l)(m,3))
Rhino.Print “Curve parameter: ” & CStr(arrCSX(l)(m,5))
Rhino.Print “Surface parameter: ” & CStr(arrCSX(l)(m,7)) & “,” & CStr(arrCSX(l)(m,8))
‘here we assign the new point to the variable for the line to be further made
newPt = Rhino.AddPoint (arrCSX(l)(m,1))
Else
Rhino.Print “Overlap”
Rhino.Print “Intersection start point on curve: ” & Rhino.Pt2Str(arrCSX(l)(m,1))
Rhino.Print “Intersection end point on curve: ” & Rhino.Pt2Str(arrCSX(l)(m,2))
Rhino.Print “Intersection start point on surface: ” & Rhino.Pt2Str(arrCSX(l)(m,3))
Rhino.Print “Intersection end point on surface: ” & Rhino.Pt2Str(arrCSX(l)(m,4))
Rhino.Print “Curve parameter range: ” & CStr(arrCSX(l)(i,5)) & ” to ” & CStr(arrCSX(l)(m,6))
Rhino.Print “Surface parameter range: ” & CStr(arrCSX(l)(i,7)) & “,” & CStr(arrCSX(l)(m,8)) & ” to ” & CStr(arrCSX(l)(m,9)) & “,” & CStr(arrCSX(l)(m,10))
End If
Pt = newPt
Next
End If
Next
End If
boud = Rhino.JoinSurfaces(arrSrf,True)
Rhino.DeleteObjects(arrsrf)
End Function


Curve_growth_not_working

Curve_growth_not_working

Categories: Adolfo Nadal

Stay in the box (in process)

October 8, 2008 · Leave a Comment

Call Main()
Sub Main()

Dim strSrf : strSrf = Rhino.GetObject(“closed surface”,16)

Dim arrPtSeed : arrPtSeed = Rhino.GetObject(“Base Point”,1)
arrPtSeed = Rhino.PointCoordinates(arrPtSeed)

Dim n : n = 200 ‘Rhino.GetInteger(“nr of points”, 10)

” SPEED:
Dim bbox : bbox = Rhino.BoundingBox(strSrf)
Dim min : min = -50 ‘Rhino.Distance(bbox(0),bbox(6))/8
Dim max : max = 50′ Rhino.Distance(bbox(0),bbox(6))/4

Dim i, k : k = 1 : i = 0
Dim arrPt
Dim arrPtsCollect()

ReDim Preserve arrPtsCollect(0)
arrPtsCollect(0) = arrPtSeed

‘For i=0 To n-1
Do Until k = n+1

arrPt = array(arrPtSeed(0)+arbitraryValue(min, max),_
arrPtSeed(1) + arbitraryValue(min, max),_
arrPtSeed(2)+ arbitraryValue(min, max))

If Rhino.IsPointInSurface (strSrf, arrPt) then
ReDim Preserve arrPtsCollect(k)
arrPtsCollect(k) = arrPt
Call rhino.AddLine(arrPtsCollect(k-1), arrPtsCollect(k))
k = k + 1
i = 0
Else
i = i + 1
End If

If i = 100 Then Exit Sub

Loop
‘Next
Call rhino.AddPolyline(arrPtsCollect)

End Sub

Function arbitraryValue(min, max)
Randomize
arbitraryValue = Int((max – min + 1) * Rnd + min)
End Function

Stay_in_box

Stay_in_box

Categories: Adolfo Nadal

Bound to the ground

October 8, 2008 · Leave a Comment

This is the original v.0.1 script. It will eventually crash if the original curve is very intricate (the curves created by the script will become shorter than the tolerance returning a “string required” error…

Anyway, here is the code:

Option Explicit

‘Script written by Ado

Call Main()
Sub Main()
Dim arrStartPt()
ReDim Preserve arrStartPt(0)
arrStartPt(0) = Rhino.GetPoint (“select start point”)
Dim strCrv : strCrv = Rhino.GetObject (“select boundary curve”, 4)
Dim i, j, l, arrNewPt, strTempLn, arrCCX, arrNewTempPt, strNewLine, dblCrvLength
Dim dblAngle : dblAngle = 10
Dim k : k = 10
For j = 1 To 100
ReDim Preserve arrStartPt(j)
arrNewPt = Rhino.Polar (arrStartPt(j-1), k, 10000)
strTempLn = Rhino.addLine (arrStartPt(j-1),arrNewPt)
arrCCX = Rhino.CurveCurveIntersection (strTempLn, strCrv)
If arrCCX(i,0) = 1 Then
arrNewTempPt = arrCCX(0,1)
End If
Call Rhino.DeleteObject (strTempLn)
strNewLine = Rhino.AddLine (arrStartPt(j-1),arrNewTempPt)
dblCrvLength = Rhino.CurveLength (strNewLine)
k = k + (134 – dblCrvLength)
strNewLine = Rhino.ScaleObject (strNewLine,arrStartPt(j-1),array(0.9,0.9,0.9))
arrStartPt(j) = rhino.CurveEndPoint (strNewLine)
Next
Dim arrNewStartPt()
For l = 0 To UBound(arrStartPt)
ReDim Preserve arrNewStartPt(l)
arrNewStartPt(l) = array(arrStartPt(l)(0),arrStartPt(l)(1),arrStartPt(l)(2)+(l*10))
Next
Call Rhino.AddCurve (arrNewStartPt)
End Sub


Bound to the ground 1


Categories: Adolfo Nadal

Research: clay

September 30, 2008 · Leave a Comment

Research1

Research1Paths

Categories: Adolfo Nadal