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

+14 -16
View File
@@ -24,7 +24,7 @@ import { bearingSectionSvg, type BearingDrawingRef } from './view/bearing-sectio
import { solplateDetailSvg, type SolplateDrawingRef } from './view/solplate-svg';
import { blockRebarSectionSvg } from './view/block-rebar-svg';
import { blockRebarPlanSvg } from './view/block-rebar-plan-svg';
import { copingFrontSvg, copingSectionSvg } from './view/coping-rebar-svg';
import { copingEndStation, copingFrontSvg, copingSectionSvg } from './view/coping-rebar-svg';
import { BLOCK_REBAR_RANGES } from './core/rebar/block-check';
import { DEFAULT_BLOCK_REBAR, type BlockRebarSettings } from './core/rebar/bearing-block';
import { groundSectionSvg } from './view/ground-svg';
@@ -1072,7 +1072,6 @@ function renderBlockRebarSettings(box: HTMLDivElement, pier: Pier): void {
/** 코핑 배근 (승인 2026-10-26, 추천): 정면, and the 단면·폐합 at a station the user chooses (default mid-length). */
let copingView: 'front' | 'section' = 'front';
let copingStation: number | null = null;
function renderCopingDrawings(box: HTMLDivElement, pier: Pier): void {
if (!pier.model || !rebar3d) return;
@@ -1095,20 +1094,19 @@ function renderCopingDrawings(box: HTMLDivElement, pier: Pier): void {
fig.innerHTML = copingFrontSvg(rebar3d.records, L * 1000, pier.model.columns[0]?.s ?? 0);
fig.appendChild(el('figcaption', '정면 · 교축 방향에서 본 코핑 배근 (3D 철근과 같은 데이터)', 'muted small'));
} else {
const at = copingStation ?? L / 2;
const station = el('input');
station.type = 'number';
station.step = '0.1';
station.value = String(at);
station.addEventListener('change', () => {
copingStation = Number(station.value);
renderAll();
});
const label = el('label', '단면 위치 s (m, 코핑 시작에서) ');
label.appendChild(station);
wrap.appendChild(label);
fig.innerHTML = copingSectionSvg(rebar3d.records, at, pier.model.copingRefTop, pier.model.copingB * 1000);
fig.appendChild(el('figcaption', `단면 · 폐합 구성 · s = ${at} m에서 자른 철근 (C9–C11 폐합 포함)`, 'muted small'));
// 단면 · 폐합 at two fixed stations side by side (승인 2026-10-26): the 단부 (first shear station) and the first column centre.
const sEnd = copingEndStation(rebar3d.records);
const sCol = pier.model.columns[0]?.s ?? L / 2;
const grid = el('div', undefined, 'footing-grid');
for (const [st, label] of [[sEnd, `단부 s = ${sEnd.toFixed(2)} m`], [sCol, `기둥 중심 s = ${sCol.toFixed(2)} m`]] as const) {
const f = el('figure', undefined, 'footing-fig');
f.innerHTML = copingSectionSvg(rebar3d.records, st, pier.model.copingRefTop, pier.model.copingB * 1000);
f.appendChild(el('figcaption', label, 'muted small'));
grid.appendChild(f);
}
wrap.appendChild(grid);
box.appendChild(wrap);
return;
}
wrap.appendChild(fig);
box.appendChild(wrap);