feat(rebar): 격자 실간격을 교각축(B1–B4·B9)과 교각축 직각(B5–B8·B11·B12)으로 나눠 입력

- footing-settings: s → sAxis(교각축) · sPerp(교각축 직각), 범위는 동일 (100–150)
- grid·gridPositions가 방향 키를 받음. B1–B4 grid는 sAxis, B5–B8 grid는 sPerp, B9 행·열은 sAxis, B11·B12는 sPerp
- 철근표 간격·실간격과 근거가 방향별 값을 씀 (B12는 교각축 직각 값, 승인 2026-10-26)
- 3D 확대기초 그림의 위치도 방향별 값을 씀
- 패널 입력 두 칸으로 분리

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Haiku 5.5 committed 2026-10-26 17:10:31 +09:00
1 parent c40c58d27f
commit ddd6d55a72
7 files changed
+59 -32

No files matched your search

+5 -5
View File
@@ -385,9 +385,9 @@ export function buildRebar3D(m: PierModel, common: Material = DEFAULT_MATERIAL,
const fs = m.footingRebar;
const z = layers(Hf, fs);
const gW = grid(Wf * 1000, fs);
const gL = grid(Lf * 1000, fs);
const posW = (j: number) => -Wf / 2 + mm(fs.cSide + gW.e + j * fs.s);
const posL = (i: number) => -Lf / 2 + mm(fs.cSide + gL.e + i * fs.s);
const gL = grid(Lf * 1000, fs, 'sPerp');
const posW = (j: number) => -Wf / 2 + mm(fs.cSide + gW.e + j * fs.sAxis);
const posL = (i: number) => -Lf / 2 + mm(fs.cSide + gL.e + i * fs.sPerp);
const sA = -Lf / 2 + 0.1;
const sB = Lf / 2 - 0.1;
const nA = -Wf / 2 + 0.1;
@@ -470,8 +470,8 @@ export function buildRebar3D(m: PierModel, common: Material = DEFAULT_MATERIAL,
}
}
// B11 (across W, spread along L) and B12 (along L, spread across W) at the assembly levels, 4s apart, 2s stagger per level.
const xsL = gridPositions(Lf * 1000, fs);
const ysW = gridPositions(Wf * 1000, fs);
const xsL = gridPositions(Lf * 1000, fs, 'sPerp');
const ysW = gridPositions(Wf * 1000, fs, 'sPerp');
const dAsm = assemblyEndOffset();
const nAsm = Wf / 2 - mm(d1 + dAsm);
const sAsm = Lf / 2 - mm(d2 + dAsm);