Fenster-Dialog: Oberlicht + Kämpfer-/Sprossenzeilen exponiert
Zwei vom Renderer bereits konsumierte Felder im Flügel/Sprossen-Panel zugänglich gemacht + in der Live-Ansicht dargestellt: - transomHeight (Oberlicht): 2D-Kämpferlinie im Grundriss + 3D-Oberlichtscheibe waren schon da; Kämpferlinie jetzt auch in der Dialog-Vorschau - mullionRows (Kämpfer-/Sprossenzeilen): 3D-Kämpfer bei 'fein'; waagrechte Teiler in der Vorschau Kein Renderer-Aufwand — reine UI-/Vorschau-Freischaltung. 659/659 grün.
This commit is contained in:
@@ -391,6 +391,8 @@ export const de = {
|
|||||||
"oed.f.frameThickness": "Rahmenstärke quer (m)",
|
"oed.f.frameThickness": "Rahmenstärke quer (m)",
|
||||||
"oed.f.frameDepth": "Rahmentiefe (m)",
|
"oed.f.frameDepth": "Rahmentiefe (m)",
|
||||||
"oed.f.frameWidth": "Rahmenbreite Ansicht (m)",
|
"oed.f.frameWidth": "Rahmenbreite Ansicht (m)",
|
||||||
|
"oed.f.transomHeight": "Oberlichthöhe (m)",
|
||||||
|
"oed.f.mullionRows": "Kämpfer-/Sprossenzeilen",
|
||||||
"oed.kind.dreh": "Dreh",
|
"oed.kind.dreh": "Dreh",
|
||||||
"oed.kind.kipp": "Kipp",
|
"oed.kind.kipp": "Kipp",
|
||||||
"oed.kind.drehkipp": "Dreh-Kipp",
|
"oed.kind.drehkipp": "Dreh-Kipp",
|
||||||
|
|||||||
@@ -391,6 +391,8 @@ export const en: Record<TranslationKey, string> = {
|
|||||||
"oed.f.frameThickness": "Frame depth across (m)",
|
"oed.f.frameThickness": "Frame depth across (m)",
|
||||||
"oed.f.frameDepth": "Frame depth (m)",
|
"oed.f.frameDepth": "Frame depth (m)",
|
||||||
"oed.f.frameWidth": "Frame face width (m)",
|
"oed.f.frameWidth": "Frame face width (m)",
|
||||||
|
"oed.f.transomHeight": "Transom height (m)",
|
||||||
|
"oed.f.mullionRows": "Transom/muntin rows",
|
||||||
"oed.kind.dreh": "Casement",
|
"oed.kind.dreh": "Casement",
|
||||||
"oed.kind.kipp": "Tilt",
|
"oed.kind.kipp": "Tilt",
|
||||||
"oed.kind.drehkipp": "Turn-tilt",
|
"oed.kind.drehkipp": "Turn-tilt",
|
||||||
|
|||||||
@@ -478,6 +478,20 @@ function FluegelPanel({
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="oed-hint">{t("oed.fluegel.hint")}</div>
|
<div className="oed-hint">{t("oed.fluegel.hint")}</div>
|
||||||
|
{/* Oberlicht (festes Feld über einem Kämpfer) + Kämpfer-/Sprossen-Zeilen. */}
|
||||||
|
<NumField
|
||||||
|
label={t("oed.f.transomHeight")}
|
||||||
|
value={wt.transomHeight ?? 0}
|
||||||
|
min={0}
|
||||||
|
onCommit={(n) => patchWt({ transomHeight: n || undefined })}
|
||||||
|
/>
|
||||||
|
<NumField
|
||||||
|
label={t("oed.f.mullionRows")}
|
||||||
|
value={wt.mullionRows ?? 1}
|
||||||
|
step={1}
|
||||||
|
min={1}
|
||||||
|
onCommit={(n) => patchWt({ mullionRows: Math.max(1, Math.round(n)) })}
|
||||||
|
/>
|
||||||
<table className="oed-table">
|
<table className="oed-table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -832,7 +846,40 @@ function ElevationPreview({
|
|||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
segEls
|
<>
|
||||||
|
{segEls}
|
||||||
|
{/* Oberlicht-Kämpfer (waagrechte Linie transomHeight unter der OK). */}
|
||||||
|
{!dt && wt && (wt.transomHeight ?? 0) > 0 && (
|
||||||
|
<line
|
||||||
|
x1={pad}
|
||||||
|
y1={originY + px(wt.transomHeight ?? 0)}
|
||||||
|
x2={pad + px(w)}
|
||||||
|
y2={originY + px(wt.transomHeight ?? 0)}
|
||||||
|
stroke={strokeMain}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
{/* Kämpfer-/Sprossen-Zeilen (mullionRows − 1 waagrechte Teiler im
|
||||||
|
Hauptfeld unterhalb eines etwaigen Oberlichts). */}
|
||||||
|
{!dt &&
|
||||||
|
wt &&
|
||||||
|
(() => {
|
||||||
|
const rows = Math.max(1, Math.round(wt.mullionRows ?? 1));
|
||||||
|
if (rows <= 1) return null;
|
||||||
|
const top = originY + px(wt.transomHeight ?? 0);
|
||||||
|
const fieldH = px(h) - px(wt.transomHeight ?? 0);
|
||||||
|
return Array.from({ length: rows - 1 }, (_, k) => (
|
||||||
|
<line
|
||||||
|
key={k}
|
||||||
|
x1={pad}
|
||||||
|
y1={top + (fieldH * (k + 1)) / rows}
|
||||||
|
x2={pad + px(w)}
|
||||||
|
y2={top + (fieldH * (k + 1)) / rows}
|
||||||
|
stroke={strokeMuted}
|
||||||
|
strokeWidth={0.75}
|
||||||
|
/>
|
||||||
|
));
|
||||||
|
})()}
|
||||||
|
</>
|
||||||
)}
|
)}
|
||||||
</svg>
|
</svg>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user