Files
DOSSIER-WEBSITE/content/features/smart-elemente.md
T

102 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Smart-Elemente
linkTitle: Smart-Elemente
weight: 2
---
Smart-Elemente sind parametrische Bauteile mit dem **Source ↔ Volume Pattern**: eine editierbare Source-Geometrie und ein automatisch generiertes Volumen.
## Pattern
```text
Source-Geometrie (vom User editiert)
▼ Regeneration bei Change
Volume (Brep, vom Plugin verwaltet)
```
Wird die Source verschoben oder verformt, regeneriert das Volumen automatisch — Wand-Joints, Decken-Aussparungen und Öffnungs-Cutouts werden mitgeführt.
## Bauteil-Typen
### Wände (Wand-System v1)
| Source | Volume |
|-------------------------|-----------------------------------------------------|
| Polyline (mit Bögen) | Brep mit Dicke × Höhe, Geschoss-OKFF als Basis |
**Polyline-Achse statt Einzel-Segmente:** Eine Wand ist ein zusammenhängender Polyline-Strang — gerade Teilstrecken, Bogen-Segmente und Knicke gehören zur selben Source. Joints zwischen Polylines werden weiterhin als Miter / T-Junction gerechnet, aber Knicke innerhalb einer Wand brauchen kein eigenes Joint-Setup mehr.
**Chain-Anchor:** Die Polyline trägt einen stabilen Anker auf einem festgelegten Knoten. Bei Modifikationen am Strang (verschieben, verlängern, Knoten einfügen) bleibt die Wand-Identität an diesem Anker — Material, UserStrings und Joint-Verknüpfungen wandern mit.
**Native Rhino-Grips:** Knoten der Polyline-Achse erscheinen direkt als Rhino-Grips. Verschieben eines Knotens triggert Volume-Regeneration plus Joint-Re-Calc in einem Idle-Tick — keine separate Edit-Mode-UI nötig.
**Cmd+Z stabil:** Undo/Redo über alle Joint-Operationen ist garantiert konsistent. Der Joint-Cache wird über die Polyline-Achse rekonstruiert, nicht aus dem stale Pre-Undo-State.
**Joint-Cache** pro Geschoss (`_JOINTS_CACHE_KEY`), invalidiert bei Add/Delete und nach Polyline-Edits über den Grip-Handler.
**Wand-Typen:** Tragwand · Trennwand · Brandwand · Aufschüttung
**Material-Cache:** Hex → MaterialIndex, stale-Check beim Lesen — der Cache wird beim Material-Delete in Rhino automatisch invalidiert (siehe [Materialien](../materialien)).
### Decken & Dächer
| Source | Volume |
|------------|---------------------------------------------------------|
| Outline | Brep-Extrusion mit konstanter Stärke, OKFF + Geschoss-Höhe |
- Aussparungen für Schächte als Sekundär-Curves
- Dächer mit Neigung (Pultdach, Satteldach, Walmdach)
### Öffnungen (Fenster / Türen)
| Source | Volume |
|---------|-----------------------------------------------------|
| Punkt | Rahmen + Sims + Flügel, schneidet Wand-Volumen aus |
- Bibliothek mit Standard-Typen (Holz / Aluminium / Kunststoff)
- Brüstungshöhe und Sturzhöhe pro Element parametrisch
- Cutout im Wand-Volumen wird automatisch nachgeführt
### Treppen
Geometrie-Typen:
- **Gerade Treppe** — Anfangs-/Endpunkt, Steigung
- **L-Treppe** — Dreipunkt, Zwischenpodest automatisch
- **Wendeltreppe** — Zentrum, Radius, Steigungswinkel
### Tragwerk
- **Stützen** — Punkt, Profil (Rechteck / Rund / I)
- **Träger** — Linie, I-Profil mit Schenkel-Höhe und -Breite
- **I-Profile** — Standardisierte Querschnitte (HEA / HEB / IPE)
## UI-Workflow
Im **ELEMENTE**-Panel:
1. Bauteil-Typ wählen (Wand, Decke, Öffnung, …)
2. Variante wählen (Tragwand, Pultdach, Holzfenster, …)
3. Source in Rhino zeichnen
4. Volumen erscheint sofort
## Properties
Das **ELEMENTE-PROPERTIES**-Panel zeigt für die Selektion:
- Element-Typ und -Variante
- Dicke / Höhe / Position
- Geschoss-Zuordnung
- UserStrings (`dossier_element_id`, `dossier_element_type`)
Änderungen werden direkt geschrieben — keine Apply-Button-Logik.
## Übersicht
Das **ELEMENTE-ÜBERSICHT**-Panel listet alle Smart-Elemente im Dokument tabellarisch — gefiltert nach Geschoss, Typ und Material. Ideal für Mengen-Audits und Konsistenz-Checks.
{{< callout type="warning" >}}
`elemente.py` ist **7'244 LOC** und enthält BIM-Logik aus echten Projekten. Nicht ohne expliziten Auftrag und Test-Plan refaktorisieren.
{{< /callout >}}