################################### ### 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\ultimum\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*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", [120,120,240]) 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: rs.AddCurve( panel ) for i,panel in enumerate(frontPanels[:]): pass basement = 0 if i<10 or i>119: basement = 1 myPanel( panel, basement = basement ) ### basement = (i<20 or i>109) #rs.Redraw() #_____________________________here you go: dm.newEmptyLayer("myPROJ", [200,100,200]) #rs.AddCurve(frontPanels[0],1) #rs.AddCurve(frontPanels[13],1) #dm.textDots(frontPanels[13]) # def panelAG(panel, normalPanel = 1): p0,p1,p2,p3 = panel nVec = dm.normVec3pnts(p0,p1,p2) # zVal = p0[2] # outVal = dm.reMap(zVal, 0, 156-12, 10,0) # outValD = dm.reMap(zVal, 0, 156-12, 0.5,0.1) # # anzLines = int(dm.reMap(zVal, 0, 156-12, 256,8)) # #rs.AddLine(p0,p2) # p0i = dm.pntInbetween(p0,p1,outValD) # p1i = dm.pntInbetween(p1,p3,outValD) # # outVal *= normalPanel # nVec0 = rs.VectorScale(nVec, outVal) # nVec1 = rs.VectorScale(nVec, outVal) # # # # p1V = rs.VectorAdd(p1i,nVec1) ## rs.AddLine(p0,p3) ## rs.AddLine(p0,p1) ## rs.AddLine(p0V, p1V) # crv = rs.AddCurve([p0,p1,p1V,p0V, p0],1) # crv_1 = rs.AddCurve([p2,p1V,p0V,p3,p2],1) ## rs.AddCurve([p2,p1V,p0V,p3,p2],2) ## rs.AddCurve([p2,p1V,p0V,p3,p2],3) ## rs.AddCurve([p2,p1V,p0V,p3,p2],4) # if not normalPanel: # rs.ObjectColor(crv, [0,200,0]) # rs.ObjectColor(crv_1, [0,200,0]) # rs.ObjectPrintWidth(crv, 1) # rs.ObjectPrintWidth(crv_1, 1) # # anz = 64 # coords = rs.DivideCurve( crv, anz, 0) # for i in range(anzLines*goOut): # rs.AddCurve( [random.choice(coords),random.choice(coords)]) # # # #for i,panel in enumerate (frontPanels+sidePanels): # #rs.AddCurve(panel, 1) # dm.esc() # goOut = 1 # if i<20: # goOut = 0 # # panelAG(panel, normalPanel = goOut) # #rs.Redraw() # #Obere Panele pCen = dm.pntInbetween(p0, p2) pX = [p0,p1,p2,p3] sP =15 sP *= normalPanel pA = rs.VectorAdd (nVec,rs.VectorRotate(dm.pntInbetween(pCen,p0), sP*i, pCen)) dVec = dm.normVec3pnts(pA,p0,p1) pB = rs.VectorAdd(rs.VectorScale(dVec,sP),pA) for x in range(0,3): pC = dm.pntInbetween(pB,pX[x]) crv = [] crv.append(rs.AddLine(pC,p0)) crv.append(rs.AddLine(pC,p1)) crv.append(rs.AddLine(pC,p2)) crv.append(rs.AddLine(p3,pC)) #UnterePanele if not normalPanel: rs.DeleteObjects(crv) oVec = nVec*9 p1F = rs.VectorAdd(oVec,p1) p2F = rs.VectorAdd(oVec,p2) # pZ = [p0,p1F,p2F,p3] #crv2 = rs.AddCurve(pZ,3) crv3 = rs.AddCurve([p0, p1F,p2F,p3,p0],4) rs.AddCurve([p0, p1,p2,p3,p0],1) # rs.AddLine(p0,p3) # rs.AddLine(p1,p2) # rs.AddLine(p2,p3) # rs.AddLine(p0,p1) dCurve = rs.DivideCurve(crv3,8, 0) rs.AddCurve([dCurve[1],pX[1]]) rs.AddCurve([dCurve[7],pX[0]]) rs.AddCurve([dCurve[3],pX[2]]) rs.AddCurve([dCurve[5],pX[3]]) rs.AddCurve([dCurve[2],dm.pntInbetween(p1,p2)]) rs.AddCurve([dCurve[4],dm.pntInbetween(p2,p3)]) rs.AddCurve([dCurve[6],dm.pntInbetween(p3,p0)]) rs.AddCurve([dCurve[0],dm.pntInbetween(p0,p1)]) for x in range(8): crv4 = rs.AddCurve( [dCurve[x],pCen]) #PanelenDarstellung for i,panel in enumerate (frontPanels): dm.esc() goOut = i/80 if i>=90: goOut = i/50 if i<20: goOut = 0 panelAG(panel, normalPanel = goOut) #rs.Redraw() #____________________________:here you end ################################# #rs.ZoomExtents() rs.EnableRedraw(1) ### 4 the MACs dm.printDisplay(1) dm.newEmptyLayer("Default")