Script written by Luis Quinones
Script copyrighted by [n]igma
www.luisquinonesdesign.com
www.cargocollective.com/studioboom
Script version Tuesday, 28 June 2011 20:18:46
import math
import rhinoscriptsyntax as rs
AttractorPtsList = []
for z in range(len(AttractorPts)):
AttractorPtsList.append(AttractorPts[z])
for i in range(Gens):
for j in range(len(Curves)):
arrNewPos = []
PointCount = rs.CurvePointCount(Curves[j])
arrCrvDiv = rs.CurvePoints(Curves[j])
if arrCrvDiv:
print "BOOM"
else:
print "SHITBAG"
for k in range(PointCount):
arrCrvPts = []
if AttractorPtsList:
print AttractorPtsList
indexClosestAtt = rs.PointArrayClosestPoint(AttractorPtsList,arrCrvDiv[k])
print "Closest Index = ",indexClosestAtt
attPt = AttractorPts[indexClosestAtt]
print attPt
dist2 = rs.Distance(attPt,arrCrvDiv[k])
if dist2 < attPtThresh :
NewPosition = attPt
else:
count = 0
for L in range(len(Curves)):
if j != L :
arrCrvParam = rs.CurveClosestPoint(Curves[L],arrCrvDiv[k])
crvPt = rs.EvaluateCurve(Curves[L],arrCrvParam)
arrCrvPts.append(crvPt)
IndClosestCrv = rs.PointArrayClosestPoint(arrCrvPts,arrCrvDiv[k])
print "NextClosestIndex = ",IndClosestCrv
crvPt = arrCrvPts[IndClosestCrv]
print crvPt
dist = rs.Distance(arrCrvDiv[k],crvPt)
if dist < Attract :
vector = rs.VectorCreate(crvPt,arrCrvDiv[k])
vector = rs.VectorScale(vector,dblRatio)
NewPosition = rs.VectorAdd(vector,arrCrvDiv[k])
else:
NewPosition = arrCrvDiv[k]
arrNewPos.append(NewPosition)
newcurve = rs.AddCurve(arrNewPos,Rebuild)
#newcurve = rs.AddPolyline(arrNewPos)
rs.DeleteObject(Curves[j])
#rs.ObjectColor(newcurve,[j,j,j])
Curves[j] = newcurve
if "ghdoc" in globals():
a = ghdoc
Update