################################### ### 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:/") ### 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(), "rendered") 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) alleObjekte = rs.AllObjects() rs.DeleteObjects(alleObjekte) rs.Redraw() ###_________________________________________# ### 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, anzD=3, stepL=1, stepH=3, stepD=1) ### = standard for hu_06 ########################################################################################### ########################################################## frontPanels = UnoPanelCoords[0] ### list of coordLists ! backPanels = UnoPanelCoords[1] sidePanels = UnoPanelCoords[2] upSidePanels = UnoPanelCoords[3] allPanels = UnoPanelCoords[4] ################################# if 0: ### 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), [100,0,200]) 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 ) 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 ! #############: ### panel_DEF: def myPanel( panel, basement = 0 ): p0, p1, p2, p3 = panel ### get items (==coords) from list rs.AddLine( p0, p2 ) if basement: crv = rs.AddCurve( [p0, p1, dm.pntInbetween(p1, p3), p2, p3], 1 ) rs.ObjectPrintWidth( crv, 1 ) rs.ObjectColor( crv, [200,0,0]) else: coords = [p0, p1, p2, p3, p0] rs.AddCurve( coords, 2 ) for i,panel in enumerate(frontPanels[0:50] + sidePanels): pass basement = 0 if i<20 or i>119: basement = 1 myPanel( panel, basement = basement ) ### basement = (i<20 or i>109) #rs.Redraw() #_____________________________here you go: dm.newEmptyLayer("myPROJ", [25,25,112]) if 1: ### Vorderseite Paneele definieren def Panels_Vorne( panel, crvDiv = 32, sockel = 0 ): p0, p1, p2, p3 = panel ## punkte von panel aus liste nVec = dm.normVec3pnts(p0, p1, p2) ## berechnet den normalenvektor aus p0, p1, p2 nachVorne = dm.reMap(p0[2], 0.0, 144.0, 2.0, 1.0) nVec = rs.VectorScale( nVec, nachVorne) if sockel != 0: crv_sockel = rs.AddCurve( [p1, p0, dm.pntInbetween(p1, p2), p3, p2], 1 ) rs.ObjectPrintWidth( crv_sockel, 1 ) rs.ObjectColor( crv_sockel, [25,25,112]) else: cenPt = dm.pntInbetween(p0,p2,0.5) cenPt = rs.VectorAdd(cenPt, nVec) pt01 = dm.pntInbetween(p0,p1,0.5) pt23 = dm.pntInbetween(p2,p3,0.5) #zacke 01 pt03 = dm.pntInbetween(p0,p3,0.5) zNachOben = dm.reMap(p0[2], 0.0, 144.0, 0.5, 4.0) pt03[2] += zNachOben pt03 = rs.VectorAdd(pt03, nVec) nachVorne0 = dm.reMap(p0[2], 0.0, 144.0, 7.0, 3.5) nVec0 = rs.VectorScale( nVec, nachVorne0) pt03 = rs.VectorAdd(pt03, nVec0) crvU = rs.AddCurve( [pt01,pt03,pt23], 1) crvU1 = rs.AddCurve( [pt01,p0,p3,pt23], 1) divi = int(crvDiv*0.5) coords_crvU = rs.DivideCurve(crvU, crvDiv, 0) coords_crvU = rs.DivideCurve(crvU, crvDiv, 0) coords_crvU1 = rs.DivideCurve(crvU1,crvDiv , 0) #for i in range(1, crvDiv): #pA = coords_crvU[i] #pB = coords_crvU1[i] #pD = coords_crvM1[i] #rs.AddLine( pA, pB ) #rs.AddLine( pB, pD ) #zacke 03 pt123 = dm.pntInbetween(p1,pt23,0.5) zNachUnten = dm.reMap(p0[2], 0.0, 144.0, 0.0, 2.5) pt123[2] -= zNachUnten pt123 = rs.VectorAdd(pt123, nVec) nachVorne1 = dm.reMap(p0[2], 0.0, 144.0, 2.5, 0.5) nVec1 = rs.VectorScale( nVec, nachVorne1) pt123 = rs.VectorAdd(pt123, nVec1) #zacke 02 pt023 = dm.pntInbetween(p0,pt23,0.5) zNachOben1 = dm.reMap(p0[2], 0.0, 144.0, 0.0, 2.5) pt023[2] += zNachOben1 pt023 = rs.VectorAdd(pt023, nVec) nachVorne2 = dm.reMap(p0[2], 0.0, 144.0, 3.0, 1.0) nVec2 = rs.VectorScale( nVec, nachVorne2) pt023 = rs.VectorAdd(pt023, nVec2) crvM = rs.AddCurve( [pt01,pt123,pt23], 1) crvM1 = rs.AddCurve( [pt01,pt023,pt23], 1) divi = int(crvDiv*1.3) coords_crvM = rs.DivideCurve(crvM, divi, 0) coords_crvM1 = rs.DivideCurve(crvM1, divi, 0) for i in range(1, crvDiv): pA = coords_crvU[i] pB = coords_crvU1[i] pD = coords_crvM1[i] rs.AddLine( pA, pB ) linInnen = rs.AddLine( pB, pD ) rs.ObjectColor( linInnen, [139,105,105]) #zacke 04 pt12 = dm.pntInbetween(p1,p2,0.5) zNachUnten1 = dm.reMap(p0[2], 0.0, 144.0, 0.5, 4.0) pt12[2] -= zNachUnten1 pt12 = rs.VectorAdd(pt12, nVec) nachVorne3 = dm.reMap(p0[2], 0.0, 144.0, 6.0, 3.0) nVec3 = rs.VectorScale( nVec, nachVorne3) pt12 = rs.VectorAdd(pt12, nVec3) crvO = rs.AddCurve( [pt01,pt12,pt23], 1) crvO1 = rs.AddCurve( [pt01,p1,p2, pt23], 1) coords_crvO = rs.DivideCurve(crvO, crvDiv, 0) coords_crvO1 = rs.DivideCurve(crvO1, crvDiv, 0) for i in range(1, crvDiv): pA = coords_crvO[i] pB = coords_crvO1[i] pC = coords_crvM[i] rs.AddLine( pA, pB ) linInnen = rs.AddLine( pB, pC ) rs.ObjectColor( linInnen, [139,105,105]) #verbindungOben = rs.AddLine( pt12, pt123 ) #rs.ObjectColor( verbindungOben, [0,0,128]) #rs.ObjectPrintWidth( verbindungOben, 0.5) #verbindungUnten = rs.AddLine( pt03, pt023 ) #rs.ObjectColor( verbindungUnten, [0,0,128]) #rs.ObjectPrintWidth( verbindungUnten, 0.5) verbindungMitte = rs.AddLine( pt123, pt023 ) rs.ObjectColor( verbindungMitte, [0,0,128]) rs.ObjectPrintWidth( verbindungMitte, 0.5) verbindungVorne = rs.AddLine( pt03, pt12 ) rs.ObjectColor( verbindungVorne, [0,0,128]) rs.ObjectPrintWidth( verbindungVorne, 0.5) if 1: ### Sockel = Basement/Erdgeschoss for i,panel in enumerate(frontPanels): sockelVal = 0 if i<10: sockelVal = 1 #rs.Redraw() Panels_Vorne( panel, sockel = sockelVal ) if 1: for i,panel in enumerate(backPanels): sockelVal = 0 if i<10: sockelVal = 1 #rs.Redraw() Panels_Vorne( panel, sockel=sockelVal ) if 1: ### Seiten Paneele definieren def Panels_Seiten( Panel, crvDiv = 32, sockel = 0 ): p0, p1, p2, p3 = panel ## punkte von panel aus liste nVec = dm.normVec3pnts(p0, p1, p2) ## berechnet den normalenvektor aus p0, p1, p2 nachVorne = dm.reMap(p0[2], 0.0, 144.0, 2.0, 1.0) nVec = rs.VectorScale( nVec, nachVorne) if sockel != 0: crv_sockel = rs.AddCurve( [p1, p0, dm.pntInbetween(p1, p2), p3, p2], 1 ) rs.ObjectPrintWidth( crv_sockel, 1 ) rs.ObjectColor( crv_sockel, [25,25,112]) else: cenPt = dm.pntInbetween(p0,p2,0.5) cenPt = rs.VectorAdd(cenPt, nVec) pt01 = dm.pntInbetween(p0,p1,0.5) pt23 = dm.pntInbetween(p2,p3,0.5) #zacke 01 pt03 = dm.pntInbetween(p0,p3,0.5) zNachOben = dm.reMap(p0[2], 0.0, 144.0, 0.5, 4.0) pt03[2] += zNachOben pt03 = rs.VectorAdd(pt03, nVec) nachVorne0 = dm.reMap(p0[2], 0.0, 144.0, 5.0, 2.5) nVec0 = rs.VectorScale( nVec, nachVorne0) pt03 = rs.VectorAdd(pt03, nVec0) crvU = rs.AddCurve( [pt01,pt03,pt23], 1) crvU1 = rs.AddCurve( [pt01,p0,p3,pt23], 1) divi = int(crvDiv*0.5) coords_crvU = rs.DivideCurve(crvU, crvDiv, 0) coords_crvU = rs.DivideCurve(crvU, crvDiv, 0) coords_crvU1 = rs.DivideCurve(crvU1,crvDiv , 0) #for i in range(1, crvDiv): #pA = coords_crvU[i] #pB = coords_crvU1[i] #pD = coords_crvM1[i] #rs.AddLine( pA, pB ) #rs.AddLine( pB, pD ) #zacke 03 pt123 = dm.pntInbetween(p1,pt23,0.5) zNachUnten = dm.reMap(p0[2], 0.0, 144.0, 0.0, 2.5) pt123[2] -= zNachUnten pt123 = rs.VectorAdd(pt123, nVec) nachVorne1 = dm.reMap(p0[2], 0.0, 144.0, 2.0, 0.3) nVec1 = rs.VectorScale( nVec, nachVorne1) pt123 = rs.VectorAdd(pt123, nVec1) #zacke 02 pt023 = dm.pntInbetween(p0,pt23,0.5) zNachOben1 = dm.reMap(p0[2], 0.0, 144.0, 0.0, 2.5) pt023[2] += zNachOben1 pt023 = rs.VectorAdd(pt023, nVec) nachVorne2 = dm.reMap(p0[2], 0.0, 144.0, 2.5, 0.7) nVec2 = rs.VectorScale( nVec, nachVorne2) pt023 = rs.VectorAdd(pt023, nVec2) crvM = rs.AddCurve( [pt01,pt123,pt23], 1) crvM1 = rs.AddCurve( [pt01,pt023,pt23], 1) divi = int(crvDiv*1.3) coords_crvM = rs.DivideCurve(crvM, divi, 0) coords_crvM1 = rs.DivideCurve(crvM1, divi, 0) for i in range(1, crvDiv): pA = coords_crvU[i] pB = coords_crvU1[i] pD = coords_crvM1[i] rs.AddLine( pA, pB ) linInnen = rs.AddLine( pB, pD ) rs.ObjectColor( linInnen, [139,105,105]) #zacke 04 pt12 = dm.pntInbetween(p1,p2,0.5) zNachUnten1 = dm.reMap(p0[2], 0.0, 144.0, 0.5, 4.0) pt12[2] -= zNachUnten1 pt12 = rs.VectorAdd(pt12, nVec) nachVorne3 = dm.reMap(p0[2], 0.0, 144.0, 4.5, 2.0) nVec3 = rs.VectorScale( nVec, nachVorne3) pt12 = rs.VectorAdd(pt12, nVec3) crvO = rs.AddCurve( [pt01,pt12,pt23], 1) crvO1 = rs.AddCurve( [pt01,p1,p2, pt23], 1) coords_crvO = rs.DivideCurve(crvO, crvDiv, 0) coords_crvO1 = rs.DivideCurve(crvO1, crvDiv, 0) for i in range(1, crvDiv): pA = coords_crvO[i] pB = coords_crvO1[i] pC = coords_crvM[i] rs.AddLine( pA, pB ) linInnen = rs.AddLine( pB, pC ) rs.ObjectColor( linInnen, [139,105,105]) #verbindungOben = rs.AddLine( pt12, pt123 ) #rs.ObjectColor( verbindungOben, [0,0,128]) #rs.ObjectPrintWidth( verbindungOben, 0.5) #verbindungUnten = rs.AddLine( pt03, pt023 ) #rs.ObjectColor( verbindungUnten, [0,0,128]) #rs.ObjectPrintWidth( verbindungUnten, 0.5) verbindungMitte = rs.AddLine( pt123, pt023 ) rs.ObjectColor( verbindungMitte, [0,0,128]) rs.ObjectPrintWidth( verbindungMitte, 0.5) verbindungVorne = rs.AddLine( pt03, pt12 ) rs.ObjectColor( verbindungVorne, [0,0,128]) rs.ObjectPrintWidth( verbindungVorne, 0.5) if 1: for i,panel in enumerate(sidePanels): sockelVal = 0 if i<3: sockelVal = 1 #rs.Redraw() Panels_Seiten( panel, sockel=sockelVal ) if 1: for i,panel in enumerate(upSidePanels): sockelVal = 0 if i<3: sockelVal = 1 #rs.Redraw() Panels_Seiten( panel, sockel=sockelVal ) #____________________________:here you end ################################# #rs.ZoomExtents() rs.EnableRedraw(1) ### 4 the MACs dm.printDisplay(1) dm.newEmptyLayer("Default")