fix(B06): 흙막이 · 옹벽 안으로 지나가는 다른 선 숨김 — 벽이 바탕색 덮개와 함께 위에서 덮음(PLAN 66-5)
- 벽 · 무늬를 덮개와 함께 맨 위로 · 관 · 클릭 판정면 · 글은 그 위로 다시(지금 차례 그대로) - 원지반 · 설계선 · 비탈 · 다른 외곽이 벽 안에서 안 보임 · 벽 자기 외곽 · 무늬는 그대로 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EYJJRCfHfdCGNhmXTjQKV7
This commit is contained in:
@@ -20,6 +20,7 @@ import {
|
|||||||
appendFordSurfaceDropPlan,
|
appendFordSurfaceDropPlan,
|
||||||
} from "./B06_Section_UI_Cross_Ford_Pavement";
|
} from "./B06_Section_UI_Cross_Ford_Pavement";
|
||||||
import { culvertWallsStandAt } from "./B06_Section_UI_Cross_Culvert_Wire";
|
import { culvertWallsStandAt } from "./B06_Section_UI_Cross_Culvert_Wire";
|
||||||
|
import { raiseWalls } from "./B06_Section_UI_Cross_Wall";
|
||||||
import { appendSpoilFillOverlay } from "./B06_Section_UI_Cross_SpoilFill";
|
import { appendSpoilFillOverlay } from "./B06_Section_UI_Cross_SpoilFill";
|
||||||
import { appendRevetmentOverlay, computeRevetmentLayout } from "./B06_Section_UI_Cross_Revetment";
|
import { appendRevetmentOverlay, computeRevetmentLayout } from "./B06_Section_UI_Cross_Revetment";
|
||||||
import {
|
import {
|
||||||
@@ -468,13 +469,12 @@ export function createCrossSectionCard(
|
|||||||
// (2026-09-06 사용자 확정: 구조물 자체 면적을 빼는 것이 아니다). 그림과 면적이
|
// (2026-09-06 사용자 확정: 구조물 자체 면적을 빼는 것이 아니다). 그림과 면적이
|
||||||
// 같은 트림 값을 쓰므로 "그림은 이런데 수량은 저렇다"가 생기지 않는다.
|
// 같은 트림 값을 쓰므로 "그림은 이런데 수량은 저렇다"가 생기지 않는다.
|
||||||
applyStructureAreas(section, designTrim);
|
applyStructureAreas(section, designTrim);
|
||||||
appendCrossDesignOverlay(plotLayer, section.design, x, toDisplayY, drawSamples, designTrim, {
|
|
||||||
const designFrom = plotLayer.childElementCount;
|
const designFrom = plotLayer.childElementCount;
|
||||||
|
appendCrossDesignOverlay(plotLayer, section.design, x, toDisplayY, drawSamples, designTrim, {
|
||||||
layer: svg,
|
layer: svg,
|
||||||
x: (CROSS_PAD.left + widthPx - CROSS_PAD.right) / 2,
|
x: (CROSS_PAD.left + widthPx - CROSS_PAD.right) / 2,
|
||||||
y: heightPx - CROSS_PAD.bottom - 4,
|
y: heightPx - CROSS_PAD.bottom - 4,
|
||||||
});
|
});
|
||||||
// 사토장(유용토운반작업장) — 교본 6장 3절이 횡단도 표시를 요구한다. 값은 설계 결과에서
|
|
||||||
// 물넘이 자리 = 노면 · 측구 설계선 걷음(66-2 · 66-3 — 옛 계획고 점선이 드러남)
|
// 물넘이 자리 = 노면 · 측구 설계선 걷음(66-2 · 66-3 — 옛 계획고 점선이 드러남)
|
||||||
if (fordPaved && section.ford_pavement)
|
if (fordPaved && section.ford_pavement)
|
||||||
hideFordPavedRoad(
|
hideFordPavedRoad(
|
||||||
@@ -485,6 +485,7 @@ export function createCrossSectionCard(
|
|||||||
x,
|
x,
|
||||||
toDisplayY,
|
toDisplayY,
|
||||||
);
|
);
|
||||||
|
// 사토장(유용토운반작업장) — 교본 6장 3절이 횡단도 표시를 요구한다. 값은 설계 결과에서
|
||||||
// 그대로 오고 여기서 다시 세지 않는다. 선 종류는 터파기 파선과 갈라 둔다.
|
// 그대로 오고 여기서 다시 세지 않는다. 선 종류는 터파기 파선과 갈라 둔다.
|
||||||
appendSpoilFillOverlay(plotLayer, section.design, x, toDisplayY);
|
appendSpoilFillOverlay(plotLayer, section.design, x, toDisplayY);
|
||||||
// 배수관 세트 — 조정창이 쓸 카드 상태를 받아 둔다(2026-08-19) · 링크 카드도 채운다(2026-08-24).
|
// 배수관 세트 — 조정창이 쓸 카드 상태를 받아 둔다(2026-08-19) · 링크 카드도 채운다(2026-08-24).
|
||||||
@@ -528,6 +529,7 @@ export function createCrossSectionCard(
|
|||||||
);
|
);
|
||||||
if (highlightRevet) setRevetActive(highlightRevet);
|
if (highlightRevet) setRevetActive(highlightRevet);
|
||||||
}
|
}
|
||||||
|
raiseWalls(plotLayer); // 흙막이 · 옹벽 안을 지나는 다른 선 가림(66-5)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 십자선(계획 노선 자리) · 축선 · 높이 축 이름 — `_Cross_View_Frame`(700줄 제한).
|
// 십자선(계획 노선 자리) · 축선 · 높이 축 이름 — `_Cross_View_Frame`(700줄 제한).
|
||||||
|
|||||||
@@ -160,3 +160,38 @@ export function appendPlanLine(
|
|||||||
}
|
}
|
||||||
layer.append(line);
|
layer.append(line);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 벽 안으로 지나가는 다른 선(원지반 · 설계선 · 비탈 · 다른 외곽)을 가린다(66-5) — 흙막이 · 옹벽을
|
||||||
|
* 바탕색 덮개와 함께 맨 위로 올림. 벽 자기 외곽 · 무늬는 그대로. 관 · 클릭 판정면 · 글은 그 위로
|
||||||
|
* 다시 올려 지금 차례(관이 벽을 지나감 · 판정면 맨 위)를 지킨다.
|
||||||
|
*/
|
||||||
|
export function raiseWalls(layer: SVGElement): void {
|
||||||
|
const kids = [...layer.children];
|
||||||
|
const groups = kids
|
||||||
|
.filter((el) => el.classList.contains("b06-chart__culvert-revet"))
|
||||||
|
.map((wall) => {
|
||||||
|
// 무늬 = 벽 바로 뒤의 clipPath + 잘린 묶음(`appendWallHatch`)
|
||||||
|
const hatch: Element[] = [];
|
||||||
|
let next = wall.nextElementSibling;
|
||||||
|
while (
|
||||||
|
next &&
|
||||||
|
(next.tagName === "clipPath" ||
|
||||||
|
next.getAttribute("clip-path")?.startsWith("url(#b06-revet-clip-"))
|
||||||
|
) {
|
||||||
|
hatch.push(next);
|
||||||
|
next = next.nextElementSibling;
|
||||||
|
}
|
||||||
|
const cover = document.createElementNS(SVG_NS, "polygon");
|
||||||
|
cover.setAttribute("points", wall.getAttribute("points") ?? "");
|
||||||
|
cover.setAttribute("class", "b06-chart__wall-cover");
|
||||||
|
return [cover, wall, ...hatch];
|
||||||
|
});
|
||||||
|
if (!groups.length) return;
|
||||||
|
for (const group of groups) layer.append(...group);
|
||||||
|
layer.append(
|
||||||
|
...kids.filter((el) =>
|
||||||
|
el.matches(".b06-chart__culvert-pipe, .b06-chart__culvert-revet-hit, text"),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|||||||
@@ -254,6 +254,13 @@
|
|||||||
stroke-width: 2.2;
|
stroke-width: 2.2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 흙막이 · 옹벽 덮개(66-5) — 벽 안으로 지나가는 다른 선을 바탕색으로 가림. */
|
||||||
|
.b06-chart__wall-cover {
|
||||||
|
fill: var(--color-surface-raised);
|
||||||
|
stroke: none;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
/* 클릭 판정용 투명 겹면 — 관·보호공보다 위에 얹혀 벽 가운데도 눌린다. */
|
/* 클릭 판정용 투명 겹면 — 관·보호공보다 위에 얹혀 벽 가운데도 눌린다. */
|
||||||
.b06-chart__culvert-revet-hit {
|
.b06-chart__culvert-revet-hit {
|
||||||
fill: transparent;
|
fill: transparent;
|
||||||
@@ -367,13 +374,6 @@
|
|||||||
stroke-linejoin: round;
|
stroke-linejoin: round;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* BOX암거 내공(유로) — 면은 비우고 윤곽만. 물이 지나는 빈 공간이라 채우지 않는다. */
|
|
||||||
.b06-chart__box-barrel {
|
|
||||||
fill: none;
|
|
||||||
stroke: var(--color-text-secondary);
|
|
||||||
stroke-width: 1;
|
|
||||||
stroke-dasharray: 4 3;
|
|
||||||
stroke-linejoin: round;
|
|
||||||
/* 세월교 본체(바닥판 · 관) 선택 강조(66-1) — 측벽 강조와 같은 색. */
|
/* 세월교 본체(바닥판 · 관) 선택 강조(66-1) — 측벽 강조와 같은 색. */
|
||||||
.b06-chart__ford-slab.is-active,
|
.b06-chart__ford-slab.is-active,
|
||||||
.b06-chart__culvert-pipe.is-active {
|
.b06-chart__culvert-pipe.is-active {
|
||||||
@@ -382,6 +382,13 @@
|
|||||||
stroke-width: 2.2;
|
stroke-width: 2.2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* BOX암거 내공(유로) — 면은 비우고 윤곽만. 물이 지나는 빈 공간이라 채우지 않는다. */
|
||||||
|
.b06-chart__box-barrel {
|
||||||
|
fill: none;
|
||||||
|
stroke: var(--color-text-secondary);
|
||||||
|
stroke-width: 1;
|
||||||
|
stroke-dasharray: 4 3;
|
||||||
|
stroke-linejoin: round;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 터파기 선(2026-09-09 사용자 확정 ④) — **파선**으로 그린다. 구조물 실체가 아니라
|
/* 터파기 선(2026-09-09 사용자 확정 ④) — **파선**으로 그린다. 구조물 실체가 아니라
|
||||||
|
|||||||
Reference in New Issue
Block a user