Bauteile: Fenster-Anschlag-Striche (Laibung, fein) analog zur Tür, mit Tests
This commit is contained in:
@@ -147,3 +147,20 @@ describe("generatePlan — Tür-Typ wandoeffnung (Item 6)", () => {
|
||||
expect(arcCount(def)).toBe(1);
|
||||
});
|
||||
});
|
||||
|
||||
/** Zählt Fenster-Anschlag-/Laibungsstriche (cls "window-frame") im Plan. */
|
||||
function windowRevealCount(p: Project, detail: "grob" | "mittel" | "fein") {
|
||||
return generatePlan(p, "eg", visible, undefined, detail).primitives.filter(
|
||||
(pr) => pr.kind === "line" && pr.cls === "window-frame",
|
||||
).length;
|
||||
}
|
||||
|
||||
describe("generatePlan — Fenster Anschlag-Striche (Item 8)", () => {
|
||||
it("erzeugt bei 'fein' zwei Laibungsstriche (je Pfosten einen)", () => {
|
||||
expect(windowRevealCount(projectWithOpening({ ...baseWindow }), "fein")).toBe(2);
|
||||
});
|
||||
|
||||
it("erzeugt bei 'mittel' KEINE (nur im Detailgrad fein)", () => {
|
||||
expect(windowRevealCount(projectWithOpening({ ...baseWindow }), "mittel")).toBe(0);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1833,6 +1833,30 @@ function addOpeningSymbol(
|
||||
openingId: o.id,
|
||||
});
|
||||
}
|
||||
// fein: Anschlag-/Laibungsstriche an beiden Pfosten (kurz quer zur Wand) —
|
||||
// analog zur Tür, damit Fenster im Detailplan gleich „fertig" wirken (bisher
|
||||
// hatten nur Türen sie). Haarlinie, 6 cm Andeutung je Seite.
|
||||
if (detail === "fein") {
|
||||
const jambs = openingJambs(wall, o);
|
||||
const dir = sub(wall.end, wall.start);
|
||||
const len = Math.hypot(dir.x, dir.y);
|
||||
if (jambs && len > 1e-9) {
|
||||
const n = { x: -dir.y / len, y: dir.x / len };
|
||||
const reveal = 0.06;
|
||||
for (const jamb of [jambs.jambStart, jambs.jambEnd]) {
|
||||
out.push({
|
||||
kind: "line",
|
||||
a: add(jamb, scale(n, reveal)),
|
||||
b: add(jamb, scale(n, -reveal)),
|
||||
cls: "window-frame",
|
||||
weightMm: SYMBOL_HAIRLINE_MM,
|
||||
color: o.color ?? POCHE_STROKE,
|
||||
greyed,
|
||||
openingId: o.id,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
// Brüstungslinie (gepunktet) — zeigt die Brüstung im Grundriss auf der Wandachse.
|
||||
// Nur bei Fenstern mit Brüstungshöhe > 0. Entspricht der Sill-Linie in
|
||||
// `_make_oeffnung_preview` und dem Brüstungs-Plansymbol im Rhino-Plugin.
|
||||
|
||||
Reference in New Issue
Block a user