From 64267c69e2869e835b5097518e536e46179a7d45 Mon Sep 17 00:00:00 2001 From: Simon Schmutzler Date: Thu, 17 Mar 2022 18:07:12 +0100 Subject: [PATCH] =?UTF-8?q?Klassen=20f=C3=BCr=20Mengengeruest=20sind=20fer?= =?UTF-8?q?tiggestellt.=20Tests=20f=C3=BCr=20RSM=5FDirect,=20RSM=5FFA=20un?= =?UTF-8?q?d=20Flyer=5FF40=20abgeschlossen.=20Todo:=20Tests=20f=C3=BCr=20d?= =?UTF-8?q?ie=20letzten=20Klassen=20durchf=C3=BChren=20und=20TODOs=20durch?= =?UTF-8?q?sprechen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rieter_ekalk.py | 693 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 507 insertions(+), 186 deletions(-) diff --git a/rieter_ekalk.py b/rieter_ekalk.py index cd7644a..47deebd 100644 --- a/rieter_ekalk.py +++ b/rieter_ekalk.py @@ -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,