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

import FreeCAD
from FreeCAD import Placement, Rotation, Vector
import matplotlib
from io import StringIO

Anzahl = 2              # Anzahl der Profile
D_Wand = 3.0            # Stärke der Seitenwand
L_Profil = 30          # Länge des Profils (netto)

doc=FreeCAD.newDocument("Profilgummi_Typ2")

vec0=Vector(0,0,0)      # Nullvektor
vecx=Vector(1,0,0)      # Drehachse x
vecy=Vector(0,1,0)      # Drehachse y
vecz=Vector(0,0,1)      # Drehachse z

# Farben
Farbe_Profil = matplotlib.colors.to_rgb('royalblue')

def MakeProfilgummi(Wanddicke, Laenge, i):
# Profilgummi
   D_oben = 2.0         # Dicke des Gummis auf dem Profil
   H_unten = 4.0        # Höhe im Profil
   B_PG = 6.0           # Gesamtbreite des Profilgummies ab Scheibenmitte
   B_Nut = 6.35         # Breite der Profilnut
   B_D = 1.5            # Dicke des Aluprofils für Rastung
   R_T = 0.5            # Rasttiefe
   R_L = 1.5            # Rastlänge
   D_V = 1.0            # Dicke vorne
   U_Profil = 5         # Überlänge des Profils
   S1 = Part.Shape(
   Part.makePolygon([
   Vector(-B_PG,D_oben,0),
   Vector(-Wanddicke/2,D_oben),
   Vector(-Wanddicke/2,-H_unten,0),
   Vector(-Wanddicke/2-D_V,-H_unten,0),
   Vector(-B_Nut/2,-R_L-B_D,0),
   Vector(-B_Nut/2,-B_D,0),
   Vector(-B_Nut/2+R_T,-B_D,0),
   Vector(-B_Nut/2+R_T,0,0),
   Vector(-B_PG,0,0),
   Vector(-B_PG,D_oben,0)
   ])
   )

   Profilgummi = Part.Face(Part.Wire(S1.Edges)).extrude(Vector(0, 0, Laenge+U_Profil))
   Profilgummi = Profilgummi.translate(Vector(0,i*(H_unten+D_oben+1),0))
   return(Profilgummi)

for i in range (0,Anzahl):
   p = MakeProfilgummi(D_Wand,L_Profil,i)
   if (i == 0):
      Profil = p.copy()
   else:
      Profil = Profil.fuse(p)

output = StringIO()
print("Profilgummi_Typ2-",Anzahl,"x",D_Wand,"x",L_Profil, file=output, sep='', end='')

# Namen und Farben zuweisen
p1=doc.addObject("Part::Feature")
p1.Shape = Profil
p1.ViewObject.ShapeColor=Farbe_Profil
p1.Label=output.getvalue()

view = FreeCADGui.ActiveDocument.ActiveView
view.fitAll()


