import rhinoscriptsyntax as rs import random as ran rs.EnableRedraw(False) #damit es ganz sicher einen default layer gibt if rs.IsLayer("Default"): rs.CurrentLayer("Default") else: rs.AddLayer("Default") rs.CurrentLayer("Default") """ #nur den layer default loeschen delobjs = rs.ObjectsByLayer("Default") rs.DeleteObjects(delobjs) xsize = 10 ysize = 10 zsize = 10 """ delobjs = rs.ObjectsByType(1) rs.DeleteObjects(delobjs) win = rs.ObjectsByLayer("TOP::windows") plane = rs.CurvePlane(win[0]) pts = [] for i in range(3000): x= ran.randint(0,111) y= 0 z= ran.randint(18,36) pts.append([x,y,z]) #haengt Punkte zur Liste hinzu for w in win: if rs.PointInPlanarClosedCurve(pts[-1], w, plane): pts.pop(-1) for p in pts: rs.AddPoint(p) #neue "befehle" definieren 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)) #steht in der Mitte rs.MoveObject(box, insertion) def make_letter(insertion=(0,0,0), letter="1", xsize=10, ysize=10, zsize=10): mytext = rs.AddText(letter,(0,zsize,0), height= zsize, font="Arial") crv = rs.ExplodeText(mytext, True)[0] path = rs.AddLine([0,0,0],(0,0,ysize)) obj = rs.ExtrudeCurve(crv,path) rs.CapPlanarHoles(obj) rs.DeleteObjects([crv,path]) rs.RotateObjects(obj, [0,0,0], 90, [1,0,0]) bbox = rs.BoundingBox(obj) #print bbox #rs.AddPolyline(bbox) rs.MoveObject(obj, [-bbox[0][0],-bbox[0][1],-bbox[0][2]]) scalex = xsize/rs.Distance(bbox[0],bbox[1]) scalez = zsize/rs.Distance(bbox[0],bbox[4]) rs.ScaleObject(obj, [0,0,0],[scalex,0.1,scalez]) rs.MoveObject(obj, (-xsize/2, -ysize/2,0)) rs.MoveObject(obj, insertion) """ make_letter() """ #neuen "befehl" dann ausfuehren #make_box(insertion=(5,0,0), zsize=7) #Stuetzenraster unten baseline = rs.ObjectsByLayer("baseline")[0] pts = rs.DivideCurve(baseline, 18) #18 ist die Anzahl --> hoehere Zahl, mehr Stuetzen """ for p in pts: make_box(p, 1,1,8.6) pts = rs.DivideCurve(baseline, 36) for p in pts: make_box((p[0],p[1],8.6), 1,1,2) """ """ pts = rs.DivideCurve(baseline, 18) 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),"2", xsize,1,10) """ """ #Variablen A = 5 B = A/3 thick = 1.7 hgt = 2.7 xcol = 4 ycol = 5 levels = 5 f_height = 0.5 f_size = 0.8 center_pt = [A*(xcol-1)/2, A*(ycol-1)/2, f_height] p_width = A*(xcol-1) + 2*B p_lenght = A*(ycol-1) + f_size #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] #Fundamente def make_foundations(A = 5.0, f_size=0.8, f_height=0.5, xcol=2, ycol=3): fns = [] for i in range(xcol): for j in range(ycol): fns.append(make_box([i*A,j*A,0],f_size,f_size,f_height)) return(fns) #Stuetzen def make_columns(A = 5.0, level=0.7, thick=0.2, hgt=3, xcol=2, ycol=3): cls = [] for i in range(xcol): for j in range(ycol): cls.append(make_box([i*A,j*A,level],thick,thick,hgt)) return(cls) #Dom-ino f_list = [] #Fundamente c_list = [] #Stuetzen p_list = [] #Platten for i in range(levels): center_pt[2] = f_height + i*(thick+hgt) level = f_height + thick + (i-1)*(hgt+thick) if i==0: f_list = make_foundations(A, f_size, f_height, xcol, ycol) ##Fundamente else: c_list.extend(make_columns(A, level, thick, hgt, xcol, ycol)) ##Stuetzen p_list.append(make_box(center_pt, p_width, p_lenght, thick)) ##Platte ##Layers und Farben rs.AddLayer("foundation") rs.LayerColor("foundation",(255,192,203)) rs.ObjectLayer(f_list,"foundation") rs.AddLayer("columns") rs.LayerColor("columns",(60,22,60)) rs.ObjectLayer(c_list,"columns") rs.AddLayer("plates") rs.LayerColor("plates",(6,60,22)) rs.ObjectLayer(p_list,"plates") """