fix(rebar): 측면 수평 C12 = 상단 · C13 = 하단 변화구간 (엑셀 Pier B357–G358)

T형과 다주형 모두 엑셀 Pier 시트 철근표(C12 상단, C13 하단(변화구간))에 맞춰
측면 수평철근 번호를 서로 바꾼다 (사용자 결정 2026-11-06).
- 경사 하면에서 끊기는 아래 단 → C13, 끝면까지 가는 위 단 → C12
- 철근표 위치·비고 문구, 3D, 다주형 생성기가 같은 원천(sideRows)을 따른다
- C14 높이 순서를 유지하도록 측면 단을 아래(C13) → 위(C12) 순서로 넘김
- 테스트 기대값의 번호를 교환 (P1: C12 2단 8개, C13 5단 20개)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Opus 5.5 committed 2026-11-06 14:29:50 +09:00
1 parent fb7b4b021b
commit 2b26b7c095
10 files changed
+52 -50

No files matched your search

+7 -7
View File
@@ -37,18 +37,18 @@ describe('코핑 철근 (코핑철근.md, plan C3)', () => {
expect(() => shearBars(2200)).toThrow('RB-K01');
});
it('C12 has 5 rows below the break at 42.538, C13 has 2 rows at and above it', () => {
it('C13 has 5 rows below the break at 42.538, C12 has 2 rows at and above it', () => {
const r = sideRows(41.288, 42.538);
expect(r.c12).toEqual([41.288, 41.538, 41.788, 42.038, 42.288]);
expect(r.c13).toEqual([42.538, 42.788]);
expect(r.c13).toEqual([41.288, 41.538, 41.788, 42.038, 42.288]);
expect(r.c12).toEqual([42.538, 42.788]);
});
it('C12 일자 lengths 3717 / 5333 / 6950 / 8567 / 10183 and C13 11746 for L 12000 (코핑철근.md §6.2 table)', () => {
it('C13 일자 lengths 3717 / 5333 / 6950 / 8567 / 10183 and C12 11746 for L 12000 (코핑철근.md §6.2 table)', () => {
const s = copingSideBars(12000, 41.288, 42.538);
const expected = [3717, 5333, 6950, 8567, 10183];
s.c12.forEach((r, i) => expect(r.straight).toBeCloseTo(expected[i], 0));
expect(s.c12[0].xw).toBeCloseTo(4141.7, 1);
s.c13.forEach((r) => {
s.c13.forEach((r, i) => expect(r.straight).toBeCloseTo(expected[i], 0));
expect(s.c13[0].xw).toBeCloseTo(4141.7, 1);
s.c12.forEach((r) => {
expect(r.xw).toBe(127);
expect(r.straight).toBe(11746);
});