import rhinoscriptsyntax as rs import random as ran if rs.IsLayer("Default"): rs.CurrentLayer("Default") else: rs.AddLayer("Default") rs.CurrentLayer("Default") #delobjs = rs.ObjectsByLayer("Default") #rs.DeleteObjects(delobjs) delobjs = rs.ObjectsByType(1) rs.DeleteObjects(delobjs) rs.EnableRedraw(False) win = rs.ObjectsByLayer("TOP::windows") plane = rs.CurvePlane(win[0]) pts = [] for i in range(5000): x = ran.uniform(-18.6, 68) y = 0 z = ran.uniform(18.6, 36) pts.append([x,y,z]) for w in win: if rs.PointInPlanarClosedCurve(pts[-1], w, plane): pts.pop(-1) for p in pts: rs.AddPoint(p) 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) def make_letter(insertion =(0,0,0), letter = "1", xsize =10, ysize =10, zsize =10): mytext = rs.AddText(letter, (0,ysize,0), height = ysize, font = "Arial") crv = rs.ExplodeText(mytext, True)[0] path = rs.AddLine([0,0,0],[0,0,zsize]) obj = rs.ExtrudeCurve(crv, path) rs.CapPlanarHoles(obj) rs.DeleteObjects([crv, path]) rs.RotateObject(obj, [0,0,0], 90, [1,0,0]) bbx = rs.BoundingBox(obj) #print bbx #rs.AddPolyline(bbx) rs.MoveObject(obj, (-bbx[0] [0], -bbx[0] [1], -bbx[0] [2])) scalex = xsize /rs.Distance(bbx[0], bbx[1]) scalez = zsize /rs.Distance(bbx[0], bbx[4]) rs.ScaleObject(obj, (0,0,0), (scalex, 1, scalez)) rs.MoveObject(obj,(-xsize/2, -ysize/2, 0)) rs.MoveObject(obj, insertion) #make_letter() #make_box((0,0,0), 3, 8, 5) #make_box(insertion = (5,0,0), xsize = 1) """ baseline = rs.ObjectsByLayer("baseline") [0] pts = rs.DivideCurve(baseline, 22) xsize = rs.Distance(pts[0], pts[1]) for p in pts: make_letter(p, "Y",xsize, 1,8.6) pts = rs.DivideCurve(baseline, 36) xsize = rs.Distance(pts[0], pts[1]) for p in pts: make_letter((p[0], p[1], 8.6), "A",1,1,10) """ """ # delete everything allobjs = rs.AllObjects() rs.DeleteObjects(allobjs) rs.EnableRedraw(False) #Set Variables bsize = 10 # side length of boxes dist = 1 # distance between boxes offs = bsize + dist # offset of boxes num = 10 # number of boxes #single line of num boxes, offset by offs if 1: for i in range(num): box = rs.AddBox(corners) rs.MoveObject(box, (i*offs,0,0)) #2D array (field) of num * num boxes if 0: for i in range(num): for j in range(num): box = rs.AddBox(corners) rs.MoveObject(box, (i*offs,j*offs,0)) """