################################################ ####DM2_w24 marin.cakaric@student.tugraz.at#### #################FINAL_PROJECT################## ################################################ ########################################## import rhinoscriptsyntax as rs############ import random, time, sys ############### sys.path.append("P:/WWW/archicak") ### sys.path.append("P:/") ### import DM_lib as dm ### reload( dm )###### ########################################## rs.UnitSystem(4) # meters = 4 rs.ShowGrid(None, 0) rs.ShowGridAxes(None, 1) rs.EnableRedraw(1) currentMode = rs.ViewDisplayMode(rs.CurrentView()) #rs.ViewDisplayMode(rs.CurrentView(), "wireframe") rs.Redraw() ############################## if 1: dm.newEmptyLayer("myProject", [0,200,0]) number = 0 color_0 = [200,0,0] color_1 = [0,0,200] allCoords = [] def makeBlock(position=[0,0,0], raster = 11, anz=18, hoehe=11, farbe=0): coords = [ [raster*x, raster*y, raster*z] for x in range(anz) for y in range(anz) for z in range(hoehe) ] coords = [ rs.VectorAdd(cor, position) for cor in coords ] #pnts = rs.AddPoints( coords ) pnts = rs.AddCurve( coords, 1) if farbe==0: rs.ObjectColor(pnts, color_0) else: rs.ObjectColor(pnts, color_1) rs.ObjectName( pnts, "pnt_"+str(farbe) ) return coords startHoehe = 50 startFarbe = 1 x=1500 y=1150 z=2670 for i in range(22): print i anz = 18 ### def 18 raster = .75 ## def 11 abstand = raster*(anz-1) farbe=1 if i%2==0: farbe=0 if 0= i>=8: x += abstand if 19>i>13: y -= abstand if 21 >= i>=19: x -= abstand coords = makeBlock(position=[x,y,z], hoehe = startHoehe+(i*2), raster=raster, anz=anz, farbe=farbe) allCoords.append(coords) dm.allCoords = allCoords # dm.textDots(allCoords[-1][0:1800] ) # rs.AddPoint(allCoords[0][-1]) print len(allCoords[0]) allCoords = dm.allCoords PIVOT = allCoords[-1][1655] PX = allCoords[0][-1] rs.UnselectAllObjects() dachstein = dm.getSurfacePoints(rs.ObjectsByName("040_1")[0]) dachstein = sorted( dachstein, key=lambda sortKey: (sortKey[2]) )[-1] rs.AddPoint(dachstein) rs.AddLine( dm.pnt2XY0(PIVOT), dm.pnt2XY0(dachstein)) rs.AddLine( dm.pnt2XY0(PIVOT), dm.pnt2XY0(PX)) vec0 = rs.VectorSubtract(PIVOT, dachstein) vec1 = rs.VectorSubtract(PIVOT, PX) angXY = rs.VectorAngle( dm.pnt2XY0(vec0), dm.pnt2XY0(vec1) ) print angXY objects = rs.ObjectsByLayer("myProject") rs.RotateObjects(objects, PIVOT, -180+angXY, [0,0,1] ) dm.setCameraTarget(dachstein, PIVOT)