import rhinoscriptsyntax as rs import random as ran 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,0,50]) crv = rs.AddCurve([[0,0,0], [50,0,20], [70,40,40], [100,0,0]],3) #rs.RebuildCurve(crv,1,10) #pts = rs.CurvePoints(crv) c_len = rs.CurveLength(crv) seg_len = c_len / p_num pts = rs.DivideCurveEquidistant(crv, seg_len, create_points=True, return_points=True) 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)[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]) # gleich lange segmente durch anzahl # rs.RebuildCurve(crv, degree=1, anzahl segmente # gleich lange segmente durch segmentlenght # rs.DivideCurveEquidistant(crv, segmentlenght)