###################################
### DM2_w22 # AGruber@tugraz.at ###
### ue_08 OSM demo 00           ###
###################################


##############################
import rhinoscriptsyntax as rs      ###
import random, time, sys            ###
sys.path.append("P:/")              ### add LW P:/ to rhino's default search path AND
sys.path.append("P:/WWW/default114/dm2/")     ### add YOUR LW P:/WWW/user/ to rhino's default search path ...
import DM2_lib as dm                ### ... thus DM2_lib.py can be found !
import OSM_lib as osm               ### "osm" is alias 4 calling defs @ OSM_lib
##############################      reload (dm)
##############################      
reload (osm)

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(), "Ghosted")
dm.printDisplay(0)                                      # nomen est omen
rs.EnableRedraw(0) ### MAC >> uncomment !

#######################
OSMpath = "P:/WWW/default114/dm2/osmData/"
#######################

#OSMfile = "Howlandinsel.osm"
#OSMfile = "graz_00.osm"
#OSMfile = "pula_sm.osm"
#OSMfile = "NYC_UN_00.osm"       
OSMfile = "NYC_UN_sm.osm"       

osm.move2guinea = 1 ### ???

if 0:
    dm.eAA() # erase absolutely all objects, even hidden & locked
    osm.OSMi(OSMfile, OSMpath, trimBounds=1, do3D=1, minHeight=1.0, heightFac=1.0, randomize=[6.0, 20.0], doAllCurves=1, verbose=0)
    #osm.OSMi(OSMfile, OSMpath)
    #osm.OSM_getBounds(OSMfile, OSMpath, drawRect=1, trim=0, verbose=1)
    osm.OSM_getBounds("NYC_UN_sm.osm", OSMpath, drawRect=1, trim=0, verbose=1)
    rs.ZoomBoundingBox( rs.BoundingBox( rs.ObjectsByName("bounds_*") ) )
    osm.OSM_ID_checker(OSMfile, OSMpath, checkID="377864196", verbose=0) ### Howlandinsel
    print
#rs.LayerVisible("OSM::diverses", 0)
#osm.OSM_ID_checker("pula_sm.osm", OSMpath, checkID="76174055", verbose=1) ### PULA !
#sm.OSM_ID_checker("pula_sm.osm", OSMpath, checkID="136428167", verbose=1) ### PULA !
print

if 1: ### NYC
    osm.OSM_getBounds("NYC_UN_sm.osm", OSMpath, drawRect=1, trim=0, verbose=1)
    coords = osm.OSM_node_checker("NYC_UN_sm.osm", OSMpath, checkKey="coffee", checkVal="coffee", andOr = "or", verbose=0)
    coords.extend( osm.OSM_node_checker("NYC_UN_sm.osm", OSMpath, checkKey="caf", checkVal="caf", andOr = "or", verbose=0))
    
    osm.OSM_markCoords(coords, hig=50, rad=10, lay="_node_marks", color=[0,255,255], doDelete=1)

if 0:
    dat = dm.getDateNow()
    dm.setSun ( year=dat[0], mon=dat[1], day=dat[2], hour=10, min=dat[4], sec=dat[5], verbose=0)
    rs.ViewDisplayMode(rs.CurrentView(), "Rendered")

if 0: ### PULA 
    rs.LayerVisible("OSM", 1)
    dm.newEmptyLayer("PROJ::crv", [100,100,100] )
    arenaOSM = rs.ObjectsByName("_bldg3D_higBy_ran_inner_76174055")[0]
    arenaOSMcoords = dm.getSurfacePoints( arenaOSM )
    print len(arenaOSMcoords)
    arenaBase = rs.ObjectsByName("Wcrv_76174055")[0]
    coordsArenaBase = rs.CurveEditPoints(arenaBase)
    centerArena = dm.pntCentroid( coordsArenaBase )


if 0:
    for obj in rs.ObjectsByLayer("OSM::buildings::_bldg3D_srf"):
        R=random.randint(200,220)
        G=random.randint(200,210)
        B=random.randint(200,210)
        transe = random.uniform(0.7,0.9)
        dm.rgbMat2Obj( obj, R, G, B, T=transe, Gloss=125.0, Refl=0.5 )
    rs.LayerColor("OSM::buildings::_bldg3D_crv", [111, 111, 111] )


#################################
rs.EnableRedraw(1) ### 4 the MACs
dm.printDisplay(1)
dm.PointRadius(2, 2)
dm.eDup(1)
rs.CurrentLayer("Default")

if 0: # the problem of distance_from_guinea
    dm.newEmptyLayer("Default")
    rs.CopyObject( rs.AddLine( [0,0,0], [1400000,0,0] ), [0,0,150000] )
    srf = rs.AddLoftSrf( rs.AllObjects()[0:2] )
    dm.rgbMat2Obj( srf, 100,200,250)
    rs.Command( "ArrayPolar selid "+str(rs.AllObjects()[0])+" enter 0,0,0 12 360 enter", 0 )
    rs.AddCircle( [0,0,0], 1000000 )# 
    rs.MoveObject(rs.AddRectangle(rs.WorldXYPlane(), 2000000,2000000), [-1000000, -1000000, 0])
    rs.ZoomExtents()

