import rhinoscriptsyntax as rs import random as ran #import fantastic_stairs_lib as fs import flipped_classroom_lib as fc #delete everything and start from scratch rs.DeleteObjects(rs.AllObjects()) rs.EnableRedraw(False) #Variablen lift_a= 20 lift_b= 30 lift_c=100 p_num=80 pt= 10 #Anzahl der Petals size_a = 10 #Pixelaufteilung auf den Petals size= 2 #Groesse der Petals (als Faktor) hgt= lift_a/2 #l_en= 100 rotation_a = -10 #Drehung der Petals #Variablen fuer das Haus xsize = 250 #xside length of box ysize = 250 #yside length of box zsize = 5 #zside length of box xsize_a=250 ysize_a=5 zsize_a=100 xsize_b=5 ysize_b=250 zsize_b=100 # Stuetzen unter Dach building_width = 2 # Breite der Stuetzen building_height = 50 # Hoehe der Stuetzen building_depth = 2 # Tiefe segments = 5 # Anzahl der Segmente entlang der Kurve glass_shift = 30 #Verschiebung in z_Richtung fuer die Glaskuppel #Bluetenblatt unten crv_b=rs.AddCurve([[0,0,0],[lift_c,20,0], [lift_c,90,0], [5,10,0],[0,0,0]], 5)#Kurve auf Grundrissebene ohne Drehung #Unterteilung fuer das Gebaude curve_points = rs.DivideCurve(crv_b, segments) rs.ScaleObject(crv_b, [0,0,0], (size,size,size)) rs.RebuildCurve(crv_b, 6, p_num) c_lens= rs.CurveLength(crv_b) seg_len = c_lens/p_num path_b= rs.AddLine([0,0,0],[0,0,-1]) ptc_u = rs.AddPatch(crv_b,(size_a,size_a)) size=size-0.2 #Bluetenblatt oben crv = rs.AddCurve([[0,0,0],[lift_c,20,lift_a], [lift_c,90,lift_b], [5,10,lift_a],[0,0,0]], 5) #Kurve oben mit Drehung rs.ScaleObject(crv, [0,0,0], (size,size,size)) rs.RebuildCurve(crv, 6, p_num) c_len= rs.CurveLength(crv) seg_len = c_len/p_num ptc = rs.AddPatch(crv,(size_a,size_a)) #Flaeche des Bluetenblattes ptc_new=rs.RotateObject(ptc, [0,0,0], rotation_a, axis=[0,1,0],copy=True) #Bluetenblatt mit 10 Grad Drehung nach oben ptc_new_mir=rs.MirrorObject(ptc_new,[0,0,0],[0,1,0],copy=True) rs.MoveObject(ptc_new_mir,[0,0,20]) #Kopieren und Verschieben der Blaetter in 360 Grad for i in range(pt): rs.RotateObject(ptc,[0,0,0],360/pt*i,copy=True) rs.RotateObject(ptc_new,[0,0,0],360/pt*i,copy=True) rs.RotateObject(ptc_u,[0,0,0],360/pt*i,copy=True) rs.RotateObject(ptc_new_mir,[0,0,0],360/pt*i,copy=True) #for u in range (pt): # rs.RotateObject(ptc_new, [0,0,0],axis=[0,1,0]/pt*i,copy= True) #Stuetzen coll=rs.DivideCurve(crv,13) boxes=[] for p in coll: box= fc.make_box((p[0],p[1],0),1,1,p[2]) boxes.append(box) for i in range(pt): for box in boxes: rs.RotateObject(box,[0,0,0],360/pt*i,copy=True) #Pipe um Bluetenblatt pipe= rs.AddPipe(crv, 0, 1,8) pipe_u= rs.AddPipe(crv_b, 0, 1,8) for i in range(pt): rs.RotateObject(pipe,[0,0,0],360/pt*i,copy=True) rs.RotateObject(pipe_u,[0,0,0],360/pt*i,copy=True) #Glaskugel in der Mitte quad = [[0,0,0], [5,0,0], [10,0,12], [0,0,12]] quad = [[0,0,0], [5,4,0], [10,4,12], [0,0,12]] quad = [[0,0,0], [5,0,0], [10,2,12], [0,2,12]] quad = [[0,0,0], [5,0,0], [8,2,12], [2,2,12]] quad = [[0,0,0], [5,2,0], [10,-2,12], [0,2,10]] result_list = fc.PEF_single_face(quad) pantheon= result_list = fc.PEF_pantheon() #rs.DeleteObjects(rs.AllObjects()) p_list = result_list[0] # Pointlist, contains single points e_list = result_list[1] # Horizontal Edgelist, contains lists with two points ve_list = result_list[2] # Vertical Edgelist, contains lists with two points f_list = result_list[3] # Facelist, contans lists with four points (quads) zcol = result_list[4] # number of levels of faces xcol = result_list[5] # number of faces in one level dome_list=[] if 1: for i in range(zcol): for j in range(xcol): points = f_list[i*xcol+j] (P0,P1,P2,P3) = points cpoints=[P0,P1,P2,P3,P0] plineb = rs.AddCurve(cpoints,3) dome=rs.AddPipe(plineb,0,0.2) dome_list.append(dome) rs.DeleteObjects(plineb) rs.MoveObject(dome_list, [0, 0, glass_shift]) #Hoehenverschiebung # Gebaude entlang der Kurve erstellen #1)Decke unter Kuppel und Petals roof=rs.AddCircle([0,0,0], 25.8) rs.AddPatch(roof,(size_a,size_a)) #2)Stuetzen unter den Petals buildings = [] for pti in curve_points: # Stuetzen-Basis erstellen base = rs.AddRectangle(rs.WorldXYPlane(), building_width, building_depth) base = rs.MoveObject(base, [pti[0] - building_width / 2, pti[1] - building_depth / 2, pti[2]]) # Stuetzen extrudieren extrusion = rs.ExtrudeCurveStraight(base, pti, [pti[0], pti[1], pti[2] - building_height]) buildings.append(extrusion) #rs.MoveObject(extrusion,[0,0,-50]) for i in range(pt): rs.RotateObject(buildings,[0,0,0],360/pt*i,copy=True) #3)Gebaude #Dach 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,[-120,-120,-50]) #Waende 1 corners=[[0,0,0], [xsize_a,0,0], [xsize_a,ysize_a,0], [0,ysize_a,0],[0,0,zsize_a], [xsize_a,0,zsize_a], [xsize_a,ysize_a,zsize_a], [0,ysize_a,zsize_a]] box=rs.AddBox(corners) wall=rs.MoveObject(box,[-120,-120,-150]) rs.CopyObject(wall,[0,245,0]) rs.EnableRedraw(True) #Waende 2 corners=[[0,0,0], [xsize_b,0,0], [xsize_b,ysize_b,0], [0,ysize_b,0],[0,0,zsize_b], [xsize_b,0,zsize_b], [xsize_b,ysize_b,zsize_b], [0,ysize_b,zsize_b]] box=rs.AddBox(corners) wall_2=rs.MoveObject(box,[-120,-120,-150]) line=rs.AddLine([131.1,-120,-150],[131.1,125,-150]) #Stuetzen coll_a=rs.DivideCurve(line,20) boxes=[] for p in coll_a: box= fc.make_box((p[0],p[1],0),1,1,p[2]) boxes.append(box)