import rhinoscriptsyntax as rs import random as ran allobjs = rs.AllObjects() rs.DeleteObjects(allobjs) xsize = 100 # xsize lenght of box ysize = 120 # ysize lenght of box zsize = 60 # zsize lenght of box A = 50 # module size (distance between columns) B = A/3 # thick = 2 # thickness of all stabs hgt = 30.0 # height of the room xcol = 2 # columns in y direction ycol = 3 # columns in y direction level = 3 # number of floor plates f_height = 5 # foundation size f_size = 8 # foundation edge size center_pt = [A*(xcol-1)/2,A*(ycol-1)/2, 0.5] # insertion point of floor plate p_width = A*(xcol-1)+2*B # width of floor plate (x) p_lenght = A*(ycol-1)+ f_size # lenght of floor plate (y) 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)] mybox = rs.AddBox(corners) rs.MoveObject(mybox,(-xsize/2,-ysize/2,0)) rs.MoveObject(mybox, insertion) return(mybox) #function to create a field of foundations 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) #function to create a field of columns def make_columns(A = 5.0, level = 0.5, 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) #building dom-ino f_list = [] #list of foundations c_list = [] #list of columns p_list = [] #list of plates for i in range(level): 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) else: c_list.extend(make_columns(A, level, thick, hgt, xcol, ycol)) p_list.append(make_box(center_pt, p_width, p_lenght, thick)) rs.AddLayer("foundation") rs.LayerColor("foundation", (70, 40, 220)) rs.ObjectLayer(f_list,"foundation") rs.AddLayer("columns") rs.LayerColor("columns", (80, 100, 30)) rs.ObjectLayer(c_list,"columns") rs.AddLayer("plates") rs.LayerColor("plates", (100, 220, 70)) rs.ObjectLayer(p_list,"plates") print f_list print c_list print p_list