From 2aaa0c594dd5a8e2740abc00833ff6c9569e37af Mon Sep 17 00:00:00 2001 From: umsangdon Date: Thu, 3 Sep 2026 13:29:29 +0900 Subject: [PATCH] =?UTF-8?q?feat(B05):=20=EC=84=B8=EC=9B=94=EA=B5=90=20?= =?UTF-8?q?=EC=A0=91=EA=B7=BC=EC=84=A0=20=EA=B5=AC=EA=B0=84=EC=9D=84=203D?= =?UTF-8?q?=20=ED=8C=A8=EC=B9=98=20=EB=A6=AC=EB=B3=B8=EC=97=90=20=ED=8F=AC?= =?UTF-8?q?=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 노견 → 벽 상단 접근선 구간이 패치에서 빠져 있어 좁은 좌측 패치 사이로 원지반이 드러나 보였다(2026-09-03 사용자 확정: 「패치로 덮기」). 접근선은 벽보다 위라 덮어도 관 구멍·L자 통로를 막지 않는다 — 벽 전면·유로는 종전대로 리본에 담지 않는다(2026-08-25 사용자 ②). 접근선 줄을 `patchPoints` 앞에 담고 `fillRuns` 에 한 장으로 실어 「구간 1줄 = 리본 1장」 규칙을 그대로 따른다. 검증 — typecheck·prettier 통과. 3D 육안 확인은 카메라 조작이 필요해 다음 화면 검증 묶음에서 함께 수행. Co-Authored-By: Claude Opus 5 (1M context) --- .../B05_Profile_UI_Corridor_Station_Structure.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/B05_Profile/B05_Profile_UI_Corridor_Station_Structure.ts b/B05_Profile/B05_Profile_UI_Corridor_Station_Structure.ts index c96fb326..e0c6913f 100644 --- a/B05_Profile/B05_Profile_UI_Corridor_Station_Structure.ts +++ b/B05_Profile/B05_Profile_UI_Corridor_Station_Structure.ts @@ -176,12 +176,18 @@ export function fordSilhouettes(section: CrossSection): StructureSilhouette[] { points.push({ offset_m: side.top.offset, elevation_m: side.top.elevation }); } points.push({ offset_m: wall.points[2].offset, elevation_m: wall.points[2].elevation }); - // 패치 리본(잘린 자리 다시 그리기)은 **성토부선만** 담는다 — 벽 전면·유로를 - // 리본으로 덮으면 관 구멍과 L자 통로가 막힌다(2026-08-25 사용자 ②). 벽·바닥은 - // 구조물 솔리드가 그린다. + // 패치 리본(잘린 자리 다시 그리기)은 **성토부선과 접근선까지** 담는다 — 벽 전면·유로는 + // 여전히 담지 않는다(리본으로 덮으면 관 구멍과 L자 통로가 막힌다, 2026-08-25 사용자 ②). + // 접근선(노견 → 벽 상단)은 벽보다 위라 덮어도 구멍을 막지 않는데, 이 구간을 비워 두니 + // 좁은 좌측 패치 사이로 원지반이 드러나 보였다(2026-09-03 사용자 확정: 「패치로 덮기」). const patchPoints: OffsetPoint[] = []; // 성토 구간은 **구간별로도** 담는다 — 패치 리본이 한 장씩 낸다(2026-08-27 사용자). const fillRuns: OffsetPoint[][] = []; + const approachRun = points.slice(); + if (approachRun.length >= 2) { + patchPoints.push(...approachRun); + fillRuns.push(approachRun); + } // 유출측 다단과 달리 세월교는 단 나눔이 없다 — 접지 후 절토선(kind="cut")은 뺀다. const fill = side.fillSegments.filter((segment) => segment.kind !== "cut"); let kind: "cut" | "fill" = "fill";