From d2c5f90092fb48b37477df2906b9ed058e7808b1 Mon Sep 17 00:00:00 2001 From: ypshim Date: Mon, 26 Oct 2026 15:45:51 +0900 Subject: [PATCH] =?UTF-8?q?fix(rebar):=20=EC=83=81=EB=A9=B4=20=EB=8B=A8=20?= =?UTF-8?q?=EA=B0=80=EB=A1=9C=20=EA=B0=84=EA=B2=A9=EC=9D=84=20d(H29,=2028.?= =?UTF-8?q?6=20mm)=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 단마다 양끝이 안으로 들어가는 양을 2d에서 d로 변경 - 상면 단 길이 12744 / 12686.8 / 12629.6 (기존 12744 / 12629.6 / 12515.2) - 3D 상면 주철근의 굽힘 시작점도 같은 값을 쓴다 Co-Authored-By: Claude Haiku 5.5 --- src/core/rebar/coping-main.ts | 4 ++-- src/core/rebar/coping-settings.ts | 2 +- src/main.ts | 2 +- src/view/rebar3d.ts | 2 +- tests/rebar-coping-main.test.ts | 6 +++--- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/core/rebar/coping-main.ts b/src/core/rebar/coping-main.ts index 1efd6f8..71c45be 100644 --- a/src/core/rebar/coping-main.ts +++ b/src/core/rebar/coping-main.ts @@ -11,8 +11,8 @@ export const MAIN = { /** 기본 간격 s_m and minimum end gap g_min. */ spacing: 125, endGapMin: 80, - /** 상면 단 가로 간격 = 2d (H29, mm). Fixed; the vertical step is the 상면 주철근 단 간격 input. */ - layHorizontal: 2 * NOMINAL_DIAMETER.H29, + /** 상면 단 가로 간격 = d (H29, mm). Fixed; the vertical step is the 상면 주철근 단 간격 input. */ + layHorizontal: NOMINAL_DIAMETER.H29, /** 90° 갈고리 l_h (mm, as in the document). */ hook: 472, /** 하면 경사 구간 수평 길이 (mm, each side) and Level width. */ diff --git a/src/core/rebar/coping-settings.ts b/src/core/rebar/coping-settings.ts index 5201a1f..7f2f529 100644 --- a/src/core/rebar/coping-settings.ts +++ b/src/core/rebar/coping-settings.ts @@ -9,7 +9,7 @@ export interface CopingRebarSettings { mainSpacing: number; /** 주철근 끝단 최소 여유 (mm). */ mainEndGap: number; - /** 상면 주철근 단 간격 · 세로 (mm). The horizontal step is fixed at 2d (H29, 57.2 mm). */ + /** 상면 주철근 단 간격 · 세로 (mm). The horizontal step is fixed at d (H29, 28.6 mm). */ mainLayerGap: number; /** 첫 전단철근 최소 여유 (피복 다음, mm). */ firstShearGap: number; diff --git a/src/main.ts b/src/main.ts index e199ecc..5210972 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1079,7 +1079,7 @@ const COPING_REBAR_FIELDS: { key: keyof CopingRebarSettings; label: string }[] = { key: 'cover', label: '피복 (철근 중심, mm)' }, { key: 'mainSpacing', label: '주철근 기본간격 (mm)' }, { key: 'mainEndGap', label: '주철근 끝단 최소 여유 (mm)' }, - { key: 'mainLayerGap', label: '상면 주철근 단 간격 · 세로 (mm, 가로는 2d 고정)' }, + { key: 'mainLayerGap', label: '상면 주철근 단 간격 · 세로 (mm, 가로는 d 고정)' }, { key: 'firstShearGap', label: '첫 전단철근 최소 여유 (피복 다음, mm)' }, { key: 'shearLegs', label: '전단철근 다리 수' }, { key: 'spacingS', label: '전단철근 간격 · 경사 (mm)' }, diff --git a/src/view/rebar3d.ts b/src/view/rebar3d.ts index 1927475..1cbe427 100644 --- a/src/view/rebar3d.ts +++ b/src/view/rebar3d.ts @@ -146,7 +146,7 @@ export function buildRebar3D(m: PierModel, common: Material = DEFAULT_MATERIAL, const cover = 0.1; // Top rows C1–C6 (코핑철근.md §5.1, §5.3): counted from the left, the even (1-based) positions are cycle 1 (C1–C3), // the odd cycle 2 (C4–C6). In 0-based j that is odd j → cycle 1. Each row turns down 472 at both ends, and the - // k-th row's ends sit (k − 1)·57.2 further in. + // k-th row's ends sit (k − 1)·d (H29, 28.6) further in. const topEl = m.copingRefTop; const hookTop = MAIN.hook / 1000; for (let k = 1; k <= 3; k++) { diff --git a/tests/rebar-coping-main.test.ts b/tests/rebar-coping-main.test.ts index 650bb93..d36d9b2 100644 --- a/tests/rebar-coping-main.test.ts +++ b/tests/rebar-coping-main.test.ts @@ -25,10 +25,10 @@ describe('C1–C8 상·하면 주철근 (코핑철근.md §5, plan C3)', () => { expect(topRowEl(43.284, 3)).toBe(43.084); }); - it('top bar lengths 12744 / 12629.6 / 12515.2 (path + 2 × 472 hook)', () => { + it('top bar lengths 12744 / 12686.8 / 12629.6 (path + 2 × 472 hook, 가로 단 간격 d = 28.6)', () => { expect(topBarLength(12000, 1)).toBeCloseTo(12744, 0); - expect(topBarLength(12000, 2)).toBeCloseTo(12629.6, 0); - expect(topBarLength(12000, 3)).toBeCloseTo(12515.2, 0); + expect(topBarLength(12000, 2)).toBeCloseTo(12686.8, 1); + expect(topBarLength(12000, 3)).toBeCloseTo(12629.6, 1); }); it('bottom piece ≈ 7448 with l_s = 1717.6 (1.3 × l_d of H29 at fck 27) — the document shows 1717', () => {