Dach-Schichtlogik: RoofType/Layer[] wie Decken (3D mehrschichtig)
Kernthema der BIM-Tiefe (Designdoc docs/design/bim-elements-depth-study.md, P0):
Dächer bekommen einen mehrschichtigen Aufbau analog WallType/CeilingType.
- Modell: RoofType { layers: Layer[] }, Project.roofTypes, Roof.roofTypeId
(Roof.thickness bleibt einschichtiger Fallback). Resolver roofLayers()/
roofTotalThickness() — wiederverwendet den bestehenden Layer-Typ.
- 3D (emitRoofs): je Schicht ein eigenes Mesh mit Bauteilfarbe, entlang der
Flächennormalen unter die vorige gestapelt (Eindeckung aussen → Verkleidung
innen). Ohne roofTypeId einschichtiger thickness-Slab (Default-Dachfarbe).
- UI: Dachtyp-Dropdown im Dach-Panel (leer = einschichtig). Default-Dachtyp
'Steildach gedämmt' in sampleProject.
- +2 Tests (Schicht-Meshes/Stapelung; einschichtig = Slab+Giebel).
Offen (Designdoc): 2D-Schnitt-Poché der Dachschichten, RoofType-ResourceManager-
Tab, Traufe/Ortgang getrennt. 668/668 grün; 3D-Optik vom Nutzer in Tauri prüfen.
This commit is contained in:
@@ -80,6 +80,8 @@ export interface RoofInfo {
|
||||
pitchDeg: number;
|
||||
/** Obere Neigung (Grad) — nur Mansarde relevant. */
|
||||
pitchUpperDeg?: number;
|
||||
/** Dachtyp-Verweis (mehrschichtiger Aufbau) oder undefined (einschichtig). */
|
||||
roofTypeId?: string;
|
||||
/** Mansarde-Untertyp (Giebel/Walm/Zelt) — nur Mansarde relevant. */
|
||||
mansardType?: "giebel" | "walm" | "zelt";
|
||||
/** Mansarde-Knicklage (0..0.5 der halben Spannweite) — nur Mansarde relevant. */
|
||||
@@ -630,6 +632,7 @@ function roofSelection(project: Project, roof: Roof): Selection {
|
||||
shape: roof.shape,
|
||||
pitchDeg: roof.pitchDeg,
|
||||
pitchUpperDeg: roof.pitchUpperDeg,
|
||||
roofTypeId: roof.roofTypeId,
|
||||
mansardType: roof.mansardType,
|
||||
mansardKneeRatio: roof.mansardKneeRatio,
|
||||
overhang: roof.overhang,
|
||||
|
||||
Reference in New Issue
Block a user