- 평면: 블럭 1200 × 1200, S2 실선 (위) · S1 파선 (아래), 번호 풍선 - 단면: 교좌면 기준, 몰탈패드 50, S1 다리 · S2 본, 묻힘 치수 문자열 - 결과에 교좌면 높이(seatZ) 추가 — 단면 축을 교좌면 기준으로 맞춤 - verify/dump: 받침블럭 삽도 덤프 Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
17 lines
1.0 KiB
TypeScript
17 lines
1.0 KiB
TypeScript
// 교대 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)));
|
|
});
|