diff --git a/bin/_setenv_automatisierung.bat b/bin/_setenv_automatisierung.bat new file mode 100644 index 0000000..2a9ad9a --- /dev/null +++ b/bin/_setenv_automatisierung.bat @@ -0,0 +1,31 @@ +@echo off +REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt +pushd %~dp0\.. + +set PROJECT=Z:\Automatisierung\kabellaengen +set PROJECT_BIN=%PROJECT%\bin +set PROJECT_CFG=%PROJECT%\cfg +set PROJECT_DOC=%PROJECT%\doc +set PROJECT_LIB=%PROJECT%\lib +set PROJECT_DATA=%PROJECT%\data +set PROJECT_WORK=%PROJECT%\work +set PROJECT_TEST=%PROJECT%\testdata + +set SIVAS_TEILESTAMM=\\195.243.223.3\sivas\jit\programme\KSbExcelExportSivasTeilestamm.exe +set SIVAS_EXCEL_EXPORT_DIR=%PROJECT_DATA% + +if not exist %PROJECT%\work mkdir %PROJECT%\work +if not exist %PROJECT%\data mkdir %PROJECT%\data + +set INSTALL_DIR=Z:\Automatisierung\test_kabellaengen + +set PATH=%PROJECT_BIN%;%PATH% + +set NETWORK_INTERPRETER_PATH=U:\Programmierumgebung\Python312 + + +popd +goto :eof + + + diff --git a/bin/install.bat b/bin/dropItem_create.bat similarity index 52% rename from bin/install.bat rename to bin/dropItem_create.bat index 9b4f201..d9c37aa 100644 --- a/bin/install.bat +++ b/bin/dropItem_create.bat @@ -1,4 +1,4 @@ -@echo on +@echo off call setenv.bat @@ -7,5 +7,10 @@ set SHORTCUT=%INSTALL_DIR%\create_cables.lnk set TARGET=%PROJECT_BIN%\getexdraw.bat set ICON=%PROJECT_DOC%\img\Icons\Icon_Gemini2.ico - -powershell -Command "$s=(New-Object -COM WScript.Shell).CreateShortcut('%SHORTCUT%');$s.TargetPath='%TARGET%';$s.IconLocation='%ICON%';$s.Save()" \ No newline at end of file + +REM ersetze die Zeile mit setenv.bat durch die mit dem neuen Pfad +powershell -Command "(Get-Content getexdraw.bat) -replace '^.*setenv.bat$', 'call %PROJECT_BIN%\setenv.bat' | Set-Content getexdraw.bat" + +REM Icon anlegen +powershell -Command "$s=(New-Object -COM WScript.Shell).CreateShortcut('%SHORTCUT%');$s.TargetPath='%TARGET%';$s.IconLocation='%ICON%';$s.Save()" +explorer.exe %INSTALL_DIR% diff --git a/bin/dropItem_remove.bat b/bin/dropItem_remove.bat new file mode 100644 index 0000000..d722924 --- /dev/null +++ b/bin/dropItem_remove.bat @@ -0,0 +1,10 @@ +@echo on + +call setenv.bat + +set SHORTCUT=%INSTALL_DIR%\create_cables.lnk + +git checkout getexdraw.bat +DEL /Q %INSTALL_DIR%\create_cables.lnk +RD /Q %INSTALL_DIR% +pause diff --git a/bin/getexdraw.bat b/bin/getexdraw.bat index 4b3c558..402483e 100644 --- a/bin/getexdraw.bat +++ b/bin/getexdraw.bat @@ -1,10 +1,18 @@ @echo off if [%1]==[] goto usage -for /F %%i in ("%1") do set FILENAME=%%~ni +for %%i in ("%~1") do ( + set "FILENAME=%%~ni" + set "EXT=%%~xi" + set "DIR=%%~dpi" +) + +REM echo Dateiname ohne Erweiterung: %FILENAME% +REM echo Erweiterung: %EXT% +REM echo Verzeichnis: %DIR% -call setenv.bat +call C:\10-Develop\gitrepos\kabellaengen\bin\setenv.bat echo --hole Positionen @@ -14,7 +22,9 @@ call routing.bat --filename %FILENAME%_positions.json -w %FILENAME%_todraw.json echo --zeichne Kabel in dxf Datei call draw_dxf.bat --filename %FILENAME%_todraw.json --new %FILENAME%_cables.dxf -x %FILENAME%_cables.xlsx -move %PROJECT_WORK%\%FILENAME%_* %INSTALL_DIR% + +mkdir %INSTALL_DIR%\%FILENAME% +move %PROJECT_WORK%\%FILENAME%_* %INSTALL_DIR%\%FILENAME% pause diff --git a/bin/manage_interpreter.bat b/bin/manage_interpreter.bat index 4b45d78..02d47a3 100644 --- a/bin/manage_interpreter.bat +++ b/bin/manage_interpreter.bat @@ -19,10 +19,12 @@ goto :eof :activate_interpreter_network SET OLD_PATH=%PATH% SET PATH=%NETWORK_INTERPRETER_PATH%;%PATH% +CALL %PROJECT%\.venv\Scripts\activate.bat goto :eof :deactivate_interpreter_network SET PATH=%OLD_PATH% SET OLD_PATH= SET NETWORK_INTERPRETER_PATH= +CALL %PROJECT%\.venv\Scripts\deactivate.bat goto :eof diff --git a/bin/setenv.bat b/bin/setenv.bat index afe4978..a0ef4b0 100644 --- a/bin/setenv.bat +++ b/bin/setenv.bat @@ -2,7 +2,7 @@ REM ~dp0 steht für das Verzeichnis, in der diese Datei liegt pushd %~dp0\.. -set PROJECT=C:\10-Develop\kabellaengen +set PROJECT=C:\10-Develop\gitrepos\kabellaengen set PROJECT_BIN=%PROJECT%\bin set PROJECT_CFG=%PROJECT%\cfg set PROJECT_DOC=%PROJECT%\doc @@ -17,7 +17,7 @@ set SIVAS_EXCEL_EXPORT_DIR=%PROJECT_DATA% if not exist %PROJECT%\work mkdir %PROJECT%\work if not exist %PROJECT%\data mkdir %PROJECT%\data -set INSTALL_DIR="%USERPROFILE%\Desktop\Kabeltool" +set INSTALL_DIR="%ONEDRIVE%\Desktop\Kabeltool" set PATH=%PROJECT_BIN%;%PATH% diff --git a/doc/Online_Zusammenfassung.md b/doc/Online_Zusammenfassung.md index f508976..1ea9c41 100644 --- a/doc/Online_Zusammenfassung.md +++ b/doc/Online_Zusammenfassung.md @@ -20,8 +20,8 @@ Die Platzierung der Elektronikkomponenten bleibt manuell, doch die Übergabe des --- -## 1/4 Ausgangslage -Ziel war die Automatisierung der Verkabelung großer Industrieanlagen, um manuelle und fehleranfällige Prozesse zu eliminieren und stets den kürzesten Kabelweg zu ermitteln. Ein umfassendes Fehler-Management ermöglicht die frühzeitige Erkennung von Layout- und Spezifikationsfehlern. So können mehrere Verkabelungsvarianten effizient verglichen werden. +## 1/4 Ausgangslage +Ziel war die Automatisierung der Verkabelung großer Industrieanlagen, um manuelle und fehleranfällige Prozesse zu eliminieren und stets den kürzesten Kabelweg zu ermitteln. Ein umfassendes Fehler-Management ermöglicht die frühzeitige Erkennung von Layout- und Spezifikationsfehlern. So können mehrere Verkabelungsvarianten auch effizient miteinander verglichen werden. --- @@ -31,26 +31,27 @@ Ziel war die Automatisierung der Verkabelung großer Industrieanlagen, um manuel Entwicklung eines Tools, das Kabellängen automatisch auf Basis von DXF-CAD-Zeichnungen ermittelt und dokumentiert. Die Verbindung von Sensoren, Aktoren und Unterverteilern wird algorithmisch über einen Graphen berechnet. Integration in bestehende CAD- und ERP-Prozesse steht im Fokus. **Entscheidungsfindung:** -- Analyse manueller Arbeitsschritte -- Validierung durch Pilotlayouts -- Entscheidung für Eigenentwicklung wegen hoher Anpassbarkeit +- Analyse manueller Arbeitsschritte +- Erstellung von typischen Pilotlayouts aus vorhandenen Projekten +- Abwägung einer Eigenentwicklung gegenüber einer kommerziellen Lösung **Konzeption:** -- Anforderungen an Layoutinterpretation, Routinglogik und Ausgabeformate -- Schnittstellen zu CAD, Excel und ERP (Artikelnummern) -- Konfigurierbares Regelwerk zur Betriebsmittelerkennung -- Technische Rahmenbedingungen: Python-Umgebung, Layerstruktur, Attributformate +- Anforderungen an Layout, Routinglogik und Ausgabeformate +- Schnittstellen zu CAD, Excel und ERP (Artikelnummern) +- Definition der Schnittstellen und Verwendung der Anwendung +- Konfigurierbares Regelwerk zur Betriebsmittelerkennung +- Technische Rahmenbedingungen: Python-Umgebung, Layerstrukturen und Attribute der Blöcke oder Elemente in der DXF Datei **Lösung:** -Das Tool liest DXF-Dateien ein, berechnet Kabelwege automatisch und liefert Excel-Listen sowie modifizierte DXF-Dateien zur direkten Weiterverwendung. Alles erfolgt automatisiert ohne Benutzereingriff. +Das Tool liest DXF-Dateien ein, berechnet Kabelwege automatisch und liefert Excel-Listen sowie DXF-Dateien mit Kabelwegen zur direkten Weiterverwendung. Alles erfolgt automatisiert ohne Benutzereingriff. --- ## 3/4 Ausführung ### **Entwicklung:** -- Funktionsspezifikation für automatisierte Verkabelung -- Programmierung von Routinglogik und Betriebsmittelerkennung +- Spezifikation der Programmteilen für die automatisierte Verkabelung (Koordinatenextraktion, Routing und Ergebnis Erzeugung) +- Programmierung von Routinglogik und Betriebsmittelerkennung inklusive Unittests - Modulare Architektur mit klaren Schnittstellen zu Excel, CAD und ERP - Iterative Tests mit Pilotlayouts @@ -62,7 +63,7 @@ Das Tool liest DXF-Dateien ein, berechnet Kabelwege automatisch und liefert Exce #### **Konzept zur automatisierten Kabelauswertung** -Die Analyse der Verkabelung erfolgt direkt aus einer DXF-Datei, welche zuvor aus dem E-CAD exportiert wurde. Die Herausforderung bestand in der zuverlässigen Erkennung der Betriebsmittel (Stecker, Klemmen, Sensoren) sowie deren logischer Verbindung über Linienzüge, unabhängig von Layerstrukturen oder Maßstäben. Zur Lösung wurde eine robuste Parsing-Logik entwickelt, die anhand definierter Symbole und Geometriebeziehungen die Verkabelung interpretiert und automatisch Kabellisten erzeugt. +Die Analyse der Verkabelung erfolgt direkt aus einer DXF-Datei, welche zuvor durch die Abteilung Automation zur Beschreibung der Anlage erstellt wird. Die Herausforderung bestand in der zuverlässigen Erkennung der Betriebsmittel (Stecker, Klemmen, Sensoren) sowie deren logischer Verbindung über Linienzüge, unabhängig von Layerstrukturen oder Maßstäben. Zur Lösung wurde eine robuste Parsing-Logik entwickelt, die anhand definierter Symbole und Geometriebeziehungen die Verkabelung interpretiert und automatisch Kabellisten erzeugt. #### **Schnittstellen zu Bestandsdaten und ERP** @@ -70,15 +71,15 @@ Die durch das Tool erzeugten Listen enthalten nicht nur Start- und Zielpunkte, s #### **Standardisierung von Symbolen und Layern** -Damit das Tool zuverlässig funktioniert, mussten klare Standards für Layernamen, Symbolplatzierung und Anschlussgeometrien definiert werden. Unterschiedliche Zeichnungsstile aus früheren Projekten führten zu fehlerhaften Auswertungen. Durch die Festlegung verbindlicher Konventionen in der E-CAD-Ausgabe sowie die Bereitstellung von Symbolbibliotheken konnte ein einheitlicher Datenbestand sichergestellt werden. Dies war Voraussetzung für eine skalierbare Nutzung. +Damit das Tool zuverlässig funktioniert, mussten klare Standards für Layer-Namen, Symbole und deren Attribute definiert werden. Unterschiedliche Zeichnungsstile oder unterschiedliche Benennungs - Standards aus früheren Projekten führen zu fehlerhaften Auswertungen. Durch die Festlegung verbindlicher Konventionen sowie die Bereitstellung einer Symbolbibliothek konnte ein einheitlicher Datenbestand sichergestellt werden. Dies war Voraussetzung für eine skalierbare Nutzung. #### **Automatisierung wiederkehrender Arbeitsschritte** -Die Auswertung erfolgt auf Knopfdruck ohne Zwischenschritte. Neben der Kabelliste werden automatisch Auszüge für die Arbeitsvorbereitung, Längenlisten für die Konfektion und Verbindungsübersichten für die Dokumentation erzeugt. Über konfigurierbare Vorlagen lassen sich kundenspezifische Layouts anpassen. Auch eine automatische Plausibilitätsprüfung (z.B. doppelte Nummern, offene Enden) ist integriert, um Fehlerquellen frühzeitig zu erkennen – ganz ohne manuelles Nacharbeiten. +Die Auswertung erfolgt auf Knopfdruck ohne Zwischenschritte. Neben der Kabelliste werden automatisch Auszüge für die Arbeitsvorbereitung, Längenlisten für die Konfektionierung und Verbindungsübersichten für die Dokumentation erzeugt. Über konfigurierbare Vorlagen lassen sich kundenspezifische Layouts anpassen. Auch eine automatische Plausibilitätsprüfung (z.B. doppelte Nummern, offene Enden) ist integriert, um Fehlerquellen frühzeitig zu erkennen – ganz ohne manuelles Nacharbeiten. #### **Fehlererkennung und Qualitätssicherung** -Ein zentraler Bestandteil des Tools ist die automatische Prüfung auf typische Fehlerquellen: unverbundene Leitungen, doppelt vergebene Kennzeichen oder falsche Layer. Diese werden bereits bei der Analyse der DXF-Datei erkannt und in einem Fehlerprotokoll ausgegeben. Dadurch wird verhindert, dass unvollständige oder inkonsistente Daten weiterverarbeitet werden. Über die zusätzliche Ausgabe der erkannten Fehler in dafür vorgesehenen Arbeitsblättern im Excel-Output kann eine manuelle behandlung der Fehelr im Eingangs-layout erfolgen. +Ein zentraler Bestandteil des Tools ist die automatische Prüfung auf typische Fehlerquellen: unverbundene Leitungen, doppelt vergebene Kennzeichen oder falsche Layer. Diese werden bereits bei der Analyse der DXF-Datei erkannt und in einem Fehlerprotokoll ausgegeben. Dadurch wird verhindert, dass unvollständige oder inkonsistente Daten weiterverarbeitet werden. Über die zusätzliche Ausgabe der erkannten Fehler in dafür vorgesehenen Arbeitsblättern im Excel-Output kann eine manuelle Behandlung der Fehler im Eingangs-layout erfolgen. # 4/4 Ergebnis -Der Zeitaufwand von der Konstruktion bis zur bestellbaren Baugruppe wurde deutlich reduziert. Fehleranfällige, manuelle Tätigkeiten entfallen – stattdessen übernehmen automatisierte Workflows wiederkehrende Aufgaben wie Wegfindung, Längenberechnung und Stücklistenerstellung. Das System ist damit nicht nur ein Werkzeug zur Auswertung, sondern ein zentrales Element in der Standardisierung elektrotechnischer Konstruktion. Es bildet die Basis für weitere Digitalisierungsschritte in der Produktentstehung und ermöglicht eine durchgängige Informationsverfügbarkeit bis hin zur Beschaffung und Inbetriebnahme. \ No newline at end of file +Der Zeitaufwand von der Konstruktion bis zur bestellbaren Baugruppe wurde deutlich reduziert. Viele fehleranfällige, manuelle Tätigkeiten im Layout entfallen – stattdessen übernehmen automatisierte Workflows wiederkehrende Aufgaben wie Wegfindung, Längenberechnung und Stücklistenerstellung. Das System ist damit nicht nur ein Werkzeug zur Auswertung, sondern ein zentrales Element in der Standardisierung elektrotechnischer Konstruktion. Es bildet die Basis für weitere Digitalisierungsschritte in der Produktentstehung und ermöglicht eine durchgängige Informationsverfügbarkeit bis hin zur Beschaffung und Inbetriebnahme. \ No newline at end of file diff --git a/doc/img/session/01-fenster-dragndrop-varIcon.png b/doc/img/session/01-fenster-dragndrop-varIcon.png new file mode 100644 index 0000000..f5de487 Binary files /dev/null and b/doc/img/session/01-fenster-dragndrop-varIcon.png differ diff --git a/doc/img/session/01-fenster-dragndrop.png b/doc/img/session/01-fenster-dragndrop.png new file mode 100644 index 0000000..da45b69 Binary files /dev/null and b/doc/img/session/01-fenster-dragndrop.png differ diff --git a/doc/img/session/02-Programmlauf1.png b/doc/img/session/02-Programmlauf1.png new file mode 100644 index 0000000..625a55c Binary files /dev/null and b/doc/img/session/02-Programmlauf1.png differ diff --git a/doc/img/session/02-Programmlauf2.png b/doc/img/session/02-Programmlauf2.png new file mode 100644 index 0000000..05b13b0 Binary files /dev/null and b/doc/img/session/02-Programmlauf2.png differ diff --git a/doc/img/session/03-Ergebnis.png b/doc/img/session/03-Ergebnis.png new file mode 100644 index 0000000..f1dad0a Binary files /dev/null and b/doc/img/session/03-Ergebnis.png differ diff --git a/doc/img/session/04-Ergebnis-Excel01.png b/doc/img/session/04-Ergebnis-Excel01.png new file mode 100644 index 0000000..2d40c77 Binary files /dev/null and b/doc/img/session/04-Ergebnis-Excel01.png differ diff --git a/doc/img/session/04-Ergebnis-Excel02.png b/doc/img/session/04-Ergebnis-Excel02.png new file mode 100644 index 0000000..32194da Binary files /dev/null and b/doc/img/session/04-Ergebnis-Excel02.png differ diff --git a/doc/img/session/05-Ergebnis-Kabellayer01.png b/doc/img/session/05-Ergebnis-Kabellayer01.png new file mode 100644 index 0000000..c336c66 Binary files /dev/null and b/doc/img/session/05-Ergebnis-Kabellayer01.png differ diff --git a/doc/img/session/05-Ergebnis-Kabellayer02.png b/doc/img/session/05-Ergebnis-Kabellayer02.png new file mode 100644 index 0000000..dad5b39 Binary files /dev/null and b/doc/img/session/05-Ergebnis-Kabellayer02.png differ diff --git a/doc/img/session/05-Ergebnis-Kabellayer03.png b/doc/img/session/05-Ergebnis-Kabellayer03.png new file mode 100644 index 0000000..6536e51 Binary files /dev/null and b/doc/img/session/05-Ergebnis-Kabellayer03.png differ diff --git a/doc/vid/Darstellung-Ergebnisse-Kabel.mp4 b/doc/vid/Darstellung-Ergebnisse-Kabel.mp4 new file mode 100644 index 0000000..9400141 Binary files /dev/null and b/doc/vid/Darstellung-Ergebnisse-Kabel.mp4 differ