Tür/Fenster-Typmodell vertiefen: Rahmenart, Rahmenbreite, Schichteinzug, Oberlicht, Kämpfer

Erweitert DoorType/WindowType um architektonische Detailparameter und
verdrahtet sie im ResourceManager-Typeditor (Tür-/Fenstertypen):
- Tür: frameKind (Zarge/Blockrahmen), frameWidth (Ansichtsbreite Profil),
  insetFromFace + insetFace (Schichteinzug ab Aussen-/Innenfläche),
  transomHeight (Oberlicht über Kämpfer).
- Fenster: mullionRows (horizontale Kämpfer-Teilung), frameWidth,
  insetFromFace + insetFace, transomHeight.
- Seeds: Haustür „Blockrahmen (Oberlicht)" + Fenster „2-flügl. + Oberlicht"
  demonstrieren Einzug/Oberlicht/Kämpfer.
- i18n de/en für alle neuen Felder + Optionen.

Reine Modell-/UI-Schicht; 2D- und 3D-Darstellung folgen separat. Alle
Felder optional → rückwärtskompatibel. tsc sauber.
This commit is contained in:
2026-07-09 01:03:05 +02:00
parent 35299307d6
commit fa40429e63
5 changed files with 207 additions and 0 deletions
+55
View File
@@ -311,6 +311,36 @@ export interface DoorType {
frameThickness: number;
/** Rahmen-/Zargen-Tiefe in Wandrichtung (Meter); fehlt ⇒ aus Wanddicke. */
frameDepth?: number;
/**
* Rahmenart:
* • "zarge" — Zarge, umschliesst die Laibung (schmales Profil, in der
* Wandlaibung sitzend — der Standard im Innenausbau).
* • "blockrahmen" — Blockrahmen, sitzt als kräftiges Rechteckprofil VOR/auf
* der Laibung (typisch bei Aussentüren/älterem Bestand).
* Fehlt es, gilt "zarge".
*/
frameKind?: "zarge" | "blockrahmen";
/**
* Ansichtsbreite des Rahmenprofils (Meter) — die sichtbare Rahmen-Randbreite
* in der Öffnungsebene (Elevation), NICHT die Tiefe quer zur Wand. Fehlt es,
* gilt ein schmaler Default (~0.06 m). Steuert 2D-Rahmenkontur + 3D-Rahmen.
*/
frameWidth?: number;
/**
* Schichteinzug: Abstand der Rahmen-Vorderkante von einer Wandfläche (Meter).
* 0/fehlt ⇒ bündig. > 0 ⇒ der Rahmen sitzt um diesen Betrag in die Wand
* zurückgesetzt (z. B. hinter die Aussenschale eines mehrschichtigen Aufbaus).
* Gemessen von der über {@link insetFace} gewählten Fläche.
*/
insetFromFace?: number;
/** Von welcher Wandfläche der {@link insetFromFace} gemessen wird; Default "aussen". */
insetFace?: "aussen" | "innen";
/**
* Oberlicht: Höhe eines festen, verglasten Oberlichts über dem Türblatt
* (Meter). 0/fehlt ⇒ kein Oberlicht. Das Oberlicht sitzt oberhalb eines
* Kämpfers innerhalb derselben lichten Öffnungshöhe.
*/
transomHeight?: number;
/** Default-Lichtbreite (Meter) für neu platzierte Türen dieses Typs. */
defaultWidth: number;
/** Default-Lichthöhe (Meter). */
@@ -331,12 +361,37 @@ export interface WindowType {
kind: "dreh" | "kipp" | "drehkipp" | "fest" | "schiebe";
/** Anzahl Flügel (14) → Mittelpfosten = wingCount 1 (vgl. `Opening.wingCount`). */
wingCount: number;
/**
* Anzahl horizontaler Felder (Kämpfer-Zeilen): 1 = keine Querteilung, 2 = ein
* Kämpfer, usw. Zusammen mit {@link wingCount} (Spalten) ergibt sich das
* Sprossen-/Flügelraster. Fehlt es, gilt 1.
*/
mullionRows?: number;
/** Verglasung: Einfach/Zweifach/Dreifach (3D-Scheibenzahl). */
glazing: "einfach" | "zweifach" | "dreifach";
/** Rahmenstärke quer zur Wand (Meter). */
frameThickness: number;
/** Rahmen-Tiefe in Wandrichtung (Meter); fehlt ⇒ aus Wanddicke. */
frameDepth?: number;
/**
* Ansichtsbreite des Rahmen-/Flügelprofils (Meter) — sichtbare Randbreite in
* der Öffnungsebene. Fehlt es, gilt ein schmaler Default (~0.06 m). Steuert die
* 2D-Rahmen-/Sprossenkontur und den 3D-Rahmen.
*/
frameWidth?: number;
/**
* Schichteinzug: Abstand der Rahmen-Vorderkante von einer Wandfläche (Meter).
* 0/fehlt ⇒ bündig; > 0 ⇒ der Rahmen sitzt zurückgesetzt (klassisch hinter der
* Aussenschale eines mehrschichtigen Wandaufbaus). Von {@link insetFace} gemessen.
*/
insetFromFace?: number;
/** Von welcher Wandfläche der {@link insetFromFace} gemessen wird; Default "aussen". */
insetFace?: "aussen" | "innen";
/**
* Oberlicht: Höhe eines festen, verglasten Oberlichts über dem Hauptflügel
* (Meter), abgeteilt durch einen Kämpfer. 0/fehlt ⇒ kein Oberlicht.
*/
transomHeight?: number;
/** Default-Brüstungshöhe über Wand-UK (Meter). */
defaultSillHeight: number;
/** Default-Lichtbreite (Meter). */