feat(rebar): 단면·폐합 at two fixed stations side by side (단부 0.3 m, first column centre)

- The station input is removed. The section shows the 단부 (first shear
  station, from the 3D bar records) and the first column centre, side by side.
- The 상면 간격 label is removed.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Haiku 5.5 committed 2026-10-26 15:15:47 +09:00
1 parent 64539c63d6
commit ec402e22d7
3 files changed
+28 -19

No files matched your search

+6 -1
View File
@@ -53,6 +53,12 @@ export function chainDims(positions: number[], startMm: number, endMm: number):
return out;
}
/** The 단부 station (m): the first station of the 전단·띠 bars (C9–C11), i.e. the first shear position. */
export function copingEndStation(records: BarRecord[]): number {
const loops = records.filter((r) => /^C(9|10|11)$/.test(r.name));
return Math.min(...loops.flatMap((r) => r.pts.map((p) => p[0])));
}
/**
* Bar positions (mm, along the coping): one per bar, its mean s. A loop or a cross bar sits at one station, so its
* points share the same s apart from the bends; the bends are not positions of their own.
@@ -221,7 +227,6 @@ export function copingSectionSvg(records: BarRecord[], s0: number, copingTopEl?:
for (const d of topChain) {
parts.push(`<line x1="${d.from}" y1="${dimTop}" x2="${d.to}" y2="${dimTop}" stroke="#18212B" stroke-width="8"></line><text x="${(d.from + d.to) / 2}" y="${dimTop - 90}" text-anchor="middle" font-size="160" fill="#18212B">${d.text}</text>`);
}
parts.push(`<text x="${(-halfW + halfW) / 2}" y="${dimTop - 260}" text-anchor="middle" font-size="150" fill="#55606E">상면 간격</text>`);
// 4: the side rows (C12·C13) along the EL, from the coping top EL down to the lowest side bar.
const side = unique.filter((c) => c.group === 'side' && c.x < 0);