import rhinoscriptsyntax as rs import random as ran #weg weg weg damit allobjs = rs.AllObjects () rs.DeleteObjects (allobjs) rs.EnableRedraw (False) # Variablen definieren Geschosse = 3 #Anzahl Geschosse h = 3 #Geschosshoehe deck_h = 0.4 #Deckenstaerke spw = 5 #Spannweite des Stuetzenrasters Auskragung = spw/10 #ueberziehen der decke ueber stuetzenachse teil_x = 4 #Raster in x teil_y = 3 #Raster in y stu_d = 0.3 #Stuetzen staerke fund_h = 0.5 #Fundament hoehe fund_kl = 0.8 #Fundament Kantenlaenge #Ableitungen der Variablen: mitte = [spw*(teil_x-1)/2, spw*(teil_y-1)/2, fund_h] #Rasterpunkte deck_b = spw*(teil_x-1)+ 2*Auskragung #decken breite deck_l = spw*(teil_y-1) + fund_kl #decken laenge #Objekt Parameter 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)) rs.MoveObject (box, insertion) return (box) #aufstellen der fundamente mit jeweiligen Variablen def make_fund (spw=5.0, fund_kl = 0.8, fund_h = 0.5, teil_x=2, teil_y=3): fns = [] for i in range (teil_x): for j in range (teil_y): fns.append(make_box ([i*spw,j*spw,0 ], fund_kl, fund_kl, fund_h)) return (fns) #aufstellen der stuetzen mit jeweiligen Variablen def make_stu (spw=5.0, level = 0.7, stu_d = 0.2, h = 3.0, teil_x=2, teil_y=3): cls = [] for i in range (teil_x): for j in range (teil_y): cls.append(make_box ([i*spw,j*spw,level], stu_d, stu_d, h)) return (cls) #zeugen der Objekte -> ausspucken soids ins de bloecke fund = [] #liste fundamente stu = [] #liste stuetze deck = [] #liste decke fas = [] for i in range (Geschosse): mitte [2] = fund_h + i*(deck_h + h) level = fund_h + deck_h + (i-1)*(h+deck_h) if i == 0: make_fund (spw, teil_x=teil_x, teil_y=teil_y) else: stu.extend (make_stu (spw, level, stu_d, h, teil_x, teil_y)) deck.append (make_box (mitte, deck_b, deck_l, deck_h)) #auf layer zuweisen rs.AddLayer ("fundament") rs.LayerColor ("fundament", (2, 2, 2)) rs.ObjectLayer (fund, "fundament") rs.AddLayer ("stuetze") rs.LayerColor ("stuetze", (10, 10, 10)) rs.ObjectLayer (stu, "stuetze") rs.AddLayer ("decke") rs.LayerColor ("decke", (92, 87, 81)) rs.ObjectLayer (deck, "decke")