fix(B06): 세월교 · 박스 유입 수평공간 시작 = 본체 바닥 높이 흙막이 전면(89-3)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYJJRCfHfdCGNhmXTjQKV7
This commit is contained in:
2026-10-08 12:05:09 +09:00
co-authored by Claude Opus 5.5
parent 7d761e39af
commit f54def5b2b
4 changed files with 38 additions and 1 deletions
@@ -271,3 +271,20 @@ export function withoutGuardedFill<T extends BoxLayout | FordLayout>(
label: { ...ford.label, text: `${ford.label.text} L${Math.ceil(lengthM - 1e-6)}m` },
} as T;
}
/** 세월교 · 박스 유입 흙막이 수평공간 시작 = 본체 바닥(세월교 바닥판 · 박스 저판 상면) 높이의
* 흙막이 전면 자리(89-3). 본체가 이 측점에 없으면 null(배관 규칙). */
export function guardFloorStart(
section: CrossSection,
base: BodyGuardBase | null,
wall: WallLayout,
): OffsetPoint | null {
const end = base?.ends.inlet;
if (!end) return null;
const slab = section.culvert?.body === "box" ? (section.box?.slab_thickness_m ?? 0) : 0;
const floor = end.invert + slab;
return {
offset: wall.points[2].offset + wall.outward * wall.lean * (wall.topJoint.elevation - floor),
elevation: floor,
};
}
@@ -25,6 +25,7 @@ import { buildRevetWallGeometry } from "./B06_Section_UI_Cross_Wall";
import {
bodyGuardAxes,
bodyGuardBase,
guardFloorStart,
bodyGuardHeight,
fordPipeFit,
mergeGuardTrim,
@@ -596,7 +597,7 @@ export function computeCulvertLayout(
outletBottom: outletWall?.bottomBack.elevation ?? 0,
basinStart: culvert.hidden_pipe
? inletWall
? pipeCorners.inlet.bottom
? (guardFloorStart(section, body, inletWall) ?? pipeCorners.inlet.bottom)
: null
: basinFillStart,
basinBottom: culvert.hidden_pipe ? (inletWall?.bottomBack.elevation ?? 0) : basinFillBottom,