Fenster-Grundriss: keine Glaslinie mehr im Feld, auch nicht bei fein
Die dünne Glaslinie (fein: Doppellinie) lief mittig durchs Glasfeld, egal wo und wie gross das Fenster war — Nutzer wollte dort keine Haarlinie, weder bei mittel (schon vorher entfernt) noch bei fein. Blendrahmen + Flügelrahmen + Rahmenblöcke an Laibung/Flügelstoss bleiben als Kontur bestehen.
This commit is contained in:
+4
-13
@@ -460,6 +460,10 @@ export function windowSymbol(
|
|||||||
const gInnerN = frameInnerN + (operable ? reveal : 0);
|
const gInnerN = frameInnerN + (operable ? reveal : 0);
|
||||||
// Verschachtelter Flügelrahmen NUR bei „fein" (SIA fig. 38); „mittel" bleibt
|
// Verschachtelter Flügelrahmen NUR bei „fein" (SIA fig. 38); „mittel" bleibt
|
||||||
// beim reinen Blendrahmen-Band (SIA fig. 37).
|
// beim reinen Blendrahmen-Band (SIA fig. 37).
|
||||||
|
// Keine Glaslinie mehr im Feld (auch nicht bei „fein") — Nutzer-Feedback:
|
||||||
|
// eine feine Haarlinie mittig im Glasfeld wird nicht gebraucht, unabhängig
|
||||||
|
// von der Fensterposition. Der Flügelrahmen (nur bei öffenbaren Flügeln)
|
||||||
|
// bleibt als einzige zusätzliche Kontur bei „fein" bestehen.
|
||||||
if (operable) {
|
if (operable) {
|
||||||
const sFrom = along(jambStart, jambEnd, clearFrom);
|
const sFrom = along(jambStart, jambEnd, clearFrom);
|
||||||
const sTo = along(jambStart, jambEnd, clearTo);
|
const sTo = along(jambStart, jambEnd, clearTo);
|
||||||
@@ -470,19 +474,6 @@ export function windowSymbol(
|
|||||||
add(sFrom, scale(n, gInnerN)),
|
add(sFrom, scale(n, gInnerN)),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
const gInsetU = operable ? fw * 0.6 : 0;
|
|
||||||
const gFrom = clearFrom + gInsetU;
|
|
||||||
const gTo = clearTo - gInsetU;
|
|
||||||
if (gTo - gFrom <= 1e-6) continue;
|
|
||||||
const gMid = (gOuterN + gInnerN) / 2;
|
|
||||||
const a = along(jambStart, jambEnd, gFrom);
|
|
||||||
const b = along(jambStart, jambEnd, gTo);
|
|
||||||
// Glas als Doppellinie (Isolierverglasung, ~15 mm Abstand) — nur „fein"
|
|
||||||
// erreicht diesen Punkt (mittel bricht oben früh ab, s. o.).
|
|
||||||
const half = Math.min(0.0075, bandDepth * 0.18);
|
|
||||||
for (const off of [gMid - half, gMid + half]) {
|
|
||||||
glassLines.push([add(a, scale(n, off)), add(b, scale(n, off))]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return { frame, glassLines, mullionLines, sashFrames, sashOpeningLines: [], meetingMarks };
|
return { frame, glassLines, mullionLines, sashFrames, sashOpeningLines: [], meetingMarks };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -191,15 +191,15 @@ describe("generatePlan — Verglasung glazingPanes (Item 2)", () => {
|
|||||||
const glassLineCount = (p: Project, detail: "grob" | "mittel" | "fein" = "mittel") =>
|
const glassLineCount = (p: Project, detail: "grob" | "mittel" | "fein" = "mittel") =>
|
||||||
linesOfClass(p, "window-glass", detail).length;
|
linesOfClass(p, "window-glass", detail).length;
|
||||||
|
|
||||||
it("glazingPanes beeinflusst die 2D-Glaslinienzahl NICHT mehr — SIA-Detailgrad entscheidet (mittel zeigt noch KEINE Glaslinie, SIA fig. 37; Doppellinie/IV erst bei 'fein', unabhängig von der Scheibenzahl)", () => {
|
it("glazingPanes beeinflusst die 2D-Glaslinienzahl NICHT mehr — typisierte Fenster zeigen GAR KEINE Glaslinie im Grundriss (Nutzer-Feedback: keine Haarlinie mittig im Feld, unabhängig von Detailgrad/Fensterposition)", () => {
|
||||||
const wt3: WindowType = { ...baseWindowType, id: "wt3", glazingPanes: 3 };
|
const wt3: WindowType = { ...baseWindowType, id: "wt3", glazingPanes: 3 };
|
||||||
const wt1: WindowType = { ...baseWindowType, id: "wt1", glazingPanes: 1 };
|
const wt1: WindowType = { ...baseWindowType, id: "wt1", glazingPanes: 1 };
|
||||||
const p3 = project({ ...baseWindow, typeId: "wt3" }, [wt3]);
|
const p3 = project({ ...baseWindow, typeId: "wt3" }, [wt3]);
|
||||||
const p1 = project({ ...baseWindow, typeId: "wt1" }, [wt1]);
|
const p1 = project({ ...baseWindow, typeId: "wt1" }, [wt1]);
|
||||||
expect(glassLineCount(p3, "mittel")).toBe(0);
|
expect(glassLineCount(p3, "mittel")).toBe(0);
|
||||||
expect(glassLineCount(p1, "mittel")).toBe(0);
|
expect(glassLineCount(p1, "mittel")).toBe(0);
|
||||||
expect(glassLineCount(p3, "fein")).toBe(2);
|
expect(glassLineCount(p3, "fein")).toBe(0);
|
||||||
expect(glassLineCount(p1, "fein")).toBe(2);
|
expect(glassLineCount(p1, "fein")).toBe(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("ohne typeId bleibt die alte Detailgrad-Regel (grob/mittel=1, fein=2) unverändert — Regression", () => {
|
it("ohne typeId bleibt die alte Detailgrad-Regel (grob/mittel=1, fein=2) unverändert — Regression", () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user