Dächer anwählbar + editierbar + löschbar

Platzierte Dächer sind jetzt vollwertige Auswahl-Elemente (analog Decke):
- 2D-Auswahl per Klick: unsichtbares Traufe-Pick-Polygon (roofId) +
  pickRoof (Punkt-in-Polygon, niedrigste Priorität) in PlanView.
- Auswahl-Kanal selectedRoofIds (selectionSlice), updateRoof (projectSlice),
  RoofInfo + roofSelection + deriveSelection-Dispatch (selectionInfo).
- Attribut-Panel „Dach": Form (Sattel/Walm/Pult/Mansarde/Zelt/Flach),
  Firstrichtung X/Y, Neigung(en), Überstand, Dachdicke — live editierbar über
  host.onSetRoofPatch; dazu abgeleitete Firsthöhe + Grundfläche (read-only).
- Löschen (Delete) + Abwählen bei Geschosswechsel/Marquee/anderer Auswahl.
+2 Tests (Roof-Selection). tsc + vitest 642 + vite build grün.
This commit is contained in:
2026-07-09 22:18:59 +02:00
parent 0181f08a91
commit db1d9916ed
12 changed files with 385 additions and 70 deletions
+19
View File
@@ -285,6 +285,25 @@ export const de = {
"objinfo.kind.room": "Raum",
"objinfo.kind.extrudedSolid": "Extrusion",
"objinfo.kind.column": "Stütze",
"objinfo.kind.roof": "Dach",
// ── Dach-Attribute (Object-Info-Panel) ──────────────────────────────────
"objinfo.roof.section": "Dach",
"objinfo.roof.shape": "Dachform",
"objinfo.roof.shape.flach": "Flachdach",
"objinfo.roof.shape.pult": "Pultdach",
"objinfo.roof.shape.sattel": "Satteldach",
"objinfo.roof.shape.walm": "Walmdach",
"objinfo.roof.shape.mansarde": "Mansarddach",
"objinfo.roof.shape.zelt": "Zeltdach",
"objinfo.roof.ridgeAxis": "Firstrichtung",
"objinfo.roof.ridgeAxis.x": "entlang X",
"objinfo.roof.ridgeAxis.y": "entlang Y",
"objinfo.roof.pitch": "Neigung (°)",
"objinfo.roof.pitchUpper": "Obere Neigung (°)",
"objinfo.roof.overhang": "Überstand (m)",
"objinfo.roof.thickness": "Dachdicke (m)",
"objinfo.roof.ridgeHeight": "Firsthöhe",
"objinfo.roof.area": "Grundfläche",
// ── Stützen-Attribute (Object-Info-Panel) ───────────────────────────────
"objinfo.column.section": "Stütze",
"objinfo.column.profile": "Profil",