################################### ### 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("C:\Users\giulia\Documents\A_STUDIUM\DM_2") ### 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) ###_________________________________________# ### 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] ################################# dm.newEmptyLayer("UNO::setUp", [0,0,0]) if 1: UN=rs.AddCurve([dm.getUnoCoord(0,0,39),dm.getUnoCoord(10,0,39),dm.getUnoCoord(10,0,0),dm.getUnoCoord(0,0,0),dm.getUnoCoord(0,0,39),dm.getUnoCoord(0,3,39),dm.getUnoCoord(10,3,39),dm.getUnoCoord(10,3,0),dm.getUnoCoord(0,3,0),dm.getUnoCoord(0,3,39)],1) rs.ObjectPrintWidth(UN,1.0) rs.ObjectPrintWidth(rs.AddLine(dm.getUnoCoord(10,3,39),dm.getUnoCoord(10,0,39)),1.0) # for coords in BigPanelCoords[0]: rs.AddCurve( coords, 1 ) rs.ZoomExtents() 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 ) if 0: for i,panel in enumerate(frontPanels[:]): pass basement = 0 if i<0: basement = 1 myPanel( panel, basement = basement ) #rs.Redraw() #_____________________________here you go: dm.newEmptyLayer("myPROJ", [0,0,0]) if 1: def myPanel(panel, basement=0): p0,p1,p2,p3=panel nVec=dm.normVec3pnts(p0,p1,p2) auskrag=5.9 zVal=p0[2] auskrag=dm.reMap(zVal,0,156,20,-25) nVec=rs.VectorScale(nVec,auskrag) if basement != 0: multi=0.1 coordsI = [dm.pntInbetween(p0,p2,multi),dm.pntInbetween(p3,p1,multi),dm.pntInbetween(p2,p0,multi),dm.pntInbetween(p1,p3,multi),dm.pntInbetween(p0,p2,multi)] crv1=rs.AddCurve(coordsI,2) rs.ObjectPrintWidth( crv1, 0.2 ) nVec = dm.normVec3pnts( p0, p1, p3,) multi1=0.25 coordsA = [dm.pntInbetween(p0,p2,multi1),dm.pntInbetween(p3,p1,multi1),dm.pntInbetween(p2,p0,multi1),dm.pntInbetween(p1,p3,multi1),dm.pntInbetween(p0,p2,multi1)] for i in range( len(coordsA) ): cor = coordsA[i] cor = rs.VectorAdd( cor, rs.VectorScale(nVec, 20) ) coordsA[i]=cor if i != 0: rs.AddLine( coordsI[i],coordsA[i] ) rs.ObjectPrintWidth(rs.AddCurve( coordsA, 1),0.5) else: pass zVal = p0[2] divi = 0 p00 = dm.pntInbetween(p0, p2, divi ) p10 = dm.pntInbetween(p1, p3, divi ) p20 = dm.pntInbetween(p2, p0, divi ) p30 = dm.pntInbetween(p3, p0, divi ) coordsI=(p00,p10,p20,p30,p00) innen=rs.AddCurve(coordsI,2) rs.ObjectColor(innen,[100,100,100]) zCor=50 anz = int(dm.reMap(zCor, 10, -130, 10, -15)) coordsA = rs.DivideCurve( innen, anz , 0) #OUTPART nVec = dm.normVec3pnts( p0, p1, p2,) SCAL=4 NVEC= rs.VectorScale(nVec,SCAL) #Auskragdisstanz diviO=dm.reMap(zVal,40*3*2,150,1,0.6) p000 = dm.pntInbetween(p0, p2, diviO ) p001 = dm.pntInbetween(p1, p3, diviO ) p002 = dm.pntInbetween(p2, p0, diviO ) p003= dm.pntInbetween(p3, p1, diviO ) coordsA2 = [p000,p002,p001,p003,p000] #Schleife for i,cor10 in enumerate(coordsA2): cor10 = coordsA2[i] cor10 = rs.VectorAdd(cor10, NVEC) coordsA2[i] = cor10 out = rs.AddCurve( coordsA2, 2) rs.ObjectColor(out,[0,0,0]) anz = 50 coordsAUSSEN = rs.DivideCurve( out, anz , 0) coordsINNEN = rs.DivideCurve( innen, anz , 0) for i in range( anz) : rs.ObjectColor(rs.AddCurve( [coordsAUSSEN[i], coordsINNEN[i]],2),[15,10,150]) for i,panel in enumerate(frontPanels): pass basement = 0 if i>20: basement = 0 myPanel( panel, basement = basement ) #rs.Redraw() for i,panel in enumerate(sidePanels): if i<0: basement=0 myPanel( panel, basement = basement ) for i,panel in enumerate(sidePanels): if i>-1: basement=0 myPanel( panel, basement = basement ) #____________________________:here you end ################################# rs.ZoomExtents() rs.EnableRedraw(1) ### 4 the MACs dm.printDisplay(1) dm.newEmptyLayer("Default")