feat(rebar): B11·B12 수평간격을 배수 k 입력으로 (기본 k = 8, 방향은 문서 기준)
- 간격 = k·s: B11은 L 방향 격자(교각축 직각 s), B12는 W 방향 격자(교각축 s). 기본 k = 8 (1000 mm, s = 125) - 개수는 격자 k칸마다, 조립 단 엇갈림 2칸 유지. 3D 철근도 같은 간격 - 기본 k = 8이므로 P1 기본값의 B11·B12 개수가 60 / 47 → 30 / 24로 바뀜 (k = 4이면 문서값 60 / 47을 재현, 테스트로 확인) - 패널에 k 두 칸, 규칙 표시에 B11·B12 간격 (k·s) - FT02를 n·kB11·kB12 정수 검사로 확장 Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
48e6811600
commit
0588ffe3f4
9 files changed
+54
-39
No files matched your search
@@ -44,27 +44,24 @@ describe('확대기초 배근 입력 (승인 2026-10-26, 시안 ③ 확대기초
|
||||
expect(rows.find((r) => r.name === 'B10-1')!.basis).toBe('default');
|
||||
});
|
||||
|
||||
it('교각축 직각 값은 B5–B8·B11·B12에만, 교각축 값은 B1–B4·B9에 적용 (승인 2026-10-26)', () => {
|
||||
it('방향 (문서 기준, 승인 2026-10-26): B1–B4·B9·B12는 교각축(sAxis), B5–B8·B11은 교각축 직각(sPerp)', () => {
|
||||
const rows = rebarSummary(buildPier({ ...loadP1(), footingRebar: { sPerp: 150 } })).rows;
|
||||
const b5 = rows.find((r) => r.name === 'B5')!;
|
||||
expect([b5.spacing, b5.basis]).toEqual(['300', 'input']);
|
||||
const b12 = rows.find((r) => r.name === 'B12')!;
|
||||
expect([b12.spacing, b12.basis]).toEqual(['600 (4s)', 'input']);
|
||||
expect(rows.find((r) => r.name === 'B5')!.spacing).toBe('300');
|
||||
expect(rows.find((r) => r.name === 'B5')!.basis).toBe('input');
|
||||
expect(rows.find((r) => r.name === 'B11')!.spacing).toBe('1200 (8s)');
|
||||
expect(rows.find((r) => r.name === 'B12')!.basis).toBe('default');
|
||||
expect(rows.find((r) => r.name === 'B1')!.basis).toBe('default');
|
||||
expect(rows.find((r) => r.name === 'B9')!.basis).toBe('default');
|
||||
|
||||
const rowsAxis = rebarSummary(buildPier({ ...loadP1(), footingRebar: { sAxis: 150 } })).rows;
|
||||
expect(rowsAxis.find((r) => r.name === 'B9')!.spacing).toBe('600 (4s)');
|
||||
expect(rowsAxis.find((r) => r.name === 'B12')!.spacing).toBe('1200 (8s)');
|
||||
expect(rowsAxis.find((r) => r.name === 'B5')!.basis).toBe('default');
|
||||
});
|
||||
|
||||
it('패널 규칙 값 (P1, H 2000): 상면·2단 250 · Δ₂ 100 · B2·B6 1723 · B9 500·250 · 조립 500 · 3단 @400', () => {
|
||||
const r = footingRuleValues(2000, DEFAULT_FOOTING_REBAR);
|
||||
expect([r.upper2sAxis, r.upper2sPerp, r.delta2]).toEqual([250, 250, 100]);
|
||||
expect(r.b2Leg).toBeCloseTo(1723, 0);
|
||||
expect(r.b6Leg).toBeCloseTo(1723, 0);
|
||||
expect([r.b9Pitch, r.b9Stagger]).toEqual([500, 250]);
|
||||
expect([r.assemblyPlanPitch, r.assemblyVertical, r.assemblyLevels]).toEqual([500, 400, 3]);
|
||||
it('k 배수: k 4 → 간격 500, 개수 60 / 47 (문서 4s 값)', () => {
|
||||
const rows = rebarSummary(buildPier({ ...loadP1(), footingRebar: { kB11: 4, kB12: 4 } })).rows;
|
||||
expect(rows.find((r) => r.name === 'B11')!.count).toBe(60);
|
||||
expect(rows.find((r) => r.name === 'B12')!.count).toBe(47);
|
||||
});
|
||||
|
||||
it('the 조립 단 배수 n reaches the assembly levels', () => {
|
||||
|
||||
Reference in new issue
Block a user