Deckenstile: solide oder mehrschichtige Decke

Analog zu den Wandstilen erhalten Decken jetzt einen eigenen
Deckentyp mit Schichtaufbau (CeilingType, ceilingTypeId). Der
Schichtaufbau erscheint nur im Schnitt als gestapelte Bänder von OK
bis UK; der Grundriss bleibt eine flächige Poché wie bisher, da die
Schichtung von oben ohnehin nicht sichtbar ist. Auswahl solide/
mehrschichtig im Objektinfo-Panel wie bei Wänden, neuer
"Deckenstile"-Tab im Ressourcen-Manager mit Fugenlinien je Schicht.
This commit is contained in:
2026-07-03 22:09:02 +02:00
parent b1e7fdf8fc
commit d788cbb32b
13 changed files with 341 additions and 45 deletions
+13 -2
View File
@@ -27,6 +27,7 @@ import {
import { wallCorners } from "./model/geometry";
import { leftNormal, normalize, scale, sub } from "./model/geometry";
import type {
CeilingType,
Drawing2D,
DrawingLevel,
EdgeGrip,
@@ -1629,6 +1630,14 @@ export default function App() {
...p,
wallTypes: p.wallTypes.map((wt) => (wt.id === id ? { ...wt, ...patch } : wt)),
}));
// Deckenstile: immutable Patch eines Deckentyps — analog `patchWallType`.
const patchCeilingType = (id: string, patch: Partial<CeilingType>) =>
setProject((p) => ({
...p,
ceilingTypes: (p.ceilingTypes ?? []).map((ct) =>
ct.id === id ? { ...ct, ...patch } : ct,
),
}));
const importLineStyles = useStore((s) => s.importLineStyles);
const importHatches = useStore((s) => s.importHatches);
// Site-/Kontext-Schicht (siteSlice): Import/Entfernen/Gelände.
@@ -1915,6 +1924,7 @@ export default function App() {
onAddLineStyle: addLineStyle,
onDeleteLineStyle: deleteLineStyle,
onPatchWallType: patchWallType,
onPatchCeilingType: patchCeilingType,
onImportLineStyles: importLineStyles,
onImportHatches: importHatches,
selection,
@@ -1972,9 +1982,9 @@ export default function App() {
updateWall(selection.id, { top: anchor ?? undefined });
},
// ── Decken-Attribute (nur bei selektierter Decke) ──────────────────────
onSetCeilingType: (wallTypeId) => {
onSetCeilingType: (ceilingTypeId) => {
if (selection?.kind === "ceiling")
updateCeiling(selection.id, { wallTypeId, thickness: undefined });
updateCeiling(selection.id, { ceilingTypeId, thickness: undefined });
},
onSetCeilingThickness: (thickness) => {
if (selection?.kind === "ceiling")
@@ -2147,6 +2157,7 @@ export default function App() {
const resourceHandlers: ResourceManagerHandlers = {
onPatchComponent: patchComponent,
onPatchWallType: patchWallType,
onPatchCeilingType: patchCeilingType,
onAddComponent: addComponent,
onDeleteComponent: deleteComponent,
onPatchHatch: patchHatch,