###################################
### DM2_w25# Chiara Schoeninger ###
### Johanna Dohnal # Frauenhaus ### 
###################################

##############################
import rhinoscriptsyntax as rs
import random, time, sys   ###
sys.path.append("P:/")     ###
import DM_lib as dm        ###
##############################      

rs.UnitSystem(4)                                            # meters = 4, cm = 3 etc
rs.ShowGrid(None, False)                                    # grid > False = off
rs.ShowGridAxes(None, True)                                 # y/y/z axen display > False/True = off/on
rs.Command("cplane w t enter", False)				        # cPlane World Top

dm.PointRadius(displayModeX=0, rad=3, styl=3)               # 0 => wireframe | info: (.., verbose=1)
dm.PointRadius(displayModeX=1, rad=4, styl=1)               # 1 => shaded    | info: (.., verbose=1)
dm.PointRadius(displayModeX=2, rad=2, styl=0)               # 2 => rendered  | info: (.., verbose=1)
dm.printDisplay(state=True, scale=1000)                     # nomen est omen
rs.EnableRedraw(False)

dm.newEmptyLayer("Frauenhaus", [0, 255, 255])               # macht mir eine neue Leere Layer und loescht alles in ihr

#Brick 
BrickLength = 0.240
BrickDepth = 0.115
BrickHight = 0.2

#upperpoints
#p1 = rs.AddPoint(BrickLength, 0, BrickHight)
#p2 = rs.AddPoint(0, 0, BrickHight)
#p3 = rs.AddPoint(0, BrickDepth, BrickHight)
#p4 = rs.AddPoint(BrickLength, BrickDepth, BrickHight)
#lower
#p5 = rs.AddPoint(BrickLength, 0, 0)
#p6 = rs.AddPoint(0, BrickDepth, 0)
#p7 = rs.AddPoint(BrickLength, BrickDepth, 0)
#p8 = rs.AddPoint(0, 0, 0)



def Brick(p, angel):
    p1 = rs.AddPoint(rs.VectorAdd(p, [BrickLength, 0, BrickHight]))
    p2 = rs.AddPoint(rs.VectorAdd(p, [0, 0, BrickHight]))
    p3 = rs.AddPoint(rs.VectorAdd(p, [0, BrickDepth, BrickHight]))
    p4 = rs.AddPoint(rs.VectorAdd(p, [BrickLength, BrickDepth, BrickHight]))
    p5 = rs.AddPoint(rs.VectorAdd(p, [BrickLength, 0, 0]))
    p6 = rs.AddPoint(rs.VectorAdd(p, [0, BrickDepth, 0]))
    p7 = rs.AddPoint(rs.VectorAdd(p, [BrickLength, BrickDepth, 0]))
    p8 = rs.AddPoint(p)
    
    curve1 = rs.AddCurve([p1, p2],1)
    curve2 = rs.AddCurve([p2, p3],1)
    curve3 = rs.AddCurve([p3, p4],1)
    curve4 = rs.AddCurve([p4, p1],1)
    curve5 = rs.AddCurve([p5, p7],1)
    curve6 = rs.AddCurve([p6, p7],1)
    curve7 = rs.AddCurve([p6, p8],1)
    curve8 = rs.AddCurve([p8, p5],1)
    curve9 = rs.AddCurve([p1, p5],1)
    curve10 = rs.AddCurve([p2, p8],1)
    curve11 = rs.AddCurve([p3, p6],1)
    curve12 = rs.AddCurve([p4, p7],1)
    
    rs.RotateObjects([p1, p2, p3, p4, p5, p6, p7, p8, curve1, curve2, curve3, curve4, curve5, curve6, curve7, curve8, curve9, curve10, curve11, curve12], p8, angel)
    
    rs.Redraw()
    rs.Sleep(0)
    
    return p5
    
def BrickLine(p, angel, amount):
    #endPunktErsterZiegel = Brick(p, angel)
    #endPunktZweiterZiegel = Brick(endPunktErsterZiegel, angel)
    #endPunktDritterZiegel = Brick(endPunktZweiterZiegel, angel)

    for i in range(amount):
        endPointBrick = Brick(p, angel)
        p = endPointBrick
        
    return endPointBrick

def Outline(z):
    endPointBrickLine1 = BrickLine([10, 10, z], 0, 10)
    endPointBrickLine2 = BrickLine(endPointBrickLine1, 90, 1)
    endPointBrickLine3 = BrickLine(endPointBrickLine2, 0, 4)
    endPointBrickLine4 = BrickLine(endPointBrickLine3, -90, 1)
    endPointBrickLine5 = BrickLine(endPointBrickLine4, 0, 10)
    endPointBrickLine6 = BrickLine(endPointBrickLine5, 90, 10)
    endPointBrickLine7 = BrickLine(endPointBrickLine6, 180, 24)
    endPointBrickLine8 = BrickLine(endPointBrickLine7, -90, 10)

z = 0
for i in range(0, 10):
    Outline(z)
    z += BrickHight

# BrickLine([0, 0, 0], 0, 42)



#BrickLine([0, 0, 0], 0)
#BrickLine([0, 2, 0], 0, 10)

#z = 0
#for angle in range(0, 720, 45):
#    Brick([0, 0, z], angle)
#    z += 0.052

#z = 0
#for angle in range(0, 720, 45):
#    BrickLine([0, 0, z], angle, 5)
#    z += 0.15

#Brick([0, 0, 0])
#Brick([0, 0, 1])
#Brick([1, 0, 0])
#Brick([1, 0, 1])

#Brick([0, 1, 0])
#Brick([0.24, 1, 0])
#Brick([0, 1.24, 0])



#Laenge: 240mm
#Breite: 115mm
#Hoehe: 52mm