102 lines
4.1 KiB
Markdown
102 lines
4.1 KiB
Markdown
---
|
||
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 >}}
|