fix(abut): 교대 받침 공통 규칙을 교각 솔플레이트 규칙 형식으로 변경

- 이전 가정(받침 A×B 700×640, h3 181, T 30, 여유 100)을 없애고, 교각과 같은 솔플레이트 규칙(src/core/solplate-rule.ts)을 씀 (결정 2026-11-03: 교각 규칙을 기본값으로)
- 입력: 솔플레이트 교직 L 1000, 교축 W 1100, 종단 기울기 S −0.5 %. 받침높이 H는 교대 받침 시트 값(A1 275 mm)으로 고정
- 계산: T = ⌈22 + L·|S|/200⌉ = 25, h3 = H − T = 250, T1 27.5 / T2 22.5, E = 400. 교각 카드와 같은 안내 줄 표시
- 받침 종류 · 용량 입력은 유지. ELEVATION TABLE의 A·B 열 삭제, 삽도는 솔플레이트 L × W 기준
- 테스트 갱신. 전체 651건 통과, 타입 검사·빌드 통과. 브라우저 시각 확인은 미실시

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Opus 5.5 committed 2026-11-03 18:37:17 +09:00
1 parent 4b02dde153
commit 6b969f4a7c
7 files changed
+137 -110

No files matched your search

+10 -10
View File
@@ -1,29 +1,29 @@
import { describe, expect, it } from 'vitest';
import { abutBearingPlanSvg, abutBearingSectionSvg, abutSolplateSvg, type AbutBearingDetail } from '../src/view/abut-bearing-svg';
// 운곡교 A1 받침 ① (교대 받침 표의 값: 블럭 125 = 75 + 50, h3 181, T 30, L 800, T1 38 / T2 22, 회전 −4.42°).
// 운곡교 A1 받침 ① (교대 받침 표: 블럭 125 = 75 + 50, H 275 → T 25, h3 250, L 1000 × W 1100, T1 27.5 / T2 22.5, 회전 −4.42°).
const d: AbutBearingDetail = {
no: 1, blockMm: 1200, padMm: 1000, A: 700, B: 640, L: 800, W: 740,
h1: 75, h2: 50, h3: 181, h4: 30, T1: 38, T2: 22, rotDeg: -4.42, S: -1.91, seatEl: 44.367, z: 44.492,
no: 1, blockMm: 1200, padMm: 1000, L: 1000, W: 1100,
h1: 75, h2: 50, h3: 250, h4: 25, T1: 27.5, T2: 22.5, rotDeg: -4.42, S: -0.5, seatEl: 44.367, z: 44.492,
};
describe('교대 받침 삽도 (시안 ② 교량받침 카드)', () => {
it('평면: block, pad, solplate and bearing sizes, turned by the bearing azimuth', () => {
it('평면: block, pad and solplate L × W, turned by the bearing azimuth', () => {
const svg = abutBearingPlanSvg(d);
expect(svg).toContain('700 × 640');
expect(svg).toContain('솔플 800 × 740 · 패드 1000');
expect(svg).toContain('솔플 1000 × 1100');
expect(svg).toContain('패드 1000 (점선)');
expect(svg).toContain('rotate(4.420 150 130)');
expect(svg.match(/<rect /g)).toHaveLength(4);
expect(svg.match(/<rect /g)).toHaveLength(3);
});
it('단면: the four layers and E = h1 + h2 + h3 + h4 = 336', () => {
it('단면: the four layers and E = h1 + h2 + h3 + h4 = 400', () => {
const svg = abutBearingSectionSvg(d);
for (const s of ['h1 75', 'h2 50', 'h3 181', 'h4 30', 'E = 336', '교좌면 44.367', 'z 44.492']) expect(svg).toContain(s);
for (const s of ['h1 75', 'h2 50', 'h3 250', 'h4 25', 'E = 400', '교좌면 44.367', 'z 44.492']) expect(svg).toContain(s);
expect(svg.match(/<rect /g)).toHaveLength(4);
});
it('솔플레이트: L, W, T1 → T2 and the slope', () => {
const svg = abutSolplateSvg(d);
for (const s of ['T1 38', 'T2 22', 'L 800 · W 740', 'S -1.910 %']) expect(svg).toContain(s);
for (const s of ['T1 27.5', 'T2 22.5', 'L 1000 · W 1100', 'S -0.500 %']) expect(svg).toContain(s);
});
});