import rhinoscriptsyntax as rs import random as ran allobjs = rs.AllObjects() rs.DeleteObjects(allobjs) #make box def make_box(insertion = [0,0,0],xsize = 10,ysize = 10,zsize = 10): 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)] mybox = rs.AddBox(corners) rs.MoveObject(mybox,(-xsize/2,-ysize/2,0)) rs.MoveObject(mybox, insertion) return(mybox) p_num = 20 #crv = rs.AddLine([0,0,0],[100,0,50]) #crv = rs.AddPolyline([[0,0,0],[50,0,50],[70,40,10],[100,0,0]]) crv = rs.AddCurve([[0,0,0],[50,0,50],[70,40,10],[100,0,0]],3) #rs.RebuildCurve(crv, 3, p_num) c_len = rs.CurveLength(crv) seg_len = c_len/ p_num print seg_len pts = rs.DivideCurveEquidistant(crv, seg_len,True, True) #pts = rs.CurvePoints(crv) print c_len 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) box = make_box(p,xsize = seg_len,ysize = 4*seg_len,zsize = seg_len/4) rs.RotateObject(box, p, t_angle[0],[0,0,1],False)