Fenster: echte Sprossen-Spalten (mullionCols) analog Kämpfer-Zeilen
Vertikale Sprossenteilung im Glasfeld (mullionCols−1 Spalten), spiegelbildlich zur bestehenden mullionRows-Logik: 3D-Rahmen-Riegel, Ansichts-Trennlinien + Glasscheiben als echtes rows×cols-Raster, Eingabefeld im Fenstertyp-Editor und im ResourceManager.
This commit is contained in:
@@ -492,6 +492,13 @@ function FluegelPanel({
|
||||
min={1}
|
||||
onCommit={(n) => patchWt({ mullionRows: Math.max(1, Math.round(n)) })}
|
||||
/>
|
||||
<NumField
|
||||
label={t("oed.f.mullionCols")}
|
||||
value={wt.mullionCols ?? 1}
|
||||
step={1}
|
||||
min={1}
|
||||
onCommit={(n) => patchWt({ mullionCols: Math.max(1, Math.round(n)) })}
|
||||
/>
|
||||
<table className="oed-table">
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -879,6 +886,28 @@ function ElevationPreview({
|
||||
/>
|
||||
));
|
||||
})()}
|
||||
{/* Sprossen-Spalten (mullionCols − 1 vertikale Teiler im
|
||||
Hauptfeld unterhalb eines etwaigen Oberlichts). */}
|
||||
{!dt &&
|
||||
wt &&
|
||||
(() => {
|
||||
const cols = Math.max(1, Math.round(wt.mullionCols ?? 1));
|
||||
if (cols <= 1) return null;
|
||||
const top = originY + px(wt.transomHeight ?? 0);
|
||||
const fieldH = px(h) - px(wt.transomHeight ?? 0);
|
||||
const fieldW = px(w);
|
||||
return Array.from({ length: cols - 1 }, (_, k) => (
|
||||
<line
|
||||
key={k}
|
||||
x1={pad + (fieldW * (k + 1)) / cols}
|
||||
y1={top}
|
||||
x2={pad + (fieldW * (k + 1)) / cols}
|
||||
y2={top + fieldH}
|
||||
stroke={strokeMuted}
|
||||
strokeWidth={0.75}
|
||||
/>
|
||||
));
|
||||
})()}
|
||||
</>
|
||||
)}
|
||||
</svg>
|
||||
|
||||
@@ -2336,6 +2336,15 @@ function WindowStylesTab({
|
||||
max={4}
|
||||
/>
|
||||
</FieldRow>
|
||||
<FieldRow label={t("resources.field.mullionCols")}>
|
||||
<NumberField
|
||||
value={win.mullionCols ?? 1}
|
||||
onChange={(mullionCols) => patch({ mullionCols: Math.max(1, Math.round(mullionCols)) })}
|
||||
step={1}
|
||||
min={1}
|
||||
max={4}
|
||||
/>
|
||||
</FieldRow>
|
||||
<FieldRow label={t("resources.field.glazing")}>
|
||||
<SelectField
|
||||
value={win.glazing}
|
||||
|
||||
Reference in New Issue
Block a user