From c36a7e0d545649b3527c4e61349fbdd203457db3 Mon Sep 17 00:00:00 2001 From: Karim Date: Sat, 4 Jul 2026 14:54:10 +0200 Subject: [PATCH] Schnitt: wandrelative Schraffuren drehen mit der geschnittenen Wand MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit splitWallLayers uebergab resolveHatch keinen Wandachsen-Winkel, wodurch wandrelative Muster (relativeToWall: Daemmung, Backstein) im Schnitt absolut blieben — die Daemmung lief vertikal statt quer zur Wanddicke. Die geschnittene Wand steht im Schnitt vertikal (Bandachse entlang v, Modellwinkel 90 Grad); dieser Winkel wird jetzt wie im Grundriss (addWallPoche) mitgegeben -> Daemmung horizontal, wie an den Waenden im Grundriss. 216 Tests gruen. --- src/plan/toSection.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/plan/toSection.ts b/src/plan/toSection.ts index 33f693c..2545a8d 100644 --- a/src/plan/toSection.ts +++ b/src/plan/toSection.ts @@ -533,6 +533,14 @@ function splitSlabLayers( return out; } +/** + * Achswinkel einer GESCHNITTENEN Wand im Schnitt-Koordinatensystem (Modell- + * Konvention wie `wallAngleDeg` in resolveHatch): das Wand-Band steht vertikal + * (Achse entlang v, atan2(1,0) = 90°). Damit drehen wandrelative Muster + * (Dämmung, Backstein) im Schnitt genauso mit der Wand wie im Grundriss. + */ +const SECTION_WALL_AXIS_ANGLE_DEG = 90; + /** * Zerlegt das EINE geschnittene Wandrechteck (`cp`, vier Ecken in u/v-Metern) in * stehende Teil-Rechtecke je Schicht des Wandtyps `wt` — das Wand-Gegenstück zu @@ -584,7 +592,12 @@ export function splitWallLayers( let acc = 0; // kumulierte Dicke von uMin (erste einsortierte Schicht) nach uMax for (const layer of layers) { const comp = getComponent(project, layer.componentId); - const hatch = resolveHatch(project, comp.hatchId, undefined, resolveForeground(comp)); + // Wandrelative Muster (relativeToWall, z. B. Dämmung/Backstein) folgen der + // Wandachse — im Schnitt steht die geschnittene Wand VERTIKAL (Bandachse + // entlang v, Modellwinkel 90°). Wie im Grundriss (`addWallPoche` übergibt + // die Wandachse) wird der Achswinkel mitgegeben, sonst liefe die Dämmung + // vertikal statt quer zur Wanddicke (horizontal). + const hatch = resolveHatch(project, comp.hatchId, SECTION_WALL_AXIS_ANGLE_DEG, resolveForeground(comp)); const uLeft = uMin + acc * scale; acc += layer.thickness; const uRight = uMin + acc * scale;