feat(abut-rebar): 교대 접속슬래브 배근 삽도 (평면 · 단면)

- 평면: 왼쪽 절반 하면 (R3 · R4 · R8) · 오른쪽 절반 상면 (R1 · R2), 모따기 모서리 R7, 교대축 · 길이 배치 치수
- 단면 (길이 방향, 폭 가운데): 브라켓 위 평탄 + 경사, 층 순서, R8은 R1 · R3 사이
- verify/dump: 접속슬래브 삽도 덤프

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Haiku 5.5 committed 2026-11-05 09:26:13 +09:00
1 parent 9ae6cf0945
commit e9d79957c8
3 files changed
+173

No files matched your search

+18
View File
@@ -124,3 +124,21 @@ describe('③ 접속슬래브 배근 입력 저장', () => {
expect(() => checkStoredAbutments([{ ...rec, rebar: { slab: { c: 'x' } } as never }])).toThrow('접속슬래브 배근');
});
});
import { abutSlabPlanSvg, abutSlabSectionSvg } from '../src/view/abut-slab-rebar-svg';
describe('③ 접속슬래브 삽도', () => {
it('평면: 교대축 · 길이 배치 치수, 하면 · 상면 반쪽, 번호 풍선 R1–R4 · R7 · R8', () => {
const svg = abutSlabPlanSvg(geom, A1);
expect(svg).toContain(A1.across.text);
expect(svg).toContain('100 · 250 · 21@300=6.300 · 250 · 100');
for (const m of ['R1', 'R2', 'R3', 'R4', 'R7', 'R8']) expect(svg).toContain(`data-pick="${m}"`);
});
it('단면: 매립형 · 경사 −4 %, 선택하면 나머지 흐리게 / 숨김', () => {
const svg = abutSlabSectionSvg(geom, A1);
expect(svg).toContain('매립형');
expect(svg).toContain('−4.0 %'.replace('−', '-'));
expect(abutSlabSectionSvg(geom, A1, { marks: new Set(['R8']), only: true })).toContain('opacity="0"');
});
});