feat(rebar): add downward 90° hooks (135 mm) to P6 crossties in 3D rebar model

This commit is contained in:
ypshim committed 2026-10-22 17:45:22 +09:00
1 parent 4aa8dbb3cb
commit a2317caf6c
15 files changed
+740 -133

No files matched your search

+11 -5
View File
@@ -10,8 +10,6 @@ export const BLOCK_REBAR = {
cover: 50,
firstBarGap: 75,
spacing: 125,
/** Straight part of the bar for the 1200 block (spec table: 1100 + 700 × 2). */
straight: 1100,
legLength: 700,
/** Depth of each bar centre below the block top (mm). */
depthS2: 50,
@@ -40,10 +38,15 @@ export function barsAcross(dim: number = BLOCK_REBAR.dim): { count: number; spac
return { count: gaps + 1, spacing: BLOCK_REBAR.spacing, firstEnd: BLOCK_REBAR.cover + BLOCK_REBAR.firstBarGap + leftover / 2 };
}
/** Length of one bar (mm): the straight part a − 2·c_s plus two legs of 700 (spec §5; 2500 for the 1200 block). */
export function barLength(dim: number = BLOCK_REBAR.dim): number {
return dim - 2 * BLOCK_REBAR.cover + 2 * BLOCK_REBAR.legLength;
}
/** Rebar of one block; blockHeight is the bearing block height in mm (h1 front or h2 back, pad included). */
export function blockBars(blockHeight: number, dim: number = BLOCK_REBAR.dim): BarRow[] {
const across = barsAcross(dim);
const length = BLOCK_REBAR.straight + 2 * BLOCK_REBAR.legLength;
const length = barLength(dim);
return [
{ name: 'S1', ...across, length, embedment: BLOCK_REBAR.legLength - (blockHeight - BLOCK_REBAR.depthS1) },
{ name: 'S2', ...across, length, embedment: BLOCK_REBAR.legLength - (blockHeight - BLOCK_REBAR.depthS2) },
@@ -56,12 +59,15 @@ export interface BlockRebar {
bars: BarRow[];
}
/** Rebar of every block of a pier, using the model's block heights (h1 front, h2 back; pad included, Q16 결정). */
/**
* Rebar of every block of a pier. The block height h_b is the model's own block (coping top → block top, pad excluded),
* since the bar depths are measured from the block top. h1 / h2 include the 50 pad and would count it twice.
*/
export function bearingBlockRebar(model: PierModel): BlockRebar[] {
return model.blocks.map((b) => ({
no: b.no,
row: b.row,
bars: blockBars(b.row === '전열' ? model.h1 * 1000 : model.h2 * 1000),
bars: blockBars((b.top - b.bottom) * 1000),
}));
}