feat(shape): 꺾임점에서 겹치는 기초를 하나의 꺾인 기초로 합친다
꺾임을 넘는 기초를 합치지 않아, 기둥 간격이 기초 길이보다 짧은 꺾인 교각(산외교 P11: 2.75 m)에서 두 기초가 겹치고(콘크리트 쐐기 틈, 철근 겹침, 수량 이중 계산) 말뚝도 겹쳤다. 꺾임 전후 기초가 겹치거나 미터 퍼짐 안에서 맞닿으면 하나의 꺾인 기초로 본다: - 형상: 구간별 조각 둘(bent), 각 조각을 미터 퍼짐 + 10 mm 너머로 늘려 미터면에서 틈 없이 잇는다 - 말뚝: 편 길이에 한 번 배치하고 꺾임점 기준으로 구간을 나눈다 - 철근: 편 좌표의 한 기초(footing-units.ts)로 철근표와 3D가 같이 계산, 3D는 미터점에서 접는다 Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
ed84761449
commit
ac646d554c
6 files changed
+142
-46
No files matched your search
@@ -10,6 +10,7 @@ import { CAST_PENDING } from './cast-in-place';
|
||||
import { castRebarLayout } from './cast-layout';
|
||||
import { multicolCopingInfo } from './multicol-coping';
|
||||
import { stepBlockBars } from './step-bars';
|
||||
import { footingUnits } from './footing-units';
|
||||
import { columnRebar, columnInputFor } from './column';
|
||||
import { bottomBars, crossBars, sideBars, assemblyBars, shearB9 } from './footing';
|
||||
import { DEFAULT_MATERIAL, developmentLength, FckByMember, fyOf, isAssumedMaterial, Material, materialFor, NOMINAL_DIAMETER, splitPieces, STANDARD_BAR } from './common';
|
||||
@@ -394,10 +395,9 @@ export function rebarSummary(
|
||||
// Per footing (2026-11-10): the columns of its own stretch only, and every bar length kept (a bent pier has footings
|
||||
// of different lengths; the longest no longer stands for all).
|
||||
const byName = new Map<string, { first: FootingBar; lengths: Map<number, number> }>();
|
||||
for (const f of model.footings) {
|
||||
// Columns on this footing, as x mm from the footing centre (for the B9 column-zone rule).
|
||||
const columnX = model.columns.filter((c) => c.k === f.k && Math.abs(c.s - f.s) <= f.length / 2).map((c) => (c.s - f.s) * 1000);
|
||||
for (const b of footingBarList(f.length * 1000, f.width * 1000, (f.top - f.bottom) * 1000, columnX, model.footingRebar)) {
|
||||
// One unit per real footing: a bent footing across the kink is one footing in unfolded g (footing-units.ts).
|
||||
for (const f of footingUnits(model)) {
|
||||
for (const b of footingBarList(f.length * 1000, f.width * 1000, (f.top - f.bottom) * 1000, f.columnX, model.footingRebar)) {
|
||||
const cur = byName.get(b.name) ?? { first: b, lengths: new Map<number, number>() };
|
||||
cur.lengths.set(b.length, (cur.lengths.get(b.length) ?? 0) + b.count);
|
||||
byName.set(b.name, cur);
|
||||
|
||||
Reference in new issue
Block a user