feat(rebar): add downward 90° hooks (135 mm) to P6 crossties in 3D rebar model
This commit is contained in:
1 parent
4aa8dbb3cb
commit
a2317caf6c
15 files changed
+740
-133
No files matched your search
@@ -97,7 +97,15 @@ export function columnRebar(x: ColumnInput = COLUMN_P1, m: Material = DEFAULT_MA
|
||||
const zTop1 = x.Hc + x.hcop - x.eP1;
|
||||
const lD2 = developmentLength(dS32, m.fyS, m.fck);
|
||||
const zTop2 = x.Hc + lD2;
|
||||
// Bottom of P1 and P2: 확대기초 하면 2단 (B7) 위 + (d_B7 + d_P1)/2 (기둥철근.md §3.2, the same for both).
|
||||
const zBot = -x.Hf + layers(x.Hf).B7 + (NOMINAL_DIAMETER.S19 + dS32) / 2;
|
||||
const couplerLevels = Array.from({ length: Math.max(0, Math.floor(zTop1 / x.ctcCoupler) - 1) }, (_, i) => (i + 1) * x.ctcCoupler);
|
||||
// Pieces of each main bar between its couplers (기둥철근.md §3.2): the bottom piece carries the 90° hook (16.5·d = 525).
|
||||
const p1Hook = Math.round(hookLength('main90', dS32));
|
||||
const p1Points = [zBot, ...couplerLevels, zTop1];
|
||||
const p1Pieces = p1Points.slice(1).map((z, i) => round(z - p1Points[i] + (i === 0 ? p1Hook : 0)));
|
||||
const p2Points = [zBot, ...couplerLevels.map((z) => z + x.dzCp2), zTop2];
|
||||
const p2Pieces = p2Points.slice(1).map((z, i) => round(z - p2Points[i]));
|
||||
const couplersP1 = couplerLevels.length;
|
||||
const mainLines = x.nDiv;
|
||||
const mainP1 = mainLines * (couplersP1 + 1);
|
||||
@@ -126,7 +134,7 @@ export function columnRebar(x: ColumnInput = COLUMN_P1, m: Material = DEFAULT_MA
|
||||
for (let z = z4first; z <= x.Hc; z += x.ctcP6) p6Levels.push(z);
|
||||
const p6Straight = 2 * tieRadius;
|
||||
const p6Hook = hookLength('tie90', dH16);
|
||||
const p6Length = p6Straight + 2 * p6Hook;
|
||||
const p6Length = p6Straight + 2 * Math.round(p6Hook); // 135 mm per hook, as in the document
|
||||
|
||||
// P3 lap: Q-C6 is open; recommended = 1.3·l_d of H19 with the material inputs.
|
||||
const lapP3 = spliceLength(dH19, m.fyH, m.fck);
|
||||
@@ -142,6 +150,10 @@ export function columnRebar(x: ColumnInput = COLUMN_P1, m: Material = DEFAULT_MA
|
||||
angleStepDeg: 360 / x.nDiv,
|
||||
zTop1: round(zTop1),
|
||||
zTop2: round(zTop2),
|
||||
zBot: round(zBot, 2),
|
||||
p1Hook,
|
||||
p1Pieces,
|
||||
p2Pieces,
|
||||
couplerP1: couplerLevels,
|
||||
couplerP2: couplerLevels.map((z) => z + x.dzCp2),
|
||||
mainP1,
|
||||
|
||||
Reference in new issue
Block a user