Compare commits

..

23 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
s.steuer 754ae39364 FIX - Bei der Ermittlung, ob sich Lieferantenbeistellungen oder dispoinaktive Teile in der Stückliste befinden wurden auch die Teilenummern aus tieferen Stücklistenebenen betrachtet. Es dürfen aber nur die Teilenummern der aktiven Stücklistenebene in Betracht gezogen werden. Dies wurde behoben. 2025-07-24 13:30:51 +02:00
s.steuer 6590674d8e FIX - '- BG' aus SE-Eigenschaft 'Title' entfernt, da ' - BG' laut Entscheidung von Hr. Rost nicht mehr in der Baugruppenbezeichnung stehen darf. Im Feld 'Bezeichnung 4' wurde zudem das anfängliche Leerzeichen vor dem Strich in ' - BG' entfernt, da Bezeichnung 4 jetzt auf der Zeichnungsstückliste in der Spalte 'Bemerkung' abgerufen wird und ein Großteil der Baugruppen im System kein Leerzeichen vor dem Strich hat (bei allen 2er-Nummern und bei den Baugruppen, die noch mit der Excel migriert wurden). 2025-07-24 11:34:15 +02:00
10 changed files with 226 additions and 128 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. - Loslösen von Excel als Bedienumgebung, somit nicht an Version oder Hersteller gebunden.
- Problemloseres Ausrollen auf mehrere Benutzer - 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" 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 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 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 Bitte pflegen sie den Inhalt dieser Datei in die jeweiligen CampiEsterni.ini unter CALC LINK10 ein.
echo: echo:
endlocal endlocal
pause pause
+2 -1
View File
@@ -4,7 +4,8 @@
#============================================================================================================================ #============================================================================================================================
MA0000008 MA0000008
MA0000005
[ExcludedPartnumbersInSummary] [ExcludedPartnumbersInSummary]
#============================================================================================================================ #============================================================================================================================
# Teilenummern, die in der Zusammenfassung der Migrationsübersicht nicht enthalten sein sollen # Teilenummern, die in der Zusammenfassung der Migrationsübersicht nicht enthalten sein sollen
+2
View File
@@ -1,4 +1,5 @@
[Farbauswahl] [Farbauswahl]
PANTONE 2175 C
RAL 1004 Goldgelb RAL 1004 Goldgelb
RAL 2000 Gelborange RAL 2000 Gelborange
RAL 3002 Kaminrot RAL 3002 Kaminrot
@@ -23,6 +24,7 @@ Grün
Blau Blau
siehe Oben siehe Oben
Ocker Ocker
Transparent
[FarbeEloxieren] [FarbeEloxieren]
Rot Rot
+115 -97
View File
@@ -1,8 +1,32 @@
{ {
"VA": {
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
},
"1.4301": { "1.4301": {
"Werkstoff": "1.4301 (X5CrNi18-10)", "Werkstoff": "1.4301 (X5CrNi18-10)",
"Werkstofftyp": "Stahl" "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": { "1.4305": {
"Werkstoff": "1.4305 (X8CrNiS18-9)", "Werkstoff": "1.4305 (X8CrNiS18-9)",
"Werkstofftyp": "Stahl" "Werkstofftyp": "Stahl"
@@ -15,14 +39,42 @@
"Werkstoff": "1.4305 (X8CrNiS18-9)", "Werkstoff": "1.4305 (X8CrNiS18-9)",
"Werkstofftyp": "Stahl" "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": { "X12CrNi17 7": {
"Werkstoff": "1.4310 (X10CrNi18-8)", "Werkstoff": "1.4310 (X10CrNi18-8)",
"Werkstofftyp": "Stahl" "Werkstofftyp": "Stahl"
}, },
"Aluminium": {
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
},
"AlCuMgPb": {
"Werkstoff": "EN AW-2007 (3.1645)",
"Werkstofftyp": "Aluminium"
},
"3.3206.72": { "3.3206.72": {
"Werkstoff": "EN AW-6063-T66", "Werkstoff": "EN AW-6063-T66",
"Werkstofftyp": "Aluminium" "Werkstofftyp": "Aluminium"
}, },
"AlSiMg 0,5 F25": {
"Werkstoff": "EN AW-6063-T66",
"Werkstofftyp": "Aluminium"
},
"F25": {
"Werkstoff": "EN AW-6063-T66",
"Werkstofftyp": "Aluminium"
},
"AlMgSi0.5": { "AlMgSi0.5": {
"Werkstoff": "EN AW-6060 (3.3206)", "Werkstoff": "EN AW-6060 (3.3206)",
"Werkstofftyp": "Aluminium" "Werkstofftyp": "Aluminium"
@@ -31,25 +83,37 @@
"Werkstoff": "EN AW-6060 (3.3206)", "Werkstoff": "EN AW-6060 (3.3206)",
"Werkstofftyp": "Aluminium" "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)", "Werkstoff": "EN AW-6060-T66 (3.3206-T66)",
"Werkstofftyp": "Aluminium" "Werkstofftyp": "Aluminium"
}, },
"AlSiMg 0,5 F25": { "AlSiMg 0,5 F22": {
"Werkstoff": "EN AW-6063-T66", "Werkstoff": "EN AW-6060-T66 (3.3206-T66)",
"Werkstofftyp": "Aluminium" "Werkstofftyp": "Aluminium"
}, },
"AlMg3": { "AlMg3": {
"Werkstoff": "EN AW-5754 (3.3535)", "Werkstoff": "EN AW-5754 (3.3535)",
"Werkstofftyp": "Aluminium" "Werkstofftyp": "Aluminium"
}, },
"St": {
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
},
"C45": { "C45": {
"Werkstoff": "1.0503 (C45)", "Werkstoff": "1.0503 (C45)",
"Werkstofftyp": "Stahl" "Werkstofftyp": "Stahl"
}, },
"F25": { "Ck60": {
"Werkstoff": "EN AW-6063-T66", "Werkstoff": "1.1221 (C60E)",
"Werkstofftyp": "Aluminium" "Werkstofftyp": "Stahl"
},
"S355JO": {
"Werkstoff": "1.0553 (S355J0)",
"Werkstofftyp": "Stahl"
}, },
"1.0038 (S235JR)": { "1.0038 (S235JR)": {
"Werkstoff": "1.0038 (S235JR)", "Werkstoff": "1.0038 (S235JR)",
@@ -63,18 +127,6 @@
"Werkstoff": "1.0038 (S235JR)", "Werkstoff": "1.0038 (S235JR)",
"Werkstofftyp": "Stahl" "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": { "St-37": {
"Werkstoff": "1.0038 (S235JR)", "Werkstoff": "1.0038 (S235JR)",
"Werkstofftyp": "Stahl" "Werkstofftyp": "Stahl"
@@ -83,26 +135,35 @@
"Werkstoff": "1.0038 (S235JR)", "Werkstoff": "1.0038 (S235JR)",
"Werkstofftyp": "Stahl" "Werkstofftyp": "Stahl"
}, },
"X5CrNi18-10": { "S235 JR": {
"Werkstoff": "1.4301 (X5CrNi18-10)", "Werkstoff": "1.0038 (S235JR)",
"Werkstofftyp": "Stahl" "Werkstofftyp": "Stahl"
}, },
"X8CrNiS 18-9": { "S235JR galv. verzinkt Fe/Zn 8-15 B": {
"Werkstoff": "1.4305 (X8CrNiS18-9)", "Werkstoff": "1.0038 (S235JR)",
"Werkstofftyp": "Stahl",
"Oberfläche": "verzinken"
},
"S235JR+Cr": {
"Werkstoff": "1.0038+CR (S235JR+CR)",
"Werkstofftyp": "Stahl" "Werkstofftyp": "Stahl"
}, },
"X8CrNiS18-9": { "S235JRG2C": {
"Werkstoff": "1.4305 (X8CrNiS18-9)", "Werkstoff": "1.0122 (S235JRC)",
"Werkstofftyp": "Stahl" "Werkstofftyp": "Stahl"
}, },
"1.4301 (X5CrNi18-10)": { "S235JRG2C+C": {
"Werkstoff": "1.4301 (X5CrNi18-10)", "Werkstoff": "1.0122 (S235JRC)",
"Werkstofftyp": "Stahl" "Werkstofftyp": "Stahl"
}, },
"X5CrNi 18-10": { "S235JRC": {
"Werkstoff": "1.4301 (X5CrNi18-10)", "Werkstoff": "1.0122 (S235JRC)",
"Werkstofftyp": "Stahl" "Werkstofftyp": "Stahl"
}, },
"Kunststo": {
"Werkstoff": "false",
"Message": "Bitte individuell wählen!"
},
"PA6 GF30": { "PA6 GF30": {
"Werkstoff": "PA 6 GF 30", "Werkstoff": "PA 6 GF 30",
"Werkstofftyp": "Kunst-/ Verbundstoff", "Werkstofftyp": "Kunst-/ Verbundstoff",
@@ -130,14 +191,15 @@
"Werkstofftyp": "Kunst-/ Verbundstoff", "Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)" "Oberfläche": "Masterbatch (Grundfarbe)"
}, },
"S235JR galv. verzinkt Fe/Zn 8-15 B": { "PA 66 GF 50": {
"Werkstoff": "1.0038 (S235JR)", "Werkstoff": "PA 66 GF 50",
"Werkstofftyp": "Stahl", "Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "verzinken" "Oberfläche": "Masterbatch (Grundfarbe)"
}, },
"VA": { "PC GF 10": {
"Werkstoff": "false", "Werkstoff": "PC GF 10",
"Message": "Bitte individuell wählen!" "Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)"
}, },
"POM schw": { "POM schw": {
"Werkstoff": "POM", "Werkstoff": "POM",
@@ -151,12 +213,24 @@
"Oberfläche": "Masterbatch (Grundfarbe)", "Oberfläche": "Masterbatch (Grundfarbe)",
"Farbe": "Schwarz" "Farbe": "Schwarz"
}, },
"POM sch": {
"Werkstoff": "POM",
"Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)",
"Farbe": "Schwarz"
},
"POM weiß": { "POM weiß": {
"Werkstoff": "POM", "Werkstoff": "POM",
"Werkstofftyp": "Kunst-/ Verbundstoff", "Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)", "Oberfläche": "Masterbatch (Grundfarbe)",
"Farbe": "Weiß" "Farbe": "Weiß"
}, },
"POM natur": {
"Werkstoff": "POM",
"Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)",
"Farbe": "Natur"
},
"POM": { "POM": {
"Werkstoff": "POM", "Werkstoff": "POM",
"Werkstofftyp": "Kunst-/ Verbundstoff", "Werkstofftyp": "Kunst-/ Verbundstoff",
@@ -172,11 +246,13 @@
"Werkstofftyp": "Kunst-/ Verbundstoff", "Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)" "Oberfläche": "Masterbatch (Grundfarbe)"
}, },
"-": { "PUR D44 ": {
"Werkstoff": "false", "Werkstoff": "Bitte individuell wählen!",
"Message": "Bitte individuell wählen!" "Werkstofftyp": "Kunst-/ Verbundstoff",
"Oberfläche": "Masterbatch (Grundfarbe)",
"Farbe": "Bitte individuell wählen!"
}, },
"St": { "-": {
"Werkstoff": "false", "Werkstoff": "false",
"Message": "Bitte individuell wählen!" "Message": "Bitte individuell wählen!"
}, },
@@ -184,10 +260,6 @@
"Werkstoff": "false", "Werkstoff": "false",
"Message": "Bitte individuell wählen!" "Message": "Bitte individuell wählen!"
}, },
"S235 JR": {
"Werkstoff": "1.0038 (S235JR)",
"Werkstofftyp": "Stahl"
},
"-----": { "-----": {
"Werkstoff": "false", "Werkstoff": "false",
"Message": "Bitte individuell wählen!" "Message": "Bitte individuell wählen!"
@@ -216,62 +288,8 @@
"Werkstoff": "false", "Werkstoff": "false",
"Message": "Bitte individuell wählen!" "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": { "Federsta": {
"Werkstoff": "false", "Werkstoff": "false",
"Message": "Bitte individuell wählen!" "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.0715+C (11SMn30+C)
1.0917 (DX51D+Z) 1.0917 (DX51D+Z)
1.1191 (C45E) 1.1191 (C45E)
1.1221 (C60E)
1.2842 (90MnCrV8) 1.2842 (90MnCrV8)
1.4035 (X45CrS13) 1.4035 (X45CrS13)
1.4301 (X5CrNi18-10) 1.4301 (X5CrNi18-10)
@@ -31,6 +32,7 @@ Schwermetall
1.4310 (X10CrNi18-8) 1.4310 (X10CrNi18-8)
1.5023 (38Si7) 1.5023 (38Si7)
1.7131 (16MnCr5) 1.7131 (16MnCr5)
1.7225 (42CrMo4)
siehe Hersteller siehe Hersteller
siehe Stückliste siehe Stückliste
@@ -64,13 +66,16 @@ PA 6 GF 30
PA 66 PA 66
PA 66 GF 25 PA 66 GF 25
PA 66 GF 30 PA 66 GF 30
PA 66 GF 50
PA GF 25 PA GF 25
PBT PBT
PC PC
PC GF 10
PE PE
PE-HD PE-HD
PE-LD PE-LD
PE-UHMW PE-UHMW
PE-UHMW antistatisch
POM POM
POM-C POM-C
POM-H POM-H
@@ -84,13 +89,16 @@ PUR
PUR - 95 Shore A PUR - 95 Shore A
PUR D44 - 80 Shore A PUR D44 - 80 Shore A
PVC PVC
PVC-P (weich)
PVC-U PVC-U
siehe Hersteller siehe Hersteller
siehe Stückliste siehe Stückliste
TPU TPU
TPU - 95 Shore A
TPU - 98 Shore A TPU - 98 Shore A
[Schwermetall] [Schwermetall]
CC493K - GC (CuSn7Zn4Pb7 - C - GC)
CW459K (CuSn8P) CW459K (CuSn8P)
CW614N (CuZn39Pb3) CW614N (CuZn39Pb3)
CW708R (CuZn31Si) CW708R (CuZn31Si)
+31 -20
View File
@@ -104,6 +104,7 @@ class CadItem(DataModel):
# ist also eigentlich kein Teil der gui # ist also eigentlich kein Teil der gui
"truemmer", "truemmer",
# Felder der Comboboxen. benannt wie deren callbacks # Felder der Comboboxen. benannt wie deren callbacks
"cb_datenbank_neu",
"cb_pdm_kategorie_neu", "cb_pdm_kategorie_neu",
"cb_halbzeug_neu", "cb_halbzeug_neu",
"cb_halbzeugoberflaeche", "cb_halbzeugoberflaeche",
@@ -242,7 +243,6 @@ class CadItem(DataModel):
self._read_only_items = {} self._read_only_items = {}
self._controller = None self._controller = None
self._logic = None self._logic = None
self._has_bom = None
def clear(self): def clear(self):
asm_id = self.get_asm_id() # das einzige was beim Löschen des Modells bleiben sollte, ist die übergeordnete Baugruppennummer 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!") raise ValueError(f"Property '{property_name}' doesn't exist in BOM! Check property spelling!")
else: else:
return self._bom_properties[property_name] 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 # Methoden um die Verwendbarkeit einzelner Schalter auszugrauen
def set_read_only_dict(self, data:dict): 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. Überprüft, ob in den Eingabefeldern der GUI unzulässige Zeichen eingetragen wurden.
Die unzulässigen Zeichen sind in cfg/InvalidCharacters.txt aufgelistet. 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 = {} wrongchars = {}
keys_to_check = [] keys_to_check = []
@@ -1177,9 +1169,6 @@ class CadItem(DataModel):
bezeichnung1 = self.get_content('bezeichnung1_sivas', 'bezeichnung1_neu') bezeichnung1 = self.get_content('bezeichnung1_sivas', 'bezeichnung1_neu')
title = bezeichnung1 title = bezeichnung1
data["KategorieNE"] = pdm_kategorie_neu data["KategorieNE"] = pdm_kategorie_neu
# Bezeichnung um "- BG" ergänzen
if pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe":
title = bezeichnung1 + " - BG"
data["Title"] = title data["Title"] = title
# Aus Halbzeug # Aus Halbzeug
@@ -1223,7 +1212,7 @@ class CadItem(DataModel):
bezeichnung4 = "" bezeichnung4 = ""
if pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe": if pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe":
bezeichnung4 = " - BG" bezeichnung4 = "- BG"
data["Bezeichnung4"] = bezeichnung4 data["Bezeichnung4"] = bezeichnung4
# Author # Author
@@ -1516,7 +1505,9 @@ class GuiLogic():
"""gibt ein dict zurück, welches neu im Modell gesetzt wird""" """gibt ein dict zurück, welches neu im Modell gesetzt wird"""
ret = dict() 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) ret = self.cb_pdm_kategorie_neu(value)
elif key == 'cb_neuaufbau': elif key == 'cb_neuaufbau':
ret = self.cb_neuaufbau(value) ret = self.cb_neuaufbau(value)
@@ -1584,7 +1575,9 @@ class GuiLogic():
wegen der Abhängigkeiten der Comboboxen anschliessend folgen sollen wegen der Abhängigkeiten der Comboboxen anschliessend folgen sollen
""" """
ret = list() 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', 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_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', 'cb_mengeneinheit_neu', 'cb_halbzeug_neu', 'cb_dispogruppe_neu', 'cb_dispolaufgruppe_neu', 'cb_hersteller_neu', 'cb_werkstoffdiskrepanz',
@@ -1658,6 +1651,14 @@ class GuiLogic():
raise Exception("this callback does not exist "+key) raise Exception("this callback does not exist "+key)
return ret 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): def cb_pdm_kategorie_neu(self, selected):
"""setzt die Dropdownliste mit """setzt die Dropdownliste mit
<undefiniert>, Baugruppe, Einzelteil, Kaufteil, Schweissbaugruppe <undefiniert>, Baugruppe, Einzelteil, Kaufteil, Schweissbaugruppe
@@ -2593,13 +2594,23 @@ class GuiLogic():
ruestcode = self._model.get_gui_data("ruestcode_sivas") ruestcode = self._model.get_gui_data("ruestcode_sivas")
werkstoffdiskr_neu = self._model.get_gui_data("werkstoffdiskr_neu") werkstoffdiskr_neu = self._model.get_gui_data("werkstoffdiskr_neu")
aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu") aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu")
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 beistellungen = False
dispoinaktiv = False dispoinaktiv = False
if bom_exists: if children_of_active_id is not None:
beistellungen = "True" in self._model.get_bom_properties("Lieferantenbeistellung").values() all_beistellungen = self._model.get_bom_properties("Lieferantenbeistellung")
dispoinaktiv = "False" in self._model.get_bom_properties("Dispoaktiv").values() 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
if all_dispoaktiv[child] == "False":
dispoinaktiv = True
# Liest Optionsnamen aus 'Zusatzinformationen.cfg' # Liest Optionsnamen aus 'Zusatzinformationen.cfg'
cfg_single_options = dict.fromkeys(self._config.Zusatz.get_section_options("EinzelTextblöcke"), "EinzelTextblöcke") cfg_single_options = dict.fromkeys(self._config.Zusatz.get_section_options("EinzelTextblöcke"), "EinzelTextblöcke")
-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) 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 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) 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_red_ids(pending_ids)
self._model.set_parent_children(sivas_bom.parent_children) self._model.set_parent_children(sivas_bom.parent_children)
self._model.set_asm_id(asm_id) self._model.set_asm_id(asm_id)
self._model.set_bom_existence(bom_existence)
self._model.set_bom_properties(sivas_bom.all_bom_properties) self._model.set_bom_properties(sivas_bom.all_bom_properties)
def set_model(self, model): 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 = 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_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3)
self.datenbank = tk.StringVar() self.datenbank = tk.StringVar()
self.datenbank.set("Schulung") # default self.datenbank_prod = ttk.Radiobutton(frame,
self.datenbank_prod = ttk.Radiobutton(frame, text="Produktiv", variable=self.datenbank, value="Produktiv") 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.datenbank_prod .grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3)
self.rownum += 1 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.datenbank_schul .grid(column=col_left+2, row=self.rownum, sticky=tk.W, padx=3, pady=3)
self.rownum += 1 self.rownum += 1