fix(B06): 카드마다 다른 clipPath 이름을 써 해칭이 사라지지 않게 한다
clipPath id는 문서 전역인데 이름을 벽 키 + 배면 offset으로 지어, 같은 벽을 소유 측점과 연동 측점이 함께 그리면 이름이 겹쳤다. url(#id)는 문서에서 처음 만난 clipPath를 쓰므로 뒤 카드의 해칭이 앞 카드 좌표로 잘려 통째로 사라졌다. 벽을 옮기면 두 카드가 같은 offset으로 다시 겹쳐 증상이 재발했다. 측정(14+0.0 화면): 6개 중 4개 id가 중복 → 수정 후 10개 전부 고유, 모든 카드의 해칭 그룹이 화면에 폭을 갖는다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -22,6 +22,14 @@ import type { WallLayout } from "./B06_Section_UI_Cross_Culvert_Types";
|
|||||||
const SVG_NS = "http://www.w3.org/2000/svg";
|
const SVG_NS = "http://www.w3.org/2000/svg";
|
||||||
const HATCH_CLASS = "b06-chart__culvert-stone";
|
const HATCH_CLASS = "b06-chart__culvert-stone";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clipPath id 일련번호 — id는 **문서 전역**이라 같은 벽을 소유 측점과 연동 측점이
|
||||||
|
* 함께 그리면 이름이 겹쳤다. `url(#id)`는 문서에서 **처음 만난** clipPath를 쓰므로,
|
||||||
|
* 뒤 카드의 해칭이 앞 카드 좌표로 잘려 통째로 사라졌다(2026-08-30 사용자: 기준
|
||||||
|
* 측점 벽을 옮기니 연동 측점 형태 표현이 다 없어졌다). 카드·다시 그리기마다 새 번호.
|
||||||
|
*/
|
||||||
|
let clipSeq = 0;
|
||||||
|
|
||||||
/** 형태 문자열 → 표현 갈래. 판정 순서는 좁은 말(돌망태·바자)부터. */
|
/** 형태 문자열 → 표현 갈래. 판정 순서는 좁은 말(돌망태·바자)부터. */
|
||||||
export type WallHatch = "dry" | "wet" | "concrete" | "gabion" | "log" | "wattle";
|
export type WallHatch = "dry" | "wet" | "concrete" | "gabion" | "log" | "wattle";
|
||||||
|
|
||||||
@@ -174,7 +182,8 @@ export function appendWallHatch(
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
const clipId = `b06-revet-clip-${keyId}-${Math.round(wall.backOffset * 100)}`;
|
clipSeq += 1;
|
||||||
|
const clipId = `b06-revet-clip-${keyId}-${clipSeq}`;
|
||||||
const clip = document.createElementNS(SVG_NS, "clipPath");
|
const clip = document.createElementNS(SVG_NS, "clipPath");
|
||||||
clip.setAttribute("id", clipId);
|
clip.setAttribute("id", clipId);
|
||||||
const clipShape = document.createElementNS(SVG_NS, "polygon");
|
const clipShape = document.createElementNS(SVG_NS, "polygon");
|
||||||
|
|||||||
Reference in New Issue
Block a user