From d529ebd17023c79eb3b8abe026b357b6cd767557 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sun, 6 Sep 2026 20:13:47 +0900 Subject: [PATCH] =?UTF-8?q?feat(B06):=20=EC=A7=80=ED=98=95=EC=97=90=20?= =?UTF-8?q?=EB=A7=89=ED=9E=8C=20=EC=A2=8C=EC=9A=B0=20=EC=9D=B4=EB=8F=99?= =?UTF-8?q?=EC=9D=84=20=EB=B2=BD=20=ED=88=B4=ED=8C=81=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=95=8C=EB=A6=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 추가 기슭막이를 옆으로 옮겨도 안 움직이는 측점이 있어(실측 1.0m 요청에 0.00~0.18m), 막는 규칙(원지반 매몰 금지)이 되돌린 양을 벽에 남기고 툴팁에 적음. Co-Authored-By: Claude Opus 5 (1M context) --- B06_Section/B06_Section_UI_Cross_Culvert.ts | 5 ++++- B06_Section/B06_Section_UI_Cross_Culvert_Extra.ts | 4 ++++ B06_Section/B06_Section_UI_Cross_Culvert_Types.ts | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/B06_Section/B06_Section_UI_Cross_Culvert.ts b/B06_Section/B06_Section_UI_Cross_Culvert.ts index be936d9b..a4e68876 100644 --- a/B06_Section/B06_Section_UI_Cross_Culvert.ts +++ b/B06_Section/B06_Section_UI_Cross_Culvert.ts @@ -176,7 +176,10 @@ export function appendCulvertOverlay( (wall.floatGapM > 0.01 ? ` · ⚠ 바닥 원지반 이격 ${wall.floatGapM.toFixed(2)}m — 하부 지지 구조물 별도(추가 예정)` : ` · 근입 ${REVET_EMBED_DEPTH_M.toFixed(2)}m(실무 기초콘크리트 H=0.5 — 법정 규정 없음)`) + - (wall.lengthM ? ` · 연장 ${wall.lengthM.toFixed(1)}m` : ""), + (wall.lengthM ? ` · 연장 ${wall.lengthM.toFixed(1)}m` : "") + + (wall.shiftBlockedM + ? ` · ⚠ 좌우 이동 ${wall.shiftBlockedM.toFixed(2)}m 는 지형에 막힘(더 나가면 벽이 묻힘)` + : ""), ); if (onSelectRevet) revetShape.classList.add("is-selectable"); revetShapes.set(wallKey, revetShape); diff --git a/B06_Section/B06_Section_UI_Cross_Culvert_Extra.ts b/B06_Section/B06_Section_UI_Cross_Culvert_Extra.ts index ddd83b73..710c6076 100644 --- a/B06_Section/B06_Section_UI_Cross_Culvert_Extra.ts +++ b/B06_Section/B06_Section_UI_Cross_Culvert_Extra.ts @@ -439,6 +439,10 @@ export function buildOutletExtras(input: OutletExtrasInput): OutletExtrasResult Math.max(0, base - groundBase), form, ); + // 요청한 좌우 이동을 지형이 막았으면 그 양을 남긴다 — 「눌러도 안 움직인다」의 까닭을 + // 툴팁으로 알리기 위함이다(2026-09-06 실측: 다섯 측점 중 넷이 1.0m 요청에 0.0m 이동). + const blocked = Math.max(0, (requestedX ?? 0) - appliedX); + if (blocked > 0.005) wall.shiftBlockedM = Math.round(blocked * 100) / 100; walls.push(wall); // 되받기 — 지반에 맞춰 조정한 값이 **실제 적용 높이**다(조정창이 그대로 받아 적는다). appliedAdjusts.push({ diff --git a/B06_Section/B06_Section_UI_Cross_Culvert_Types.ts b/B06_Section/B06_Section_UI_Cross_Culvert_Types.ts index a644fbe9..8329cc4a 100644 --- a/B06_Section/B06_Section_UI_Cross_Culvert_Types.ts +++ b/B06_Section/B06_Section_UI_Cross_Culvert_Types.ts @@ -71,6 +71,9 @@ export interface WallLayout { * 별도 지지 구조물로 메운다(추가 예정). 0이면 지반 위(근입 0.5m). */ floatGapM: number; + /** 사용자가 요청한 좌우 이동을 **지형이 막아 못 나간** 거리(m, 2026-09-06). + * 0보다 크면 그 자리에서 더 나가면 벽이 원지반에 묻힌다는 뜻이라 툴팁으로 알린다. */ + shiftBlockedM?: number; /** 재질(메/찰/콘크리트) — 높이 한계를 정한다(2026-08-22 사용자). */ material: RevetMaterial; outward: number;