################################### #### DM2_W24 #### Sophie Kosak #### ### Final UN_headquaters NYC ### ################################### ############################## import rhinoscriptsyntax as rs import random, time, sys ### sys.path.append("P:/") ### sys.path.append("D:/PY/") 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.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 UnoPanelCoords = dm.getUNpanelCoords(anzL=10*2, anzH=39, anzD=3, stepL=1, stepH=1, stepD=1) ### = standard for hu_06 ########################################################################################### ########################################################## frontPanels = UnoPanelCoords[0] ### list of coordLists ! backPanels = UnoPanelCoords[1] sidePanels = UnoPanelCoords[2] upSidePanels = UnoPanelCoords[3] allPanels = UnoPanelCoords[4] ################################# #print len(frontPanels) 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,110,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 ) #rs.AddPoints(UnoGridCoords) L = 11*2 H = 40*2 fH= 2.0 UnoGridCoords = dm.getUnoGridCoords(L=L, D=4, H=H, fH =fH) print "len(UnoGridCoords) =", len(UnoGridCoords) #rs.AddPoints(UnoGridCoords) def getUnoCoord( l, d, h ): if l >= L or d >= D or h >= H or l<0 or d<0 or h<0: #print "*** getUnoCoord: any parameter too big or neg:",l,d,h,"? ______________***" #return UnoGridCoords[ 0 ] return [0,0,0] else: #print "index :", l + d*L + h*D*L return UnoGridCoords[ l + d*L + h*D*L ] ################# ### abbreveation: def gC (l=1, d=2, h=3): cor = getUnoCoord(l, d, h) return cor ## rs.AddPoint( gC(1,0,1) ) ################# #_____________________________here you go: dm.newEmptyLayer("myPROJ", [140,100,100]) allCoords = [] lastVals = [] levels = range(0,10,1) #levels.reverse() print "Levels:", levels def makeStamm(level=0): global lastVals #print lastVals, ">>", sX = lastVals[-1][0]#+ random.randint(-level, level) eX = lastVals[-1][0]+int(random.randint(-level, level)*0.7) ### "breite baumKrone" hX = lastVals[-1][1] + levels[-1-level] - 5+level*1 + random.randint(-0,0) if sX < 1: sX=0 if eX < 1: eX=0 if sX > 20: sX=21 if eX > 20: eX=21 if hX > 78: hX=78 p0 = gC( sX, 0, h=lastVals[-1][1]) p1 = gC( eX, 0, h=hX) #rs.AddLine( p0, p1) allCoords.append( p1 ) lastVals.append([eX, hX]) #print lastVals #rs.AddPoint( p0 ) ##Baum #lastVals = [[random.randint(4,17),0]] a=3 #for b in range(a, 22-a, a+1): ### Anzahl Baeume halbeHoehe = gC( 0, 0, 39)[2] print "HalbeHoehe:", halbeHoehe baeumeStart = [9,12] for b in baeumeStart: ### Anzahl Baeume for x in range(25): ## Veraestelung lastVals = [[b, random.randint(0,2)]] allCoords = [ gC( lastVals[-1][0], 0, h=0) ] #allCoords = [] for lev in range(8): ## Hoehe makeStamm(level=levels[lev]) allCoords = [ rs.VectorAdd(cor, rs.VectorScale(dVec, random.uniform(dm.reMap(cor[2], 0, 62, -2,-12), 0))) for cor in allCoords ] #Relief in Staerke allCoords = [ rs.VectorAdd(cor, rs.VectorScale(lVec, random.uniform(-1,1))) for cor in allCoords ] #Relief in Breite crv = rs.AddCurve( allCoords, 1 ) rs.ObjectName( crv, "Baum_unten") exploded = rs.ExplodeCurves( [crv], delete_input=1 ) rs.ObjectName( exploded, "Baum_unten") #Linienstaerke des Baum_unten #rs.SelectObject( exploded[-1] ) pOben = rs.CurveEndPoint( exploded[-1] ) maxZ = allCoords[-1][2] for exp in exploded: zVal = rs.CurveEndPoint(exp)[2] widX = dm.reMap(zVal, 0, maxZ, 3.0, 0.3) #Linienstaerke colX = int(dm.reMap(zVal, 20, maxZ, 130, 145, limit=1)) #Farbverlauf rs.ObjectPrintWidth( exp, widX) rs.ObjectColor( exp, [135, colX, 135] )#Basis Farbe #Baeume gespiegelt allCoordsOben = allCoords[:] allCoordsOben.reverse() # diff = (halbeHoehe-cor[2])*2 allCoordsOben = [rs.VectorAdd(cor, [0,0,(halbeHoehe-cor[2])*2]) for cor in allCoordsOben ] crv = rs.AddCurve( allCoordsOben, 1 ) rs.ObjectName( crv, "Baum_Oben") exploded = rs.ExplodeCurves([crv], delete_input=1) #Linienstaerke des Baum_oben # rs.SelectObject( exploded[0] ) pOben = rs.CurveStartPoint( exploded[0] ) pGanzOben = rs.CurveEndPoint( exploded[0] ) maxZ = pGanzOben[2] minZ = pOben[2] # rs.AddLine( [0,0,0], pOben ) maxZ = 156 for exp in exploded: zVal = rs.CurveStartPoint(exp)[2] widX = dm.reMap(zVal, minZ, maxZ, 0.3, 3) #Linienstaerke colX = int(dm.reMap(zVal, maxZ, 70, 130, 145, limit=1)) #Farbverlauf rs.ObjectPrintWidth( exp, widX) rs.ObjectColor( exp, [135, colX, 135] ) #Basis Farbe #Verbindung zwischen Baeumen #rs.HideObjects( rs.ObjectsByName("baum_*") ) #coordsUnten_Oben = allCoords+allCoordsOben #rs.AddCurve( coordsUnten_Oben, 2) #print len( allCoords ) #rs.RebuildCurve(crv, degree=2, point_count=len( allCoords )*1) #Rundboegen innen-rechts if 1: hBogen = 12 p0 = gC( baeumeStart[0]-4, 0, h = 0) p1 = gC( baeumeStart[0]-4, 0, h = hBogen) p2 = gC( baeumeStart[0]-1, 0, h = hBogen) p3 = gC( baeumeStart[0]-1, 0, h = 0) midPnt = dm.pntInbetween(p1, p2) p01 = dm.pntInbetween(p0, p1) p23 = dm.pntInbetween(p3, p2) coords = [p0, p1, p2, p3] #rs.AddPoints( coords ) #rs.AddCurve( coords, 1 ) crv = rs.AddCurve( coords, 2 ) rs.ObjectName( crv, "Rundboegen_innen-rechts") rs.ObjectColor(crv, [0, 0, 0]) #Bogenschirm nVec = dm.normVec3pnts( p0, p1, p2) zCor = p0[2] auskrag = dm.reMap(zCor, 0, 156, 5.0, 5.0) nVec = rs.VectorScale( nVec, auskrag) midPnt = rs.VectorAdd(midPnt, nVec) bogen = rs.AddCurve([p0, p01, midPnt, p23, p3], 2) rs.ObjectColor(bogen, [0, 0, 0]) #Verbindung Bogen-Bogenschirm anzPts = int(rs.CurveLength( bogen ))*5 print "anzPts:", anzPts coordsOnBogen = rs.DivideCurve(bogen, anzPts, 0) coordsOnCrv = rs.DivideCurve(crv, anzPts, 0) for i in range(0, anzPts+1): connectedLines = rs.AddCurve( [coordsOnBogen[i], coordsOnCrv[i]] ) rs.ObjectColor(connectedLines, [137, 137, 137]) #Oben p0 = gC( baeumeStart[0]-4, 0, h = 39*2) p1 = gC( baeumeStart[0]-4, 0, h = 39*2-hBogen) p2 = gC( baeumeStart[0]-1, 0, h = 39*2-hBogen) p3 = gC( baeumeStart[0]-1, 0, h = 39*2) midPnt = dm.pntInbetween(p1, p2) p01 = dm.pntInbetween(p0, p1) p23 = dm.pntInbetween(p3, p2) coords = [p0, p1, p2, p3] #rs.AddPoints( coords ) #rs.AddCurve( coords, 1 ) crv = rs.AddCurve( coords, 2 ) rs.ObjectName( crv, "Rundboegen_innen-rechts_Oben") rs.ObjectColor(crv, [0, 0, 0]) #Bogenschirm nVec = dm.normVec3pnts( p0, p1, p2) zCor = p0[2] auskrag = dm.reMap(zCor, 0, 156, -5.0, -5.0) nVec = rs.VectorScale( nVec, auskrag) midPnt = rs.VectorAdd(midPnt, nVec) bogen = rs.AddCurve([p0, p01, midPnt, p23, p3], 2) rs.ObjectColor(bogen, [0, 0, 0]) #Verbindung Bogen-Bogenschirm anzPts = int(rs.CurveLength( bogen ))*5 coordsOnBogen = rs.DivideCurve(bogen, anzPts, 0) coordsOnCrv = rs.DivideCurve(crv, anzPts, 0) for i in range(0, anzPts+1): connectedLines = rs.AddCurve( [coordsOnBogen[i], coordsOnCrv[i]] ) rs.ObjectColor(connectedLines, [137, 137, 137]) #Rundboegen aussen-rechts if 1: hBogen = 18 p0 = gC( baeumeStart[0]-9, 0, h = hBogen) p1 = gC( baeumeStart[0]-6, 0, h = hBogen) p2 = gC( baeumeStart[0]-6, 0, h = 0) coords = [p0, p1, p2] #rs.AddPoints( coords ) #rs.AddCurve( coords, 1 ) crv = rs.AddCurve( coords, 2 ) rs.ObjectName( crv, "Rundboegen_aussen-rechts") rs.ObjectColor(crv, [0, 0, 0]) #Bogenschirm nVec = dm.normVec3pnts( p0, p1, p2) zCor = p0[2] auskrag = dm.reMap(zCor, 0, 156, 5.0, 5.0) nVec = rs.VectorScale( nVec, auskrag) p0 = rs.VectorAdd(p0, nVec) HalbBogen = rs.AddCurve([p0, p1, p2], 2) rs.ObjectColor(HalbBogen, [0, 0, 0]) #Verbindung Bogen-Bogenschirm anzPts = int(rs.CurveLength( bogen ))*4 coordsOnHalbBogen = rs.DivideCurve(HalbBogen, anzPts, 0) coordsOnCrv = rs.DivideCurve(crv, anzPts, 0) for i in range(0, anzPts+1): connectedLines = rs.AddCurve( [coordsOnHalbBogen[i], coordsOnCrv[i]] ) rs.ObjectColor(connectedLines, [137, 137, 137]) #Oben p0 = gC( baeumeStart[0]-9, 0, h = 39*2-hBogen) p1 = gC( baeumeStart[0]-6, 0, h = 39*2-hBogen) p2 = gC( baeumeStart[0]-6, 0, h = 39*2) coords = [p0, p1, p2] #rs.AddPoints( coords ) #rs.AddCurve( coords, 1 ) crv = rs.AddCurve( coords, 2 ) rs.ObjectName( crv, "Rundboegen_aussen-rechts_Oben") rs.ObjectColor(crv, [0, 0, 0]) #Bogenschirm nVec = dm.normVec3pnts( p0, p1, p2) zCor = p0[2] auskrag = dm.reMap(zCor, 0, 156, -5.0, -5.0) nVec = rs.VectorScale( nVec, auskrag) p0 = rs.VectorAdd(p0, nVec) HalbBogen = rs.AddCurve([p0, p1, p2], 2) rs.ObjectColor(HalbBogen, [0, 0, 0]) #Verbindung Bogen-Bogenschirm anzPts = int(rs.CurveLength( bogen ))*4 coordsOnHalbBogen = rs.DivideCurve(HalbBogen, anzPts, 0) coordsOnCrv = rs.DivideCurve(crv, anzPts, 0) for i in range(0, anzPts+1): connectedLines = rs.AddCurve( [coordsOnHalbBogen[i], coordsOnCrv[i]] ) rs.ObjectColor(connectedLines, [137, 137, 137]) ##Rundboegen innen-links if 1: hBogen = 12 p0 = gC( baeumeStart[1]+1, 0, h = 0) p1 = gC( baeumeStart[1]+1, 0, h = hBogen) p2 = gC( baeumeStart[1]+4, 0, h = hBogen) p3 = gC( baeumeStart[1]+4, 0, h = 0) midPnt = dm.pntInbetween(p1, p2) p01 = dm.pntInbetween(p0, p1) p23 = dm.pntInbetween(p3, p2) coords = [p0, p1, p2, p3] #rs.AddPoints( coords ) #rs.AddCurve( coords, 1 ) crv = rs.AddCurve( coords, 2 ) rs.ObjectName( crv, "Rundboegen_innen-links") rs.ObjectColor(crv, [0, 0, 0]) #Bogenschirm nVec = dm.normVec3pnts( p0, p1, p2) zCor = p0[2] auskrag = dm.reMap(zCor, 0, 156, 5.0, 5.0) nVec = rs.VectorScale( nVec, auskrag) midPnt = rs.VectorAdd(midPnt, nVec) bogen = rs.AddCurve([p0, p01, midPnt, p23, p3], 2) rs.ObjectColor(bogen, [0, 0, 0]) #Verbindung Bogen-Bogenschirm anzPts = int(rs.CurveLength( bogen ))*5 coordsOnBogen = rs.DivideCurve(bogen, anzPts, 0) coordsOnCrv = rs.DivideCurve(crv, anzPts, 0) for i in range(0, anzPts+1): connectedLines = rs.AddCurve( [coordsOnBogen[i], coordsOnCrv[i]] ) rs.ObjectColor(connectedLines, [137, 137, 137]) #Oben p0 = gC( baeumeStart[1]+1, 0, h = 39*2) p1 = gC( baeumeStart[1]+1, 0, h = 39*2-hBogen) p2 = gC( baeumeStart[1]+4, 0, h = 39*2-hBogen) p3 = gC( baeumeStart[1]+4, 0, h = 39*2) midPnt = dm.pntInbetween(p1, p2) p01 = dm.pntInbetween(p0, p1) p23 = dm.pntInbetween(p3, p2) coords = [p0, p1, p2, p3] #rs.AddPoints( coords ) #rs.AddCurve( coords, 1 ) crv = rs.AddCurve( coords, 2 ) rs.ObjectName( crv, "Rundboegen_innen-links_Oben") rs.ObjectColor(crv, [0, 0, 0]) #Bogenschirm nVec = dm.normVec3pnts( p0, p1, p2) zCor = p0[2] auskrag = dm.reMap(zCor, 0, 156, -5.0, -5.0) nVec = rs.VectorScale( nVec, auskrag) midPnt = rs.VectorAdd(midPnt, nVec) bogen = rs.AddCurve([p0, p01, midPnt, p23, p3], 2) rs.ObjectColor(bogen, [0, 0, 0]) #Verbindung Bogen-Bogenschirm anzPts = int(rs.CurveLength( bogen ))*5 coordsOnBogen = rs.DivideCurve(bogen, anzPts, 0) coordsOnCrv = rs.DivideCurve(crv, anzPts, 0) for i in range(0, anzPts+1): connectedLines = rs.AddCurve( [coordsOnBogen[i], coordsOnCrv[i]] ) rs.ObjectColor(connectedLines, [137, 137, 137]) #Rundboegen aussen-links if 1: hBogen = 18 p0 = gC( baeumeStart[1]+6, 0, 0) p1 = gC( baeumeStart[1]+6, 0, h = hBogen) p2 = gC( baeumeStart[1]+9, 0, h = hBogen) coords = [p0, p1, p2] #rs.AddPoints( coords ) #rs.AddCurve( coords, 1 ) crv = rs.AddCurve( coords, 2 ) rs.ObjectName( crv, "Rundboegen_aussen-links") rs.ObjectColor(crv, [0, 0, 0]) #Bogenschirm nVec = dm.normVec3pnts( p0, p1, p2) zCor = p0[2] auskrag = dm.reMap(zCor, 0, 156, 5.0, 5.0) nVec = rs.VectorScale( nVec, auskrag) p2 = rs.VectorAdd(p2, nVec) HalbBogen = rs.AddCurve([p0, p1, p2], 2) rs.ObjectColor(HalbBogen, [0, 0, 0]) #Verbindung Bogen-Bogenschirm anzPts = int(rs.CurveLength( bogen ))*4 coordsOnHalbBogen = rs.DivideCurve(HalbBogen, anzPts, 0) coordsOnCrv = rs.DivideCurve(crv, anzPts, 0) for i in range(0, anzPts+1): connectedLines = rs.AddCurve( [coordsOnHalbBogen[i], coordsOnCrv[i]] ) rs.ObjectColor(connectedLines, [137, 137, 137]) #Oben p0 = gC( baeumeStart[1]+6, 0, h = 39*2) p1 = gC( baeumeStart[1]+6, 0, h = 39*2-hBogen) p2 = gC( baeumeStart[1]+9, 0, h = 39*2-hBogen) coords = [p0, p1, p2] #rs.AddPoints( coords ) #rs.AddCurve( coords, 1 ) crv = rs.AddCurve( coords, 2 ) rs.ObjectName( crv, "Rundboegen_aussen-links_Oben") rs.ObjectColor(crv, [0, 0, 0]) #Bogenschirm nVec = dm.normVec3pnts( p0, p1, p2) zCor = p0[2] auskrag = dm.reMap(zCor, 0, 156, -5.0, -5.0) nVec = rs.VectorScale( nVec, auskrag) p2 = rs.VectorAdd(p2, nVec) HalbBogen = rs.AddCurve([p0, p1, p2], 2) rs.ObjectColor(HalbBogen, [0, 0, 0]) #Verbindung Bogen-Bogenschirm anzPts = int(rs.CurveLength( bogen ))*4 coordsOnHalbBogen = rs.DivideCurve(HalbBogen, anzPts, 0) coordsOnCrv = rs.DivideCurve(crv, anzPts, 0) for i in range(0, anzPts+1): connectedLines = rs.AddCurve( [coordsOnHalbBogen[i], coordsOnCrv[i]] ) rs.ObjectColor(connectedLines, [137, 137, 137]) #Ellipse aussen if 1: planeX = rs.PlaneFromPoints(gC(10,0,39), gC(9,0,39), gC(10,0,40)) ela = rs.AddEllipse(planeX, 38, 8) movVec = rs.VectorScale( dVec, -10.0) rs.MoveObject( ela, movVec ) rs.ObjectColor(ela, [0, 0, 0]) #elm = rs.AddEllipse(planeX, 30, 5) #rs.MoveObject( elm, rs.VectorScale( dVec, -5.0) ) #Ellipse innen planeX = rs.PlaneFromPoints(gC(10,0,39), gC(9,0,39), gC(10,0,40)) eli = rs.AddEllipse(planeX, 34, 6) rs.ObjectColor(eli, [0, 0, 0]) #Ellipse mitte #elm = rs.CopyObject( eli ) elm = rs.AddEllipse(planeX, 35, 6) rs.MoveObject( elm, rs.VectorScale( dVec, -4.0) ) rs.HideObject(elm) rs.ObjectColor(elm, [0, 0, 0]) #Verbindung Ellipse aussen - Ellipse innen anzPts = int(rs.CurveLength( ela )) coordsOnEllipseInnen = rs.DivideCurve(eli, anzPts, 0) coordsOnEllipseAussen = rs.DivideCurve(ela, anzPts, 0) coordsOnEllipseMitte = rs.DivideCurve(elm, anzPts, 0) for i in range(anzPts): connectedLines = rs.AddCurve([coordsOnEllipseInnen[i], coordsOnEllipseMitte[i], coordsOnEllipseAussen[i]]) rs.ObjectColor(connectedLines, [137, 137, 137]) #____________________________:here you end ################################# #rs.ZoomExtents() rs.EnableRedraw(1) ### 4 the MACs dm.printDisplay(1) dm.newEmptyLayer("Default")