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:
@@ -212,9 +212,29 @@ export const sampleProject: Project = {
|
||||
leafCount: 1,
|
||||
leafStyle: "glatt",
|
||||
frameThickness: 0.05,
|
||||
frameKind: "zarge",
|
||||
frameWidth: 0.06,
|
||||
defaultWidth: 0.9,
|
||||
defaultHeight: 2.0,
|
||||
},
|
||||
{
|
||||
// Aussentür: Blockrahmen, in die Aussenschale zurückgesetzt, mit Oberlicht.
|
||||
id: "door-entry",
|
||||
name: "Haustür Blockrahmen (Oberlicht)",
|
||||
kind: "dreh",
|
||||
leafCount: 1,
|
||||
leafStyle: "glas",
|
||||
glazingRatio: 0.35,
|
||||
frameThickness: 0.07,
|
||||
frameKind: "blockrahmen",
|
||||
frameWidth: 0.09,
|
||||
insetFromFace: 0.14,
|
||||
insetFace: "aussen",
|
||||
transomHeight: 0.45,
|
||||
threshold: true,
|
||||
defaultWidth: 1.1,
|
||||
defaultHeight: 2.1,
|
||||
},
|
||||
],
|
||||
windowTypes: [
|
||||
{
|
||||
@@ -224,10 +244,28 @@ export const sampleProject: Project = {
|
||||
wingCount: 1,
|
||||
glazing: "zweifach",
|
||||
frameThickness: 0.06,
|
||||
frameWidth: 0.06,
|
||||
defaultSillHeight: 0.9,
|
||||
defaultWidth: 1.2,
|
||||
defaultHeight: 1.4,
|
||||
},
|
||||
{
|
||||
// Zweiflügliges Fenster mit Kämpfer, Oberlicht und Schichteinzug.
|
||||
id: "window-double",
|
||||
name: "Fenster 2-flügl. + Oberlicht",
|
||||
kind: "drehkipp",
|
||||
wingCount: 2,
|
||||
mullionRows: 1,
|
||||
glazing: "dreifach",
|
||||
frameThickness: 0.07,
|
||||
frameWidth: 0.07,
|
||||
insetFromFace: 0.12,
|
||||
insetFace: "aussen",
|
||||
transomHeight: 0.4,
|
||||
defaultSillHeight: 0.85,
|
||||
defaultWidth: 1.8,
|
||||
defaultHeight: 1.9,
|
||||
},
|
||||
],
|
||||
stairTypes: [
|
||||
{
|
||||
|
||||
@@ -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 (1–4) → 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). */
|
||||
|
||||
Reference in New Issue
Block a user