import rhinoscriptsyntax as rs import random as ran rs.EnableRedraw(False) allobjs = rs.AllObjects() rs.DeleteObjects(allobjs) #Liste an Variablen ########################################################### A=7 B = A/2 thick = 0.4 hgt = 4.7 xcol = 5 ycol = 5 levels = 7 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_length = A*(ycol-1) + f_size ########################################################### def make_box(insertion,rsize=15,ssize=15,tsize=15): corners = [[0,0,0], [rsize,0,0], [rsize,ssize,0], [0,ssize,0], [0,0,tsize], [rsize,0,tsize], [rsize,ssize,tsize], [0,ssize,tsize]] box = rs.AddBox(corners) rs.MoveObject(box, (-rsize/2, -ssize/2, 0)) rs.MoveObject(box, insertion) return(box) #erstellen der Fundamentboxen 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) #erstellen der Saeulen def make_colums(A=5.0, levels=0.7, thick=0.2, hgt=3.0, 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) #erbauen des dom-ino f_list=[] #Fundamentboxen c_list=[] #Saeulen 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) #Aenderungen in der Klammer zu zB (A=4, xcol=7) bringt mehr Varianten else: c_list.extend(make_colums(A, level, thick, hgt, xcol, ycol)) p_list.append(make_box(center_pt, p_width, p_length, thick)) #einzelne Bauteilen einzelnen Layern zuordnen mit eigenen Farben rs.AddLayer("grundplatte") rs.LayerColor("grundplatte", (220,60,60)) rs.ObjectLayer(f_list,"grundplatte") rs.AddLayer("saeluen") rs.LayerColor("saeluen", (60,220,60)) rs.ObjectLayer(c_list,"saeluen") rs.AddLayer("platten") rs.LayerColor("platten", (60,60,220)) rs.ObjectLayer(p_list,"platten") xsize = 7 ysize = 0.5 zsize = 6.1 offs = 5 dffs = 7 num = 4 num2 = 6 corners = [(0,0,0.9), (xsize,0,0.9), (xsize,ysize,0.9), (0,ysize,0.9), (0,0,zsize), (xsize,0,zsize), (xsize,ysize,zsize), (0,ysize,zsize)] for i in range(num): for j in range(num2): if((i+j)%2): box = rs.AddBox(corners) rs.MoveObjects(box, (i*dffs,0, j*offs)) corners = [(0,0,0.9), (xsize,0,0.9), (xsize,ysize,0.9), (0,ysize,0.9), (0,0,zsize), (xsize,0,zsize), (xsize,ysize,zsize), (0,ysize,zsize)] for i in range(num): for j in range(num2): if((i+j)%2): box = rs.AddBox(corners) rs.MoveObjects(box, (i*dffs,28, j*offs)) rs.EnableRedraw(True)