feat(ground): N value per layer row (text, blow count or 타수/관입량 mm)
- StrataRow.nValue: text. "23" is a blow count (0–100), "50/5" a refusal (50 blows for 5 mm, 1–300 mm). Empty means not known yet. - G06 (warning): a malformed N value. Strict, because the values will feed the bearing-capacity and liquefaction checks. - The layer table has an N값 column; the project file checks that the rows are well formed. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7dd59dfc6c
commit
7b5517e312
6 files changed
+100
-5
No files matched your search
+13
-3
@@ -17,7 +17,7 @@ import { DEFAULT_MATERIAL, FCK_MEMBERS, fyOf, GRADE_CHOICES, isAssumedMaterial,
|
||||
import { buildQuantity, quantityRows, type Quantity, type QuantityLine } from './core/rebar/quantity';
|
||||
import { parseDrawingRows } from './core/drawing-import';
|
||||
import { groundElFor, parseGroundModel, strataRowsFor, type GroundModelFile } from './core/ground-model';
|
||||
import { STRATA_NAMES } from './core/ground';
|
||||
import { parseNValue, STRATA_NAMES } from './core/ground';
|
||||
import { groundSectionSvg } from './view/ground-svg';
|
||||
import { parseBearingElevationTable, parseSolplateTable, readDxfTexts } from './core/dxf-table';
|
||||
import { columnDiameterIssues } from './core/column-check';
|
||||
@@ -1582,7 +1582,7 @@ function renderGroundModel(box: HTMLDivElement, pier: Pier): void {
|
||||
const table = el('table', undefined, 'grid-table rebar-table');
|
||||
const head = el('thead');
|
||||
const hr = el('tr');
|
||||
for (const h of ['지층', '하단 EL (m)', '']) hr.appendChild(el('th', h));
|
||||
for (const h of ['지층', '하단 EL (m)', 'N값 (타수 · 타수/관입량 mm)', '']) hr.appendChild(el('th', h));
|
||||
head.appendChild(hr);
|
||||
table.appendChild(head);
|
||||
const body = el('tbody');
|
||||
@@ -1606,10 +1606,20 @@ function renderGroundModel(box: HTMLDivElement, pier: Pier): void {
|
||||
bottomInput.step = '0.001';
|
||||
bottomInput.value = String(row.bottomEl);
|
||||
bottomInput.addEventListener('change', () => setStrataRows(name, rows.map((r, j) => (j === i ? { ...r, bottomEl: Number(bottomInput.value) } : r))));
|
||||
// N값 as text: a blow count or "타수/관입량 mm" (승인 2026-10-26). Empty means not known yet.
|
||||
const nInput = el('input');
|
||||
nInput.type = 'text';
|
||||
nInput.placeholder = '예: 23 · 50/5';
|
||||
nInput.value = row.nValue ?? '';
|
||||
nInput.addEventListener('change', () => {
|
||||
const v = nInput.value.trim();
|
||||
setStrataRows(name, rows.map((r, j) => (j === i ? { ...r, nValue: v === '' ? undefined : v } : r)));
|
||||
});
|
||||
if (parseNValue(row.nValue).kind === 'invalid') nInput.classList.add('warn-text');
|
||||
const del = el('button', '삭제', 'btn small');
|
||||
del.type = 'button';
|
||||
del.addEventListener('click', () => setStrataRows(name, rows.filter((_, j) => j !== i)));
|
||||
tr.append(...[select, bottomInput, del].map((x) => {
|
||||
tr.append(...[select, bottomInput, nInput, del].map((x) => {
|
||||
const td = el('td');
|
||||
td.appendChild(x);
|
||||
return td;
|
||||
|
||||
Reference in new issue
Block a user