################################### ### DM2_w24 # AGruber@tugraz.at ### ### hu_06 UN_headquaters NYC ### ###################################################### ### paneling / new dimensions ### 87.5 x 22.0 meters (was lenY = 116.56 / lenX = 28.18) ################################### ###################################################### ############################## import rhinoscriptsyntax as rs import random, time, sys ### sys.path.append("P:/") ### sys.path.append("C:/Users/annas/OneDrive/Dokumente/uni-dokumente/dm2") import DM_lib as dm ### reload( dm ) ############################## rs.UnitSystem(4) # km = 5, meters = 4, cm = 3 etc rs.ShowGrid(None, 0) # grid > 0 = off rs.ShowGridAxes(None, 1) # y/y/z axen display > 0/1 = off/on rs.ViewDisplayMode(rs.CurrentView(), "wireframe") rs.Command("cplane w t enter", 0) # cPlane World Top dm.PointRadius(displayModeX=0, rad=3, styl=3) dm.printDisplay(1) # nomen est omen rs.EnableRedraw(0) rs.DeleteObjects(rs.AllObjects()) ###_________________________________________# ### basic settings for grid to fit UN_slab # ### # floors = H = dm.H = 40 # default=40 / incl roof slabs = L = dm.L = 11 # default=11 depth = D = dm.D = 4 # default= 4 / division in building_depth floorHeight = fH = dm.fH = 4.0 # default= 4.0 / 4.0*(H-1) = 156 meters # ################ # get from DM_lib as dm: UnoGridCoords = dm.UnoGridCoords # get gridCoords L*D*H = 1760 UnoPanelCoords = dm.UnoPanelCoords # get panelCoords [frontPanels, backPanels, sidePanels, upSidePanels] / default arguments s.u. ################____________________________# ################ lengthVec = lVec = rs.VectorUnitize(rs.VectorSubtract( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(1, 0, 0) )) ## rs.AddPoint( dm.getUnoCoord(1, 0, 0) ) depthVec = dVec = rs.VectorUnitize(rs.VectorSubtract( dm.getUnoCoord(0, 1, 0), dm.getUnoCoord(0, 0, 0) )) ## rs.AddPoint( dm.getUnoCoord(0, 1, 0) ) ################ ########################################################################################### UnoPanelCoords = dm.getUNpanelCoords(anzL=10*7, anzH=39, anzD=3, stepL=1, stepH=1, stepD=1) ### = all ~windows_panels BigPanelCoords = dm.getUNpanelCoords(anzL=10*1, anzH=39, anzD=3, stepL=2, stepH=6, stepD=2) ### = all ~windows_panels UnoPanelCoords = dm.getUNpanelCoords(anzL=10*1, anzH=39*2, anzD=3, stepL=2, stepH=3, stepD=2) ### = standard for hu_06 ########################################################################################### ########################################################## frontPanels = UnoPanelCoords[0] ### list of coordLists ! backPanels = UnoPanelCoords[1] sidePanels = UnoPanelCoords[2] upSidePanels = UnoPanelCoords[3] allPanels = UnoPanelCoords[4] ################################# dm.newEmptyLayer("UNO::setUp", [120,120,140]) if 1: ### SETUP >> dont' exec @ homework ! rs.ObjectColor(rs.AddCurve( [dm.getUnoCoord(0,0,0), dm.getUnoCoord(0,0,39), dm.getUnoCoord(10,0,39),dm.getUnoCoord(10,0,0), dm.getUnoCoord(10,3,0), dm.getUnoCoord(0,3,0), dm.getUnoCoord(0,3,39), dm.getUnoCoord(10,3,39)], 1), [250,250,250]) rs.ObjectColor(rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(0, 1, 0) ), [222, 0, 0] ) rs.ObjectColor(rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(1, 0, 0) ), [0, 222, 0] ) rs.ObjectColor(rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(0, 0, 2) ), [0, 0, 222] ) #rs.ObjectPrintWidth( rs.AllObjects()[0:4], 1.0 ) rs.ZoomExtents() #for coords in BigPanelCoords[4]: rs.AddCurve( coords, 1 ) #for list in frontPanels: # rs.AddCurve( list, 1) # #dm.textDots( frontPanels[0] ) #dm.textDots( frontPanels[13] ) # #rs.AddSrfPt( frontPanels[13] ) if 0: ### DEMO >> dont' exec @ homework ! print len(frontPanels) #dm.textDots( frontPanels[0] ) for coords in frontPanels[0:10]+sidePanels: pass rs.AddPoints( coords ) rs.AddCurve( coords, 1 ) #rs.AddSrfPt( coords ) #for coords in sidePanels[0:]: # rs.AddPoints( coords ) for coords in BigPanelCoords[4]: pass #rs.AddCurve( coords, 1 ) if 0: ### DEMO >> dont' exec @ homework ! #dm.textDots( frontPanels[25] ) #############: ### panel_DEF: def myPanel( panel, basement = 0, auskrag = 5 ): p0, p1, p2, p3 = panel ### get items (==coords) from list #rs.AddLine(p0,p2) nVec = dm.normVec3pnts(p0,p1,p2) zCor = p0[2] auskrag = dm.reMap(zCor, 0, 156, 0.0,10) nVec = rs.VectorScale(nVec, auskrag) if basement != 0: crv = rs.AddCurve([p0,p1, dm.pntInbetween(p1,p3), p2, p3],1) rs.ObjectPrintWidth(crv, 1) ###veraendert linienstaerke rs.ObjectColor(crv, [200,0,0]) ###bestimmt farbe else: pass #rs.AddCurve(panel,1) p00 = dm.pntInbetween(p0,p2, random.uniform(0.1, 0.4)) p10 = dm.pntInbetween(p1,p3, random.uniform(0.1, 0.4)) p20 = dm.pntInbetween(p2,p0, random.uniform(0.1, 0.4)) p30 = dm.pntInbetween(p3,p1, random.uniform(0.1, 0.4)) coords = [p00,p10,p20,p30,p00] base = rs.AddCurve([p0,p1,p2,p3,p0],1) #####base rechteck innen = rs.AddCurve( [p00, p10, p20, p30, p00],2) ####form innen fuer aussen benoetigt for i, cor in enumerate(coords): cor = rs.VectorAdd(cor, nVec) coords[i] = cor aussen = rs.AddCurve( coords, 2) ####form aussen anz = int(dm.reMap(zCor, 0, 156, 10, 200)) ###type casting coordsA = rs.DivideCurve(aussen, anz, 0) coordsB = rs.DivideCurve(base, anz, 0) for i in range(anz): rs.AddCurve([coordsA[i], coordsB[i]], 1) ###um verbindungen zu schaffen for i,panel in enumerate(frontPanels): ####zaehler laeuft durch erst daduch werden die oberen definitionen erzeugt basementVar = 0 ####sonst basement variation = 0 gilt also nicht if i <10: basementVar = 1 ####nur wenn bedingung erfuellt ist myPanel(panel, basement = basementVar, auskrag =50) #_____________________________here you go: dm.newEmptyLayer("myPROJ", [200,200,200]) ######ab jetzt hu ###zusaetzliche Linien fuer Rahmen rs.ObjectColor(rs.AddCurve([dm.getUnoCoord(10,0,0),dm.getUnoCoord(0,0,0), dm.getUnoCoord(0,3,0)],1),[250,250,250]) rs.ObjectColor(rs.AddCurve([dm.getUnoCoord(0,0,39), dm.getUnoCoord(0,3,39)],1),[250,250,250]) rs.ObjectColor(rs.AddCurve([dm.getUnoCoord(10,0,39), dm.getUnoCoord(10,3,39),dm.getUnoCoord(10,3,0)],1), [250,250,250]) if 1: ####panel_definiton: def myPanel(panel, basement, panelA, panelB, auskrag = 5): p0, p1, p2, p3 = panel nVec = dm.normVec3pnts(p0,p1,p2) zCor = p0[2] auskrag = dm.reMap(zCor, 0, 156, 0.0,10) nVec = rs.VectorScale(nVec, auskrag) #####Rahmen um Gebauede coordsR = [dm.getUnoCoord(0,0,0), dm.getUnoCoord(0,0,39), dm.getUnoCoord(10,0,39), dm.getUnoCoord(10,0,0), dm.getUnoCoord(0,0,0)] #innenR = rs.AddCurve([dm.getUnoCoord(0,0,0), dm.getUnoCoord(0,0,39), dm.getUnoCoord(10,0,39), dm.getUnoCoord(10,0,0), dm.getUnoCoord(0,0,0)],1) for i, corR in enumerate(coordsR): corR = rs.VectorAdd(corR, nVec) coordsR[i] = corR aussenR = rs.AddCurve(coordsR, 1) #####Basement Modul if basement != 0: basebasement = rs.AddCurve([p0, p1,p2,p3], 1) p00 = dm.pntInbetween(p0,p1) p10 = dm.pntInbetween(p1,p2) p20 = dm.pntInbetween(p2,p3) coordsBase = [p0,p00,p10,p20,p3] ####list #innenBase = rs.AddCurve([p0,p00, p10,p20,p3],2) for i, corBase in enumerate(coordsBase): corBase = rs.VectorAdd(corBase, nVec) coordsBase[i] = corBase aussenBase = rs.AddCurve(coordsBase,2) anz = int(dm.reMap(zCor, 0, 156, 50, 200)) coordsBaseA = rs.DivideCurve(aussenBase, anz, 0) coordsBaseB = rs.DivideCurve(basebasement, anz, 0) for i in range(anz): connectionsBase = rs.AddCurve([coordsBaseA[i], coordsBaseB[i]],2) rs.ObjectPrintWidth([aussenBase, basebasement], 0.5) rs.ObjectColor([connectionsBase, aussenBase, basebasement], [221,125,125]) ######panel A jedes dritte Feld if panelA !=0: #rs.AddCurve(panel, 1) base = rs.AddCurve([p0,p1,p2],1) innen = rs.AddCurve([p0,p1,p2],2) coords = [p0,p1,p2] for i, cor in enumerate(coords): cor = rs.VectorAdd(cor, nVec) coords[i] = cor aussen = rs.AddCurve(coords,2) anz = int(dm.reMap(zCor, 0, 156, 50, 200)) coordsA = rs.DivideCurve(aussen, anz, 0) coordsB = rs.DivideCurve(base, anz, 0) for i in range(anz): connectionsAB = rs.AddCurve([coordsA[i],coordsB[i]],1) rs.ObjectPrintWidth(connectionsAB, 0.5) rs.ObjectColor([base, aussen, connectionsAB], [245,245,220]) #####panel B alle Felder ueber basement if panelB !=0: basePB = rs.AddCurve([p0,p3,p2],2) innenPB = rs.AddCurve([p0,p3,p2],1) coordsPB = [p0,p3,p2] for i, cor in enumerate(coordsPB): cor = rs.VectorAdd(cor, nVec) coordsPB[i] = cor aussenPB = rs.AddCurve(coordsPB,1) anzPB = int(dm.reMap(zCor, -20, 1000, 10, 200)) coordsC = rs.DivideCurve(aussenPB, anzPB, 0) coordsD = rs.DivideCurve(basePB, anzPB, 0) for i in range(anzPB): connectionsCD = rs.AddCurve([coordsC[i], coordsD[i]]) #rs.ObjectPrintWidth(connectionsCD, 0.5) rs.ObjectColor([basePB, aussenPB, connectionsCD], [245,245,220]) for i, panel in enumerate(frontPanels): basementVar = 0 if i < 15: basementVar = 1 panelAVar = 0 if i%3 ==0 and i>15: panelAVar =1 panelBVar = 0 if i > 15: panelBVar = 1 myPanel(panel, basement = basementVar, panelA = panelAVar, panelB = panelBVar, auskrag = 50) #____________________________:here you end ################################# #rs.ZoomExtents() rs.EnableRedraw(1) ### 4 the MACs dm.printDisplay(1) dm.newEmptyLayer("Default")