################################### ### 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:\WWW\lucysday19\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) ###_________________________________________# ### 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, anzH=20, 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 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 ) #_____________________________here you go: dm.newEmptyLayer("myPROJ", [167, 130, 93]) if 0: for coords in BigPanelCoords[4]: pass rs.AddCurve( coords, 1 ) if 1: def myPanel( panel, basement = 0, auskrag = 5 ): p0, p1, p2, p3 = panel #rs.AddLine( p0, p2 ) nVec = dm.normVec3pnts( p0, p1, p2) zCor = p0[2] auskrag = dm.reMap(zCor, 0, 156, 0, 8.0) nVec = rs.VectorScale( nVec, auskrag) if basement != 0: crv = rs.AddCurve( [p0, dm.pntInbetween(p0, p1), dm.pntInbetween(p1, p2, random.uniform(0.4, 0.6)), dm.pntInbetween(p2, p3), p3], 2 ) rs.ObjectPrintWidth( crv, 0.9 ) #Linienstaerke rs.ObjectColor( crv, [0,0,0]) #Farbe else: pass #rs.AddCurve( panel ) p00 = dm.pntInbetween(p0, p2, random.uniform(0.1, 0.2) ) p10 = dm.pntInbetween(p1, p3, random.uniform(0.1, 0.4) ) p20 = dm.pntInbetween(p2, p0, random.uniform(0.1, 0.2) ) p30 = dm.pntInbetween(p3, p1, random.uniform(0.1, 0.4) ) #rs.AddLine( p0, p1 ) coords = [p00, p10, p20, p30, p00] base = rs.AddCurve( [p0, p1, p2, p3, p0], 1) innen = rs.AddCurve( [p00, p10, p20, p30, p00], 1) for i,cor in enumerate(coords): cor = rs.VectorAdd(cor, nVec) coords[i] = cor aussen = rs.AddCurve( coords, 1) anz = int(dm.reMap(zCor, 0, 156, 100, 40)) coordsA = rs.DivideCurve( aussen, anz , 0) coordsB = rs.DivideCurve( base, anz , 0) for i in range( anz) : rs.AddCurve( [coordsA[i], coordsB[i]], 1) # def myPanelBogenUnten( panel, basement = 0, auskrag = 5, randomZahl = 0.5 ): # p0, p1, p2, p3 = panel # #lin = rs.AddLine( p0, p2 ) # #rs.ObjectColor( lin, [200,0,0]) # midPt = dm.pntInbetween(p0, p2, 0.5) # p01 = dm.pntInbetween(p0, p1, random.uniform(0.1, randomZahl)) # p32 = dm.pntInbetween(p3, p2, random.uniform(0.1, randomZahl)) # rs.AddCurve( [p01,p1,p2,p32], 1) # rs.AddCurve( [p01,midPt,p32], 2) if 1: def myPanelBogenUnten( panel, basement = 0, auskrag = 5): p0, p1, p2, p3 = panel nVec = dm.normVec3pnts( p0, p1, p2) zCor = p0[2] auskrag = dm.reMap(zCor, 0, 156, 10.0, 23.0) nVec = rs.VectorScale( nVec, auskrag) #Points midPnt = dm.pntInbetween(p0, p2, random.uniform(0.3, 0.7)) midPnt = rs.VectorAdd(midPnt, nVec) p01 = dm.pntInbetween(p0, p1, random.uniform(0.1, 0.2)) p11 = dm.pntInbetween(p0, p1, 0.8) p12 = dm.pntInbetween(p1, p2, 0.1) p21 = dm.pntInbetween(p2, p1, 0.1) p32 = dm.pntInbetween(p3, p2, random.uniform(0.1, 0.2)) p33 = dm.pntInbetween(p3, p2, 0.8) p03 = dm.pntInbetween(p0, p3, 0.1) p30 = dm.pntInbetween(p3, p0, 0.1) #rs.AddCurve( [p0, p11, p33, p3], 1) rs.AddCurve( [p0, midPnt, p3], 2) bogen = rs.AddCurve( [p0, midPnt, p3], 2) rs.ObjectPrintWidth(bogen, 1.5) rs.ObjectColor(bogen, [0,0,0] ) midBogen = rs.CurveMidPoint(bogen) #rs.AddPoint( midBogen ) rs.AddLine( midBogen, dm.pntInbetween(p11, p33)) coordsOnBogen = rs.DivideCurve(bogen, 80, 0) for cor in coordsOnBogen: fac = random.uniform(0.3, 0.7) connectedLines = rs.AddLine( cor, dm.pntInbetween(p11, p33, fac)) color = random.randint(0,255), random.randint(0,255), random.randint(0,255) rs.ObjectColor(connectedLines, color ) if 1: def myPanelBogenOben( panel, basement = 0, auskrag = 5): p0, p1, p2, p3 = panel nVec = dm.normVec3pnts( p0, p1, p2) zCor = p0[2] auskrag = dm.reMap(zCor, 0, 156, 10.0, 23.0) nVec = rs.VectorScale( nVec, auskrag) p01 = dm.pntInbetween(p0, p1, random.uniform(0.2, 0.5)) midPnt = dm.pntInbetween(p1, p2, random.uniform(0.3, 0.7)) midPnt = rs.VectorAdd(midPnt, nVec) p23 = dm.pntInbetween(p3, p2, random.uniform(0.2, 0.5)) #rs.AddCurve( [p23, p3, p0, p01], 1) rs.AddCurve( [p01, p1, midPnt, p2, p23], 5) bogen = rs.AddCurve( [p01, p1, midPnt, p2, p23], 5) rs.ObjectPrintWidth(bogen, 1.5) rs.ObjectColor(bogen, [0,0,0] ) midBogen = rs.CurveMidPoint(bogen) #rs.AddPoint( midBogen ) rs.AddLine( midBogen, dm.pntInbetween(p3, p0)) coordsOnBogen = rs.DivideCurve(bogen, 100, 0) for cor in coordsOnBogen: fac = random.uniform(0.1, 0.9) connectedLines = rs.AddLine( cor, dm.pntInbetween(p3, p0, fac)) color = random.randint(0,255), random.randint(0,255), random.randint(0,255) rs.ObjectColor(connectedLines, color ) for i,panel in enumerate(frontPanels): pass # randZ = 0.2 basementVar = 0 #Top Panels if i<5: basementVar = 1 #Basis Panels myPanel( panel, basement = basementVar, auskrag = 0 ) if i>4 and i<10 or i>4+2*5 and i<10+2*5 or i>4+4*5 and i<10+4*5: # randZ = 0.8 myPanelBogenUnten(panel) else: pass #myPanel( panel, basement = basementVar, auskrag = 0 ) if i>9 and i<15 or i>9+2*5 and i<15+2*5: myPanelBogenOben(panel) # else: # myPanel( panel, basement = basementVar, auskrag = 0 ) #____________________________:here you end ################################# rs.EnableRedraw(1) ### 4 the MACs dm.printDisplay(1) dm.newEmptyLayer("Default")