---
title: Symbol-Library
linkTitle: Symbol-Library
weight: 6
---

Die Symbol-Library lebt im **PROJECT-SETTINGS**-Tab "Symbole" und macht ein klassisches Architekturbüro-Problem zentral verwaltbar: Möbel, Sanitär-Apparate, Bäume, Autos, technische Symbole — überall im Modell, aber konsistent in der Darstellung.

## 2D+3D Pair-Files

Jedes Symbol besteht aus zwei verknüpften Files:

```text
sofa-3sitz.3dm     — 3D-Modell (Block-Definition)
sofa-3sitz.2d.3dm  — 2D-Plandarstellung (Block-Definition)
```

Beim Plazieren entscheidet der View-Type:

- **3D-View / Perspektive** → 3D-File wird verwendet
- **Top-View im Grundriss** → 2D-File wird verwendet
- **Section-Plane aktiv** → Section-Cut wird aus dem 3D-File abgeleitet

So bleibt ein Sofa im Schnitt eine sauber gezeichnete 2D-Plandarstellung, in der Visualisierung aber ein vollständiges 3D-Möbel.

## Satellite-Picker

Statt Symbole in einem schwergewichtigen Browser zu suchen, öffnet DOSSIER einen **Satellite-Picker** — ein eigenständiges, kleines Fenster mit Live-Thumbnails:

- Floating-Window neben dem Modellraum
- Filter nach Kategorie (Möbel · Sanitär · Vegetation · Verkehr · …)
- Klick auf Thumbnail → Symbol wird in Rhino plaziert (Drag-Place)
- Mehrfach-Plazierung in Serie ohne Picker zu schliessen

Bleibt offen während aktivem Modell-Edit — typischer Workflow für Wohnungs-Möblierung.

## Multi-Format-Import

Symbole müssen nicht in `.3dm` vorliegen. CRUD im PROJECT-SETTINGS-Symbole-Tab unterstützt:

| Format       | Verwendung                                          |
|--------------|-----------------------------------------------------|
| `.3dm`       | Rhino-native (Pair-Files werden so behandelt)       |
| `.dwg`       | Möbel- und Sanitärbibliotheken aus dem Industriestandard |
| `.obj`       | Generische 3D-Modelle aus 3D-Asset-Libraries        |
| `.fbx`       | 3D-Modelle aus DCC-Tools                            |
| `.dae`       | Collada — Mesh- und Szenen-Austauschformat          |
| `.stl`       | Mesh-only — Grobgeometrie                           |

Beim Import wird das File in den projektbezogenen `symbols/`-Ordner kopiert, ein Block in der Rhino-Block-Tabelle registriert und das Thumbnail generiert.

## Auto-Thumbnails (Base64-PNG)

Thumbnails werden **automatisch** beim Import erzeugt:

1. Symbol wird headless in einer 256×256-Viewport gerendert
2. Iso-Ansicht für 3D-Files, Top-Ansicht für 2D-Files
3. PNG wird als **Base64-String** in die `dossier.project.json` geschrieben

Vorteil von Base64: Thumbnails sind teil der Projekt-Konfiguration — der Satellite-Picker kann sie ohne File-IO im Hintergrund anzeigen, und Library-Sharing wird trivial (Config kopieren = Thumbnails mitkopiert).

Cache-Größe pro Symbol typisch 4–12 KB.

## CRUD-Operationen

Volle Verwaltung im PROJECT-SETTINGS-Symbole-Tab:

- **Create** — Import-Button öffnet File-Picker, Format wird auto-detected
- **Read** — Liste mit Thumbnails, Filter nach Kategorie, Suche im Namen
- **Update** — Symbol-Eigenschaften (Name, Kategorie, 2D-Pair zuordnen) editieren
- **Delete** — Block-Definition aus Rhino entfernen, File aus `symbols/`-Ordner löschen, JSON-Eintrag entfernen

Lösch-Operation prüft, ob das Symbol im Modell verwendet wird, und bietet Replace-Optionen statt blockierender Hard-Delete.

## Datenhaltung

```text
projekt-ordner/
├── projekt.3dm
├── dossier.project.json
│   └── symbols: [
│       { id: "sofa-3sitz", name: "Sofa 3-Sitz",
│         file_3d: "symbols/sofa-3sitz.3dm",
│         file_2d: "symbols/sofa-3sitz.2d.3dm",
│         thumbnail: "data:image/png;base64,iVBORw0KGgo...",
│         category: "moebel" }
│     ]
└── symbols/
    ├── sofa-3sitz.3dm
    ├── sofa-3sitz.2d.3dm
    ├── tisch-esstisch.3dm
    └── …
```

Symbol-Files relativ referenziert — Projekt verschieben = Symbole ziehen mit.

## Roadmap

**Library Phase C** (geplant): Cloud-Sync via GitHub-Releases — Team-Sharing einer projektübergreifenden Symbol-Library mit semantischer Versionierung. Siehe [Roadmap](../../docs/roadmap).

**Satellite-Windows-Restyle** (geplant): alle Satellite-Windows (Symbol-Picker, Material-Picker, …) im einheitlichen Pill-Style. Siehe [Roadmap](../../docs/roadmap).
