# -*- coding: utf-8 -*-

# Macro Begin
import FreeCAD
from FreeCAD import Placement, Rotation, Vector
import comp                     # eigene Komponenten
from comp import *
import schiebekondensator       # Definitionen und Funktionen
from schiebekondensator import *
#import Part
#import Draft
import matplotlib

doc=FreeCAD.newDocument("SchiebKo")

# Generiere Stator
Stator = MakeStator().fuse(MakeDielektrikum().translate(Vector(0, 0, 1*C_Dicke))) # untere Statorplatte

Stator_m=MakeStator()                           # mittlere Statorplatte
Stator_m=Stator_m.fuse(MakeDielektrikum().translate(Vector(0, 0, 1*C_Dicke)))
Stator_m=Stator_m.fuse(MakeDielektrikum().translate(Vector(0, 0, -D_Dicke)))

Stator_o=MakeStator().fuse(MakeDielektrikum().translate(Vector(0, 0, -D_Dicke))) # obere Statorplatte

for i in range(1,int((Anzahl-1)/2)):
   Stator=Stator.fuse(Stator_m.copy().translate(Vector(0, 0, i*Plattenabstand)))

Stator=Stator.fuse(Stator_o.copy().translate(Vector(0, 0, Plattenabstand*(Anzahl-1)/2)))

# Generiere Schieber
Schieber=MakeSchieber()

for i in range(1,int((Anzahl-1)/2)):
   Schieber=Schieber.fuse(MakeSchieber().translate(Vector(0, 0, i*Plattenabstand)))

# Generiere den Halter für die Trapezgewindemutter
HalterTGM = MakeTGMHalter()

# Generiere die Wände
Wand_vorne  = Vorderwand()      # vordere Wand generieren
Wand_links  = Seitenwand(True)  # linke Wand generieren
Wand_rechts = Seitenwand(False) # rechte Wand generieren

# Füße
Fuss = MakeFuss().translate(Vector(0,0,-Fuss_Hoehe)).fuse(MakeFuss().translate(Vector(0,Halter_Abstand,-Fuss_Hoehe)))
Fuss_3D = MakeFuss().translate(Vector(0,0,0)).fuse(MakeFuss().translate(Vector(0,Fuss_Dicke+2,0)))

# Wände und Referenzschalter positionieren
Wand_links  = Wand_links.translate( Vector(Stepper_PosX-Seitenwand_Laenge, 0,                -Fuss_Hoehe))
Wand_rechts = Wand_rechts.translate(Vector(Stepper_PosX-Seitenwand_Laenge, Halter_Abstand,   -Fuss_Hoehe))
Wand_vorne  = Wand_vorne.translate( Vector(Stepper_PosX-Seitenwand_Laenge, Seitenwand_Dicke, Stapeldicke))
RefSw = RefSwitch().translate(Vector(5, Halter_Abstand, Stapeldicke+5))

# Schieber positionieren
Schieber = Schieber.translate(Vector(PosSchieber,7,Plattenabstand/2))

# Halter für Trapezgewindemutter positionieren
HalterTGM = HalterTGM.translate(Vector(PosSchieber+1,7,Oberkante_Schieber))

# Stepper generieren und positionieren
Stepper = MakeNEMAFlat02().rotate(vec0,vecz, 90).rotate(vec0,vecy, -90).translate(Vector(Stepper_PosX+Stepper_Dicke, Stator_Height/2, 15+Stapeldicke))

# Namen und Farben zuweisen
p1=doc.addObject("Part::Feature")
p1.Shape = Wand_links
p1.ViewObject.ShapeColor=Farbe_Wand
p1.Label="linke Wand"

p1=doc.addObject("Part::Feature")
p1.Shape = Wand_rechts
p1.ViewObject.ShapeColor=Farbe_Wand
p1.Label="rechte Wand"

p1=doc.addObject("Part::Feature")
p1.Shape = Wand_vorne
p1.ViewObject.ShapeColor=Farbe_Wand
p1.Label="vordere Wand"

p1=doc.addObject("Part::Feature")
p1.Shape = Stator
p1.ViewObject.ShapeColor=Farbe_Stator
p1.Label="Stator"

p1=doc.addObject("Part::Feature")
p1.Shape = Schieber
p1.ViewObject.ShapeColor=Farbe_Schieber
p1.Label="Schieber"

p1=doc.addObject("Part::Feature")
p1.Shape = Stepper
p1.ViewObject.ShapeColor=Farbe_Stepper
p1.Label="Stepper"

p1=doc.addObject("Part::Feature")
p1.Shape = RefSw
p1.ViewObject.ShapeColor=Farbe_RefSw
p1.Label="Referenzschalter"

p1=doc.addObject("Part::Feature")
p1.Shape = HalterTGM
p1.ViewObject.ShapeColor=Farbe_HalterTGM
p1.Label="Trapezgewindemutter"

p1=doc.addObject("Part::Feature")
p1.Shape = Fuss
p1.ViewObject.ShapeColor=Farbe_Fuss
p1.Label="Füße"

p1=doc.addObject("Part::Feature")
p1.Shape = Fuss_3D
p1.ViewObject.ShapeColor=Farbe_Fuss
p1.Label="beide Füße für 3D-Druck"

#Part.show(Wand_links)
#Part.show(Wand_rechts)
#Part.show(Wand_vorne)
#Part.show(Stator)
#Part.show(Schieber)
#Part.show(Stepper)
#Part.show(RefSw)
#Part.show(Fuss)
#Part.show(Fuss_3D)
#Part.show(HalterTGM)

doc.recompute()

# Macro End

