From c55f614d50e2481bc2cb6c34daba9cb1af521103 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sun, 11 Oct 2026 15:36:55 +0900 Subject: [PATCH] =?UTF-8?q?feat(b06):=20=EC=83=81=EC=84=B8=20=EC=98=81?= =?UTF-8?q?=EC=97=AD=20=E2=80=94=20=EB=B2=BD=20=C2=B7=20=EC=A7=91=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=C2=B7=20=EB=B3=B8=EC=B2=B4=20=EB=91=98=EB=A0=88?= =?UTF-8?q?=EB=A5=BC=20=EA=B5=AC=EC=A1=B0=EB=AC=BC=20=EC=84=A0=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20(261-3=20=EA=B1=B8=EC=9D=8C=202)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 설계선 끝 ~ 깎기 비탈 밑을 집수정 둘레가 이어 깎기 암석(암선 ↔ 설계선) · 깎기 토사(지반 ↔ 암선) 영역이 따로 닫힘. 배수관 측점(검증_랩탑메인 4+15) 깎기 암석 영역 18.24㎡ 생김 · 일반 깎기 측점은 그대로(그림 칠 면적과 같음). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01F3mdb91125mPoC6tpsQx4P --- B06_Section/B06_Section_UI_Cross_Design_Pick.ts | 2 +- B06_Section/B06_Section_UI_Cross_Detail_Select.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/B06_Section/B06_Section_UI_Cross_Design_Pick.ts b/B06_Section/B06_Section_UI_Cross_Design_Pick.ts index 36575f17f..2d8958dd7 100644 --- a/B06_Section/B06_Section_UI_Cross_Design_Pick.ts +++ b/B06_Section/B06_Section_UI_Cross_Design_Pick.ts @@ -33,7 +33,7 @@ const HIT_CLASS = "b06-chart__design-hit"; /** 설계선 오버레이가 그린 선 표시(구조물 트림 선과 가름) — 카드가 그린 직후 단다. */ export const DESIGN_LINE_ATTR = "data-design-line"; /** 보라 선을 덮는 벽 · 본체 폴리곤. */ -const OCCLUDER_CLASSES = [ +export const OCCLUDER_CLASSES = [ "b06-chart__culvert-revet", "b06-chart__culvert-basin", "b06-chart__ford-slab", diff --git a/B06_Section/B06_Section_UI_Cross_Detail_Select.ts b/B06_Section/B06_Section_UI_Cross_Detail_Select.ts index 98f4d5eba..057f8c09c 100644 --- a/B06_Section/B06_Section_UI_Cross_Detail_Select.ts +++ b/B06_Section/B06_Section_UI_Cross_Detail_Select.ts @@ -6,6 +6,7 @@ * 하나 = 길이 · 경사비율 / 수평 · 높이 · 여럿 = 길이 합 / 닫힌 넓이 · 둘레(안 닫히면 「닫히지 않음」). * 닫힌 영역(259-2) = 조각으로 둘러싸인 면(`findFaces` · 열린 영역 제외) · 안 누름 = 그 영역(둘레 조각) * 고름 · Shift/Ctrl = 영역 더하기 · 채움 강조 · 값 = 면적 / 둘레 · 선으로 한 영역을 닫아도 채움. + * 벽 · 집수정 · 본체 둘레도 구조물 선(설계선 끝 ~ 비탈 밑을 이어 깎기 토사 · 암석 영역이 닫힘 · 261-3). * 표 칸 누름 = 저장된 조각을 다시 고름(`choose`) · 띠 = 값 글만(`note`). * 칸에 넣기 = 표 우클릭 「그래프에서 고르기」 동안만(`_Cross_Detail_Table` 이 [칸에 넣기] · Enter 로 씀). * ponytail: 그림을 다시 그리면(칸 크기 · 카드 다시 그림) 고름을 지움 — 조각 키 기억은 필요할 때. @@ -17,6 +18,7 @@ import { CROSS_PAD } from "./B06_Section_UI_Section_Common"; import { DESIGN_LINE_ATTR, mergeStraightPieces, + OCCLUDER_CLASSES, pieceLabel, } from "./B06_Section_UI_Cross_Design_Pick"; import { @@ -84,6 +86,12 @@ export function collectPieces(elements: Element[], axes: CrossAxesOptions): Spli points: points.map(([offset, elevation]) => ({ offset, elevation })), structure: !el.hasAttribute(DESIGN_LINE_ATTR), }); + else if (OCCLUDER_CLASSES.some((name) => el.classList.contains(name))) + // 벽 · 집수정 · 본체 둘레(261-3) — 설계선 끝 · 비탈 밑을 잇는 구조물 선(닫힌 고리) + runs.push({ + points: [...points, points[0]].map(([offset, elevation]) => ({ offset, elevation })), + structure: true, + }); else if (el.classList.contains("b06-chart__cross-profile")) others.push({ line: "ground", points }); else if (el.classList.contains("b06-chart__spoil-fill")) others.push({ line: "spoil", points });