import rhinoscriptsyntax as rs import random as ran #delete everything and start from scratch rs.DeleteObjects(rs.AllObjects()) #create a box def make_box(insertion=[0,0,0],xsize=10, ysize=10, zsize=10): #create a box corners = [[0,0,0], [xsize,0,0], [xsize,ysize,0], [0,ysize,0], [0,0,zsize], [xsize,0,zsize], [xsize,ysize,zsize], [0,ysize,zsize]] box= rs.AddBox(corners) rs.MoveObject(box, (-xsize/2,-ysize/2,0)) rs.MoveObject(box, insertion) return(box) p_num=80 #crv = rs.AddLine([0,0,0], [100,0,50]) #crv = rs.AddPolyline([[0,0,0],[50,0,50], [70,40,20], [100,0,0]]) crv = rs.AddCurve([[0,0,0],[40,0,20], [80,50,70], [0,0,40],[0,0,0]], 10) #crv1 = rs.AddCurve([[0,0,0],[-40,0,20], [-80,50,40], [-60,0,0]], 8) rs.RebuildCurve(crv, 6, p_num) c_len= rs.CurveLength(crv) seg_len = c_len/p_num print seg_len pts=rs.DivideCurveEquidistant(crv, seg_len, create_points=True, return_points=True) print c_len #pts = rs.CurvePoints(crv) for p in pts: rs.AddCircle(p, seg_len) param = rs.CurveClosestPoint(crv, p) normal = rs.CurveTangent(crv,param) t_angle= rs.Angle([0,0,0], normal)[0] box=make_box(p,xsize=seg_len, ysize=4*seg_len, zsize=seg_len/4) rs.RotateObject(box, p, t_angle, [0,0,1])