################################### ### DM2_w24 # tanja.konrad@student.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:/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.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) ###_________________________________________# ### 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("myPROJ", [120,120,140]) #print "***\n*** check RHINO 8 SAMMEL-BESTELLUNG / via FakArch / @ https://workdrive.zohopublic.eu/writer/open/8243091847f125bad45ba9abb31e1e1733f3e\n***\n" #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), [200,200,200]) # rs.ObjectColor(rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(0, 1, 0) ), [200,200,200] ) # rs.ObjectColor(rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(1, 0, 0) ), [200,200,200] ) # rs.ObjectColor(rs.AddLine( dm.getUnoCoord(0, 0, 0), dm.getUnoCoord(0, 0, 2) ), [200,200,200] ) # rs.ObjectPrintWidth( rs.AllObjects()[0:4], 1.0 ) # #rs.ZoomExtents() # #for coords in BigPanelCoords[4]: rs.AddCurve( coords, 1 ) if 0: print "len(frontPanels) =", len(frontPanels) dm.textDots( frontPanels[0] ) for coords in frontPanels[0:20]+sidePanels[6:]: pass rs.AddPoints( coords ) rs.AddCurve( coords, 1 ) for coords in BigPanelCoords[1][5:]: pass coords[-1]=coords[random.randint(0,3)] rs.ObjectColor( rs.AddCurve( coords, degree=random.randint(1,3) ), [0,0,0]) rs.Redraw() if 1: ########### ### Random Triangle crv = [] def switch_triangle(p0,p1,p2,p3): zahl = random.randint(0, 3) mp = dm.pntInbetween(p1,p3) if zahl == 0: crv = rs.AddCurve( [p0, p1, mp,p0], 1 ) return crv elif zahl == 1: crv = rs.AddCurve( [p1, p2, mp,p1], 1 ) return crv elif zahl == 2: crv = rs.AddCurve( [p0, p3, mp,p0], 1 ) return crv elif zahl == 3: crv = rs.AddCurve( [p2, p3, mp,p2], 1 ) rs.ObjectPrintWidth( crv, 1.0 ) return crv #############: ### panel_DEF: def myPanel( dach, panel, basement = 0 ): #print "basementVal",basementVal p0, p1, p2, p3 = panel ### get items (==coords) from list nVec = dm.normVec3pnts( p0, p1, p2) zCor = p0[2] auskrag = dm.reMap(zCor, 0, 156, 10.0, -5.0) nVec = rs.VectorScale( nVec, auskrag) if basement != 0: for i in range(2): switch_triangle(p0,p1,p2,p3) rs.ObjectColor( crv, [50,50,50]) else: rs.AddCurve( panel, 1 ) base = rs.AddCurve( [p0, p1, p2, p3, p0], 1) rs.ObjectPrintWidth( base, 1.5 ) rs.ObjectColor( base, [0,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) ) dVec2 = rs.VectorUnitize(rs.VectorSubtract( dm.getUnoCoord(1, 0, 0), dm.getUnoCoord(0, 0, 0) )) p01 = dm.pntInbetween(p0, p1) p02 = dm.pntInbetween(p0, p2) p12 = dm.pntInbetween(p1, p2) #print "dach",dach if dach == 1: p12 = rs.VectorAdd(p12, rs.VectorScale( dVec2, -15.0 ) ) if dach == 2: p12 = rs.VectorAdd(p12, rs.VectorScale( dVec, -15.0 ) ) p23 = dm.pntInbetween(p2, p3) p30 = dm.pntInbetween(p3, p0) p31 = dm.pntInbetween(p3, p1) x = random.randint(0,1) if x == 0: coords = [p30, p01, p12, p23,p30] else: coords = [p01, p12, p23, p01] # innen = rs.AddCurve( coords, 1) for i,cor in enumerate(coords): cor = rs.VectorAdd(cor, nVec) coords[i] = cor aussen = rs.AddCurve( coords, 1) rs.ObjectColor( aussen, [30,30,50]) # rs.ObjectPrintWidth( aussen, 0.75 ) 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) : face = rs.AddCurve( [coordsA[i], coordsB[i]], 1) rs.ObjectColor( face, [80,80,100]) for i,panel in enumerate(frontPanels[:]+sidePanels): pass basementVal = 0 dach = 2 #print "i",i if i<20 or (i>=130 and i<136) or (i>=100 and i<110) or (i>=160 and i<163): basementVal = 1 dach = 0 elif (i>=136 and i<160) or (i>=165 and i<169): # basementVal = 1 dach = 1 elif i%10==0: rs.Redraw() myPanel( dach, panel, basement=basementVal ) ### or: basement=(i<20 or i>=130 and i<136) ################################# #rs.ZoomExtents() rs.EnableRedraw(1) ### 4 the MACs dm.printDisplay(1) dm.newEmptyLayer("Default")