import rhinoscriptsyntax as rs import random as tan # delet 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): 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 = 20 #crv = rs.AddLine([0,0,0], [100,9,50]) #crv = rs.AddPolyline([[0,0,0], [50,0,50], [70,40,20], [100,0,0]]) crv = rs.AddCurve([[0,0,0], [50,0,50], [70,40,20], [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, 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_angel = 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_angel, [0,0,1])