Merge origin/master with current Pierzainer development
Preserve local abutment, cast-in-place rebar and compact header features alongside remote drawing, ground-link and quantity workspaces. Adapt drawing and takeoff consumers to generated solplate plans, retain current P1 regression coverage, and resolve bearing-detail annotation collisions. Validation: 122 test files / 975 tests passed; production build passed; 10 browser integration checks passed.
This commit is contained in:
commit
f51865c57b
2645 files changed
+64918
-4910
No files matched your search
@@ -50,11 +50,12 @@ export interface ColumnInput {
|
||||
* the other values stay as in COLUMN_P1.
|
||||
*/
|
||||
export function columnInputFor(model: PierModel, base: ColumnInput = COLUMN_P1, columnIndex = 0): ColumnInput {
|
||||
if (!model.footings.length) throw new Error('현장타설말뚝 기둥은 전용 배근 입력을 사용합니다. 확대기초 정착 규칙은 적용하지 않습니다.');
|
||||
// No footing (현장타설말뚝, merged 2026-11-06 with origin's guard): Hc still runs to the column bottom (= 지반고) and Hf is 0.
|
||||
// The cast-in-place rebar itself comes from cast-layout.ts; callers only use the footing rules when a footing exists.
|
||||
const col = model.columns[columnIndex];
|
||||
const globalS = col.s + model.stretches[col.k].base;
|
||||
const seg = model.segments.find((g) => globalS >= g.s0 - 1e-9 && globalS <= g.s1 + 1e-9) ?? model.segments[0];
|
||||
const footing = model.footings.find(f => f.k === col.k && Math.abs(f.s - col.s) <= f.length / 2)!;
|
||||
const footing = model.footings.find(f => f.k === col.k && Math.abs(f.s - col.s) <= f.length / 2);
|
||||
const Hc = Math.round((col.top - col.bottom) * 1000 * 10) / 10;
|
||||
const hcop = Math.round((seg.top - col.top) * 1000 * 10) / 10;
|
||||
// C3 (상면 3단) = the lowest coping top −127 (C1 cover) −2·s_lay (상면 주철근 단 간격 input); P1 was 43.170 at 57.2.
|
||||
@@ -64,7 +65,7 @@ export function columnInputFor(model: PierModel, base: ColumnInput = COLUMN_P1,
|
||||
// e_top: the coping middle level (Level 하면 + 계단 상면)/2 is the top of P3 and P6 (승인 2026-10-23).
|
||||
const eTop = Math.round((seg.top - (col.top + seg.top) / 2) * 10000) / 10;
|
||||
return { ...base, ...model.columnRebar, footing: model.footingRebar, Hc, hcop, eP1, eTop, D: model.columnDiameterMm,
|
||||
Hf: (footing.top - footing.bottom) * 1000, bothEndZones: model.columns.length > 1 };
|
||||
Hf: footing ? (footing.top - footing.bottom) * 1000 : 0, bothEndZones: model.columns.length > 1 };
|
||||
}
|
||||
|
||||
export const COLUMN_P1: ColumnInput = {
|
||||
|
||||
Reference in new issue
Block a user