feat(abut-rebar): ③ 교대 받침블럭 3D 철근 (S1 · S2)
- 받침블럭 배근 경로를 교대 3D 철근에 추가 (선택 · 색 기준 공통), 방위각 회전 반영 - 콘크리트 안 검사에 받침블럭 포함 (다리 묻힘 포함 모두 안) - 테스트: 블럭 5개 × 8본씩 3조각, 콘크리트 안 Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
bc91a8166f
commit
91c4a4ad63
5 files changed
+33
-5
No files matched your search
@@ -9,6 +9,7 @@ import { buildMembers } from '../src/core/abut/members';
|
||||
import { buildWings } from '../src/core/abut/wings';
|
||||
import { resolveSlab, slabGradePct, slabSection } from '../src/core/abut/slab';
|
||||
import { abutSlabGeom, abutSlabRebar } from '../src/core/abut/rebar/slab';
|
||||
import { abutBlockRebar } from '../src/core/abut/rebar/block';
|
||||
import { abutFootingGeom, abutFootingRebar } from '../src/core/abut/rebar/footing';
|
||||
import { skewAngle } from '../src/core/abut/rebar/skew-layout';
|
||||
import { abutWallGeom, abutWallRebar } from '../src/core/abut/rebar/wall';
|
||||
@@ -42,7 +43,9 @@ const res: Record<string, { out: number; total: number }> = {};
|
||||
const wingR = wings.map((w) => abutWingRebar(abutWingGeom(model, members, w, footing.z.B68, seats, k)));
|
||||
const grade = slabGradePct(slab, model.wing?.slopePct ?? 0);
|
||||
const slabG = abutSlabGeom(slab.form, abutPlanOutline(model, members, wings, slab).slab, slabSection(slab, grade, members.shape), { startEl: members.parapetTopStartEl, endEl: members.parapetTopEndEl, L: model.length, bottomEl: members.footingBottomEl! }, [300, 300], slab.lengthMm, grade);
|
||||
const rebar = buildAbutRebar3D(fg, footing, k, members.shape.footingBackM, members.footingBottomEl!, wall, para, wingR, abutSlabRebar(slabG));
|
||||
const blockIn = model.bearings.map((b) => ({ no: b.no, s: b.s, t: model.frontSide * b.lateral, rotDeg: b.rotDeg, seatEl: b.seatEl, blockHeightMm: b.blockHeightMm }));
|
||||
const blockR = abutBlockRebar(blockIn, members.footingBottomEl!);
|
||||
const rebar = buildAbutRebar3D(fg, footing, k, members.shape.footingBackM, members.footingBottomEl!, wall, para, wingR, abutSlabRebar(slabG), blockR);
|
||||
const group = buildAbutGroup(model, members, wings);
|
||||
group.updateMatrixWorld(true);
|
||||
const solids: THREE.Mesh[] = [];
|
||||
|
||||
@@ -158,3 +158,18 @@ describe('교대 날개벽 3D 철근 (③, 2026-11-04)', () => {
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
import { abutBlockRebar } from '../src/core/abut/rebar/block';
|
||||
|
||||
describe('교대 받침블럭 3D 철근 (③, 2026-11-05)', () => {
|
||||
it('S1 · S2: 블럭 5개 × 8본 = 40본씩, 본마다 다리 · 직선 · 다리 3조각 (120 조각)', () => {
|
||||
const blockR = abutBlockRebar(
|
||||
model.bearings.map((b) => ({ no: b.no, s: b.s, t: model.frontSide * b.lateral, rotDeg: b.rotDeg, seatEl: b.seatEl, blockHeightMm: b.blockHeightMm })),
|
||||
bottom,
|
||||
);
|
||||
const footing = abutFootingRebar(geom);
|
||||
const scene = buildAbutRebar3D(geom, footing, k, back, bottom, undefined, undefined, [], undefined, blockR);
|
||||
expect(scene.byName.get('S1')?.length).toBe(120);
|
||||
expect(scene.byName.get('S2')?.length).toBe(120);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user