diff --git a/src/geometry/opening.ts b/src/geometry/opening.ts index efd9696..90a09d8 100644 --- a/src/geometry/opening.ts +++ b/src/geometry/opening.ts @@ -460,6 +460,10 @@ export function windowSymbol( const gInnerN = frameInnerN + (operable ? reveal : 0); // Verschachtelter Flügelrahmen NUR bei „fein" (SIA fig. 38); „mittel" bleibt // 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) { const sFrom = along(jambStart, jambEnd, clearFrom); const sTo = along(jambStart, jambEnd, clearTo); @@ -470,19 +474,6 @@ export function windowSymbol( 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 }; } diff --git a/src/plan/generatePlan.windowFields.test.ts b/src/plan/generatePlan.windowFields.test.ts index cc88c35..1aff624 100644 --- a/src/plan/generatePlan.windowFields.test.ts +++ b/src/plan/generatePlan.windowFields.test.ts @@ -191,15 +191,15 @@ describe("generatePlan — Verglasung glazingPanes (Item 2)", () => { const glassLineCount = (p: Project, detail: "grob" | "mittel" | "fein" = "mittel") => 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 wt1: WindowType = { ...baseWindowType, id: "wt1", glazingPanes: 1 }; const p3 = project({ ...baseWindow, typeId: "wt3" }, [wt3]); const p1 = project({ ...baseWindow, typeId: "wt1" }, [wt1]); expect(glassLineCount(p3, "mittel")).toBe(0); expect(glassLineCount(p1, "mittel")).toBe(0); - expect(glassLineCount(p3, "fein")).toBe(2); - expect(glassLineCount(p1, "fein")).toBe(2); + expect(glassLineCount(p3, "fein")).toBe(0); + expect(glassLineCount(p1, "fein")).toBe(0); }); it("ohne typeId bleibt die alte Detailgrad-Regel (grob/mittel=1, fein=2) unverändert — Regression", () => {