##############################
import rhinoscriptsyntax as rs
import random, time, itertools
import sys
sys.path.append("P://WWW/lorax234/dm2/import/")          ### add (your !) path to rhino's default/search path
import dm2_lib as dm2
###



#############

dm2.newEmptyLayer("PROJ::track", [0,0,200])

allCoords = []
for crv in rs.ObjectsByLayer("Curves"):
    coords = rs.CurveEditPoints( crv )
    allCoords.extend(coords)
rs.AddCurve( allCoords, 1)
print len(allCoords)
convCoords = dm2.pntConvHull(allCoords)
rs.AddCurve( convCoords, 1 )

trackCoords = []
for cor in convCoords:
    zVal = random.uniform(20, 100)
    corX = [cor[0], cor[1], zVal]
    trackCoords.append( corX )

trackCoords[0][2] = 0
trackCoords[-1][2] = 0.0001
trc = rs.AddCurve( trackCoords, 2 )

coords = rs.DivideCurve(trc, 101, 0)
rad = 10.5
allCoords = []
for cor in coords:
    param = rs.CurveClosestPoint(trc, cor)
    plnX = dm2.plnCurvePerp(trc, param)
    circ = rs.AddCircle( plnX, rad )
    circCoords = rs.DivideCurve( circ,7, 0)
    #rs.DeleteObject( circ)
    allCoords.append(circCoords)
    

dm2.textDots( allCoords[20] )

i = 0

myPoints = [0, 5, 3]

for i in myPoints:
    coords = []
    for corList in allCoords:
        cor = corList[i]
        coords.append(cor)
    crv = rs.AddCurve( coords, 2)
    rs.AddPipe( crv, [0,1], [1,1] )

anzahl = len(allCoords)
for i in range(1, anzahl):
    corList = allCoords[i]
    crv = rs.AddCurve( [corList[0], corList[5], corList[3]], 1) 
    rs.AddPipe( crv, [0,1], [0.7, 0.7] )
    p0 = allCoords[i-1][0]
    p1 = allCoords[i-0][5]
    crv = rs.AddLine( p0, p1 )
    rs.AddPipe( crv, [0,1], [0.3, 0.3] )
    p0 = allCoords[i-1][5]
    p1 = allCoords[i-0][3]
    crv = rs.AddLine( p0, p1 )
    rs.AddPipe( crv, [0,1], [0.3, 0.3] )
    
#rs.SelectObjects( crvIDs  )