feat(abut): 벽체 배근 입력 저장 · 교대 벽체 등 fck(35)
- AbutRecord.rebar.wall (바꾼 값만), applyWallRebar, 프로젝트 파일 검증 - 교대 벽체 · 흉벽 · 날개벽 · 접속슬래브 fck(abutBody, 기본 35)를 ② 벽체·흉벽 카드에서 입력. 저판 fck 행과 같은 함수 Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1da8dd74e2
commit
66e7d4d90d
7 files changed
+59
-20
No files matched your search
+18
-12
@@ -1499,18 +1499,7 @@ function fillAbutFootingExtras(
|
||||
auto('길이 (자동)', `${L.toFixed(3)} m`, '교좌면 길이 (skew)');
|
||||
auto('말뚝 길이', `${Math.round(rec.pileLengthMm)} mm`, '① 기본 정보에서 수정');
|
||||
auto('선단 EL (자동)', built.members.pileBottomEl === undefined ? '—' : `${built.members.pileBottomEl.toFixed(3)} m`, '= 기초 하단 − 말뚝 길이');
|
||||
// 교대 저판 fck: 교각 기초 fck와 따로 둔다 (사용자 결정 2026-11-04). 비우면 기본값으로 돌아간다.
|
||||
const fckId = idOf('fck');
|
||||
const fckLab = el('label', 'fck (MPa)');
|
||||
fckLab.htmlFor = fckId;
|
||||
const fckIn = el('input');
|
||||
fckIn.id = fckId;
|
||||
fckIn.type = 'number';
|
||||
fckIn.step = 'any';
|
||||
fckIn.value = String(state.fckByMember.abutFooting ?? state.material.fck);
|
||||
if (fckChanged(state.fckByMember, 'abutFooting')) fckIn.classList.add('changed-input');
|
||||
fckIn.addEventListener('change', () => setMemberFck('abutFooting', fckIn.value));
|
||||
box.append(fckLab, fckIn, el('span', `기본 ${IMPORTED_FCK.abutFooting} · 교각 기초와 별도 · 배근에만 반영`, 'muted small'));
|
||||
abutFckRow(box, 'abutFooting', idOf, '교각 기초와 별도');
|
||||
// 열 위치 (배면부터): "650 · 2000 · 1300 · 650". The last one (전면 연단) follows from the 폭.
|
||||
const id = idOf('pile-rows');
|
||||
const lab = el('label', '열 위치 · 배면부터 (mm)');
|
||||
@@ -1848,6 +1837,8 @@ function fillAbutSlot(slot: (typeof ABUT_SLOTS)[keyof typeof ABUT_SLOTS], rec: A
|
||||
const note = el('span', `기본 ${ABUT_SHAPE_DEFAULT[f.key]}${f.note ? ` · ${f.note}` : ''}`, f.note ? 'muted small abut-note-warn' : 'muted small');
|
||||
(planCard && f.group === 'footing' ? footingBox : shape).append(lab, input, note);
|
||||
}
|
||||
// 교대 벽체 · 흉벽 · 날개벽 · 접속슬래브 fck (도면 35): ② 벽체·흉벽 카드에서 입력.
|
||||
if (planCard) abutFckRow(shape, 'abutBody', idOf, '벽체 · 흉벽 · 날개벽 · 접속슬래브');
|
||||
if (planCard) {
|
||||
// 자동 값 (시안 입력 격자 마지막 줄): 벽체 두께, 흉벽 상단 IP3 / IP1 끝 (가정, QA-4), 교대축.
|
||||
const v = { ...ABUT_SHAPE_DEFAULT, ...normalizeShape(rec.shape) };
|
||||
@@ -3759,6 +3750,21 @@ function setMemberFck(member: FckMember, raw: string): void {
|
||||
renderAll();
|
||||
}
|
||||
|
||||
/** 교대 fck row on a ② card (label · input · note, the card's 3-column grid). 교각 fck와 따로 둔다 (사용자 결정 2026-11-04). Empty = default. */
|
||||
function abutFckRow(box: HTMLElement, member: 'abutFooting' | 'abutBody', idOf: (suffix: string) => string, note: string): void {
|
||||
const id = idOf(`fck-${member}`);
|
||||
const lab = el('label', 'fck (MPa)');
|
||||
lab.htmlFor = id;
|
||||
const input = el('input');
|
||||
input.id = id;
|
||||
input.type = 'number';
|
||||
input.step = 'any';
|
||||
input.value = String(state.fckByMember[member] ?? state.material.fck);
|
||||
if (fckChanged(state.fckByMember, member)) input.classList.add('changed-input');
|
||||
input.addEventListener('change', () => setMemberFck(member, input.value));
|
||||
box.append(lab, input, el('span', `기본 ${IMPORTED_FCK[member]} · ${note} · 배근에만 반영`, 'muted small'));
|
||||
}
|
||||
|
||||
/** fck row on a ② card for a member that has its own fck: value, the 공통 value beside it, and a revert when set. */
|
||||
function renderMemberFck(box: HTMLDivElement, member: FckMember): void {
|
||||
const own = state.fckByMember[member];
|
||||
|
||||
Reference in new issue
Block a user