Compare commits

...

21 Commits

Author SHA1 Message Date
m.stangl b2127b70c9 Add CLAUDE.md for Claude Code guidance
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-11 23:20:21 +02:00
Benjamin_Mueller db46c38ac6 Werkstoff CC493K - GC hinzugefügt 2026-05-05 17:20:01 +02:00
Benjamin_Mueller af69b98365 Materialübersetzung für Ck60 hinzugefügt 2026-05-05 15:48:52 +02:00
Benjamin_Mueller 87ff81d001 Werkstoff 1.1221 (C60E) hinzugefügt 2026-05-05 14:27:10 +02:00
Benjamin_Mueller cbc2afa9e1 Redundante Werkstoffübersetzung hinzugefügt 2026-02-11 09:30:14 +01:00
Benjamin_Mueller 47e70d952e Werkstoff & redundante Werkstoffübersetzung hinzugefügt 2026-02-10 13:03:09 +01:00
Benjamin_Mueller 5a1fa5a7e4 Installationsvoraussetzung erstellt 2026-02-10 11:20:24 +01:00
Benjamin_Mueller 4defeb11f0 Neue Farbausprägung hinzugefügt 2026-02-10 11:17:49 +01:00
Benjamin_Mueller 2591d78716 Installationsvoraussetzung hinzugefügt. Excel in 64 Bit zwingend erforderlich. 32 Bit ist nicht ausreichend 2026-01-08 09:04:45 +01:00
Benjamin_Mueller ac99ca73a5 Farbe Transparent hinzugefügt 2025-11-05 10:17:55 +01:00
Benjamin_Mueller 17cbd61fb4 Werkstoff PVC-P (weich) hinzugefügt) 2025-11-05 10:11:03 +01:00
Benjamin_Mueller f18f8cae2d Materialübersetzung für 1.4301 hinzugefügt und die verschiedenen Übersetzungen zueinander geordnet. 2025-10-30 11:21:39 +01:00
Benjamin_Mueller 7fb778125b Werkstoff hinzugefügt 2025-10-23 10:53:07 +02:00
Benjamin_Mueller a279c581e3 Weitere Rohteilnummer hinzugefügt 2025-10-16 12:30:35 +02:00
Benjamin_Mueller aa73ffb444 Verschiedene Werkstoffe der Auswahlliste hinzugefügt 2025-10-16 12:26:57 +02:00
s.steuer 61cd933de3 FIX - Bei Definierung der automatischen Zusatzinformationen muss geprüft werden, ob die aktuell ausgewählte Nummer über eine Stückliste verfügt. Die Methode 'has_bom', die dafür implementiert wurde hat jedoch nur zurückgegeben, ob die oberste Nummer, nach der gesucht wurde eine Stückliste hat oder nicht. Dies wurde nun behoben, indem zunächst alle Kinder der ausgewählten Nummer geholt werden. Wenn diese 'None' sind hat die ausgewählte Teilenummer keine Stückliste. Die Methode 'has_bom' sowie die Methode 'set_bom_existance' werden daher nun nicht mehr benötigt. Alle entsprechenden Referenzen wurden entfernt. 2025-08-27 16:54:04 +02:00
Benjamin_Mueller 9ef23a735a Werkstoff 'PE-UHMW antistatisch' wurde hinzugefügt 2025-07-29 10:28:16 +02:00
s.steuer 089dadd52b FIX - Wurde der Radiobutton 'Schulung' ausgewählt und anschließend ein weiteres Feld geändert (z.B. Kategorie), dann wurde immer wieder zurück auf den 'Produktiv'-Radiobutton umgeschaltet. Die neu ergänzte Callback-Funktion 'cb_datenbank_neu' verhindert dies nun, d.h. der gewählte Wert (z.B. Schulung) bleibt so lange erhalten, bis ein anderes Teil migriert wird. Defaultwert ist und bleibt weiterhin 'Produktiv' 2025-07-27 22:15:50 +02:00
s.steuer 9f5f4150f1 FIX - fehlenden Backslash nach C:\Users\s.steuer\Documents\Pythonprojekte\CreoMigrate\bin ergänzt, da in cremig_setenv.bat die Umgebungsvariable CREMIG_BIN am Ende ohne Backslash definiert ist 2025-07-26 22:22:05 +02:00
s.steuer c64327cbe7 FIX - Beistellungs- und Dispoaktiv-Eigenschaft darf nur dann eingelesen werden, wenn auch eine Stückliste vorliegt, da andernfalls auch keine JSON vorliegt, aus der die Eigenschaften gelesen werden könnten. Aktuell wurde in diesem Fall eine Fehlermeldung ausgegeben 2025-07-26 20:56:27 +02:00
s.steuer 9e25ca15bc FIX - Backslashes durch noramle Slashes ersetzt, da '\R' = Carriage Return, wodurch eine Syntaxwarnung ausgegeben wird 2025-07-26 20:43:40 +02:00
10 changed files with 217 additions and 124 deletions
+54
View File
@@ -0,0 +1,54 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Projektübersicht
**CreoMigrate** enthält Skripte zur Migration von Creo-Altdaten nach Solid Edge / Rule
Designer. Ziel ist es, alte 3D-Daten aus Creo mit aktuellen SIVAS-Informationen in die
neue Konstruktionsumgebung zu überführen. Der Fokus liegt auf automatisierbaren Prozessen
mit wenig Nutzereingriff (Datenbank-Abgleich, Listenvergleich, TOS-String-Erzeugung).
## Projektstruktur
```text
CreoMigrate/
├── bin/ # Nummerierte Workflow-Batch-Skripte (01..06) + GUI/Setup
├── lib/ # Python-Quellcode
├── Include/ # Zusätzliche Includes
├── cfg/ # Konfiguration
├── data/ # Datenbanken / Eingabedaten
├── doc/ # Dokumentation
├── log/ # Log-Dateien
└── work/ # Arbeitsdateien
```
## Workflow-Skripte (bin/)
Die Batch-Skripte sind in Ausführungsreihenfolge nummeriert:
1. `01_get_rd_dbase.bat` — Rule-Designer-Bestand ableiten
2. `02_get_sivas_dbase.bat` — SIVAS-Datenbank ableiten
3. `03_get_blacklist_dbase.bat` — Blacklist erzeugen
4. `04_compare_lists.bat` — Listen vergleichen
5. `05_get_sivas_teilestamm.bat` — Teilestamm aus SIVAS
6. `06_migrationsstatus_treeview.bat` — Migrationsstatus als Treeview
Weitere: `gui.bat` (GUI), `create_tos_string.bat` / `write_tos_string_to_file.bat`
(TOS-Strings), `install_py.bat`, `cremig_setenv.bat`, `get_cmd.bat`.
## Kernmodule (lib/)
- `CreoMigrateGui.py`, `gui.py`, `controller.py` — GUI + Steuerung (Tkinter)
- `compare_lists.py` — Listenvergleich
- `create_tos.py` — TOS-String-Erzeugung
- `caditem.py` — Datenmodell CAD-Item
- `update_database.py`, `manage_configs.py` — DB/Config
- `test_*.py` — Tests
## Setup
```cmd
bin\install_py.bat
```
Legt die virtuelle Umgebung an und installiert `lib/requirements.txt`.
+2 -2
View File
@@ -29,5 +29,5 @@ Vorteile:
- Loslösen von Excel als Bedienumgebung, somit nicht an Version oder Hersteller gebunden.
- Problemloseres Ausrollen auf mehrere Benutzer
Installationsvoraussetzungen:
- Tabellenkalkulationsprogramm (Excel) in 64-Bit Version -> Dies ist wichtig, da unter 32-Bit das Migrationstool von Siemens (DataPrep-Tool) nicht korrekt funktioniert!
+2 -2
View File
@@ -9,11 +9,11 @@ set "Namensanfang=TOS-Gruppenstring_"
set "Dateiname=%Namensanfang%!datetime!.txt"
REM Führe die folgende .bat aus mit dem gesetzten Schalter -o um eine Datei mit dem Code zu generieren
CALL %CREMIG_BIN%create_tos_string.bat -o %Dateiname%
CALL %CREMIG_BIN%\create_tos_string.bat -o %Dateiname%
echo Die Datei wurde in %CREMIG_WORK% mit dem Namen: %Dateiname% gespeichert
echo Bitte pflegen sie den Inhalt dieser Datei in die jeweiligen CampiEsterni.ini unter CALC LINK10 ein.
echo:
endlocal
pause
pause
+2 -1
View File
@@ -4,7 +4,8 @@
#============================================================================================================================
MA0000008
MA0000005
[ExcludedPartnumbersInSummary]
#============================================================================================================================
# Teilenummern, die in der Zusammenfassung der Migrationsübersicht nicht enthalten sein sollen
+2
View File
@@ -1,4 +1,5 @@
[Farbauswahl]
PANTONE 2175 C
RAL 1004 Goldgelb
RAL 2000 Gelborange
RAL 3002 Kaminrot
@@ -23,6 +24,7 @@ Grün
Blau
siehe Oben
Ocker
Transparent
[FarbeEloxieren]
Rot
+115 -97
View File
@@ -1,8 +1,32 @@
{
"VA": {
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
},
"1.4301": {
"Werkstoff": "1.4301 (X5CrNi18-10)",
"Werkstofftyp": "Stahl"
},
"X5CrNi18-10": {
"Werkstoff": "1.4301 (X5CrNi18-10)",
"Werkstofftyp": "Stahl"
},
"1.4301 (X5CrNi18-10)": {
"Werkstoff": "1.4301 (X5CrNi18-10)",
"Werkstofftyp": "Stahl"
},
"1.4301f / 59381": {
"Werkstoff": "1.4301 (X5CrNi18-10)",
"Werkstofftyp": "Stahl"
},
"X5CrNi 18-10": {
"Werkstoff": "1.4301 (X5CrNi18-10)",
"Werkstofftyp": "Stahl"
},
"X5CrNi 18-9": {
"Werkstoff": "1.4301 (X5CrNi18-10)",
"Werkstofftyp": "Stahl"
},
"1.4305": {
"Werkstoff": "1.4305 (X8CrNiS18-9)",
"Werkstofftyp": "Stahl"
@@ -15,14 +39,42 @@
"Werkstoff": "1.4305 (X8CrNiS18-9)",
"Werkstofftyp": "Stahl"
},
"X10CrNiS 18-9": {
"Werkstoff": "1.4305 (X8CrNiS18-9)",
"Werkstofftyp": "Stahl"
},
"X8CrNiS 18-9": {
"Werkstoff": "1.4305 (X8CrNiS18-9)",
"Werkstofftyp": "Stahl"
},
"X8CrNiS18-9": {
"Werkstoff": "1.4305 (X8CrNiS18-9)",
"Werkstofftyp": "Stahl"
},
"X12CrNi17 7": {
"Werkstoff": "1.4310 (X10CrNi18-8)",
"Werkstofftyp": "Stahl"
},
"Aluminium": {
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
},
"AlCuMgPb": {
"Werkstoff": "EN AW-2007 (3.1645)",
"Werkstofftyp": "Aluminium"
},
"3.3206.72": {
"Werkstoff": "EN AW-6063-T66",
"Werkstofftyp": "Aluminium"
},
"AlSiMg 0,5 F25": {
"Werkstoff": "EN AW-6063-T66",
"Werkstofftyp": "Aluminium"
},
"F25": {
"Werkstoff": "EN AW-6063-T66",
"Werkstofftyp": "Aluminium"
},
"AlMgSi0.5": {
"Werkstoff": "EN AW-6060 (3.3206)",
"Werkstofftyp": "Aluminium"
@@ -31,25 +83,37 @@
"Werkstoff": "EN AW-6060 (3.3206)",
"Werkstofftyp": "Aluminium"
},
"AlSiMg 0,5 F22": {
"AlMgSi 0.5": {
"Werkstoff": "EN AW-6060 (3.3206)",
"Werkstofftyp": "Aluminium"
},
"AlMgSi0.5 F22": {
"Werkstoff": "EN AW-6060-T66 (3.3206-T66)",
"Werkstofftyp": "Aluminium"
},
"AlSiMg 0,5 F25": {
"Werkstoff": "EN AW-6063-T66",
"AlSiMg 0,5 F22": {
"Werkstoff": "EN AW-6060-T66 (3.3206-T66)",
"Werkstofftyp": "Aluminium"
},
"AlMg3": {
"Werkstoff": "EN AW-5754 (3.3535)",
"Werkstofftyp": "Aluminium"
},
"St": {
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
},
"C45": {
"Werkstoff": "1.0503 (C45)",
"Werkstofftyp": "Stahl"
},
"F25": {
"Werkstoff": "EN AW-6063-T66",
"Werkstofftyp": "Aluminium"
"Ck60": {
"Werkstoff": "1.1221 (C60E)",
"Werkstofftyp": "Stahl"
},
"S355JO": {
"Werkstoff": "1.0553 (S355J0)",
"Werkstofftyp": "Stahl"
},
"1.0038 (S235JR)": {
"Werkstoff": "1.0038 (S235JR)",
@@ -63,18 +127,6 @@
"Werkstoff": "1.0038 (S235JR)",
"Werkstofftyp": "Stahl"
},
"S235JRG2C": {
"Werkstoff": "1.0122 (S235JRC)",
"Werkstofftyp": "Stahl"
},
"S235JRG2C+C": {
"Werkstoff": "1.0122 (S235JRC)",
"Werkstofftyp": "Stahl"
},
"S235JR+Cr": {
"Werkstoff": "1.0038+CR (S235JR+CR)",
"Werkstofftyp": "Stahl"
},
"St-37": {
"Werkstoff": "1.0038 (S235JR)",
"Werkstofftyp": "Stahl"
@@ -83,26 +135,35 @@
"Werkstoff": "1.0038 (S235JR)",
"Werkstofftyp": "Stahl"
},
"X5CrNi18-10": {
"Werkstoff": "1.4301 (X5CrNi18-10)",
"S235 JR": {
"Werkstoff": "1.0038 (S235JR)",
"Werkstofftyp": "Stahl"
},
"X8CrNiS 18-9": {
"Werkstoff": "1.4305 (X8CrNiS18-9)",
"S235JR galv. verzinkt Fe/Zn 8-15 B": {
"Werkstoff": "1.0038 (S235JR)",
"Werkstofftyp": "Stahl",
"Oberfläche": "verzinken"
},
"S235JR+Cr": {
"Werkstoff": "1.0038+CR (S235JR+CR)",
"Werkstofftyp": "Stahl"
},
"X8CrNiS18-9": {
"Werkstoff": "1.4305 (X8CrNiS18-9)",
"S235JRG2C": {
"Werkstoff": "1.0122 (S235JRC)",
"Werkstofftyp": "Stahl"
},
"1.4301 (X5CrNi18-10)": {
"Werkstoff": "1.4301 (X5CrNi18-10)",
"S235JRG2C+C": {
"Werkstoff": "1.0122 (S235JRC)",
"Werkstofftyp": "Stahl"
},
"X5CrNi 18-10": {
"Werkstoff": "1.4301 (X5CrNi18-10)",
"S235JRC": {
"Werkstoff": "1.0122 (S235JRC)",
"Werkstofftyp": "Stahl"
},
"Kunststo": {
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
},
"PA6 GF30": {
"Werkstoff": "PA 6 GF 30",
"Werkstofftyp": "Kunst-/ Verbundstoff",
@@ -130,14 +191,15 @@
"Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)"
},
"S235JR galv. verzinkt Fe/Zn 8-15 B": {
"Werkstoff": "1.0038 (S235JR)",
"Werkstofftyp": "Stahl",
"Oberfläche": "verzinken"
"PA 66 GF 50": {
"Werkstoff": "PA 66 GF 50",
"Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)"
},
"VA": {
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
"PC GF 10": {
"Werkstoff": "PC GF 10",
"Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)"
},
"POM schw": {
"Werkstoff": "POM",
@@ -151,12 +213,24 @@
"Oberfläche": "Masterbatch (Grundfarbe)",
"Farbe": "Schwarz"
},
"POM sch": {
"Werkstoff": "POM",
"Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)",
"Farbe": "Schwarz"
},
"POM weiß": {
"Werkstoff": "POM",
"Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)",
"Farbe": "Weiß"
},
"POM natur": {
"Werkstoff": "POM",
"Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)",
"Farbe": "Natur"
},
"POM": {
"Werkstoff": "POM",
"Werkstofftyp": "Kunst-/ Verbundstoff",
@@ -172,11 +246,13 @@
"Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)"
},
"-": {
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
"PUR D44 ": {
"Werkstoff": "Bitte individuell wählen!",
"Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)",
"Farbe": "Bitte individuell wählen!"
},
"St": {
"-": {
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
},
@@ -184,10 +260,6 @@
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
},
"S235 JR": {
"Werkstoff": "1.0038 (S235JR)",
"Werkstofftyp": "Stahl"
},
"-----": {
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
@@ -216,62 +288,8 @@
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
},
"AlCuMgPb": {
"Werkstoff": "EN AW-2007 (3.1645)",
"Werkstofftyp": "Aluminium"
},
"AlMgSi 0.5": {
"Werkstoff": "EN AW-6060 (3.3206)",
"Werkstofftyp": "Aluminium"
},
"Kunststo": {
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
},
"Federsta": {
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
},
"S355JO": {
"Werkstoff": "1.0553 (S355J0)",
"Werkstofftyp": "Stahl"
},
"X10CrNiS 18-9": {
"Werkstoff": "1.4305 (X8CrNiS18-9)",
"Werkstofftyp": "Stahl"
},
"POM natur": {
"Werkstoff": "POM",
"Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)",
"Farbe": "Natur"
},
"POM sch": {
"Werkstoff": "POM",
"Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)",
"Farbe": "Schwarz"
},
"1.4301f / 59381": {
"Werkstoff": "1.4301 (X5CrNi18-10)",
"Werkstofftyp": "Stahl"
},
"PUR D44 ": {
"Werkstoff": "Bitte individuell wählen!",
"Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)",
"Farbe": "Bitte individuell wählen!"
},
"Aluminium": {
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
},
"AlMgSi0.5 F22": {
"Werkstoff": "EN AW-6060-T66 (3.3206-T66)",
"Werkstofftyp": "Aluminium"
},
"S235JRC": {
"Werkstoff": "1.0122 (S235JRC)",
"Werkstofftyp": "Stahl"
}
}
+8
View File
@@ -24,6 +24,7 @@ Schwermetall
1.0715+C (11SMn30+C)
1.0917 (DX51D+Z)
1.1191 (C45E)
1.1221 (C60E)
1.2842 (90MnCrV8)
1.4035 (X45CrS13)
1.4301 (X5CrNi18-10)
@@ -31,6 +32,7 @@ Schwermetall
1.4310 (X10CrNi18-8)
1.5023 (38Si7)
1.7131 (16MnCr5)
1.7225 (42CrMo4)
siehe Hersteller
siehe Stückliste
@@ -64,13 +66,16 @@ PA 6 GF 30
PA 66
PA 66 GF 25
PA 66 GF 30
PA 66 GF 50
PA GF 25
PBT
PC
PC GF 10
PE
PE-HD
PE-LD
PE-UHMW
PE-UHMW antistatisch
POM
POM-C
POM-H
@@ -84,13 +89,16 @@ PUR
PUR - 95 Shore A
PUR D44 - 80 Shore A
PVC
PVC-P (weich)
PVC-U
siehe Hersteller
siehe Stückliste
TPU
TPU - 95 Shore A
TPU - 98 Shore A
[Schwermetall]
CC493K - GC (CuSn7Zn4Pb7 - C - GC)
CW459K (CuSn8P)
CW614N (CuZn39Pb3)
CW708R (CuZn31Si)
+22 -16
View File
@@ -104,6 +104,7 @@ class CadItem(DataModel):
# ist also eigentlich kein Teil der gui
"truemmer",
# Felder der Comboboxen. benannt wie deren callbacks
"cb_datenbank_neu",
"cb_pdm_kategorie_neu",
"cb_halbzeug_neu",
"cb_halbzeugoberflaeche",
@@ -242,7 +243,6 @@ class CadItem(DataModel):
self._read_only_items = {}
self._controller = None
self._logic = None
self._has_bom = None
def clear(self):
asm_id = self.get_asm_id() # das einzige was beim Löschen des Modells bleiben sollte, ist die übergeordnete Baugruppennummer
@@ -295,14 +295,6 @@ class CadItem(DataModel):
raise ValueError(f"Property '{property_name}' doesn't exist in BOM! Check property spelling!")
else:
return self._bom_properties[property_name]
def set_bom_existence(self, bom_status: bool) -> bool:
self._has_bom = bom_status
def has_bom(self) -> bool:
return self._has_bom
# Methoden um die Verwendbarkeit einzelner Schalter auszugrauen
def set_read_only_dict(self, data:dict):
@@ -780,7 +772,7 @@ class CadItem(DataModel):
"""
Überprüft, ob in den Eingabefeldern der GUI unzulässige Zeichen eingetragen wurden.
Die unzulässigen Zeichen sind in cfg/InvalidCharacters.txt aufgelistet.
Ursprung dieser Liste ist \\ruledesigner\RDF_Daten\Konfigurator\CustomVaulting\ERP_Item.ini -> Option "InvalidCharacters"
Ursprung dieser Liste ist //ruledesigner/RDF_Daten/Konfigurator/CustomVaulting/ERP_Item.ini -> Option "InvalidCharacters"
"""
wrongchars = {}
keys_to_check = []
@@ -1513,7 +1505,9 @@ class GuiLogic():
"""gibt ein dict zurück, welches neu im Modell gesetzt wird"""
ret = dict()
if key == 'cb_pdm_kategorie_neu':
if key == 'cb_datenbank_neu':
ret = self.cb_datenbank_neu(value)
elif key == 'cb_pdm_kategorie_neu':
ret = self.cb_pdm_kategorie_neu(value)
elif key == 'cb_neuaufbau':
ret = self.cb_neuaufbau(value)
@@ -1581,7 +1575,9 @@ class GuiLogic():
wegen der Abhängigkeiten der Comboboxen anschliessend folgen sollen
"""
ret = list()
if key == 'cb_pdm_kategorie_neu':
if key == 'cb_datenbank_neu':
ret = []
elif key == 'cb_pdm_kategorie_neu':
ret = ['cb_neuaufbau', 'cb_aus_halbzeug_neu', 'cb_3Dmodel_neu', 'cb_halbzeugOhneSaege_neu', 'cb_ruestcode_neu',
'cb_fertigungsart_neu', 'cb_allgemeintoleranz_neu', 'cb_fosGruppe_neu', 'cb_kalkulationsart_neu', 'cb_beschaffungsart_neu',
'cb_mengeneinheit_neu', 'cb_halbzeug_neu', 'cb_dispogruppe_neu', 'cb_dispolaufgruppe_neu', 'cb_hersteller_neu', 'cb_werkstoffdiskrepanz',
@@ -1655,6 +1651,14 @@ class GuiLogic():
raise Exception("this callback does not exist "+key)
return ret
def cb_datenbank_neu(self, selected):
ret = dict()
if selected is None:
ret['datenbank'] = "Produktiv" # Default
else:
ret['datenbank'] = selected
return ret
def cb_pdm_kategorie_neu(self, selected):
"""setzt die Dropdownliste mit
<undefiniert>, Baugruppe, Einzelteil, Kaufteil, Schweissbaugruppe
@@ -2590,16 +2594,18 @@ class GuiLogic():
ruestcode = self._model.get_gui_data("ruestcode_sivas")
werkstoffdiskr_neu = self._model.get_gui_data("werkstoffdiskr_neu")
aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu")
all_beistellungen = self._model.get_bom_properties("Lieferantenbeistellung")
all_dispoaktiv = self._model.get_bom_properties("Dispoaktiv")
active_id = self._model.get_current_item_id()
children_of_active_id = self._model.get_all_children_of_id(active_id)
bom_exists = self._model.has_bom()
# Ermittlung, ob sich in der Stückliste der ausgewählten Teilenummer Beistellungsteile oder nicht-dispoaktive Teile befinden
beistellungen = False
dispoinaktiv = False
if bom_exists:
if children_of_active_id is not None:
all_beistellungen = self._model.get_bom_properties("Lieferantenbeistellung")
all_dispoaktiv = self._model.get_bom_properties("Dispoaktiv")
active_id = self._model.get_current_item_id()
children_of_active_id = self._model.get_all_children_of_id(active_id)
for child in children_of_active_id:
if all_beistellungen[child] == "True":
beistellungen = True
-3
View File
@@ -125,8 +125,6 @@ class Controller(Observer):
sivas_bom = SivasBOM(asm_id, data_dir, asm_id + '.json', load_local_bom, excluded_bom_ids)
bom_existence = False if not sivas_bom.bom_data else True
sivas_bom.extend_asm_bom(asm_id, {"Parent": None, "Position": "10/0"}) # Ergänzt Stücklistendaten um eine fiktive Baugruppe "None", in der die Haupt-Teilenummer als Pos. 1 vorliegt. Dadurch können auch Teilenummern ohne Stückliste korrekt abgebildet werden
rd_data = RuleDesignerDatabaseConfig(data_dir, rd_dbase_filename, load_local_rd_ids)
@@ -140,7 +138,6 @@ class Controller(Observer):
self._model.set_red_ids(pending_ids)
self._model.set_parent_children(sivas_bom.parent_children)
self._model.set_asm_id(asm_id)
self._model.set_bom_existence(bom_existence)
self._model.set_bom_properties(sivas_bom.all_bom_properties)
def set_model(self, model):
+10 -3
View File
@@ -302,11 +302,18 @@ class RightFramePDM(AllFrames):
self.datenbank_label = ttk.Label(frame, text="Datenbank:", foreground='blue' )
self.datenbank_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3)
self.datenbank = tk.StringVar()
self.datenbank.set("Schulung") # default
self.datenbank_prod = ttk.Radiobutton(frame, text="Produktiv", variable=self.datenbank, value="Produktiv")
self.datenbank_prod = ttk.Radiobutton(frame,
text="Produktiv",
variable=self.datenbank,
value="Produktiv",
command=lambda: self.callback('cb_datenbank_neu', self.datenbank.get()))
self.datenbank_prod .grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3)
self.rownum += 1
self.datenbank_schul = ttk.Radiobutton(frame, text="Schulung", variable=self.datenbank, value="Schulung")
self.datenbank_schul = ttk.Radiobutton(frame,
text="Schulung",
variable=self.datenbank,
value="Schulung",
command=lambda: self.callback('cb_datenbank_neu', self.datenbank.get()))
self.datenbank_schul .grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3)
self.rownum += 1