feat(rebar): 확대기초 단면 삽도 2단계 (범례·선 스타일·치수선·다리 주석·기둥·말뚝·실제 비율·탭 4개)

- 선 스타일을 삽도에 맞춤: B5–B8 청록 실선, B1–B4 주황 점, B9 보라 세로선, B10 녹색 점, B11 회색 파선, B12 회색 점
- 범례 5항목 (선 모양별)
- 하단 치수선(피복 · 격자 e · n@s=G · e)과 우측 높이 치수선(상면 피복 · B10 단 · 하면 피복), 화살 끝 표시
- B6 다리 주석 "B6 다리 → B5 높이 (값)"
- 기둥 블록(상부)과 말뚝 머리(하부)를 맥락 그림으로 표시
- 높이 방향을 실제 비율로 그림 (축소 없음)
- 탭 4개 중 "교각축 직각 단면 (폭 W)"만 작동, 나머지는 다음 단계 자리로 비활성

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Haiku 5.5 committed 2026-10-26 18:02:51 +09:00
1 parent bad220d791
commit 6c7a7ff781
3 files changed
+104 -45

No files matched your search

+16 -2
View File
@@ -1373,10 +1373,24 @@ function renderFootingSettings(box: HTMLDivElement, pier: Pier): void {
applyFootingRebar(pier.input.name, next);
});
wrap.append(msg, apply);
// 교각축 직각 단면 (폭 W) (승인 2026-10-26, 추천안 1단계): a bubble click highlights that bar family; a second click clears it.
// 확대기초 단면 탭 (승인 2026-10-26, 추천안 2단계): 첫 탭 "교각축 직각 단면 (폭 W)"만 작동하고, 나머지 탭은 다음 단계 자리만 둡니다.
const tabs = el('div');
tabs.style.display = 'flex';
tabs.style.flexWrap = 'wrap';
tabs.style.gap = '6px';
for (const [label, enabled] of [['교각축 직각 단면 (폭 W)', true], ['교각축 단면 (길이 L)', false], ['다리 배치 상세', false], ['B10 모서리', false]] as const) {
const b = el('button', label, 'btn small');
b.type = 'button';
b.setAttribute('aria-pressed', String(enabled));
b.disabled = !enabled;
if (!enabled) b.title = '다음 단계에서 추가';
tabs.appendChild(b);
}
wrap.appendChild(tabs);
// 교각축 직각 단면 (폭 W): a bubble click highlights that bar family; a second click clears it.
const sectionFig = el('figure', undefined, 'ground-fig');
sectionFig.innerHTML = footingSectionSvg(pier.model);
sectionFig.appendChild(el('figcaption', '교각축 직각 단면 (폭 W) · 풍선을 누르면 그 철근만 강조 · 높이 방향 축소 · 다리 생략', 'muted small'));
sectionFig.appendChild(el('figcaption', '교각축 직각 단면 (폭 W) · 풍선을 누르면 그 철근만 강조 · 실제 비율 · 다리 생략', 'muted small'));
sectionFig.querySelectorAll<SVGGElement>('[data-bubble]').forEach((g) => g.addEventListener('click', () => highlightFootingBar(sectionFig, g.dataset.bubble ?? '')));
wrap.appendChild(sectionFig);
box.appendChild(wrap);