import rhinoscriptsyntax as rs import random as ran allobjs = rs.AllObjects() rs.DeleteObjects(allobjs) rs.EnableRedraw(False) bsize = 15 # side length of box dist = 1 # distance between boxes offs = bsize + dist # offset of boxes num = 15 # number of boxes in one row corners = [(0,0,0), (bsize,0,0), (bsize,bsize,0), (0,bsize,0), (0,0,bsize), (bsize,0,bsize), (bsize,bsize,bsize), (0,bsize,bsize)] my_cst = rs.AddLine((400,0,0), (600,300,0)) my_cpol = rs.AddCurve([[0,500,0], [100,700,0], [300,300,0], [500,700,0], [700,500,0], [900,900,0]], 3) my_cspl = rs.AddSpiral((0,800,0), (0,800,1000), 15, 10, 100, 50) # Punkte auf Linie erstellen my_pts1 = rs.DivideCurve(my_cst, 10, True, True) my_pts2 = rs.DivideCurve(my_cpol, 20, True, True) my_pts3 = rs.DivideCurve(my_cspl, 200, True, True) # an jedem Punkt eine Box setzten for p in my_pts1: my_box = rs.AddBox(corners) rs.MoveObject(my_box, p) for p in my_pts2: my_box = rs.AddBox(corners) rs.MoveObject(my_box, p) for p in my_pts3: my_box = rs.AddBox(corners) rs.MoveObject(my_box, p) plane = rs.WorldXYPlane() my_rect = rs.AddRectangle(plane, 200, 100) for i in range (70): xran = ran.randint(-200,300) yran = ran.randint(-500,300) zran = ran.randint(0,0) ranscale = ran.uniform(1,3) if not (rs.PointInPlanarClosedCurve([xran, yran, zran], my_rect, plane, 0)): my_box = rs.AddBox(corners) rs.MoveObject(my_box, [xran, yran, zran]) rs.ScaleObject(my_box, [xran, yran, zran], [ranscale, ranscale, ranscale]) rs.EnableRedraw(True)