Decken-Panel: Aussparungen anzeigen + einzeln entfernen

Die Decken-Sektion listet die Aussparungen (BBox-Masse je Loch) mit
Entfernen-Knopf; Anlegen über den Befehl 'Deckenloch'. CeilingInfo.openings,
host.onRemoveCeilingOpening + App-Routing. 684/684 grün.
This commit is contained in:
2026-07-10 18:44:13 +02:00
parent 032f0024b3
commit 1df58a3c47
6 changed files with 48 additions and 0 deletions
+27
View File
@@ -1050,6 +1050,33 @@ export function CeilingSection({
<span className="objinfo-fval">{ceiling.volume.toFixed(2)} m³</span>
</div>
{/* Aussparungen (Treppenauge/Schacht) — Liste mit Entfernen je Loch.
Anlegen über den Befehl „Deckenloch" (BIM-Ribbon). */}
{ceiling.openings.length > 0 && (
<>
<div className="objinfo-field">
<span className="objinfo-flabel">{t("objinfo.ceiling.openings")}</span>
<span className="objinfo-fval">{ceiling.openings.length}</span>
</div>
{ceiling.openings.map((o, i) => (
<div className="objinfo-field" key={i}>
<span className="objinfo-flabel objinfo-muted">
{`${i + 1}: ${o.width.toFixed(2)} × ${o.depth.toFixed(2)} m`}
</span>
<button
type="button"
className="objinfo-typebtn"
title={t("objinfo.ceiling.removeOpening")}
aria-label={t("objinfo.ceiling.removeOpening")}
onClick={() => host.onRemoveCeilingOpening(i)}
>
×
</button>
</div>
))}
</>
)}
<div className="objinfo-sep" />
{/* OK der Decke: an Geschoss gebunden ODER eigene Höhe. */}
+2
View File
@@ -275,6 +275,8 @@ export interface PanelHostValue {
onSetCeilingType: (ceilingTypeId: string) => void;
/** Setzt die Gesamtdicke der Decke (Meter, thickness-Übersteuerung). */
onSetCeilingThickness: (thickness: number) => void;
/** Entfernt die Aussparung mit Index `index` der selektierten Decke. */
onRemoveCeilingOpening: (index: number) => void;
/** Setzt/entfernt die OK-Bindung der Decke (`null` = Geschoss-Oberkante). */
onSetCeilingTop: (anchor: VerticalAnchor | null) => void;
/**