feat(rebar): 기둥 배근 입력 8개 (피복·띠철근 K3/K5/K4·K6·커플러·Δz·n_div), CL01·CL02 검사
- core/rebar/column-settings.ts: 입력 정의, 기본값(기둥철근 (1).md), 범위(제안), 검사 (CL01 범위, CL02 n_div 홀수) - 주철근 하단 갈고리는 고정 (입력 없음) - 기둥 탭 패널: 적용 버튼으로 반영, 계산 결과(K2 내측 r, 주철근·커플러 수량) 표시 - P1·P2 등분 수, P3·P5·P4·P6 간격, 커플러 간격·상승을 철근표 간격·비고와 근거(기본값/입력)에 연동 - 3D 주철근 개수도 n_div 입력을 사용 (COLUMN_P1 하드코딩 제거) Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
496e0ea4e5
commit
f619b9ea20
9 files changed
+215
-20
No files matched your search
+7
-7
@@ -4,7 +4,7 @@ import { assemblyEndOffset, assemblyJs, b10Levels, b9Bars, FOOTING_DEFAULTS, gri
|
||||
import { bottomPiece, MAIN, topSplicePieces, widthLayout } from '../core/rebar/coping-main';
|
||||
import { C14_INSET, c14Bars, CAP, COPING_REBAR, SHEAR_LOOP_STEP, shearBars, shearBarsMulti, shearUHeight, copingSideBars, SIDE_HOOK_LEG, stairBars, undersideAt } from '../core/rebar/coping';
|
||||
import { sideRowLevels } from '../core/coping-geom';
|
||||
import { columnRebar, columnInputFor, COLUMN_P1 } from '../core/rebar/column';
|
||||
import { columnRebar, columnInputFor } from '../core/rebar/column';
|
||||
import { barDepths, barsAcross } from '../core/rebar/bearing-block';
|
||||
import { blockFramePoint } from '../core/geometry';
|
||||
import { INTEGRATED_BLOCK } from '../core/integrated-block';
|
||||
@@ -294,8 +294,8 @@ export function buildRebar3D(m: PierModel, common: Material = DEFAULT_MATERIAL,
|
||||
const sc = c.s;
|
||||
const base = c.bottom;
|
||||
const rt = mm(col.tieRadius);
|
||||
for (let i = 0; i < COLUMN_P1.nDiv; i++) {
|
||||
const th = (2 * Math.PI * i) / COLUMN_P1.nDiv;
|
||||
for (let i = 0; i < colInput.nDiv; i++) {
|
||||
const th = (2 * Math.PI * i) / colInput.nDiv;
|
||||
const r1 = mm(col.r1);
|
||||
addBar('P1', c.k, [sc + r1 * Math.cos(th), base + mm(zBot), r1 * Math.sin(th)], [sc + r1 * Math.cos(th), base + mm(col.zTop1), r1 * Math.sin(th)], NOMINAL_DIAMETER.S32, COLOR.column);
|
||||
// 90° bottom hook of P1, outward (기둥철근.md §3.2, Q-C5): the 12·d tail is drawn, the bend is approximated by the tail's start.
|
||||
@@ -312,8 +312,8 @@ export function buildRebar3D(m: PierModel, common: Material = DEFAULT_MATERIAL,
|
||||
// Main bar couplers (D32, L150 Ø60, 4단 × 46줄 × 2열 = 368개): P1 at col.couplerP1, P2 at col.couplerP2 (+150 mm)
|
||||
const r1 = mm(col.r1);
|
||||
const r2 = mm(col.r2);
|
||||
for (let i = 0; i < COLUMN_P1.nDiv; i++) {
|
||||
const th = (2 * Math.PI * i) / COLUMN_P1.nDiv;
|
||||
for (let i = 0; i < colInput.nDiv; i++) {
|
||||
const th = (2 * Math.PI * i) / colInput.nDiv;
|
||||
const cosTh = Math.cos(th);
|
||||
const sinTh = Math.sin(th);
|
||||
// P1 couplers (184)
|
||||
@@ -334,7 +334,7 @@ export function buildRebar3D(m: PierModel, common: Material = DEFAULT_MATERIAL,
|
||||
|
||||
// Tie couplers (D19, L100 Ø40, 총 35개): P5 1개 (19개) · P4 2개 (16개)
|
||||
col.p5.forEach((z, j) => {
|
||||
const th = (2 * Math.PI * (j * 7 + 0.5)) / COLUMN_P1.nDiv;
|
||||
const th = (2 * Math.PI * (j * 7 + 0.5)) / colInput.nDiv;
|
||||
const cx = sc + rt * Math.cos(th);
|
||||
const cz = rt * Math.sin(th);
|
||||
const cy = base + mm(z);
|
||||
@@ -343,7 +343,7 @@ export function buildRebar3D(m: PierModel, common: Material = DEFAULT_MATERIAL,
|
||||
addBar('띠철근 커플러', c.k, [cx - dx, cy, cz - dz], [cx + dx, cy, cz + dz], 40, COLOR.couplerTie);
|
||||
});
|
||||
col.p4.forEach((z) => {
|
||||
const angles = [(2 * Math.PI * 0.5) / COLUMN_P1.nDiv, (2 * Math.PI * 0.5) / COLUMN_P1.nDiv + Math.PI];
|
||||
const angles = [(2 * Math.PI * 0.5) / colInput.nDiv, (2 * Math.PI * 0.5) / colInput.nDiv + Math.PI];
|
||||
angles.forEach((th) => {
|
||||
const cx = sc + rt * Math.cos(th);
|
||||
const cz = rt * Math.sin(th);
|
||||
|
||||
Reference in new issue
Block a user