######################
# DM2_w21_ue_09      #
# _Fun_With_Sun      #
# tool4_ra           #
##########_basic_setup

###___________________________
import rhinoscriptsyntax as rs
import random
import sys
sys.path.append( "P:/WWW/coburger/dm2" )
import dm2_lib as dm2
###___________________________
reload (dm2)

rs.EnableRedraw(0)                                      # speed up !
rs.UnitSystem(4)                                        # km = 5, meters = 4, cm = 3 etc
rs.Command("-groundplane Options On=No enter enter", 0) # groundplane > 0 = off
rs.ShowGrid(None, 0)                                    # grid > 0 = off
rs.ShowGridAxes(None, 0)                                # y/y/z axen display > 0 = off
rs.ViewDisplayMode(view=None, mode="Rendered")			# shadeMode fuer current view
rs.Command("cplane w t enter", 0)						# cPlane World Top
rs.Command("PrintDisplay State=Off Color=Display Thickness=40 enter", 0)


rs.EnableRedraw(0)
rs.UnselectAllObjects()
dm2.newEmptyLayer( "PROJ::crv", [200,  100, 20] )
dm2.newEmptyLayer( "PROJ::srf", [ 100,  100, 200] )
dm2.newEmptyLayer( "PROJ::tmp",  [140,  120, 140] )
rs.Redraw()
###________________
dm2.ort = "giza"   # for calculation of sun_angles: latitude, longitude and timeZone
dat = dm2.dat

###_________________________# open giza_00_osm.3dm
if 0:
    dm2.newEmptyLayer( "OSM" )
    rs.Command("_-open No \"giza_00.3dm\" _enter _enter", 0)
    rs.ZoomExtents()
    rs.Redraw()
###_________________________#


##################
# list of pyramids
# list_name    "name"      height*)  OSM_ID         *)lt wiki
cheops    =  [ "cheops",    146.60, "4420397"] 
chefren   =  [ "chefren",   143.50, "4420396"]
mykerinos =  [ "mykerinos",  65.00, "4420398"]
henutsen   = [ "henutsen",   29.60, "219797726"]    # Princess: King's daughter: daughter of Khufu (but more likely to be a wife)
meritetis  = [ "meritetis",  30.00, "219797724"]   # King's wife: Wife of Khufu
hetepheres = [ "hetepheres", 30.25, "198032492"]  # Queen HetepheresKing's wife, king's daughter: Wife of Sneferu and mother of Khufu 
khentkawes = [ "khentkawes", 18.50, "73174154"]  # Queen 
queen_A = [ "queen_A", 21.2, "25416060"]        # Queen A
queen_B = [ "queen_B", 21.2, "25416067"]       # Queen B
queen_C = [ "queen_C", 21.2, "25416093"]      # Queen C
##############################################
# collect pyramid_list into one pyramids_list
pyramids = dm2.pyramids

########### 
if 1:   ### generate the pyramid's faces
        ### check the faces's ObjectName
    dm2.newEmptyLayer( "GIZA::pyramids", [140,140,40] )
    dm2.rgbMat2Lay("GIZA::pyramids", 200,200,40, T=0.1, Gloss=0.1, Refl=0.1, matNam="pyraMat" )
    for i in range( len(pyramids) ):
        print pyramids[i][0],":\t",pyramids[i][1], "meters"
        dm2.makePyramid ( NameOrNumber=i, SrfsOrCrvs=0, verbose=0 )
        dm2.zA()
    
    ###########################nota:
    # pyramids[i][0] = name        #
    # pyramids[i][1] = height      #
    # pyramids[i][2] = OSM_ID      #
    # pyramids[i][3] = top_coord   #
    # pyramids[i][4] = baseCoords  #
    ################################



p0 = pyramids[6][3]
p1 = pyramids[3][3]

crv0 =  rs.AddLine(p0, p1)
crv1 =  rs.AddLine(pyramids[1][3], pyramids[0][3])

anz = 8
coords0 = rs.DivideCurve( crv0, anz, 1)
coords1 = rs.DivideCurve( crv1, anz, 1)

allCoords = []
for i in range (anz+1):
    p0 = coords0[i]
    p1 = coords1[i]
    crv =  rs.AddLine(p0, p1)
    coords = rs.DivideCurve(crv, anz, 1)
    rs.DeleteObject(crv)
    allCoords.extend( coords)
    
dm2.textDots( allCoords)

gizaCoords = []
for x in range(anz):
    for y in range(anz):
        y += (anz+1) *x
        p0 = allCoords[y+anz+1]
        p1 = allCoords[y]
        p2 = allCoords[y+1]
        p3 = allCoords[y+anz+2]
        #rs.AddSrfPt( [p0,p1,p2,p3] )
        gizaCoords.append( [p0,p1,p2,p3] )
        
        
#dm2.myGizaPanels

for panel in gizaCoords:
        coords = panel 
        coords.append(coords[0] )
        rs.AddCurve (coords)
        
        
########## EOS
###dm2.eDup()
dm2.printDisplay(1)
rs.CurrentLayer("Default")
