import rhinoscriptsyntax as rs import random as ran import flipped_classroom_lib as fc #reload(fc) rs.DeleteObjects(rs.AllObjects()) rs.EnableRedraw(False) length=10 thick=0.5 height=12 door_width = 3 door_height = 5 walls=[] #building box=fc.make_box((thick/2,-length/2,0),xsize=length,ysize=thick,zsize=height) for i in range(4): walls.append(rs.RotateObject(box,(0,0,0),90*i,copy=True)) rs.DeleteObject(box) #doors door=fc.make_box((-5,0,-1),door_width, 4, door_height+2) door_2=fc.make_box((0.5,-5,-1), door_width, 5, door_height+1) door_3=fc.make_box((1.5,5,-1), door_width, 5, door_height+1) back_door=fc.make_box((6,0,0), door_width, 4.5, door_height+1.8) result=rs.BooleanDifference(walls,door) result2=rs.BooleanDifference(result, door_2) result3=rs.BooleanDifference(result2,door_3) result4=rs.BooleanDifference(result3,back_door) crv=rs.AddRectangle((-length/2,-length/2,0),length,length) crv2=rs.OffsetCurve(crv,(20,0,0),1) pt=rs.DivideCurve(crv2,23*4) i=0 #windowsupp exclude_indices = {5, 6, 7, 16, 17, 18, 28, 29, 30, 39, 40, 41, 51, 52, 53, 62, 63, 64, 74, 75, 76, 85, 86, 87} for i, p in enumerate(pt): if i not in exclude_indices: x, y, _ = p fc.make_box((x, y, height-2), 0.15, 0.15, 1.5) # Box auf z=10 setzen i=i+1 include_indices = {8, 9, 10, 11, 12, 13, 14, 15, 31, 32, 33, 34, 35, 36, 37, 38, 54, 55, 56, 57, 58, 59, 60, 61, 77, 78, 79, 80, 81, 82, 83, 84} for i, p in enumerate(pt): if i in include_indices: x, y, _ = p fc.make_box((x, y, height-4.5), 0.15, 0.15, 1.5) # Box auf z=8 setzen i=i+1 #window frames front frame=[] windowframe=fc.make_box((6.2,0,7.3),xsize=1,ysize=4.3,zsize=0.3) windowframe_2=fc.make_box((6.2,0,9.7),xsize=1,ysize=4.3,zsize=0.3) windowframe_3=fc.make_box((6.2,0,9),xsize=1,ysize=4.7,zsize=0.3) windowframe_4=fc.make_box((6.2,0,11.3),xsize=1,ysize=4.7,zsize=0.3) for i in range(4): frame.append(rs.RotateObject(windowframe,(0,0,0),90*i,copy=True)) frame.append(rs.RotateObject(windowframe_2,(0,0,0),90*i,copy=True)) frame.append(rs.RotateObject(windowframe_3,(0,0,0),90*i,copy=True)) frame.append(rs.RotateObject(windowframe_4,(0,0,0),90*i,copy=True)) #window frames sides frame2=[] windowsideframe=fc.make_box((6.2,-4.9,9.7),xsize=1,ysize=2.75,zsize=0.3) windowsideframe_2=fc.make_box((4.6,-5.52,9.7),xsize=2,ysize=1.5,zsize=0.3) windowsideframe_3=fc.make_box((6.2,-4.3,11.3),xsize=1,ysize=3,zsize=0.3) windowsideframe_4=fc.make_box((4.6,-5.55,11.3),xsize=2.3,ysize=1.5,zsize=0.3) for i in range(4): frame2.append(rs.RotateObject(windowsideframe,(0,0,0),90*i,copy=True)) frame2.append(rs.RotateObject(windowsideframe_2,(0,0,0),90*i,copy=True)) frame2.append(rs.RotateObject(windowsideframe_3,(0,0,0),90*i,copy=True)) frame2.append(rs.RotateObject(windowsideframe_4,(0,0,0),90*i,copy=True)) #upperfloors floor=[] floor=fc.make_box((0,0,12.5),xsize=4.4,ysize=4.4,zsize=1.2) floor2=fc.make_box((0,0,14),xsize=1.8,ysize=1.8,zsize=1) rs.DeleteObject(crv) rs.DeleteObject(crv2) #interior midbox=fc.make_box((0,0,0), xsize=3.5, ysize=4.5, zsize=4) midmidbox=fc.make_box((-1.75,0.5,0),xsize=1, ysize=3, zsize=4) ranbox=fc.make_box((-4,-4,0), xsize=1.5, ysize=1.5, zsize=1.5) ranbox2=fc.make_box((-2.9,-4.4,0), xsize=0.75, ysize=0.75, zsize=0.75) hbox=fc.make_box((-3,4.75,0),xsize=3.5,ysize=1, zsize=4) #backsite cubby backwall=fc.make_box((4.2,0.5,0),xsize=thick-0.25,ysize=length-7,zsize=height-8) cubby=[] cwall=fc.make_box((8,-0,0),xsize=thick, ysize=4.5, zsize=door_height+1.8) cwall2=fc.make_box((7.25,-2.5,0),xsize=3, ysize=thick, zsize=door_height+1.8) cwall3=fc.make_box((7.25,2.5,0),xsize=3, ysize=thick, zsize=door_height+1.8) bench=fc.make_box((7.40,0.12,0),xsize=0.75, ysize=4.75, zsize=0.75) #backsite cubby roof rec=rs.AddRectangle((5.2,-3,door_height+1.8), 3.2, 6) rec_off=rs.OffsetCurve(rec, (50,0,0), 0.3) pts_rec=rs.DivideCurve(rec_off,2) rec_mid=rs.AddLine(pts_rec[0],pts_rec[1]) mid_pts=rs.DivideCurve(rec_mid, 2) rs.ExtrudeCurvePoint(rec_off, (mid_pts[1][0],mid_pts[1][1],mid_pts[1][2]+0.5)) rs.DeleteObject(rec_off) rs.DeleteObject(rec) #golden plates rec_cir=rs.AddRectangle((-length/2-thick/2,-length/2-thick/2,0), length+thick, length+thick) rs.MoveObject(rec_cir,(0,0,10.5)) line_cir=rs.ExplodeCurves(rec_cir, True) for i in range(len(line_cir)): pts_cir= rs.DivideCurve(line_cir[i], 4) ci1=rs.AddCylinder(pts_cir[1],0.2,0.5) ci2=rs.AddCylinder(pts_cir[3],0.2,0.5) if i%2: axis=(0,1,0) else: axis=(1,0,0) rs.RotateObjects((ci1,ci2),pts_cir[1], 90, axis) rs.DeleteObjects(line_cir) #roof roof=[] points = ([-7,-7,11.90],[-7,7,11.90], [-2.2,2.2,12.6], [-2.2,-2.2,12.6]) plane= rs.AddSrfPt(points) for i in range (4): roof.append(rs.RotateObject(plane,(0,0,0),90*i,copy=True)) rs.DeleteObject(plane) roof2=[] points = ([-5,-5,13.3],[-5,5,13.3], [-1,1,14], [-1,-1,14]) plane= rs.AddSrfPt(points) for i in range (4): roof2.append(rs.RotateObject(plane,(0,0,0),90*i,copy=True)) rs.DeleteObject(plane) roof3=[] rec=rs.AddRectangle((-2.5,-2.5,14.8), 5, 5) rec_off=rs.OffsetCurve(rec, (50,0,0), 0.3) pts_rec=rs.DivideCurve(rec_off,2) rec_mid=rs.AddLine(pts_rec[0],pts_rec[1]) mid_pts=rs.DivideCurve(rec_mid, 2) rs.ExtrudeCurvePoint(rec_off, (mid_pts[1][0],mid_pts[1][1],mid_pts[1][2]+0.60)) rs.DeleteObject(rec_off) rs.DeleteObject(rec) #roof3=[] #points = ([-3,-3,14.7],[-3,3,14.7], [-1,1,15], [-1,-1,15]) #plane= rs.AddSrfPt(points) #for i in range (4): # roof.append(rs.RotateObject(plane,(0,0,0),90*i,copy=True)) rs.DeleteObject(plane) #secondfloor window sup crv=rs.AddRectangle((-2.2,-2.2,12.6),4.5,4.5) pt=rs.DivideCurve(crv,12*4) i=0 exclude_indices = {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47} for i, p in enumerate(pt): if i not in exclude_indices: x, y, _ = p fc.make_box((x, y, height+0.6), 0.2, 0.2, 1.1) i=i #thirdfloor window sup crv=rs.AddRectangle((-1,-1,12.6),2,2) pt=rs.DivideCurve(crv,8*4) i=0 exclude_indices = {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31} for i, p in enumerate(pt): if i not in exclude_indices: x, y, _ = p fc.make_box((x, y, height+2), 0.2, 0.2, 1) i=i #doorframes doorframe=fc.make_box((-5.35,2.25,0), xsize=0.2, ysize=0.5, zsize=6) doorframe=fc.make_box((-5.35,-2.25,0), xsize=0.2, ysize=0.5, zsize=6) doorframe=fc.make_box((-5.35,0,6), xsize=0.3, ysize=5.5, zsize=0.5) doorframe=fc.make_box((2.70,5.35,0), xsize=0.4, ysize=0.2, zsize=5) doorframe=fc.make_box((-0.70,5.35,0), xsize=0.4, ysize=0.2, zsize=5) doorframe=fc.make_box((1,5.35,5), xsize=4.5, ysize=0.3, zsize=0.4) doorframe=fc.make_box((1.70,-5.35,0), xsize=0.4, ysize=0.2, zsize=5) doorframe=fc.make_box((-1.70,-5.35,0), xsize=0.4, ysize=0.2, zsize=5) doorframe=fc.make_box((0,-5.35,5), xsize=4.5, ysize=0.3, zsize=0.4)