# PointCab Projekt Umbenenner v4.1.1 Ein GUI-Tool zum Umbenennen von Scans in PointCab-Projekten und zum Zusammenführen mehrerer Projekte. ## Funktionen ### 1. 📁 Einzelprojekt bearbeiten - Einzelnes PointCab-Projekt auswählen und Scans umbenennen - Vollständige Scan-Namen: `1.lsd → Projektname_01.lsd` - Clustername-Bereinigung über Konfigurationsdatei - Automatisches Backup der LSDX-Datei ### 2. 📂 Batch Renamer - Mehrere Projekte in einem Verzeichnis automatisch verarbeiten - Fortschrittsanzeige und detailliertes Logging - Fehlertoleranz: Bei Fehler wird mit nächstem Projekt fortgefahren ### 3. 🔀 Projektmerger (verbessert in v4.1) - Mehrere PointCab-Projekte in ein Stammprojekt zusammenführen - Zwei Modi: Einzelprojekt oder Batch-Merge - **NEU**: Intelligente Cluster-Duplikat-Erkennung - Intelligente Namenskonflikt-Behandlung - Vollständige LSDX-Zusammenführung mit detailliertem Logging ## Installation ### Voraussetzungen - Python 3.8 oder höher - Tkinter (normalerweise in Python enthalten) ### Ausführen ```bash python pointcab_renamer.py ``` ## Projektmerger - Detaillierte Dokumentation ### Konzept Der Projektmerger ermöglicht das Zusammenführen mehrerer PointCab-Projekte in ein einzelnes Stammprojekt. Dies ist nützlich wenn: - Mehrere Scan-Sessions zu einem Projekt gehören - Projekte nachträglich zusammengeführt werden sollen - Daten aus verschiedenen Quellen konsolidiert werden müssen ### Modi #### Einzelprojekt hinzufügen 1. Stammprojekt (Ziel) auswählen 2. Ein einzelnes Quellprojekt auswählen 3. Vorschau anzeigen 4. Merge durchführen #### Batch-Merge 1. Stammprojekt (Ziel) auswählen 2. Hauptverzeichnis mit mehreren Quellprojekten auswählen 3. Alle gefundenen Projekte werden automatisch erkannt 4. Vorschau anzeigen 5. Merge durchführen ### Merge-Operationen Der Projektmerger führt folgende Operationen durch: 1. **Backup erstellen** - Vor dem Merge wird ein Backup der Stammprojekt-LSDX erstellt - Format: `projektname.lsdx.backup_YYYYMMDD_HHMMSS` 2. **LSD-Dateien kopieren** - Alle LSD-Dateien aus den Quellprojekten werden in das Stammprojekt kopiert - Bei Namenskonflikten: Automatische Umbenennung (siehe unten) 3. **PNG-Dateien kopieren** - Alle Preview-Bilder werden in den Previews-Ordner des Stammprojekts kopiert - Bei Namenskonflikten: Automatische Umbenennung 4. **LSDX zusammenführen** - **Cluster-Duplikat-Erkennung** (NEU in v4.1): - Prüft ob Cluster mit gleichem Namen bereits existiert - Bei Duplikat: Scans werden dem existierenden Cluster zugeordnet - Bei neuem Cluster: Neuer Cluster wird mit neuer UUID hinzugefügt - Alle Scan-Elemente werden mit korrekten Parent-Referenzen eingefügt - UUIDs werden neu generiert um Konflikte zu vermeiden - FilePath-Referenzen werden bei Umbenennung angepasst - Detailliertes Logging aller Operationen ### Namenskonflikt-Behandlung Wenn eine Datei im Zielordner bereits existiert: ``` Vor Merge: Stammprojekt/PointCloud/scan_01.lsd (existiert) Quellprojekt/PointCloud/scan_01.lsd (zu mergen) Nach Merge: Stammprojekt/PointCloud/scan_01.lsd (original) Stammprojekt/PointCloud/scan_01_merged_1.lsd (aus Quellprojekt) ``` Die LSDX-Referenzen werden automatisch aktualisiert: ```xml scan_01.lsd scan_01_merged_1.lsd ``` ### Beispiel: Einzelprojekt-Merge ``` Vorher: ├── Stammprojekt/ │ ├── Stammprojekt_PointCloud/ │ │ ├── Stammprojekt.lsdx │ │ ├── 1.lsd │ │ ├── 2.lsd │ │ └── Previews/ │ │ ├── 1.png │ │ └── 2.png ├── Quellprojekt/ │ ├── Quellprojekt_PointCloud/ │ │ ├── Quellprojekt.lsdx │ │ ├── 1.lsd │ │ ├── 2.lsd │ │ └── Previews/ │ │ ├── 1.png │ │ └── 2.png Nachher: ├── Stammprojekt/ │ ├── Stammprojekt_PointCloud/ │ │ ├── Stammprojekt.lsdx (zusammengeführt) │ │ ├── Stammprojekt.lsdx.backup_20260114_101500 │ │ ├── 1.lsd │ │ ├── 2.lsd │ │ ├── 1_merged_1.lsd (aus Quellprojekt) │ │ ├── 2_merged_2.lsd (aus Quellprojekt) │ │ └── Previews/ │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 1_merged_1.png │ │ └── 2_merged_2.png │ └── merge_20260114_101500.log ``` ### Beispiel: Batch-Merge ``` Vorher: ├── Hauptverzeichnis/ │ ├── Stammprojekt/ │ │ └── Stammprojekt_PointCloud/ │ │ ├── Stammprojekt.lsdx │ │ └── (Scans 1-5) │ ├── Projekt_A/ │ │ └── Projekt_A_PointCloud/ │ │ ├── Projekt_A.lsdx │ │ └── (Scans 1-3) │ └── Projekt_B/ │ └── Projekt_B_PointCloud/ │ ├── Projekt_B.lsdx │ └── (Scans 1-4) Nach Batch-Merge (Stammprojekt als Ziel, Hauptverzeichnis als Quelle): ├── Stammprojekt/ │ └── Stammprojekt_PointCloud/ │ ├── Stammprojekt.lsdx (enthält jetzt 12 Scans) │ ├── Stammprojekt.lsdx.backup_... │ └── (alle LSD/PNG-Dateien) │ └── merge_....log ``` ### Logging Jeder Merge-Vorgang erstellt eine detaillierte Log-Datei: - **Einzelprojekt-Merge**: `merge_YYYYMMDD_HHMMSS.log` im Stammprojekt-Verzeichnis - **Batch-Merge**: Eine Log-Datei pro Merge-Vorgang Log-Inhalt: - Alle kopierten Dateien - Umbenennungen bei Konflikten - Aktualisierte LSDX-Referenzen - Fehler und Warnungen ### Fehlerbehandlung - **Fehlende Dateien**: Werden übersprungen, Warnung im Log - **Batch-Merge bei Fehler**: Verarbeitung wird mit nächstem Projekt fortgesetzt - **LSDX-Parsing-Fehler**: Projekt wird übersprungen - **Backup**: Immer vor Änderungen erstellt ## Konfiguration ### cluster_cleanup.txt Strings die aus dem Clusternamen entfernt werden: ``` _re _li _mi # Kommentare mit # beginnen ``` ## Executable erstellen ### Windows (auf Windows) ```bash pip install pyinstaller pyinstaller --onefile --windowed pointcab_renamer.py ``` ### Linux ```bash ./build_linux.sh ``` ### Cross-Compilation: Windows .exe unter Linux Es ist möglich, eine Windows .exe unter Linux zu erstellen. Dazu stehen zwei Methoden zur Verfügung: ```bash # Methode 1: Docker (empfohlen) ./build_windows_on_linux.sh # Methode 2: Wine (Fallback) ./build_windows_wine.sh ``` Die Docker-Methode ist zuverlässiger und wird empfohlen. Für Details siehe [DEPLOYMENT.md](DEPLOYMENT.md). **Wichtig:** Die `cluster_cleanup.txt` muss neben der .exe-Datei liegen. ## Changelog ### v4.1.1 (2026-01-14) - **NEU**: Cross-Compilation-Unterstützung für Windows .exe unter Linux - Docker-basiertes Build-Skript (`build_windows_on_linux.sh`) - Wine-basiertes Fallback-Skript (`build_windows_wine.sh`) - GitHub Actions Beispiel-Workflow - Erweiterte DEPLOYMENT.md-Dokumentation ### v4.1 (2026-01-14) - **FIX**: Projektmerger LSDX-Zusammenführung komplett überarbeitet - Cluster-Duplikat-Erkennung: Verhindert doppelte Cluster bei gleichem Namen - Scans werden korrekt dem existierenden oder neuen Cluster zugeordnet - Parent-Referenzen werden jetzt korrekt gesetzt (Cluster→Registration, Scan→Cluster) - Detailliertes Logging aller Merge-Operationen - Finale Scan/Cluster-Statistik nach Merge - LSDX-Struktur im Code dokumentiert ### v4.0 (2026-01-14) - **NEU**: Projektmerger-Funktion - Einzelprojekt- und Batch-Merge-Modi - Intelligente Namenskonflikt-Behandlung - Automatische UUID-Neugenerierung - Vollständige LSDX-Zusammenführung - Hauptmenü auf 3 Optionen erweitert - Verbesserte Fehlerbehandlung ### v3.1 (2026-01-14) - Full-Scan-Name-Pattern: `1.lsd → Projektname_01.lsd` - Konsistente Benennung in Dateien und LSDX ### v3.0 (2026-01-14) - Batch Renamer hinzugefügt - Hauptmenü für Modus-Auswahl ### v2.0 (2026-01-14) - Clustername-Bereinigung via Konfigurationsdatei ### v1.0 (2026-01-14) - Initiale Version ## Lizenz MIT License