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:
@@ -510,7 +510,7 @@ function CeilingSection({
|
||||
host: ReturnType<typeof usePanelHost>;
|
||||
}) {
|
||||
const isSingle = ceiling.singleLayer;
|
||||
const multiPresets = ceiling.wallTypes.filter((wt) => wt.layerCount > 1);
|
||||
const multiPresets = ceiling.ceilingTypes.filter((ct) => ct.layerCount > 1);
|
||||
|
||||
function chooseSingle() {
|
||||
if (isSingle) return;
|
||||
@@ -560,13 +560,13 @@ function CeilingSection({
|
||||
<div className="objinfo-field">
|
||||
<span className="objinfo-flabel">{t("objinfo.ceiling.preset")}</span>
|
||||
<Dropdown
|
||||
value={ceiling.wallTypeId}
|
||||
value={ceiling.typeId}
|
||||
onChange={(id) => host.onSetCeilingType(id)}
|
||||
options={ceiling.wallTypes.map((wt) => ({
|
||||
value: wt.id,
|
||||
options={ceiling.ceilingTypes.map((ct) => ({
|
||||
value: ct.id,
|
||||
label: t("objinfo.wall.presetLabel", {
|
||||
name: wt.name,
|
||||
thickness: wt.thickness.toFixed(2),
|
||||
name: ct.name,
|
||||
thickness: ct.thickness.toFixed(2),
|
||||
}),
|
||||
}))}
|
||||
title={t("objinfo.ceiling.preset")}
|
||||
|
||||
@@ -35,6 +35,7 @@ export function ResourcesPanel() {
|
||||
onAddLineStyle: host.onAddLineStyle,
|
||||
onDeleteLineStyle: host.onDeleteLineStyle,
|
||||
onPatchWallType: host.onPatchWallType,
|
||||
onPatchCeilingType: host.onPatchCeilingType,
|
||||
onImportLineStyles: host.onImportLineStyles,
|
||||
onImportHatches: host.onImportHatches,
|
||||
};
|
||||
|
||||
+5
-2
@@ -15,6 +15,7 @@ import { useContext } from "react";
|
||||
import { PanelHostContext } from "./types";
|
||||
import type { DisplayMode } from "./types";
|
||||
import type {
|
||||
CeilingType,
|
||||
Component,
|
||||
ContextObject,
|
||||
DrawingLevel,
|
||||
@@ -117,6 +118,8 @@ export interface PanelHostValue {
|
||||
onDeleteLineStyle: (id: string) => void;
|
||||
/** Wandstile: immutable Änderung eines Wandtyps (Schichtfugen-Stile). */
|
||||
onPatchWallType: (id: string, patch: Partial<WallType>) => void;
|
||||
/** Deckenstile: immutable Änderung eines Deckentyps (Schichtfugen-Stile). */
|
||||
onPatchCeilingType: (id: string, patch: Partial<CeilingType>) => void;
|
||||
/** Import fertiger (id-loser) Linienstile/Schraffuren (.lin/.pat). */
|
||||
onImportLineStyles: (styles: Omit<LineStyle, "id">[]) => void;
|
||||
onImportHatches: (hatches: Omit<HatchStyle, "id">[]) => void;
|
||||
@@ -162,8 +165,8 @@ export interface PanelHostValue {
|
||||
onSetWallTop: (anchor: VerticalAnchor | null) => void;
|
||||
|
||||
// ── Decken-Attribute (Object-Info-Panel; wirken NUR auf die selektierte Decke) ─
|
||||
/** Weist der Decke einen Aufbau-Typ-Preset zu (wie WallType). */
|
||||
onSetCeilingType: (wallTypeId: string) => void;
|
||||
/** Weist der Decke einen dedizierten Deckentyp-Preset zu (Deckenstil). */
|
||||
onSetCeilingType: (ceilingTypeId: string) => void;
|
||||
/** Setzt die Gesamtdicke der Decke (Meter, thickness-Übersteuerung). */
|
||||
onSetCeilingThickness: (thickness: number) => void;
|
||||
/** Setzt/entfernt die OK-Bindung der Decke (`null` = Geschoss-Oberkante). */
|
||||
|
||||
Reference in New Issue
Block a user