Dächer: Platzier-Werkzeug + 2D-Plan + 3D-Flächen + Demo-Dach

Dach-Feature end-to-end nutzbar:
- Befehl „Dach" (Alias dach/rf, BIM-Ribbon, Satteldach-Icon): Grundriss als
  Rechteck aufziehen; die Dachform (Sattel/Walm/Pult/Mansarde/Zelt/Flach)
  wählt man als Inline-Option der Befehlszeile vor/während des Aufziehens.
  First entlang der längeren Seite (Standard).
- 2D-Grundriss (generatePlan): Traufe/First/Grat (Walm/Zelt) + gestrichelte
  Knicklinien (Mansarde), Farbe aus roof.color/Kategorie „31 Dächer".
- 3D (toWalls3d emitRoofs): Dachflächen + Giebel als terrakottafarbene
  Meshes (Fan-Triangulierung, Mansarde-Fünfeck sauber).
- Seed: Demo-Satteldach RF1 über dem Baukörper (OG, 5×4, Überstand 0.4).
- i18n de/en für Befehl + Formen.

+10 Tests (2D 7, 3D 3). tsc + vitest 640 grün. Auswahl/Attribut-Editieren
placierter Dächer folgt separat.
This commit is contained in:
2026-07-09 21:13:11 +02:00
parent 0a2049b2fc
commit c92320ba34
11 changed files with 583 additions and 5 deletions
+9
View File
@@ -99,6 +99,15 @@ export function CommandIcon({ name }: { name: string }) {
<line x1="8" y1="2.5" x2="8" y2="13.5" strokeDasharray="1.6 1.6" />
</svg>
);
case "roof":
// Satteldach: Giebeldreieck + Traufe.
return (
<svg {...common}>
<polyline points="2,9 8,3 14,9" />
<line x1="2" y1="12" x2="14" y2="12" />
<line x1="8" y1="3" x2="8" y2="9" strokeDasharray="1.5 1.5" />
</svg>
);
default:
return null;
}
+1
View File
@@ -105,6 +105,7 @@ export const RIBBON_TABS: RibbonTab[] = [
t("stair"),
c("column"),
t("ceiling"),
c("roof"),
t("room"),
],
},