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
+7 -2
View File
@@ -299,6 +299,11 @@ export const en: Record<TranslationKey, string> = {
"objinfo.roof.ridgeAxis.y": "along Y",
"objinfo.roof.pitch": "Pitch (°)",
"objinfo.roof.pitchUpper": "Upper pitch (°)",
"objinfo.roof.mansardType": "Mansard type",
"objinfo.roof.mansard.giebel": "Gable mansard",
"objinfo.roof.mansard.walm": "Hip mansard",
"objinfo.roof.mansard.zelt": "Pavilion mansard",
"objinfo.roof.mansardKnee": "Knee position (% span)",
"objinfo.roof.width": "Width (m)",
"objinfo.roof.depth": "Depth (m)",
"objinfo.roof.overhang": "Overhang (m)",
@@ -382,8 +387,8 @@ export const en: Record<TranslationKey, string> = {
"oed.cat.tuerblatt": "Leaf",
"oed.f.kind": "Opening type",
"oed.f.glazing": "Glazing",
"oed.f.insetFace": "Inset from",
"oed.f.insetFromFace": "Layer inset (m)",
"oed.f.insetFace": "Position from",
"oed.f.insetFromFace": "Distance from edge (m)",
"oed.f.width": "Width (m)",
"oed.f.height": "Height (m)",
"oed.f.sillHeight": "Sill height (m)",