Initial commit — Dossier Rhino 8 Plugin

OpenStudio-Suite Architektur-Plugin fuer Rhino 8 (Mac):
- Smart-Elemente: Wand, Decke, Dach (Pult/Sattel/Walm/Mansarde),
  Oeffnungen (Fenster/Tueren mit Rahmen + Sims + Glas + Fluegel),
  Treppen (gerade · L · Wendel mit Schrittmass-Validierung)
- Live-Previews mit Step-Lines + Soll-Range-Clamping
- Bidirektionale Selection-Sync zwischen Source-Linie und Volume
- Geschoss-/Ebenen-Verwaltung mit OKFF-Persistenz
- Layouts mit PDF-Export
- Ausschnitte / Massstab / Override-Regeln
- Petrol-Gruen Theme (Rapport-konform)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-16 04:27:41 +02:00
commit 9dc191be4f
145 changed files with 32629 additions and 0 deletions
+90
View File
@@ -0,0 +1,90 @@
# Dossier Launcher
Standalone macOS-App, die als Projekt-Hub für Dossier-Projekte in Rhino 8 dient.
Wählt eine `.3dm` aus, konfiguriert pro Projekt welche Module aktiv sind, startet
Rhino mit der Datei. Das Python-Plugin in `rhino/` liest beim Start die
`dossier.project.json` (neben der `.3dm`) und lädt nur die aktivierten Module.
## Setup (einmalig)
### 1. Dependencies installieren
```bash
cd launcher
npm install
```
Beim ersten `npm run tauri dev` zieht Cargo zusätzlich die Rust-Dependencies
(dauert ein paar Minuten).
### 2. Rhino Auto-Run einrichten
Damit die Module bei jedem Rhino-Start automatisch laden:
1. Rhino 8 starten
2. `Rhinoceros 8``Preferences``General`**Startup commands**
3. Folgende Zeile eintragen:
```
_-RunPythonScript "/Users/karim/STUDIO/rhino-panel/rhino/startup.py"
```
4. OK → Rhino neu starten
Ab jetzt lädt `startup.py` bei jedem Rhino-Start:
- mit `dossier.project.json` neben der `.3dm` → nur konfigurierte Module
- ohne Config → alle Module (Backwards-Compat zum bisherigen Verhalten)
## Entwicklung
```bash
npm run tauri dev
```
Startet Vite (Port 5174) und öffnet die Tauri-Window. Hot-Reload für React,
Rust-Änderungen brauchen einen Rebuild.
## Build (.app + .dmg)
```bash
npm run tauri build
```
Output: `src-tauri/target/release/bundle/macos/Dossier.app` und
`src-tauri/target/release/bundle/dmg/Dossier_0.1.0_*.dmg`
**Vor dem ersten Build**: Icons hinterlegen. Aktuell ist `bundle.icon` in
`src-tauri/tauri.conf.json` leer. Mit
```bash
npm run tauri icon path/zur/icon.png
```
generiert Tauri das vollständige Icon-Set (1024×1024 PNG als Quelle reicht).
## Architektur
```
launcher/
├── modules.json # Modul-Manifest (statisch, in Binary einkompiliert)
├── src/ # React-Frontend
│ ├── App.jsx # Project Hub + Modul-Dialog
│ └── styles.css
└── src-tauri/ # Rust-Backend
├── src/lib.rs # Tauri-Commands
└── tauri.conf.json
```
**Datenfluss:**
1. Launcher liest `~/Library/Application Support/Dossier/recent.json`
2. User klickt „Öffnen" → Launcher schreibt `dossier.project.json` neben die
`.3dm` und ruft `open -a "Rhinoceros 8" file.3dm`
3. Rhino startet, `startup.py` läuft, liest die Config, lädt nur die aktivierten
Module
4. Jedes Modul registriert sein eigenes Panel via `panel_base.register_and_open`
## Module-Manifest erweitern
Wenn ein neues Modul dazukommt, **drei Stellen** synchron halten:
1. `launcher/modules.json` — Eintrag mit `id`, `name`, `description`, `pythonModule`, `dependsOn`
2. `rhino/startup.py` — `_MODULE_TO_PY` Map ergänzen
3. `rhino/<pythonModule>.py` — die Python-Implementierung
Launcher rebuilden (`npm run tauri build`), neue `.app` ersetzt die alte.