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:
@@ -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.
|
||||
Reference in New Issue
Block a user