feat(rebar): B1–B4와 B5–B8 방향 교환 (B1–B4는 W 방향, B5–B8은 L 방향)
- 재료표(B5–B8 9150 = 9350 − 2c, B1–B4 7600 = 7800 − 2c)와 같은 방향 배정으로 맞춤 - 격자 키를 물리 방향으로 정리: sL = L 방향 간격, sW = W 방향 간격 (기존 sAxis → sL, sPerp → sW) - B1–B4: L 격자로 개수, 길이 W − 2c. B5–B8: W 격자로 개수, 길이 L − 2c - B9: 열(L)은 sL, 행(W)은 sW 격자 (물리 격자 일치), 개수 불변 - B11은 L 방향 간격(sL), B12는 W 방향 간격(sW) - 3D 확대기초 철근과 단면 그림의 역할을 교환 (B1–B4 선, B5–B8 점) - 철근표 간격과 규칙 값, 설정 라벨을 방향 기준으로 수정 - 테스트 기대값 갱신 (B1–B4 40, B5–B8 31, B6 13646 분할 경고) Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f2fa48913b
commit
752de2fd9d
12 files changed
+160
-167
No files matched your search
@@ -20,8 +20,8 @@ describe('확대기초 배근 입력 (승인 2026-10-26, 시안 ③ 확대기초
|
||||
});
|
||||
|
||||
it('the grid spacing s reaches the grid positions and the rebar table', () => {
|
||||
const m = buildPier({ ...loadP1(), footingRebar: { sAxis: 150 } });
|
||||
expect(m.footingRebar.sAxis).toBe(150);
|
||||
const m = buildPier({ ...loadP1(), footingRebar: { sL: 150 } });
|
||||
expect(m.footingRebar.sL).toBe(150);
|
||||
const xs = gridPositions(8000, m.footingRebar);
|
||||
expect(xs[1] - xs[0]).toBeCloseTo(150, 6);
|
||||
const b4 = rebarSummary(m).rows.find((r) => r.name === 'B4')!;
|
||||
@@ -36,7 +36,7 @@ describe('확대기초 배근 입력 (승인 2026-10-26, 시안 ③ 확대기초
|
||||
const b10 = base.find((r) => r.name === 'B10-1')!;
|
||||
expect([b10.spacing, b10.basis]).toEqual(['200', 'default']);
|
||||
|
||||
const rows = rebarSummary(buildPier({ ...loadP1(), footingRebar: { sAxis: 150 } })).rows;
|
||||
const rows = rebarSummary(buildPier({ ...loadP1(), footingRebar: { sL: 150 } })).rows;
|
||||
const b2s = rows.find((r) => r.name === 'B2')!;
|
||||
expect([b2s.spacing, b2s.actual, b2s.basis]).toEqual(['300', '150', 'input']);
|
||||
const b1s = rows.find((r) => r.name === 'B1')!;
|
||||
@@ -44,18 +44,20 @@ describe('확대기초 배근 입력 (승인 2026-10-26, 시안 ③ 확대기초
|
||||
expect(rows.find((r) => r.name === 'B10-1')!.basis).toBe('default');
|
||||
});
|
||||
|
||||
it('방향 (문서 기준, 승인 2026-10-26): B1–B4·B9·B12는 교각축(sAxis), B5–B8·B11은 교각축 직각(sPerp)', () => {
|
||||
const rows = rebarSummary(buildPier({ ...loadP1(), footingRebar: { sPerp: 150 } })).rows;
|
||||
// 방향 교환 (승인 2026-10-26): sL = spacing along L (B1–B4, B9 columns, B11); sW = spacing along W (B5–B8, B9 rows, B12).
|
||||
it('방향 (교환 후): sW는 B5–B8·B12, sL은 B1–B4·B9·B11', () => {
|
||||
const rows = rebarSummary(buildPier({ ...loadP1(), footingRebar: { sW: 150 } })).rows;
|
||||
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 === 'B12')!.spacing).toBe('1200 (8s)');
|
||||
expect(rows.find((r) => r.name === 'B11')!.basis).toBe('default');
|
||||
expect(rows.find((r) => r.name === 'B1')!.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');
|
||||
const rowsL = rebarSummary(buildPier({ ...loadP1(), footingRebar: { sL: 150 } })).rows;
|
||||
expect(rowsL.find((r) => r.name === 'B1')!.spacing).toBe('300');
|
||||
expect(rowsL.find((r) => r.name === 'B9')!.spacing).toBe('600 (4s)');
|
||||
expect(rowsL.find((r) => r.name === 'B11')!.spacing).toBe('1200 (8s)');
|
||||
expect(rowsL.find((r) => r.name === 'B5')!.basis).toBe('default');
|
||||
});
|
||||
|
||||
it('k 배수: k 4 → 간격 500, 개수 60 / 47 (문서 4s 값)', () => {
|
||||
|
||||
Reference in new issue
Block a user