Klassen für Mengengeruest sind fertiggestellt. Tests für RSM_Direct, RSM_FA und Flyer_F40 abgeschlossen. Todo: Tests für die letzten Klassen durchführen und TODOs durchsprechen

This commit is contained in:
Simon Schmutzler
2022-03-17 18:07:12 +01:00
parent 8c7b38d0eb
commit 64267c69e2
+507 -186
View File
@@ -7,15 +7,15 @@ import unittest
# Press Umschalt+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
class MG():
def __init__(self, deckblatt:dict):
self.Deckblatt = {
def __init__(self, deckblatt:dict, rsm_direct:dict, rsm_fa:dict, flyer_f40:dict, neuenhauser:dict):
mengen = {
"SYSTEM":"",
"RSM":0,
"Flyer":2,
"Flyer_P":2,
"Flyer_Puffer":2,
"Flyer_Electrojet_incl_intergrierte_Putzmaschine":2,
"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2,
"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2,
"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":3,
"Neuenhauser-Putzmaschine":0,
"Neuenhauser-Putzmaschine_Vorpuffer":0,
"Neuenhauser-Putzmaschine_Nachpuffer":0,
@@ -28,37 +28,57 @@ class MG():
"Turm":0,
"Turm_Anzahl_Wendungen":0,
}
self._RSM_Anzahl = deckblatt.get("RSM", 0)
rsm_direct_mengen = rsm_direct
rsm_direct_mengen["Anzahl"] = self._RSM_Anzahl #übernahme aus deckblatt
rsm_fa_mengen = rsm_fa
rsm_fa_mengen["Anzahl_RSM"] = self._RSM_Anzahl #übernahme aus deckblatt
flyer_f40_mengen = flyer_f40
flyer_f40_mengen["Flyer_Electrojet_incl_intergrierte_Putzmaschine"] = deckblatt.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine", 0) #übernahme aus deckblatt
flyer_f40_mengen["Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer"] = deckblatt.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer", 0) #übernahme aus deckblatt
flyer_f40_mengen["Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer"] = deckblatt.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer", 0) #übernahme aus deckblatt
neuenhauser_mengen = neuenhauser
neuenhauser_mengen["Neuenhauser-Putzmaschine"] = deckblatt.get("Neuenhauser-Putzmaschine", 0)
neuenhauser_mengen["Neuenhauser-Putzmaschine_Vorpuffer"] = deckblatt.get("Neuenhauser-Putzmaschine_Vorpuffer", 0)
neuenhauser_mengen["Neuenhauser-Putzmaschine_Nachpuffer"] = deckblatt.get("Neuenhauser-Putzmaschine_Nachpuffer", 0)
self._rsm_direct = RSM_direct(rsm_direct_mengen)
self._rsm_fa = RSM_FA(rsm_fa_mengen)
self._flyer_f40 = Flyer_F40_EJet_inc_Putz(flyer_f40_mengen)
self._neuenhauser = Putzmaschine_Neuenhauser(neuenhauser_mengen)
# RSM_direct:
class RSM_direct():
def __init__(self, anzahl:dict):
self._Mengen = {
mengen = {
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
"Anzahl":0,
"Anzahl_Strecken/RSM":8,
#"Anzahl_Strecken/RSM":8,
"Sensor_optisch_Traverse":0,
"Lichtschranke_Traverse":0,
"Bedientableau_2-fach":0,
#"Lichtschranke_Traverse":0,
#"Bedientableau_2-fach":0,
"Bedientableau_2-fach_Korrektur":0,
"Bedientableau_2-fach_Direct":0,
"Weiche":0,
#"Bedientableau_2-fach_Direct":0,
#"Weiche":0,
"Weiche_Korrektur":0,
"Weiche_Gemeinsame_Rückstellung":0,
#"Weiche_Gemeinsame_Rückstellung":0,
"Weiche_Gemeinsame_Rückstellung_Korrektur":0,
"RA_bi_abhebbar":0,
#"RA_bi_abhebbar":0,
"RA_bi_abhebbar_Korrektur":0,
"Doppelstreckenantrieb":0,
"gemeinsame_Wendung":0,
"Meldelampe_Überstrom":0,
#"Doppelstreckenantrieb":0,
#"gemeinsame_Wendung":0,
#"Meldelampe_Überstrom":0,
"Meldelampe_Überstrom_Korrektur":0,
"Hauptschalter_Ein-Meldung":0,
#"Hauptschalter_Ein-Meldung":0,
"Hauptschalter_Ein-Meldung_Korrektur":0,
"Werma_Rundumleuchte_Störung":0,
#"Werma_Rundumleuchte_Störung":0,
"Werma_Rundumleuchte_Störung_Korrektur":0,
}
#Berechnungen basieren auf der Anzahl der Ringspinnmaschinen (rsm_anzahl) mit Ausnahme 'Sensor_optisch_Traverse'
#sowie teilweise manueller Eingaben von Korrekturfaktoren, hier mit dem Anhang '_Korrektur'
self._Mengen = {}
self._RSM_Anzahl = anzahl.get("Anzahl", 0)
self._Mengen["Anzahl"] = anzahl.get("Anzahl", 0)
self._Mengen["Anzahl_Strecken/RSM"] = 8
@@ -74,9 +94,9 @@ class RSM_direct():
self._Mengen["RA_bi_abhebbar_Korrektur"] = anzahl.get("RA_bi_abhebbar_Korrektur", 0)
self._Mengen["Doppelstreckenantrieb"] = self._RSM_Anzahl * self._Mengen.get("Anzahl_Strecken/RSM", 0)
self._Mengen["gemeinsame_Wendung"] = math.ceil(self._RSM_Anzahl / 6) * 2
self._Mengen["Meldelampe_Überstrom"] = self._RSM_Anzahl / 8 + anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
self._Mengen["Meldelampe_Überstrom"] = math.ceil(self._RSM_Anzahl / 8) + anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
self._Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
self._Mengen["Hauptschalter_Ein-Meldung"] = self._RSM_Anzahl / 8 + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
self._Mengen["Hauptschalter_Ein-Meldung"] = math.ceil(self._RSM_Anzahl / 8) + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
self._Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
self._Mengen["Werma_Rundumleuchte_Störung"] = math.floor(self._RSM_Anzahl / 5) + anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0)
self._Mengen["Werma_Rundumleuchte_Störung_Korrektur"] = anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0)
@@ -88,41 +108,43 @@ class RSM_direct():
# RSM_FA:
class RSM_FA():
def __init__(self, anzahl:dict):
self.Mengen = {
mengen = {
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
"Anzahl_RSM":0,
#"Automatische_Umfahrung":0, # 'Automatische_Umfahrung' und 'Flex-A_Premium' sind eine Zelle -> identischer Wert
"Flex-A_Premium":False,
"Getriebe_in_der_Mitte":False,
"RSM-Einfahrt_Ein-/Beidseitig":False,
"Sensor_optisch_Traverse":0,
#"Sensor_optisch_Traverse":0,
"Sensor_optisch_Traverse_zusätzlich":0,
"Sensor_optisch_Traverse_Korrektur":0,
"Bedientableau_1-fach":0,
#"Bedientableau_1-fach":0,
"Bedientableau_1-fach_Korrektur":0,
"Bedientableau_2-fach":0,
#"Bedientableau_2-fach":0,
"Bedientableau_2-fach_Korrektur":0,
"Weiche":0,
#"Weiche":0,
"Weiche_Korrektur":0,
"RRA_bi":0,
#"RRA_bi":0,
"RRA_bi_Korrektur":0,
"RRA_bi_auf_Haupstrecke":0,
"RRA_bi_ohne_SPS-Ansteuerung":0,
#"RRA_bi_ohne_SPS-Ansteuerung":0,
"gemeinsame_Wendung":0,
"Seilzugschalter":0,
"Mit_Drucktaster":0,
"Meldelampe_Überstrom":0,
#"Seilzugschalter":0,
#"Mit_Drucktaster":0,
"Mit_Drucktaster_Korrektur":0,
#"Meldelampe_Überstrom":0,
"Meldelampe_Überstrom_Korrektur":0,
"Hauptschalter_Ein-Meldung":0,
#"Hauptschalter_Ein-Meldung":0,
"Hauptschalter_Ein-Meldung_Korrektur":0,
"Werma_Rundumleuchte_Störung":0,
#"Werma_Rundumleuchte_Störung":0,
"Werma_Rundumleuchte_Störung_Korrektur":0,
}
self._RSM_Anzahl = anzahl.get("Anzahl", 0)
self.Mengen["Anzahl_RSM"] = self._RSM_Anzahl
self.Mengen["Flex-A_Premium"] = anzahl.get("Flex-A_Premium", False)
self.Mengen["Getriebe_in_der_Mitte"] = anzahl.get("Getriebe_in_der_Mitte", False)
self.Mengen["RSM-Einfahrt_Ein-/Beidseitig"] = anzahl.get("RSM-Einfahrt_Ein-/Beidseitig", False)
self._Mengen = {}
self._RSM_Anzahl = anzahl.get("Anzahl_RSM", 0)
self._Mengen["Anzahl_RSM"] = self._RSM_Anzahl
self._Mengen["Flex-A_Premium"] = anzahl.get("Flex-A_Premium", False)
self._Mengen["Getriebe_in_der_Mitte"] = anzahl.get("Getriebe_in_der_Mitte", False)
self._Mengen["RSM-Einfahrt_Ein-/Beidseitig"] = anzahl.get("RSM-Einfahrt_Ein-/Beidseitig", False)
sensorfaktor_premium = 1
sensorfaktor_beidseitig = 0
@@ -130,9 +152,9 @@ class RSM_FA():
sensorfaktor_premium = 4
if(anzahl.get("RSM-Einfahrt_Ein-/Beidseitig", False)):
sensorfaktor_beidseitig = 1
self.Mengen["Sensor_optisch_Traverse"] = self._RSM_Anzahl*(sensorfaktor_premium + sensorfaktor_beidseitig) + anzahl.get("Sensor_optisch_Traverse_zusätzlich", 0) + anzahl.get("Sensor_optisch_Traverse_Korrektur", 0) # TODO Korrekturfaktor hier auch anwenden, da in Excel Zelle (C30) nicht grau, wird aber addiert?
self.Mengen["Sensor_optisch_Traverse_zusätzlich"] = anzahl.get("Sensor_optisch_Traverse_zusätzlich", 0)
self.Mengen["Sensor_optisch_Traverse_Korrektur"] = anzahl.get("Sensor_optisch_Traverse_Korrektur", 0)
self._Mengen["Sensor_optisch_Traverse"] = self._RSM_Anzahl*(sensorfaktor_premium + sensorfaktor_beidseitig) + anzahl.get("Sensor_optisch_Traverse_zusätzlich", 0) + anzahl.get("Sensor_optisch_Traverse_Korrektur", 0) # TODO Korrekturfaktor hier auch anwenden, da in Excel Zelle (C30) nicht grau, wird aber addiert?
self._Mengen["Sensor_optisch_Traverse_zusätzlich"] = anzahl.get("Sensor_optisch_Traverse_zusätzlich", 0)
self._Mengen["Sensor_optisch_Traverse_Korrektur"] = anzahl.get("Sensor_optisch_Traverse_Korrektur", 0) #TODO: hier auch Korrektur anwenden? Zelle nicht ausgegraut
tableaufaktor_premium = 1
tableaufaktor_beidseitig = 0
@@ -140,10 +162,10 @@ class RSM_FA():
tableaufaktor_premium = 0
if(anzahl.get("RSM-Einfahrt_Ein-/Beidseitig", False)):
tableaufaktor_beidseitig = 1
self.Mengen["Bedientableau_1-fach"] = self._RSM_Anzahl*(tableaufaktor_premium + tableaufaktor_beidseitig) + anzahl.get("Bedientableau_1-fach_Korrektur", 0)
self.Mengen["Bedientableau_1-fach_Korrektur"] = anzahl.get("Bedientableau_1-fach_Korrektur", 0)
self.Mengen["Bedientableau_2-fach"] = math.ceil(self._RSM_Anzahl/10) + anzahl.get("Bedientableau_2-fach_Korrektur", 0)
self.Mengen["Bedientableau_2-fach_Korrektur"] = anzahl.get("Bedientableau_2-fach_Korrektur", 0)
self._Mengen["Bedientableau_1-fach"] = self._RSM_Anzahl*(tableaufaktor_premium + tableaufaktor_beidseitig) + anzahl.get("Bedientableau_1-fach_Korrektur", 0)
self._Mengen["Bedientableau_1-fach_Korrektur"] = anzahl.get("Bedientableau_1-fach_Korrektur", 0)
self._Mengen["Bedientableau_2-fach"] = math.ceil(self._RSM_Anzahl/10) + anzahl.get("Bedientableau_2-fach_Korrektur", 0)
self._Mengen["Bedientableau_2-fach_Korrektur"] = anzahl.get("Bedientableau_2-fach_Korrektur", 0)
weichefaktor_premium = 1
weichefaktor_beidseitig = 0
@@ -151,8 +173,8 @@ class RSM_FA():
weichefaktor_premium = 3
if(anzahl.get("RSM-Einfahrt_Ein-/Beidseitig", False)):
weichefaktor_beidseitig = 1
self.Mengen["Weiche"] = self._RSM_Anzahl * (weichefaktor_premium + weichefaktor_beidseitig) + anzahl.get("Weiche_Korrektur", 0)
self.Mengen["Weiche_Korrektur"] = anzahl.get("Weiche_Korrektur", 0)
self._Mengen["Weiche"] = self._RSM_Anzahl * (weichefaktor_premium + weichefaktor_beidseitig) + anzahl.get("Weiche_Korrektur", 0)
self._Mengen["Weiche_Korrektur"] = anzahl.get("Weiche_Korrektur", 0)
rrafaktor_premium = 1
rrafaktor_beidseitig = 0
@@ -160,16 +182,16 @@ class RSM_FA():
rrafaktor_premium = 2
if(anzahl.get("RSM-Einfahrt_Ein-/Beidseitig", False)):
rrafaktor_beidseitig = 1
self.Mengen["RRA_bi"] = self._RSM_Anzahl * (rrafaktor_premium + rrafaktor_beidseitig) + anzahl.get("RRA_bi_auf_Haupstrecke", 0) + anzahl.get("RRA_bi_Korrektur", 0)
self.Mengen["RRA_bi_Korrektur"] = anzahl.get("RRA_bi_Korrektur", 0)
self.Mengen["RRA_bi_auf_Haupstrecke"] = anzahl.get("RRA_bi_auf_Haupstrecke", 0)
self._Mengen["RRA_bi"] = self._RSM_Anzahl * (rrafaktor_premium + rrafaktor_beidseitig) + anzahl.get("RRA_bi_auf_Haupstrecke", 0) + anzahl.get("RRA_bi_Korrektur", 0)
self._Mengen["RRA_bi_Korrektur"] = anzahl.get("RRA_bi_Korrektur", 0)
self._Mengen["RRA_bi_auf_Haupstrecke"] = anzahl.get("RRA_bi_auf_Haupstrecke", 0)
if(anzahl.get("Flex-A_Premium", False)):
self.Mengen["RRA_bi_ohne_SPS-Ansteuerung"] = self._RSM_Anzahl * 4
self._Mengen["RRA_bi_ohne_SPS-Ansteuerung"] = self._RSM_Anzahl * 4
else:
self.Mengen["RRA_bi_ohne_SPS-Ansteuerung"] = 0
self._Mengen["RRA_bi_ohne_SPS-Ansteuerung"] = 0
self.Mengen["gemeinsame_Wendung"] = anzahl.get("gemeinsame_Wendung", 0)
self._Mengen["gemeinsame_Wendung"] = anzahl.get("gemeinsame_Wendung", 0)
seilzfaktor_premium = 0
seilzfaktor_getriebe_mitte = 0
@@ -177,105 +199,112 @@ class RSM_FA():
seilzfaktor_premium = 2
if(anzahl.get("Getriebe_in_der_Mitte", False)):
seilzfaktor_getriebe_mitte = 2
self.Mengen["Seilzugschalter"] = self._RSM_Anzahl * (seilzfaktor_premium + seilzfaktor_getriebe_mitte)
self._Mengen["Seilzugschalter"] = self._RSM_Anzahl * (seilzfaktor_premium + seilzfaktor_getriebe_mitte)
if(anzahl.get("Flex-A_Premium", False)):
self.Mengen["Mit_Drucktaster"] = self._RSM_Anzahl * 8 # TODO + C40 in excel, allerdings gelbe Zelle ohne Bezüge, Korrektur?
self._Mengen["Mit_Drucktaster"] = self._RSM_Anzahl * 8 + anzahl.get("Mit_Drucktaster_Korrektur",0)# TODO + C40 in excel, allerdings gelbe Zelle ohne Bezüge, Korrektur?
else:
self.Mengen["Mit_Drucktaster"] = 0 # + C40 (s.o.)
self.Mengen["Meldelampe_Überstrom"] = math.ceil(self._RSM_Anzahl/10) + anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
self.Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
self.Mengen["Hauptschalter_Ein-Meldung"] = math.ceil(self._RSM_Anzahl/10) + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
self.Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
self.Mengen["Werma_Rundumleuchte_Störung"] = math.ceil(self._RSM_Anzahl/10) + anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0)
self.Mengen["Werma_Rundumleuchte_Störung_Korrektur"] = anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0)
self._Mengen["Mit_Drucktaster"] = anzahl.get("Mit_Drucktaster_Korrektur",0) # + C40 (s.o.)
self._Mengen["Mit_Drucktaster_Korrektur"] = anzahl.get("Mit_Drucktaster_Korrektur",0)
self._Mengen["Meldelampe_Überstrom"] = math.ceil(self._RSM_Anzahl/10) + anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
self._Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
self._Mengen["Hauptschalter_Ein-Meldung"] = math.ceil(self._RSM_Anzahl/10) + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
self._Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
self._Mengen["Werma_Rundumleuchte_Störung"] = math.ceil(self._RSM_Anzahl/10) + anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0)
self._Mengen["Werma_Rundumleuchte_Störung_Korrektur"] = anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0)
def anzahl(self, partname):
return self._Mengen.get(partname, 0)
# Flyer_F40_(Electrojet)_incl._Putzmaschine:
class Flyer_F40_EJet_inc_Putz():
def __init__(self, anzahl:dict):
self.Mengen = {
"Anzahl":0,
mengen = {
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
#"Anzahl":0,
"Flyer_Electrojet_incl_intergrierte_Putzmaschine":0,
"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur":0,
"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2,
"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2,
"Anzahl_Schienen":0,
#"Anzahl_Schienen":0,
"Single-Line_/_Durchfahrt":False,
"Nachpuffer":False,
"Sensor_optisch_Traverse":0,
#"Sensor_optisch_Traverse":0,
"Sensor_optisch_Traverse_Korrektur":0,
"Sensor_induktiv_Spulenhalter":0,
#"Sensor_induktiv_Spulenhalter":0,
"Sensor_induktiv_Spulenhalter_Korrektur":0,
"Bedientableau_2-fach":0,
#"Bedientableau_2-fach":0,
"Bedientableau_2-fach_Korrektur":0,
"Interface_Doffer":0,
#"Interface_Doffer":0,
"Interface_Doffer_Korrektur":0,
"Weiche":0,
#"Weiche":0,
"Weiche_Korrektur":0,
"Weiche_nach_Flyer_(bipolar)":0,
#"Weiche_nach_Flyer_(bipolar)":0,
"Weiche_nach_Flyer_(bipolar)_Korrektur":0,
"Dreifachweiche":0,
"Wechsel":0,
"Stopper":0,
"RA_uni":0,
"RA_uni_abhebbar":0,
#"RA_uni_abhebbar":0,
"RA_uni_abhebbar_Korrektur":0,
"RA_uni_ohne_SPS-Ansteuerung":0,
#"RA_uni_ohne_SPS-Ansteuerung":0,
"RA_uni_ohne_SPS-Ansteuerung_Korrektur":0,
"RRA_BI_abhebbar":0,
#"RRA_BI_abhebbar":0,
"RRA_BI_abhebbar_Korrektur":0,
"RRA_bi":0,
"RRA_bi_Korrektur":0,
"RRA_bi_ohne_SPS-Ansteuerung":0,
#"RRA_bi_Korrektur":0,
#"RRA_bi_ohne_SPS-Ansteuerung":0,
"RRA_bi_ohne_SPS-Ansteuerung_Korrektur":0,
"Doppelstreckenantrieb":0,
#"Doppelstreckenantrieb":0,
"Doppelstreckenantrieb_Korrektur":0,
"RA_bi_abhebbar_(unger._Schiene)":0,
"Meldelampe_Überstrom":0,
#"Meldelampe_Überstrom":0,
"Meldelampe_Überstrom_Korrektur":0,
"Hauptschalter_Ein-Meldung":0,
#"Hauptschalter_Ein-Meldung":0,
"Hauptschalter_Ein-Meldung_Korrektur":0,
"Werma_Rundumleuchte_Störung":0,
#"Werma_Rundumleuchte_Störung":0,
"Werma_Rundumleuchte_Störung_Korrektur":0,
}
self._Mengen = {}
self._Flyer_Anzahl = anzahl.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine", 0) +\
anzahl.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur", 0)
self.Mengen["Anzahl"] = self._Flyer_Anzahl
self.Mengen["Anzahl_Schienen"] = anzahl.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer", 0) +\
self._Mengen["Anzahl"] = self._Flyer_Anzahl
self._Mengen["Anzahl_Schienen"] = anzahl.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer", 0) +\
anzahl.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer", 0)
self.Mengen["Single-Line_/_Durchfahrt"] = anzahl.get("Single-Line_/_Durchfahrt", False)
self.Mengen["Nachpuffer"] = anzahl.get("Nachpuffer", False)
self._Mengen["Flyer_Electrojet_incl_intergrierte_Putzmaschine"] = anzahl.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine", 0)
self._Mengen["Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur"] = anzahl.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur", 0)
self._Mengen["Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer"] = anzahl.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer", 0)
self._Mengen["Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer"] = anzahl.get("Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer", 0)
self._Mengen["Single-Line_/_Durchfahrt"] = anzahl.get("Single-Line_/_Durchfahrt", False)
self._Mengen["Nachpuffer"] = anzahl.get("Nachpuffer", False)
print(self._Mengen.get("Anzahl_Schienen", 0))
#SensoroptTraverse=WENN(B49="ja";B46*(B47*1)+(B46*5)+C50+(B56*2);B46*(B47*1)+(B46*7)+(B56*2))+C50 TODO: Achtung, hier wird C50 zweimal addiert, wenn Nachpuffer==True
# nachpuffer == True: B46*(B47*1)+(B56*2)+(B46*5)+C50
#else: B46*(B47*1)+(B56*2)+(B46*7)) +C50
sensorfaktor_nachpuffer = 7
if(anzahl.get("Nachpuffer", False)):
sensorfaktor_nachpuffer = 5
self.Mengen["Sensor_optisch_Traverse"] = self._Flyer_Anzahl * (self.Mengen.get("Anzahl_Schienen", 0) + sensorfaktor_nachpuffer) + anzahl.get("Dreifachweiche", 0) * 2 + anzahl.get("Sensor_optisch_Traverse_Korrektur", 0)
self.Mengen["Sensor_optisch_Traverse_Korrektur"] = anzahl.get("Sensor_optisch_Traverse_Korrektur", 0)
self.Mengen["Sensor_induktiv_Spulenhalter"] = self._Flyer_Anzahl * 2 + anzahl.get("Sensor_induktiv_Spulenhalter_Korrektur", 0)
self.Mengen["Sensor_induktiv_Spulenhalter_Korrektur"] = anzahl.get("Sensor_induktiv_Spulenhalter_Korrektur", 0)
self.Mengen["Bedientableau_2-fach"] = self._Flyer_Anzahl + anzahl.get("Bedientableau_2-fach_Korrektur", 0)
self.Mengen["Bedientableau_2-fach_Korrektur"] = anzahl.get("Bedientableau_2-fach_Korrektur", 0)
self.Mengen["Interface_Doffer"] = self._Flyer_Anzahl + anzahl.get("Interface_Doffer_Korrektur", 0)
self.Mengen["Interface_Doffer_Korrektur"] = anzahl.get("Interface_Doffer_Korrektur", 0)
self.Mengen["Weiche"] = self._Flyer_Anzahl * self.Mengen.get("Anzahl_Schienen", 0) + anzahl.get("Weiche_Korrektur", 0) + anzahl.get("Wechsel", 0)
self.Mengen["Weiche"] = anzahl.get("Weiche_Korrektur", 0)
self._Mengen["Sensor_optisch_Traverse"] = self._Flyer_Anzahl * (self._Mengen.get("Anzahl_Schienen", 0) + sensorfaktor_nachpuffer) + anzahl.get("Dreifachweiche", 0) * 2 + anzahl.get("Sensor_optisch_Traverse_Korrektur", 0)
self._Mengen["Sensor_optisch_Traverse_Korrektur"] = anzahl.get("Sensor_optisch_Traverse_Korrektur", 0)
self._Mengen["Sensor_induktiv_Spulenhalter"] = self._Flyer_Anzahl * 2 + anzahl.get("Sensor_induktiv_Spulenhalter_Korrektur", 0)
self._Mengen["Sensor_induktiv_Spulenhalter_Korrektur"] = anzahl.get("Sensor_induktiv_Spulenhalter_Korrektur", 0)
self._Mengen["Bedientableau_2-fach"] = self._Flyer_Anzahl + anzahl.get("Bedientableau_2-fach_Korrektur", 0)
self._Mengen["Bedientableau_2-fach_Korrektur"] = anzahl.get("Bedientableau_2-fach_Korrektur", 0)
self._Mengen["Interface_Doffer"] = self._Flyer_Anzahl + anzahl.get("Interface_Doffer_Korrektur", 0)
self._Mengen["Interface_Doffer_Korrektur"] = anzahl.get("Interface_Doffer_Korrektur", 0)
self._Mengen["Weiche"] = self._Flyer_Anzahl * self._Mengen.get("Anzahl_Schienen", 0) + anzahl.get("Weiche_Korrektur", 0) + anzahl.get("Wechsel", 0)
self._Mengen["Weiche_Korrektur"] = anzahl.get("Weiche_Korrektur", 0)
if(anzahl.get("Single-Line_/_Durchfahrt", False)):
self.Mengen["Weiche_nach_Flyer_(bipolar)"] = self._Flyer_Anzahl + anzahl.get("Weiche_nach_Flyer_(bipolar)_Korrektur", 0)
self._Mengen["Weiche_nach_Flyer_(bipolar)"] = self._Flyer_Anzahl + anzahl.get("Weiche_nach_Flyer_(bipolar)_Korrektur", 0)
else:
self.Mengen["Weiche_nach_Flyer_(bipolar)"] = anzahl.get("Weiche_nach_Flyer_(bipolar)_Korrektur", 0)
self.Mengen["Weiche_nach_Flyer_(bipolar)_Korrektur"] = anzahl.get("Weiche_nach_Flyer_(bipolar)_Korrektur", 0)
self.Mengen["Dreifachweiche"] = anzahl.get("Dreifachweiche", 0)
self.Mengen["Wechsel"] = anzahl.get("Wechsel", 0)
self.Mengen["Stopper"] = anzahl.get("Stopper", 0) # TODO: Korrekturfaktor überflüssig da manuelle Eingabe?
self.Mengen["RA_uni"] = anzahl.get("RA_uni", 0)
self._Mengen["Weiche_nach_Flyer_(bipolar)"] = anzahl.get("Weiche_nach_Flyer_(bipolar)_Korrektur", 0)
self._Mengen["Weiche_nach_Flyer_(bipolar)_Korrektur"] = anzahl.get("Weiche_nach_Flyer_(bipolar)_Korrektur", 0)
self._Mengen["Dreifachweiche"] = anzahl.get("Dreifachweiche", 0)
self._Mengen["Wechsel"] = anzahl.get("Wechsel", 0)
self._Mengen["Stopper"] = anzahl.get("Stopper", 0) # TODO: Korrekturfaktor überflüssig da manuelle Eingabe?
self._Mengen["RA_uni"] = anzahl.get("RA_uni", 0)
rraunifaktor_durchfahrt = 0
rraunifaktor_nachpuffer = 1
@@ -283,79 +312,89 @@ class Flyer_F40_EJet_inc_Putz():
rraunifaktor_durchfahrt = 1
if(anzahl.get("Nachpuffer", False)):
rraunifaktor_nachpuffer = 0
self.Mengen["RA_uni_abhebbar"] = self._Flyer_Anzahl * (rraunifaktor_durchfahrt + rraunifaktor_nachpuffer) + anzahl.get("RA_uni_abhebbar_Korrektur", 0)
self.Mengen["RA_uni_abhebbar_Korrektur"] = anzahl.get("RA_uni_abhebbar_Korrektur", 0)
self._Mengen["RA_uni_abhebbar"] = self._Flyer_Anzahl * (rraunifaktor_durchfahrt + rraunifaktor_nachpuffer) + anzahl.get("RA_uni_abhebbar_Korrektur", 0)
self._Mengen["RA_uni_abhebbar_Korrektur"] = anzahl.get("RA_uni_abhebbar_Korrektur", 0)
if(anzahl.get("Single-Line_/_Durchfahrt", False)):
self.Mengen["RA_uni_ohne_SPS-Ansteuerung"] = self._Flyer_Anzahl # TODO: Korrekturfaktor nur wenn Durchfahrt==False?
self._Mengen["RA_uni_ohne_SPS-Ansteuerung"] = self._Flyer_Anzahl # TODO: Korrekturfaktor nur wenn Durchfahrt==False?
else:
self.Mengen["RA_uni_ohne_SPS-Ansteuerung"] = anzahl.get("RA_uni_ohne_SPS-Ansteuerung_Korrektur", 0)
self.Mengen["RA_uni_ohne_SPS-Ansteuerung_Korrektur"] = anzahl.get("RA_uni_ohne_SPS-Ansteuerung_Korrektur", 0)
self._Mengen["RA_uni_ohne_SPS-Ansteuerung"] = anzahl.get("RA_uni_ohne_SPS-Ansteuerung_Korrektur", 0)
self._Mengen["RA_uni_ohne_SPS-Ansteuerung_Korrektur"] = anzahl.get("RA_uni_ohne_SPS-Ansteuerung_Korrektur", 0)
if(anzahl.get("Single-Line_/_Durchfahrt", False)): # TODO: =WENN($B$48="nein";$B$46*1;0+C62)+WENN($B$48="ja";$B$46*1;0) Sinn? Zellverweise korrekt?
self.Mengen["RRA_BI_abhebbar"] = self._Flyer_Anzahl
if(anzahl.get("Single-Line_/_Durchfahrt", False)): # TODO: =WENN($B$48="nein";$B$46*1;0+C62)+WENN($B$48="ja";$B$46*1;0) -> etwas kompliziert ausgedrückt...
self._Mengen["RRA_BI_abhebbar"] = self._Flyer_Anzahl + anzahl.get("RRA_BI_abhebbar_Korrektur", 0)
else:
self.Mengen["RRA_BI_abhebbar"] = anzahl.get("RRA_BI_abhebbar_Korrektur", 0)
self.Mengen["RRA_BI_abhebbar_Korrektur"] = anzahl.get("RRA_BI_abhebbar_Korrektur", 0)
self._Mengen["RRA_BI_abhebbar"] = self._Flyer_Anzahl
self._Mengen["RRA_BI_abhebbar_Korrektur"] = anzahl.get("RRA_BI_abhebbar_Korrektur", 0)
self.Mengen["RRA_bi"] = anzahl.get("RRA_bi", 0) # TODO: Rote Zelle?
self._Mengen["RRA_bi"] = anzahl.get("RRA_bi", 0) # TODO: Rote Zelle?
if(anzahl.get("Single-Line_/_Durchfahrt", False)):
self.Mengen["RRA_bi_ohne_SPS-Ansteuerung"] = anzahl.get("RRA_bi_ohne_SPS-Ansteuerung_Korrektur", 0)
self._Mengen["RRA_bi_ohne_SPS-Ansteuerung"] = anzahl.get("RRA_bi_ohne_SPS-Ansteuerung_Korrektur", 0)
else:
self.Mengen["RRA_bi_ohne_SPS-Ansteuerung"] = self._Flyer_Anzahl
self._Mengen["RRA_bi_ohne_SPS-Ansteuerung"] = self._Flyer_Anzahl
if(anzahl.get("Single-Line_/_Durchfahrt", False)):
self.Mengen["Doppelstreckenantrieb"] = (self._Flyer_Anzahl * self.Mengen.get("Anzahl_Schienen", 0))/4 + self._Flyer_Anzahl
self._Mengen["Doppelstreckenantrieb"] = (self._Flyer_Anzahl * self._Mengen.get("Anzahl_Schienen", 0))/4 + self._Flyer_Anzahl
else:
self.Mengen["Doppelstreckenantrieb"] = (self._Flyer_Anzahl * self.Mengen.get("Anzahl_Schienen", 0))/4 + anzahl.get("Doppelstreckenantrieb_Korrektur", 0)
self.Mengen["Doppelstreckenantrieb_Korrektur"] = anzahl.get("Doppelstreckenantrieb_Korrektur", 0)
self.Mengen["RA_bi_abhebbar_(unger._Schiene)"] = anzahl.get("RA_bi_abhebbar_(unger._Schiene)", 0)
self._Mengen["Doppelstreckenantrieb"] = (self._Flyer_Anzahl * self._Mengen.get("Anzahl_Schienen", 0))/4 + anzahl.get("Doppelstreckenantrieb_Korrektur", 0)
self._Mengen["Doppelstreckenantrieb_Korrektur"] = anzahl.get("Doppelstreckenantrieb_Korrektur", 0)
self._Mengen["RA_bi_abhebbar_(unger._Schiene)"] = anzahl.get("RA_bi_abhebbar_(unger._Schiene)", 0)
self.Mengen["Meldelampe_Überstrom"] = self._Flyer_Anzahl + anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
self.Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
self.Mengen["Hauptschalter_Ein-Meldung"] = self._Flyer_Anzahl + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
self.Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
self.Mengen["Werma_Rundumleuchte_Störung"] = self._Flyer_Anzahl + anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0)
self.Mengen["Werma_Rundumleuchte_Störung_Korrektur"] = anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0)
self._Mengen["Meldelampe_Überstrom"] = self._Flyer_Anzahl + anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
self._Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
self._Mengen["Hauptschalter_Ein-Meldung"] = self._Flyer_Anzahl + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
self._Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
self._Mengen["Werma_Rundumleuchte_Störung"] = self._Flyer_Anzahl + anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0)
self._Mengen["Werma_Rundumleuchte_Störung_Korrektur"] = anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0)
def anzahl(self, partname):
return self._Mengen.get(partname, 0)
# Putzmaschine_(Neuenhauser):
class Putzmaschine_Neuenhauser():
def __init__(self, anzahl:dict):
self._Mengen = {
"Anzahl":0,
mengen = {
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
#"Anzahl":0,
"Neuenhauser-Putzmaschine":0,
"Neuenhauser-Putzmaschine_Vorpuffer":0,
"Neuenhauser-Putzmaschine_Nachpuffer":0,
"Anzahl_Vorstaustrecken":0,
"Anzahl_Nachstaustrecken":0,
"Sensor_optisch_Traverse":0,
#"Anzahl_Vorstaustrecken":0,
#"Anzahl_Nachstaustrecken":0,
#"Sensor_optisch_Traverse":0,
"Sensor_optisch_Traverse_Korrektur":0,
"Sensorik_Zugpositionierung":0,
"Sensor_WT18_Spulenprüfung_voll/leer":0,
"Bedientableau_2-fach":0,
#"Sensorik_Zugpositionierung":0,
#"Sensor_WT18_Spulenprüfung_voll/leer":0,
#"Bedientableau_2-fach":0,
"Bedientableau_2-fach_Korrektur":0,
"Interface_Putzmaschine":0,
"Weiche":0,
#"Interface_Putzmaschine":0,
#"Weiche":0,
"Weiche_Korrektur":0,
"Weiche_nach_PM_(bipolar)":0,
"RA_uni_abhebbar":0,
#"Weiche_nach_PM_(bipolar)":0,
#"RA_uni_abhebbar":0,
"RA_uni_abhebbar_Korrektur":0,
"RA_uni_ohne_SPS-Ansteuerung":0,
"RA_uni_abhebbar_(unger._Sch.)":0,
"Doppelstreckenantrieb":0,
"Meldelampe_Überstrom":0,
#"RA_uni_ohne_SPS-Ansteuerung":0,
#"RA_uni_abhebbar_(unger._Sch.)":0,
#"Doppelstreckenantrieb":0,
#"Meldelampe_Überstrom":0,
"Meldelampe_Überstrom_Korrektur":0,
"Hauptschalter_Ein-Meldung":0,
#"Hauptschalter_Ein-Meldung":0,
"Hauptschalter_Ein-Meldung_Korrektur":0,
"Werma_Rundumleuchte_Störung":0,
#"Werma_Rundumleuchte_Störung":0,
"Werma_Rundumleuchte_Störung_Korrektur":0,
}
self._Mengen = {}
self._Putze_Anzahl = anzahl.get("Neuenhauser-Putzmaschine", 0)
self._Vorpuffer_Anzahl = anzahl.get("Neuenhauser-Putzmaschine_Vorpuffer", 0)
self._Nachpuffer_Anzahl = anzahl.get("Neuenhauser-Putzmaschine_Nachpuffer", 0)
self._Mengen["Anzahl"] = self._Putze_Anzahl
self._Mengen["Neuenhauser-Putzmaschine_Vorpuffer"] = self._Vorpuffer_Anzahl
self._Mengen["Neuenhauser-Putzmaschine_Nachpuffer"] = self._Nachpuffer_Anzahl
self._Mengen["Neuenhauser-Putzmaschine_Vorpuffer"] = self._Vorpuffer_Anzahl #'Neuenhauser-Putzmaschine_Vorpuffer' (Deckblatt) ist äquivalent zu 'Anzahl_Vorstaustrecken' (Mengengerüst/Putzmaschine)
self._Mengen["Anzahl_Vorstaustrecken"] = self._Vorpuffer_Anzahl
self._Mengen["Neuenhauser-Putzmaschine_Nachpuffer"] = self._Nachpuffer_Anzahl #'Neuenhauser-Putzmaschine_Nachpuffer' (Deckblatt) ist äquivalent zu 'Anzahl_Nachstaustrecken' (Mengengerüst/Putzmaschine)
self._Mengen["Anzahl_Nachstaustrecken"] = self._Nachpuffer_Anzahl
self._Mengen["Sensor_optisch_Traverse"] = self._Putze_Anzahl * (self._Vorpuffer_Anzahl + self._Nachpuffer_Anzahl + 3) + anzahl.get("Sensor_optisch_Traverse_Korrektur", 0)
self._Mengen["Sensor_optisch_Traverse_Korrektur"] = anzahl.get("Sensor_optisch_Traverse_Korrektur", 0)
@@ -383,42 +422,47 @@ class Putzmaschine_Neuenhauser():
self._Mengen["Werma_Rundumleuchte_Störung"] = self._Putze_Anzahl + anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0)
self._Mengen["Werma_Rundumleuchte_Störung_Korrektur"] = anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0)
def anzahl(self, partname):
return self._Mengen.get(partname, 0)
# Flyer_(Electrojet):
class Flyer_EJet():
def __init__(self, anzahl:dict):
self._Mengen = {
"Anzahl":0,
mengen = {
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
#"Anzahl":0,
"Flyer":0, # äquivalent zu 'Anzahl'
"Anzahl_Schienen:":0,
"Sensor_optisch_Traverse":0,
#"Sensor_optisch_Traverse":0,
"Sensor_optisch_Traverse_Korrektur":0,
"Sensor_induktiv_Spulenalter_(Zug_positionierung)":0,
"Bedientableau_2-fach":0,
"Interface_Doffer":0,
"Weiche":0,
#"Sensor_induktiv_Spulenalter_(Zug_positionierung)":0,
#"Bedientableau_2-fach":0,
#"Interface_Doffer":0,
#"Weiche":0,
"Weiche_Korrektur":0,
"Weiche_nach_Flyer_(bipolar)":0,
#"Weiche_nach_Flyer_(bipolar)":0,
"Weiche_nach_Flyer_(bipolar)_Korrektur":0,
"Dreifachweiche":0,
"Wechsel":0,
#"Wechsel":0,
"Wechsel_Korrektur":0,
"RA_bi_ohne_SPS-Ansteuerung":0,
"RA_bi_abhebbar":0,
#"RA_bi_ohne_SPS-Ansteuerung":0,
#"RA_bi_abhebbar":0,
"RA_bi_abhebbar_Korrektur":0,
"RA_bi":0,
"Doppelstreckenantrieb":0,
#"Doppelstreckenantrieb":0,
"RA_bi_abhebbar_(unger._Schiene)":0,
"Meldelampe_Überstrom":0,
#"Meldelampe_Überstrom":0,
"Meldelampe_Überstrom_Korrektur":0,
"Hauptschalter_Ein-Meldung":0,
#"Hauptschalter_Ein-Meldung":0,
"Hauptschalter_Ein-Meldung_Korrektur":0,
"Werma_Rundumleuchte_Störung":0,
#"Werma_Rundumleuchte_Störung":0,
"Werma_Rundumleuchte_Störung_Korrektur":0,
}
self._Mengen = {}
self._Flyer_Anzahl = anzahl.get("Flyer", 0)
self._Mengen["Anzahl"] = anzahl.get("Flyer", 0)
self._Mengen["Anzahl"] = self._Flyer_Anzahl
self._Mengen["Flyer"] = self._Flyer_Anzahl
self._Schienen_Anzahl = anzahl.get("Anzahl_Schienen", 0)
self._Mengen["Anzahl_Schienen"] = anzahl.get("Anzahl_Schienen", 0)
@@ -450,8 +494,9 @@ class Flyer_EJet():
# Verbindungsstrecken/_Wechsel:
class Verbindungsstrecken_Wechsel():
def __init__(self, deckblatt:dict):
self.Mengen = {
def __init__(self, anzahl:dict):
mengen = {
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
"Sensor_optisch_Traverse":0,
"Bedientableau_1-fach":0,
"Bedientableau_2-fach":0,
@@ -466,37 +511,91 @@ class Verbindungsstrecken_Wechsel():
"RA_bi_ohne_SPS-Ansteuerung":0,
"Doppelstreckenantrieb":0
}
self._Deckblatt = deckblatt
self._Mengen = {}
self._Mengen["Sensor_optisch_Traverse"] = anzahl.get("Sensor_optisch_Traverse", 0)
self._Mengen["Bedientableau_1-fach"] = anzahl.get("Bedientableau_1-fach", 0)
self._Mengen["Bedientableau_2-fach"] = anzahl.get("Bedientableau_2-fach", 0)
self._Mengen["Bedientableau_14-fach"] = anzahl.get("Bedientableau_14-fach", 0)
self._Mengen["Weiche"] = anzahl.get("Weiche", 0)
self._Mengen["Dreifachweiche"] = anzahl.get("Dreifachweiche", 0)
self._Mengen["Kreuzungsweiche"] = anzahl.get("Kreuzungsweiche", 0)
self._Mengen["Werma_Rundumleuchte_Störung"] = anzahl.get("Werma_Rundumleuchte_Störung", 0)
self._Mengen["RA_uni"] = anzahl.get("RA_uni", 0)
self._Mengen["RA_uni_ohne_SPS-Ansteuerung"] = anzahl.get("RA_uni_ohne_SPS-Ansteuerung", 0)
self._Mengen["RA_bi"] = anzahl.get("RA_bi", 0)
self._Mengen["RA_bi_ohne_SPS-Ansteuerung"] = anzahl.get("RA_bi_ohne_SPS-Ansteuerung", 0)
self._Mengen["Doppelstreckenantrieb"] = anzahl.get("Doppelstreckenantrieb", 0)
# Puffer
class Puffer():
def __init__(self, deckblatt:dict):
self.Mengen = {
"Anzahl":0,
"Anzahl_Staustrecken":0,
"Sensor_optisch_Traverse":0,
"Weiche":0,
def __init__(self, anzahl:dict):
mengen = {
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
#"Anzahl":0,
"Puffer":0, #äquivalent zu Anzahl
"Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken
#"Anzahl_Staustrecken":0,
#"Sensor_optisch_Traverse":0,
"Sensor_optisch_Traverse_Korrektur":0,
#"Weiche":0,
"Weiche_Korrektur":0,
"RA_bi_(ungerade_Schiene)":0,
"Doppelstreckenantrieb":0,
"Meldelampe_Überstrom":0,
"Hauptschalter_Ein-Meldung":0
#"Doppelstreckenantrieb":0,
#"Meldelampe_Überstrom":0,
"Meldelampe_Überstrom_Korrektur":0,
#"Hauptschalter_Ein-Meldung":0,
"Hauptschalter_Ein-Meldung_Korrektur":0,
}
self._Deckblatt = deckblatt
self._Mengen = {}
self._Puffer_Anzahl = anzahl.get("Puffer", 0)
self._Strecken_Anzahl = anzahl.get("Anzahl_Pufferstrecken", 0)
self._Mengen["Anzahl"] = self._Puffer_Anzahl
self._Mengen["Anzahl_Staustrecken"] = self._Strecken_Anzahl
self._Mengen["Sensor_optisch_Traverse"] = self._Puffer_Anzahl*self._Strecken_Anzahl + anzahl.get("Sensor_optisch_Traverse_Korrektur", 0)
self._Mengen["Sensor_optisch_Traverse_Korrektur"] = anzahl.get("Sensor_optisch_Traverse_Korrektur", 0)
self._Mengen["Weiche"] = self._Puffer_Anzahl*self._Strecken_Anzahl + anzahl.get("Weiche_Korrektur", 0)
self._Mengen["Weiche_Korrektur"] = anzahl.get("Weiche_Korrektur", 0)
self._Mengen["Doppelstreckenantrieb"] = self._Puffer_Anzahl * math.floor(self._Strecken_Anzahl/2)
self._Mengen["Meldelampe_Überstrom"] = self._Puffer_Anzahl + anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
self._Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
self._Mengen["Hauptschalter_Ein-Meldung"] = self._Puffer_Anzahl + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
self._Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
# Turm
class Turm():
inhalt = {
mengen = {
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
#"Anzahl":0,
"Anzahl_Staustrecken":0,
"Sensor_optisch_Traverse":0,
"Weiche":0,
"RA_bi":0,
"RA_bi_ohne_SPS":0,
"Bedientableau_2-fach":0,
"Turm":0, #äquivalent zu Anzahl
"Anzahl_Wendlungen":0, #äquivalent zu Anzahl_Staustrecken
#"Anzahl_Staustrecken":0,
#"Sensor_optisch_Traverse":0,
#"Weiche":0,
#"RA_bi":0,
"RA_bi_Korrektur":0,
#"RA_bi_ohne_SPS":0,
"RA_bi_ohne_SPS_Korrektur":0,
#"Bedientableau_2-fach":0,
}
def __init__(self, anzahl:dict):
self._Anzahl = anzahl
self._Mengen = {}
self._Turm_Anzahl = anzahl.get("Turm", 0)
self._Mengen["Anzahl"] = self._Turm_Anzahl
self._Staustrecken_Anzahl = anzahl.get("Anzahl_Wendlungen", 0)
self._Mengen["Anzahl_Staustrecken"] = self._Staustrecken_Anzahl
self._Mengen["Sensor_optisch_Traverse"] = self._Turm_Anzahl*5 #TODO: kein Korrekturfaktor?
self._Mengen["Weiche"] = self._Turm_Anzahl*3
self._Mengen["RA_bi"] = self._Turm_Anzahl*2 + anzahl.get("RA_bi_Korrektur", 0)
self._Mengen["RA_bi_Korrektur"] = anzahl.get("RA_bi_Korrektur", 0)
self._Mengen["RA_bi_ohne_SPS"] = self._Turm_Anzahl*self._Staustrecken_Anzahl*2 + anzahl.get("RA_bi_ohne_SPS_Korrektur", 0)
self._Mengen["RA_bi_ohne_SPS_Korrektur"] = anzahl.get("RA_bi_ohne_SPS_Korrektur", 0)
self._Mengen["Bedientableau_2-fach"] = self._Turm_Anzahl*2
@@ -1210,6 +1309,228 @@ if __name__ == '__main__':
class TestObjectMethods(unittest.TestCase):
def test_deckblatt(self):
deckblatt_eingabe = {
"SYSTEM":"",
"RSM":13,
"Flyer":2,
"Flyer_Puffer":2,
"Flyer_Electrojet_incl_intergrierte_Putzmaschine":4,
"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2,
"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":3,
"Neuenhauser-Putzmaschine":11,
"Neuenhauser-Putzmaschine_Vorpuffer":12,
"Neuenhauser-Putzmaschine_Nachpuffer":14,
"Cason-Putzmaschine":0,
"Cason-Putzmaschine_Vorpuffer":0,
"Cason-Putzmaschine_Nachpuffer":0,
"Puffer":0,
"Anzahl_der_Pufferstrecken_pro_Puffer":0,
"Begegnungsstrecke_Bypass":0,
"Turm":0,
"Turm_Anzahl_Wendungen":0,
}
#auskommentiert Zeilen sind nicht einzugeben
rsm_direct_eingabe = {
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
#"Anzahl":0, # wird in deckblatt-Klasse berechnet
#"Anzahl_Strecken/RSM":8,
"Sensor_optisch_Traverse":4,
#"Lichtschranke_Traverse":0,
#"Bedientableau_2-fach":0,
"Bedientableau_2-fach_Korrektur":4,
#"Bedientableau_2-fach_Direct":0,
#"Weiche":0,
"Weiche_Korrektur":4,
#"Weiche_Gemeinsame_Rückstellung":0,
"Weiche_Gemeinsame_Rückstellung_Korrektur":4,
#"RA_bi_abhebbar":0,
"RA_bi_abhebbar_Korrektur":4,
#"Doppelstreckenantrieb":0,
#"gemeinsame_Wendung":0,
#"Meldelampe_Überstrom":0,
"Meldelampe_Überstrom_Korrektur":4,
#"Hauptschalter_Ein-Meldung":0,
"Hauptschalter_Ein-Meldung_Korrektur":4,
#"Werma_Rundumleuchte_Störung":0,
"Werma_Rundumleuchte_Störung_Korrektur":4,
}
rsm_fa_eingabe = {
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
#"Anzahl_RSM":0,
#"Automatische_Umfahrung":0, # 'Automatische_Umfahrung' und 'Flex-A_Premium' sind eine Zelle -> identischer Wert
"Flex-A_Premium":False,
"Getriebe_in_der_Mitte":True,
"RSM-Einfahrt_Ein-/Beidseitig":True,
#"Sensor_optisch_Traverse":0,
"Sensor_optisch_Traverse_zusätzlich":3,
"Sensor_optisch_Traverse_Korrektur":3,
#"Bedientableau_1-fach":0,
"Bedientableau_1-fach_Korrektur":3,
#"Bedientableau_2-fach":0,
"Bedientableau_2-fach_Korrektur":3,
#"Weiche":0,
"Weiche_Korrektur":3,
#"RRA_bi":0,
"RRA_bi_Korrektur":3,
"RRA_bi_auf_Haupstrecke":3,
#"RRA_bi_ohne_SPS-Ansteuerung":0,
"gemeinsame_Wendung":3,
#"Seilzugschalter":0,
#"Mit_Drucktaster":0,
"Mit_Drucktaster_Korrektur":3,
#"Meldelampe_Überstrom":0,
"Meldelampe_Überstrom_Korrektur":3,
#"Hauptschalter_Ein-Meldung":0,
"Hauptschalter_Ein-Meldung_Korrektur":3,
#"Werma_Rundumleuchte_Störung":0,
"Werma_Rundumleuchte_Störung_Korrektur":3,
}
flyer_f40_eingabe = {
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
#"Anzahl":0,
#"Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, #wird in deckblatt-Klasse berechnet
"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur":0,
#"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, #wird in deckblatt-Klasse berechnet
#"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2, #wird in deckblatt-Klasse berechnet
#"Anzahl_Schienen":0,
"Single-Line_/_Durchfahrt":False,
"Nachpuffer":True,
#"Sensor_optisch_Traverse":0,
"Sensor_optisch_Traverse_Korrektur":0,
#"Sensor_induktiv_Spulenhalter":0,
"Sensor_induktiv_Spulenhalter_Korrektur":0,
#"Bedientableau_2-fach":0,
"Bedientableau_2-fach_Korrektur":0,
#"Interface_Doffer":0,
"Interface_Doffer_Korrektur":0,
#"Weiche":0,
"Weiche_Korrektur":0,
#"Weiche_nach_Flyer_(bipolar)":0,
"Weiche_nach_Flyer_(bipolar)_Korrektur":0,
"Dreifachweiche":7,
"Wechsel":6,
"Stopper":5,
"RA_uni":4,
#"RA_uni_abhebbar":0,
"RA_uni_abhebbar_Korrektur":0,
#"RA_uni_ohne_SPS-Ansteuerung":0,
"RA_uni_ohne_SPS-Ansteuerung_Korrektur":0,
#"RRA_BI_abhebbar":0,
"RRA_BI_abhebbar_Korrektur":0,
"RRA_bi":0,
"RRA_bi_Korrektur":0,
#"RRA_bi_ohne_SPS-Ansteuerung":0,
"RRA_bi_ohne_SPS-Ansteuerung_Korrektur":0,
#"Doppelstreckenantrieb":0,
"Doppelstreckenantrieb_Korrektur":0,
"RA_bi_abhebbar_(unger._Schiene)":3,
#"Meldelampe_Überstrom":0,
"Meldelampe_Überstrom_Korrektur":0,
#"Hauptschalter_Ein-Meldung":0,
"Hauptschalter_Ein-Meldung_Korrektur":0,
#"Werma_Rundumleuchte_Störung":0,
"Werma_Rundumleuchte_Störung_Korrektur":0,
}
neuenhauser_eingabe = {
#auskommentiert => kein Übergabeparameter, wird in Klasse berechnet
#"Anzahl":0,
#"Neuenhauser-Putzmaschine":0, #wird in deckblatt-Klasse zugewiesen
#"Neuenhauser-Putzmaschine_Vorpuffer":0, #wird in deckblatt-Klasse zugewiesen
#"Neuenhauser-Putzmaschine_Nachpuffer":0, #wird in deckblatt-Klasse zugewiesen
#"Anzahl_Vorstaustrecken":0,
#"Anzahl_Nachstaustrecken":0,
#"Sensor_optisch_Traverse":0,
"Sensor_optisch_Traverse_Korrektur":0,
#"Sensorik_Zugpositionierung":0,
#"Sensor_WT18_Spulenprüfung_voll/leer":0,
#"Bedientableau_2-fach":0,
"Bedientableau_2-fach_Korrektur":0,
#"Interface_Putzmaschine":0,
#"Weiche":0,
"Weiche_Korrektur":0,
#"Weiche_nach_PM_(bipolar)":0,
#"RA_uni_abhebbar":0,
"RA_uni_abhebbar_Korrektur":0,
#"RA_uni_ohne_SPS-Ansteuerung":0,
#"RA_uni_abhebbar_(unger._Sch.)":0,
#"Doppelstreckenantrieb":0,
#"Meldelampe_Überstrom":0,
"Meldelampe_Überstrom_Korrektur":0,
#"Hauptschalter_Ein-Meldung":0,
"Hauptschalter_Ein-Meldung_Korrektur":0,
#"Werma_Rundumleuchte_Störung":0,
"Werma_Rundumleuchte_Störung_Korrektur":0,
}
deckblatt = MG(deckblatt_eingabe, rsm_direct_eingabe, rsm_fa_eingabe, flyer_f40_eingabe, neuenhauser_eingabe)
'''
# self.assertEqual(deckblatt._rsm_direct.anzahl("Anzahl"), 13)
# self.assertEqual(deckblatt._rsm_direct.anzahl("Anzahl_Strecken/RSM"), 8)
# self.assertEqual(deckblatt._rsm_direct.anzahl("Sensor_optisch_Traverse"), 4)
# self.assertEqual(deckblatt._rsm_direct.anzahl("Lichtschranke_Traverse"), 78)
# self.assertEqual(deckblatt._rsm_direct.anzahl("Bedientableau_2-fach"), 6)
# self.assertEqual(deckblatt._rsm_direct.anzahl("Bedientableau_2-fach_Direct"), 13)
# self.assertEqual(deckblatt._rsm_direct.anzahl("Weiche"), 56)
# self.assertEqual(deckblatt._rsm_direct.anzahl("Weiche_Gemeinsame_Rückstellung"), 6)
# self.assertEqual(deckblatt._rsm_direct.anzahl("RA_bi_abhebbar"), 9)
# self.assertEqual(deckblatt._rsm_direct.anzahl("Doppelstreckenantrieb"), 104)
# self.assertEqual(deckblatt._rsm_direct.anzahl("gemeinsame_Wendung"), 6)
# self.assertEqual(deckblatt._rsm_direct.anzahl("Meldelampe_Überstrom"), 6)
# self.assertEqual(deckblatt._rsm_direct.anzahl("Hauptschalter_Ein-Meldung"), 6)
# self.assertEqual(deckblatt._rsm_direct.anzahl("Werma_Rundumleuchte_Störung"), 6)
# self.assertEqual(deckblatt._rsm_fa.anzahl("Anzahl_RSM"), 13)
# self.assertEqual(deckblatt._rsm_fa.anzahl("Sensor_optisch_Traverse"), 32)
# self.assertEqual(deckblatt._rsm_fa.anzahl("Sensor_optisch_Traverse_zusätzlich"), 3)
# self.assertEqual(deckblatt._rsm_fa.anzahl("Bedientableau_1-fach"), 29)
# self.assertEqual(deckblatt._rsm_fa.anzahl("Bedientableau_2-fach"), 5)
# self.assertEqual(deckblatt._rsm_fa.anzahl("Weiche"), 29)
# self.assertEqual(deckblatt._rsm_fa.anzahl("RRA_bi"), 32)
# self.assertEqual(deckblatt._rsm_fa.anzahl("RRA_bi_auf_Haupstrecke"), 3)
# self.assertEqual(deckblatt._rsm_fa.anzahl("RRA_bi_ohne_SPS-Ansteuerung"), 0)
# self.assertEqual(deckblatt._rsm_fa.anzahl("gemeinsame_Wendung"), 3)
# self.assertEqual(deckblatt._rsm_fa.anzahl("Seilzugschalter"), 26)
# self.assertEqual(deckblatt._rsm_fa.anzahl("Mit_Drucktaster"), 3)
# self.assertEqual(deckblatt._rsm_fa.anzahl("Meldelampe_Überstrom"), 5)
# self.assertEqual(deckblatt._rsm_fa.anzahl("Hauptschalter_Ein-Meldung"), 5)
# self.assertEqual(deckblatt._rsm_fa.anzahl("Werma_Rundumleuchte_Störung"), 5)
self.assertEqual(deckblatt._flyer_f40.anzahl("Anzahl"), 4)
self.assertEqual(deckblatt._flyer_f40.anzahl("Anzahl_Schienen"), 5)
self.assertEqual(deckblatt._flyer_f40.anzahl("Sensor_optisch_Traverse"), 54)
self.assertEqual(deckblatt._flyer_f40.anzahl("Sensor_induktiv_Spulenhalter"), 8)
self.assertEqual(deckblatt._flyer_f40.anzahl("Bedientableau_2-fach"), 4)
self.assertEqual(deckblatt._flyer_f40.anzahl("Interface_Doffer"), 4)
self.assertEqual(deckblatt._flyer_f40.anzahl("Weiche"), 26)
self.assertEqual(deckblatt._flyer_f40.anzahl("Weiche_nach_Flyer_(bipolar)"), 0)
self.assertEqual(deckblatt._flyer_f40.anzahl("Dreifachweiche"), 7)
self.assertEqual(deckblatt._flyer_f40.anzahl("Wechsel"), 6)
self.assertEqual(deckblatt._flyer_f40.anzahl("Stopper"), 5)
self.assertEqual(deckblatt._flyer_f40.anzahl("RA_uni"), 4)
self.assertEqual(deckblatt._flyer_f40.anzahl("RA_uni_abhebbar"), 0)
self.assertEqual(deckblatt._flyer_f40.anzahl("RA_uni_ohne_SPS-Ansteuerung"), 0)
self.assertEqual(deckblatt._flyer_f40.anzahl("RRA_BI_abhebbar"), 4)
self.assertEqual(deckblatt._flyer_f40.anzahl("RRA_bi_ohne_SPS-Ansteuerung"), 4)
self.assertEqual(deckblatt._flyer_f40.anzahl("Doppelstreckenantrieb"), 5)
self.assertEqual(deckblatt._flyer_f40.anzahl("RA_bi_abhebbar_(unger._Schiene)"), 3)
self.assertEqual(deckblatt._flyer_f40.anzahl("Meldelampe_Überstrom"), 4)
self.assertEqual(deckblatt._flyer_f40.anzahl("Hauptschalter_Ein-Meldung"), 4)
self.assertEqual(deckblatt._flyer_f40.anzahl("Werma_Rundumleuchte_Störung"), 4)
'''
self.assertEqual(deckblatt._neuenhauser.anzahl("Anzahl"), 11)
self.assertEqual(deckblatt._neuenhauser.anzahl("Anzahl_Vorstaustrecken"), 12)
self.assertEqual(deckblatt._neuenhauser.anzahl("Anzahl_Nachstaustrecken"), 14)
self.assertEqual(deckblatt._neuenhauser.anzahl("Sensor_optisch_Traverse"), 319)
self.assertEqual(deckblatt._neuenhauser.anzahl("Sensorik_Zugpositionierung"), 44)
self.assertEqual(deckblatt._neuenhauser.anzahl("Sensor_WT18_Spulenprüfung_voll/leer"), 22)
self.assertEqual(deckblatt._neuenhauser.anzahl("Bedientableau_2-fach"), 11)
self.assertEqual(deckblatt._neuenhauser.anzahl("Interface_Putzmaschine"), 11)
self.assertEqual(deckblatt._neuenhauser.anzahl("Weiche"), 132)
def test_RSM_direct(self):
Anzahl_RSM = {
"Anzahl":0,