Dach: Mansarden-Untertypen (Giebel/Walm/Zelt) + parametrierbarer Knick

Bisher gab es nur die Giebel-Mansarde (2-seitig). Neu über Roof.mansardType:
- 'giebel' (Default): Mansard-Satteldach, Giebel an den Enden (wie bisher)
- 'walm': allseitige Mansarde (Sockel + oberer Walm, kein Giebel) — 8 Flächen
- 'zelt': allseitige Mansarde zur flachen Spitze — 8 Flächen, kein First
Knicklage jetzt parametrierbar (Roof.mansardKneeRatio, Default 0.4 der halben
Spannweite). Dach-Panel: Mansard-Art-Dropdown + Knicklage-Feld (nur bei Mansarde).
+4 Geometrie-Tests (Ratio, Walm-/Zelt-Flächen/Grate).

Nebenbei: Fenster-Dialog-Labels klarer als 'Einbaulage ab / Abstand von Kante'
(Nutzer: wo sitzt das Fenster in der Aussparung, ab Innen-/Aussenkante + wieviel).
666/666 grün.
This commit is contained in:
2026-07-10 01:53:55 +02:00
parent 9a38636bf2
commit bfb80b363b
7 changed files with 201 additions and 24 deletions
+13
View File
@@ -1034,6 +1034,19 @@ export interface Roof {
pitchDeg: number;
/** Nur Mansarde: obere (flachere) Neigung in Grad; fehlt ⇒ halbe Hauptneigung. */
pitchUpperDeg?: number;
/**
* Nur Mansarde: Untertyp der Mansardform. "giebel" = Mansard-Satteldach
* (steile untere + flache obere Neigung nur an zwei Seiten, Giebel an den
* Enden — Default), "walm" = Mansard-Walmdach (allseitige Mansarde, auch die
* Stirnseiten geknickt, kein Giebel), "zelt" = Mansard-Zeltdach (allseitig
* zur Spitze, geknickt). Fehlt ⇒ "giebel".
*/
mansardType?: "giebel" | "walm" | "zelt";
/**
* Nur Mansarde: Lage der Knicklinie als Anteil der halben Spannweite (0..0.5),
* gemessen von der Traufe. Kleiner ⇒ steiler Sockel kürzer; fehlt ⇒ 0.4.
*/
mansardKneeRatio?: number;
/** Dachüberstand an der Traufe (Meter, ringsum); 0 = bündig mit dem Umriss. */
overhang: number;
/** Firstrichtung (Sattel/Walm/Mansarde/Pult): entlang der X- oder Y-Achse. */