pointcab_renamer/README.md

8.1 KiB

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

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:

<!-- 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)

pip install pyinstaller
pyinstaller --onefile --windowed pointcab_renamer.py

Linux

./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:

# 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.

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