#################### ## UN_headquaters ## ## basics DM2_w24 ## ## agruber@tugraz.at #################### ############################################## import rhinoscriptsyntax as rs ### import random, time, sys, os ### 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, 0) # y/y/z axen display > 0/1 = off/on rs.ViewDisplayMode(rs.CurrentView(), "wireframe") #rs.ViewDisplayMode(rs.CurrentView(), "ghosted") #rs.ViewDisplayMode(rs.CurrentView(), "rendered") rs.ViewDisplayMode(rs.CurrentView(), "Pen_UNheadquaters") rs.Command("cplane w t enter", 0) # cPlane World Top dm.PointRadius(displayModeX=0, rad=3, styl=3) dm.printDisplay(state=1, scale=400, thickness=100, color='Display') # nomen est omen rs.EnableRedraw(0) dm.getCameraTarget() print #dm.setCameraTarget( [284.51378964, 443.8318043, 186.47666791], [782.89837798, 569.01063032, 80.05870132], lens=50.0, rota=0, upVec=[0,0,1] ) # ... danke, andi ! #dm.setCameraTarget( [461.86263415, 159.58927942, 148.55635538], [782.89837798, 569.01063032, 80.05870132], lens=50.0, rota=0, upVec=[0,0,1] ) # ... danke, andi ! #dm.setCameraTarget( [1110.81082262, 763.48140939, 164.03741677], [758.16891279, 564.78380652, 77.99999999], lens=50.0, rota=0, upVec=[0,0,1] ) # ... danke, andi ! dm.setCameraTarget( [1203.327, 1008.884, 95.553], lens=50.0, rota=0, upVec=[0,0,1] ) # ... danke, andi ! ###_________________________________________# ### 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 dm.UNerror = 0 # # ################ # 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. ################____________________________# dm.newEmptyLayer("Default",) dm.newEmptyLayer("UNO::setUp", [120,120,140]) ################ 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) ) ################ 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 ! if 0: ### SETUP >> dont' exec @ homework ! 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) 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.AddPoints( UnoGridCoords ) #rs.ZoomExtents() frontPanels = UnoPanelCoords[0] backPanels = UnoPanelCoords[1] sidePanels = UnoPanelCoords[2] upSidePanels = UnoPanelCoords[3] topPanels = UnoPanelCoords[5] allPanels = UnoPanelCoords[4] #_____________________________here you go: dm.newEmptyLayer("DEMO", [144,144,144]) def demoPanel( panel, deg = 1): p0,p1,p2,p3 = panel coords = [p0,p1,p2,p3] random.shuffle(coords) rs.AddCurve( coords[0:3], deg) random.shuffle(coords) rs.AddCurve( coords, 1) allPanels = UnoPanelCoords[4] for panel in allPanels: pass #demoPanel( panel, deg = 2) dm.newEmptyLayer("CAGE", [2,2,222]) #rs.PlaneFromPoints(p0, p1, p2) p0 = dm.getUnoCoord(0,0,0) p1 = dm.getUnoCoord(0,1,0) p2 = dm.getUnoCoord(1,0,0) dm.setCplane( p0, p1, p2, verbose=1) x = 1 y = 5*2 z = 5*3 objs = rs.ObjectsByLayer( "myPROJ" ) cageX = dm.cageIt( objs=objs, xDir=2, yDir=y, zDir=z, xDeg=1, yDeg=3, zDeg=3, verbose=0) rs.EnableObjectGrips( cageX, 1) coords = rs.ObjectGripLocations( cageX ) oriCageCoords = coords[:] #dm.textDots( coords ) rs.LayerVisible("DEMO", 0) def randUNvec(L=1, D=1, H=1): vec = rs.VectorAdd( rs.VectorScale(lVec, random.uniform(-L,L)), rs.VectorScale(dVec, random.uniform(D,D))) vec[2] += random.uniform(-H,H) return dm.pnt2cor(vec) path = "C:/animatzi/gewebe/" if not os.path.exists(path): os.makedirs(path) ################## lenX = len(coords) anzGrips = 5 anzGrips = int(lenX*0.3) ### wie viele grips werden bewegt anzSteps = 100 ### frames deltaX = 100/anzSteps retour = 0.5 ### 0.5 >> retour zu ausgangs coords moveLengthFac = 1 ### 1.0 >> retour zu ausgangs coords // moveLength = int(anzSteps - start*moveLengthFac) deltaX = 1 scaleX = 1.2 ################## ################## ################## captureIt = 1 framNr = 0 ################## randGripNums = [ random.randint(0, lenX-1) for i in range(anzGrips) ] ### welche grips werden manipuliert randVecs = [ randUNvec(L=deltaX, D=deltaX*0.5, H=deltaX*0.3) for i in range(anzGrips) ] moveStarts = [ random.randint(int(anzSteps*0.0), int(anzSteps*0.5)) for i in range(anzGrips) ] ### start in 1. haelfte der animatzi moveScales = [ random.uniform(1, scaleX)*random.choice([1, -1]) for i in range(anzGrips) ] print "anzGrips", anzGrips, "von", lenX, "deltaX =", deltaX #print moveStarts rs.CurrentLayer( "Default" ) rs.LayerVisible( "CAGE", 0 ) rs.EnableObjectGrips( cageX, 1) for rnd in range(5): randGripNums = [ random.randint(0, lenX-1) for i in range(anzGrips) ] ### welche grips werden manipuliert randVecs = [ randUNvec(L=deltaX, D=deltaX*0.5, H=deltaX*0.3) for i in range(anzGrips) ] moveStarts = [ random.randint(int(anzSteps*0.0), int(anzSteps*0.5)) for i in range(anzGrips) ] ### start in 1. haelfte der animatzi moveScales = [ random.uniform(1, scaleX)*random.choice([1, -1]) for i in range(anzGrips) ] for step in range(anzSteps-0): dm.esc() print "step", step for grip in range(anzGrips): dm.esc() gripNr = randGripNums[grip] gripVec = randVecs[grip] start = moveStarts[grip] moveLength = int(anzSteps - start*moveLengthFac) #print "start ", start,"len", moveLength if start < step < start+moveLength*retour: gripVec = rs.VectorScale( gripVec, moveScales[grip]*1 ) coords[gripNr] = rs.VectorAdd( coords[gripNr], gripVec ) if start+moveLength*retour < step < start+moveLength: pass gripVec = rs.VectorScale( gripVec, moveScales[grip]*-1 ) coords[gripNr] = rs.VectorAdd( coords[gripNr], gripVec ) coords = [ dm.pnt2cor(cor) for cor in coords ] ### vector >> points3D rs.ObjectGripLocations( cageX, coords ) if step%1==0: rs.Redraw() nam = dm.makeName("gewebe", frameNumber=framNr, anzahl=4, format='jpg') if captureIt: rs.Command("-viewCaptureToFile Width=640 Height=360 Scale=2 DrawCPlaneAxes=No TransparentBackground=No "+path+nam+" ", 0) framNr += 1 dm.getCameraTarget(1) if 0: lenx = len(coords) print lenx, x*y*z indFront = range(y*z) indBack = range(y*z, lenx) dRand = 0.5 randVal = 10 #+dRand*f dFac = 0.5 #0.5 captureIt = 1 framNr = 0 anzFrames = 100 for f in range(anzFrames): #randVal += 0.01 dm.esc() #dm.newEmptyLayer("CAGE", [0,0,200]) #cageX = cageIt( objs=objs, xDir=x, yDir=y, zDir=z, xDeg=2, yDeg=3, zDeg=3, verbose=0) rs.EnableObjectGrips( cageX, 1) ### reset auf original if f < anzFrames*0.75: rs.ObjectGripLocations( cageX, oriCoords ) coords = rs.ObjectGripLocations( cageX ) for i in indFront+indBack: pX = coords[i] zFac = dm.reMap(pX[2], 0, 156, 1.5, 0.1) if random.uniform(0,100) < 10: rndVecL = rs.VectorScale( lVec, random.uniform(-randVal, randVal) ) rndVecD = rs.VectorScale( dVec, random.uniform(-randVal*dFac, randVal*dFac) ) rndVec = rs.VectorAdd( rndVecL, rndVecD ) rndVec = rs.VectorScale( rndVec, zFac ) coords[i] = rs.VectorAdd( coords[i], rndVec ) #coords[i][2] += random.uniform(-randVal*dFac, randVal*dFac) coords[i][2] += random.uniform(-randVal*dFac, randVal*dFac) #rs.ObjectColor( rs.AddPoint( coords[i] ), [0,200,0] ) ##rs.AddLine( pX, coords[i] ) coords = dm.pnts2cors( coords ) rs.ObjectGripLocations( cageX, coords ) rs.EnableObjectGrips( cageX, 0) #rs.HideObject( cageX ) rs.Redraw() nam = dm.makeName("gewebe", frameNumber=framNr, anzahl=4, format='jpg') if captureIt: rs.Command("-viewCaptureToFile Width=640 Height=360 Scale=2 DrawCPlaneAxes=No TransparentBackground=No "+path+nam+" ", 0) framNr += 1 ### hochbiegen der kett_enden unten if 0: for kett in rs.ObjectsByName("kettfaden"): dm.esc() coords = rs.CurveEditPoints( kett ) cap = 0 for i,cor in enumerate(coords): if cor[2] < 1.0: cor[0] += random.uniform(-5, 5) cor[1] += random.uniform(-5, 5) cor[2] = random.uniform(0, 5) cap = 1 coords[i] = cor rs.EnableObjectGrips( kett, 1) rs.ObjectGripLocations( kett, coords) rs.EnableObjectGrips( kett, 0) if captureIt and cap: rs.Redraw() nam = dm.makeName("gewebe", frameNumber=framNr, anzahl=4, format='jpg') rs.Command("-viewCaptureToFile Width=640 Height=360 Scale=2 DrawCPlaneAxes=No TransparentBackground=No "+path+nam+" ", 0) framNr += 1 rs.ShowGrid(None, 0) rs.ShowGridAxes(None, 0) rs.CurrentLayer( "Default" ) #rs.LayerVisible( "CAGE", 1 ) #dm.printDisplay(state=0, scale=500, color='Display') dm.printDisplay(state=0, scale=500, thickness=200, color='Display')