feat(core,view): bent coping stage 2 — mitred coping, stretch-local bearings, blocks and columns
- buildPier builds on buildAxis: each object carries its stretch k and a local s from that stretch's base; coping parts are per stretch with the mitre plane trimming the overlap in the scene (renderer.localClippingEnabled). - Straight P1 output is unchanged (regression tests pass). - Bent coping is supported for 현장타설말뚝 only; footings and piles on a bent axis remain 미실시 until stage 3. Kink outside the coping and columns within the Level half-width of the kink are refused. - W03/W04 use coping coordinates (g). - Tests: constructed 60° bend — world coordinates of bearings, blocks and the column survive the stretch frames; mitre sides; scene mesh count; refusals. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
46709be532
commit
5371932cca
6 files changed
+295
-78
No files matched your search
@@ -6,7 +6,7 @@ const EXPECTED_COLUMNS: Record<PierType, number> = { 'T형': 1, '2주형': 2, '3
|
||||
/** Rules from spec §10 that are not implemented in this stage. Shown to the user, never silently skipped. */
|
||||
export const NOT_IMPLEMENTED_RULES = [
|
||||
'E04 fck 미입력 (배근 단계, 3단계)',
|
||||
'꺾인 코핑 형상 (IP4 꺾임각 ≠ 0; IP4 계산식만 구현)',
|
||||
'꺾인 코핑의 확대기초·말뚝 (3단계; 현장타설말뚝만 지원)',
|
||||
'W06 속성 복사 건너뜀 (2단계)',
|
||||
'W08 솔플레이트 T1−T2 검사 (2단계)',
|
||||
] as const;
|
||||
@@ -51,7 +51,7 @@ export function validatePier(input: PierInput, model: PierModel, issues: Issue[]
|
||||
const halfBlock = DIM.blockSize / 2;
|
||||
const stepBounds = model.segments.slice(1).map((seg) => seg.s0);
|
||||
for (const b of model.bearings) {
|
||||
const nearest = Math.min(...stepBounds.map((s) => Math.abs(b.s - s)));
|
||||
const nearest = Math.min(...stepBounds.map((s) => Math.abs(b.g - s)));
|
||||
if (nearest < halfBlock) {
|
||||
issues.push({
|
||||
code: 'W03',
|
||||
@@ -65,8 +65,8 @@ export function validatePier(input: PierInput, model: PierModel, issues: Issue[]
|
||||
const planHalfB = model.copingB / 2;
|
||||
const outside = model.blocks.some(
|
||||
(b) =>
|
||||
b.s - halfBlock < 0 ||
|
||||
b.s + halfBlock > model.copingL ||
|
||||
b.g - halfBlock < 0 ||
|
||||
b.g + halfBlock > model.copingL ||
|
||||
b.n - halfBlock < -planHalfB ||
|
||||
b.n + halfBlock > planHalfB,
|
||||
);
|
||||
|
||||
Reference in new issue
Block a user