feat(abut-rebar): 교대 받침블럭 배근 삽도 (평면 · 단면)

- 평면: 블럭 1200 × 1200, S2 실선 (위) · S1 파선 (아래), 번호 풍선
- 단면: 교좌면 기준, 몰탈패드 50, S1 다리 · S2 본, 묻힘 치수 문자열
- 결과에 교좌면 높이(seatZ) 추가 — 단면 축을 교좌면 기준으로 맞춤
- 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:38:29 +09:00
1 parent 5856cfb423
commit a68e4a0366
4 files changed
+107 -1

No files matched your search

+16
View File
@@ -0,0 +1,16 @@
// 교대 A1 받침블럭 배근 삽도 2장을 SVG로 저장한다 (PNG 확인: python3 -I ../verify/svg_to_png.py <svg> <png>).
import { mkdirSync, writeFileSync } from 'node:fs';
import { fileURLToPath } from 'node:url';
import { it } from 'vitest';
import { abutBlockRebar } from '../../src/core/abut/rebar/block';
import { abutBlockPlanSvg, abutBlockSectionSvg } from '../../src/view/abut-block-rebar-svg';
it('dump 교대 받침블럭 삽도', () => {
const out = process.env.DUMP_OUT ?? fileURLToPath(new URL('./out', import.meta.url));
mkdirSync(out, { recursive: true });
const blocks = [1, 2, 3, 4, 5].map((no, i) => ({ no, s: 1 + i * 2, t: 0.2, rotDeg: 0, seatEl: 44.367, blockHeightMm: 125 }));
const r = abutBlockRebar(blocks, 40.895);
const ns = (svg: string) => svg.replace('<svg ', '<svg xmlns="http://www.w3.org/2000/svg" ');
writeFileSync(`${out}/block-plan.svg`, ns(abutBlockPlanSvg(r, undefined, [blocks[0].s * 1000, blocks[0].t * 1000])));
writeFileSync(`${out}/block-section.svg`, ns(abutBlockSectionSvg(r)));
});