feat(abut): 교대 3D에 받침 본체 · 솔플레이트 (교각과 같은 개념)
교대 3D는 받침블럭 콘크리트와 몰탈패드만 그렸다. ② 받침 카드와 같은 솔플레이트(abutSoles)로 교각처럼 그린다. - 받침 본체: 솔플레이트 평면에서 사방 100 mm 뺀 상자, 높이 h3, 패드 상면에서 - 솔플레이트: L은 거더 방향(블럭 회전 = 방위각, 적용한 계산 방위각 포함), W는 그 직각, T1은 오르막 쪽 - 거더 하면 고정: T ≠ T_ref이면 블럭 상면 · 패드가 (T − T_ref)만큼 내려감 (받침 ELEVATION TABLE과 일치) - 부재 표시: '받침·받침블럭'에 교대 bearings, '솔플레이트'에 교대 solplates 연결 - 테스트: A1(짝 P1) 본체 높이 245 · 솔플 상면 z + 245 + 38, 두꺼운 끝이 오르막(A1) 쪽, S −3 % → 패드 −4 mm · 상면 유지, soles 없이 부를 때 기존 형상. 브라우저: 교대만 · 교각+교대 가져오기 예외 0, 받침 쌓임 확인 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c7acfccd51
commit
1fda705b75
3 files changed
+113
-6
No files matched your search
+9
-3
@@ -64,6 +64,7 @@ import {
|
||||
abutElevationRows,
|
||||
abutSolplateRows,
|
||||
resolveBearingRule,
|
||||
abutSoles,
|
||||
} from './core/abut/bearing-table';
|
||||
import { abutMemberRows, ABUT_MEMBER_EDITABLE, type AbutMemberId } from './core/abut/member-list';
|
||||
import type { AbutModel, WingForm } from './core/abut/geometry';
|
||||
@@ -147,8 +148,8 @@ type Stage = 'shape' | 'plan' | 'rebar' | 'quantity';
|
||||
|
||||
/** 부재 표시 toggles (2026-11-03). `pier` parts follow the pier scenes; `abut` names follow the abutment groups (abut-scene.ts). */
|
||||
const PART_GROUPS: { label: string; pier: PartName[]; abut: string[] }[] = [
|
||||
{ label: '받침·받침블럭', pier: ['blocks', 'pads', 'bearings'], abut: ['blocks'] },
|
||||
{ label: '솔플레이트', pier: ['solplates'], abut: [] },
|
||||
{ label: '받침·받침블럭', pier: ['blocks', 'pads', 'bearings'], abut: ['blocks', 'bearings'] },
|
||||
{ label: '솔플레이트', pier: ['solplates'], abut: ['solplates'] },
|
||||
{ label: '코핑', pier: ['coping'], abut: [] },
|
||||
{ label: '기둥', pier: ['columns'], abut: [] },
|
||||
{ label: '확대기초', pier: ['footings'], abut: ['footing'] },
|
||||
@@ -659,7 +660,12 @@ function setupScene(): void {
|
||||
try {
|
||||
const model = buildAbut(toAbutInput(rec));
|
||||
const members = buildMembers(model, { bottomEl: rec.foundationBottomEl, pileLengthMm: rec.pileLengthMm }, rec.shape);
|
||||
const group = buildAbutGroup(model, members, buildWings(model, members, rec.wings, rec.wingDims), pivot, rec.groundEl, groundModel?.terrainGrid, rec.slab);
|
||||
// 받침 본체 · 솔플레이트 (2026-11-06): the same solplates as the ② 받침 카드 (짝 받침 S, T, 거더 하면 고정).
|
||||
const soles = abutSoles(model, resolveBearingRule(rec.bearingRule), rec.bearingHeightMm, {
|
||||
pairs: state.bridgePairs, slopeI: rec.slopeI,
|
||||
inputAzimuthDeg: Object.fromEntries(rec.bearings.filter((x) => x.azimuthDeg !== undefined).map((x) => [String(x.no), x.azimuthDeg!])),
|
||||
});
|
||||
const group = buildAbutGroup(model, members, buildWings(model, members, rec.wings, rec.wingDims), pivot, rec.groundEl, groundModel?.terrainGrid, rec.slab, soles);
|
||||
group.visible = abutShown(state.stage, state.abutActive, rec.name);
|
||||
// The 부재 표시 toggles hold for a new abutment group too.
|
||||
for (const [name, on] of Object.entries(state.abutVisible)) {
|
||||
|
||||
Reference in new issue
Block a user