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 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";
|
||||
|
||||
@@ -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");
|
||||
clip.setAttribute("id", clipId);
|
||||
const clipShape = document.createElementNS(SVG_NS, "polygon");
|
||||
|
||||
Reference in New Issue
Block a user