277 lines
8.1 KiB
Markdown
277 lines
8.1 KiB
Markdown
# 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
|
|
<!-- Vorher -->
|
|
<FilePath type="lsd">scan_01.lsd</FilePath>
|
|
|
|
<!-- Nachher (für gemergtes Element) -->
|
|
<FilePath type="lsd">scan_01_merged_1.lsd</FilePath>
|
|
```
|
|
|
|
### 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
|