feat(B06): 기슭막이 연동 해제 시 높이도 분리 — 푸는 순간 값을 굳힘

2026-09-06 사용자 지시. 연동 해제는 위치(4축)만 갈랐고 높이는 소유 측점 값을 계속
따라가, 소유 측점 높이를 바꾸면 푼 측점까지 같이 움직였다.

연동을 푸는 그 순간 화면에 그려진 벽 높이를 이 측점 조정값으로 굳힌다 — 값이 튀지
않으면서 이후에는 따로 논다. 이미 손댄 벽은 그대로 둔다. 단 수·형태는 소유 측점을
따르는 2026-08-30 확정을 그대로 지킨다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-06 12:09:21 +09:00
co-authored by Claude Opus 5
parent 283a248f89
commit 2b18c1b535
2 changed files with 17 additions and 1 deletions
+1
View File
@@ -638,6 +638,7 @@ export function createCrossSectionCard(
adjustOf,
outwardOf,
heightOfWall,
drawnWallKeys: () => [...culvertWallSpecs.keys()],
formOfWall,
appliedD: () => culvertAppliedD,
pipeLengthM: () => culvertPipeLengthM,
@@ -59,6 +59,8 @@ export interface StructurePanelContext {
/** 화면 좌(◀) 방향을 벽 기준 부호로 환산한다. */
outwardOf: (key: RevetKey) => number;
heightOfWall: (key: RevetKey) => number;
/** 지금 이 카드가 그린 벽 목록 — 연동 해제 때 높이를 굳히는 데 쓴다(2026-09-06). */
drawnWallKeys: () => RevetKey[];
formOfWall: (key: RevetKey) => string;
/** 마지막 계산의 실제 적용 d(상하) — d 미지정 벽의 ▲▼ 시작값. */
appliedD: () => Map<RevetKey, number>;
@@ -186,7 +188,20 @@ export function structurePanelDeps(ctx: StructurePanelContext): StructurePanelDe
},
linkState: () =>
ctx.isLinked ? { linked: ctx.revetLink?.linkedFor(ctx.section) ?? true } : null,
setLinked: (linked) => ctx.revetLink?.setLinked(ctx.section.chainage_m, linked),
setLinked: (linked) => {
// 연동을 **푸는 순간** 지금 그려진 높이를 이 측점 값으로 굳힌다(2026-09-06 사용자
// 지시). 예전에는 위치(4축)만 갈리고 높이는 소유 측점 값을 계속 따라가, 소유
// 측점 높이를 바꾸면 푼 측점까지 같이 움직였다. 굳혀 두면 값이 튀지 않으면서
// 이후에는 따로 논다. 단 수·형태는 소유 측점을 그대로 따른다(2026-08-30 확정 유지).
if (!linked) {
ctx.drawnWallKeys().forEach((key) => {
if (ctx.adjustOf(key).h !== null && ctx.adjustOf(key).h !== undefined) return;
const height = ctx.heightOfWall(key);
if (height > 0) ctx.revetOffset?.update(ctx.section.chainage_m, key, { h: height });
});
}
ctx.revetLink?.setLinked(ctx.section.chainage_m, linked);
},
followGrade: () =>
ctx.revetLink?.followGradeFor(ctx.structureSpan?.ownerOf(ctx.section) ?? ctx.section) ?? true,
setFollowGrade: (follow) => {