################################### ### 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:/") ### sys.path.append("P:/WWW/ge84lid/dm2/") ### sys.path.append("C:/Users/hanna/UNI/5.semester/K_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(), "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] topPanels = UnoPanelCoords[5] ################################# dm.newEmptyLayer("myPROJ") ### Front / Back Panels def Panels_Vorne(panel, sockel=0, divi=4, cnt=0): p0, p1, p2, p3 = panel if sockel: vecVertical = rs.VectorSubtract(p1, p0) # Vertikaler Vektor vU = rs.AddLine(p0, p3) # Untere horizontale Linie vO = rs.AddLine(p1, p2) # Obere horizontale Linie vR = rs.AddLine(p0, p1) # Rechte vertikale Linie vL = rs.AddLine(p3, p2) # Linke vertikale Linie coordsU = rs.DivideCurve(vU, (divi-1)*2, 0) # Unterteilt die untere Linie (vU) in gleichmaessige Punkte coordsU = [ cor for i,cor in enumerate(coordsU) if i%2==0] # Bezieht nur die alternierenden Punkte (jedes zweite) for cor in coordsU: rs.AddLine(cor, rs.VectorAdd(cor, vecVertical) ) # Fuer jeden alternierenden Punkt wird eine Linie nach oben gezeichnet rs.HideObject(rs.AllObjects()[0:5]) # Versteckt die erzeugten Linien coordsO = rs.DivideCurve(vO, (divi-1)*2, 0) coordsO = [ cor for i,cor in enumerate(coordsO) if i%2==0] for i in range(divi): sockel = rs.AddLine(coordsU[i], coordsO[i]) rs.ObjectName(sockel, "sockel") else: vecVertical = rs.VectorSubtract(p1, p0) vecHorizontal = rs.VectorSubtract(p3, p0) vU = rs.AddLine(p0, p3) vO = rs.AddLine(p1, p2) vR = rs.AddLine(p0, p1) vL = rs.AddLine(p3, p2) rs.HideObject(rs.AllObjects()[0:4]) coordsU = rs.DivideCurve(vU, (divi-1)*2, 0) rs.HideObject(vU) coordsU = [cor for i,cor in enumerate(coordsU) if i%2==0] for cor in coordsU: pass #rs.AddLine(cor, rs.VectorAdd(cor, vecVertical) ) coordsO = rs.DivideCurve(vO, (divi-1)*2, 0) coordsO = [cor for i,cor in enumerate(coordsO) if i%2==0] for i in range(divi): dir = cnt%2 if i % 2 == 0: dir = 1 else: dir = -1 if cnt%2: ### 0 oda 1 dir *=-1 rs.AddLine(coordsU[i], coordsO[i]) coords = rs.DivideCurve(rs.AllObjects()[0], (divi+0)*2, 0)[0:] rs.HideObject(rs.AllObjects()[0:1]) cor_0 = [coords[0]] cor_E = coords[-1] coords = [cor for i,cor in enumerate(coords) if i%2==1] cor_0.extend(coords) coords = cor_0[:] coords.append(cor_E) #print divi, len(coords) for s in range(1, divi+1, 1): if s%2==1: coords[s] = rs.VectorAdd(coords[s], dVec*dir) else: coords[s] = rs.VectorAdd(coords[s], -dVec*dir) kett = rs.AddCurve( coords, 1) rs.ObjectName(kett, "kettfaden") coordsR = rs.DivideCurve(vR, divi*2, 0) coordsR = [cor for i,cor in enumerate(coordsR) if i%2==1] for cor in coordsR: pass #rs.AddLine(cor, rs.VectorAdd(cor, vecHorizontal) ) coordsL = rs.DivideCurve(vL, divi*2, 0) coordsL = [cor for i,cor in enumerate(coordsL) if i%2==1] for i in range(divi): rs.AddLine(coordsR[i], coordsL[i]) coords = rs.DivideCurve(rs.AllObjects()[0], divi-1, 0) rs.HideObject(rs.AllObjects()[0:1]) #dm.textDots(coords) dir = cnt%2 if i % 2 == 0: dir = -1 else: dir = 1 if cnt%2: ### 0 oda 1 dir *=-1 for s in range(divi): if s%2==0: coords[s] = rs.VectorAdd(coords[s], dVec*dir) else: coords[s] = rs.VectorAdd(coords[s], -dVec*dir) schuss = rs.AddCurve( coords, 1) rs.ObjectName(schuss, "schussfaden") ### Side Panels def Panels_Seiten(panel, sockel=0, divi=8, cnt=0): p0, p1, p2, p3 = panel if sockel: pass else: vecVertical = rs.VectorSubtract(p1, p0) vecHorizontal = rs.VectorSubtract(p3, p0) vU = rs.AddLine(p0, p3) vO = rs.AddLine(p1, p2) vR = rs.AddLine(p0, p1) vL = rs.AddLine(p3, p2) rs.HideObject(rs.AllObjects()[0:4]) coordsR = rs.DivideCurve(vR, divi*2, 0) coordsR = [ cor for i,cor in enumerate(coordsR) if i%2==1] coordsL = rs.DivideCurve(vL, divi*2, 0) coordsL = [ cor for i,cor in enumerate(coordsL) if i%2==1] for i in range( divi ): rs.AddLine( coordsR[i], coordsL[i] ) coords = rs.DivideCurve(rs.AllObjects()[0], divi, 0) rs.DeleteObject(rs.AllObjects()[0]) dir = 1 if i%2==0: dir = -1 for s in range(divi+1): if s%2==0: coords[s] = rs.VectorAdd(coords[s], dVec*dir) else: coords[s] = rs.VectorAdd(coords[s], -dVec*(dir-1)) schuss = rs.AddCurve( coords, 1) rs.ObjectName( schuss, "schussfaden") ### Top Panels def Panels_Oben(panel, sockel=0, divi=8, cnt=0): p0, p1, p2, p3 = panel vecVertical = rs.VectorSubtract(p1, p0) vecHorizontal = rs.VectorSubtract(p3, p0) vU = rs.AddLine(p0, p3) vO = rs.AddLine(p1, p2) vR = rs.AddLine(p0, p1) vL = rs.AddLine(p3, p2) rs.HideObject(rs.AllObjects()[0:4]) coordsR = rs.DivideCurve(vR, (divi-1)*2, 0) coordsR = [ cor for i,cor in enumerate(coordsR) if i%2==0] coordsL = rs.DivideCurve(vL, (divi-1)*2, 0) coordsL = [ cor for i,cor in enumerate(coordsL) if i%2==0] for i in range( divi ): rs.AddLine( coordsR[i], coordsL[i] ) coords = rs.DivideCurve(rs.AllObjects()[0], divi, 0) rs.DeleteObject(rs.AllObjects()[0]) kett = rs.AddCurve( coords, 1) rs.ObjectName(kett, "kettfaden") diviVal = 8 sockelFac = 2 # Front Panels if 1: for i, panel in enumerate(frontPanels[0:]): Panels_Vorne(panel, sockel=(i < 10 * sockelFac), cnt=i, divi=diviVal) if i%40==0: rs.Redraw() if 1: for i, panel in enumerate(backPanels[0:]): Panels_Vorne(panel, sockel=(i < 10 * sockelFac), cnt=i, divi=diviVal) if i%40==0: rs.Redraw() # Side Panels if 1: for i, panel in enumerate(sidePanels[0:]): Panels_Seiten(panel, sockel=(i < 3 * sockelFac), cnt=i, divi=diviVal) if 1: for i, panel in enumerate(upSidePanels[0:]): Panels_Seiten(panel, sockel=(i < 3 * sockelFac), cnt=i, divi=diviVal) # Top Panels if 1: for i, panel in enumerate(topPanels): Panels_Oben(panel, cnt=i, divi=diviVal) dm.eDup(1) dm.printDisplay(0) kettfaden = rs.ObjectsByName("kett*")+rs.ObjectsByName("sockel*") ketts = rs.JoinCurves(kettfaden, delete_input=1) schussfaden = rs.ObjectsByName("schuss*") schuss = rs.JoinCurves(schussfaden, delete_input=True) for crv in ketts: rs.RebuildCurve(crv, degree=3, point_count=rs.CurvePointCount(crv)) rs.ObjectColor(crv, [105,139,34]) rs.ObjectPrintWidth(crv, width=3) rs.ObjectName( crv, "kettfaden") for crv in schuss: rs.RebuildCurve(crv, degree=3, point_count=rs.CurvePointCount(crv)) rs.ObjectColor(crv, [71,60,139]) rs.ObjectPrintWidth(crv, width=3) rs.ObjectName( crv, "schussfaden")