Files
dxf-to-3d-gasiseol/docs/next-session-p11.md
T
Claude Haiku 363c2a2a25 step3-4: 프로젝트 기본 구조 & 상세 계획 수립
- CLAUDE.md: 프로젝트 전체 가이드 및 워크플로우 정의
- CONSIDERATIONS.md: 8개 영역 고려사항 분석 (기술, 품질, 배포, UX)
- PROGRESS.md: 진행 상황 추적 및 체크리스트
- PLAN.md: 단계 5~9 상세 계획 및 에이전트 역할 정의
- 메모리: 프로젝트 정보 저장

다음: 단계 5 (에이전트/커맨드/스킬/훅 아이디어 제안)
2026-10-16 15:06:18 +09:00

195 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 다음 세션 프롬프트 — 교각 P11 (꺾임)
> 그대로 복사해 붙이면 된다. 아래 `---` 부터가 프롬프트다.
---
# 교각 P11 — 꺾인 코핑
## 지난 세션에 P9 를 끝냈다
`산외교_파이형_교각일반도(울산P9).dwg` 로 **교각 한 기를 끝까지** 세웠다.
코핑 · 원형기둥 2 · 확대기초 2 · 버림 2 · 강관말뚝 44 · 받침 6기(교좌대·모르타르·
받침·솔플레이트) · 미관문양 2 = **77 파트 · 660.4154 m³**.
모델러 실측 대비 **불일치 0건**, 열린 변 0, IFC 내보내기까지 왕복 검증됐다.
이번엔 **P11** 이다. `산외교_파이형_교각일반도(울산P11-꺾임).dwg`.
P9 와 뷰 구성이 같지만 **코핑 축선이 꺾여 있다.** 그게 이번 세션의 전부다.
## 먼저 읽어라 (순서대로)
1. `CLAUDE.md` — 경계 · 작업 순서 · 함정표
2. `docs/methodology.html` **11.4 절** — P9 실증 결과. 판정표 · 코어 변경 · 새 함정
3. `src/drawings/pier-p9.mjs` — **이번 작업의 원본이다.** 통째로 읽어라
4. `docs/2d-3d-conversion.md` 교훈 #29~#33 (지난 교량 세션)
## 대상
```
drawings-src/산외교_파이형_교각일반도(울산P11-꺾임).dwg
도곽 CXBLKA1 INSERT (1,406,622, 390,000) × scale 100 × A1(841×594)
→ sheet x[1,406,622 … 1,490,722] y[390,000 … 449,400]
```
**도곽 밖은 전부 다른 벌이다.** 이 파일도 도면집 스택이라 17벌이 y 방향 65,000
간격으로 쌓여 있고, 그중 P9 자리는 치수선만 남아 있다. 상자를 눈으로 잡지 마라 —
도곽 블록에서 계산한다.
## 이미 확인한 것 (DWG 데이터에서 직접 잰 값)
```
측점 STA.0+594.570
표고 EL. 82.799 · 82.306 · 81.713 (코핑 상면 3단으로 추정)
EL. 44.413 (기초 저면)
기둥 Ø2,200 원형 3본 · CS-CONC-MINR CIRCLE
평면도 (1,416,488, 437,383) (1,425,088, 437,383) (1,433,616, 436,442)
기초평면 (1,416,488, 403,537) (1,425,088, 403,537) (1,433,616, 402,596)
받침 블록 500x500 ×3 · 530x530 ×2 · 470x470 ×1
연단거리 L=170.600 · H=36.203 · Theta=0
```
### 꺾임각 = **6.30°**
```
기둥 1→2 Δx 8,600 Δy 0 → 0.00° 간격 8,600
기둥 2→3 Δx 8,528 Δy −941 → −6.30° 간격 8,580
```
**두 뷰(평면도·기초평면도)에서 같은 941 이 나온다.**
> ⚠ 지난 세션에 이걸 한 번 「8.7°」로 잘못 말했다. 전 색 각도 분포에 있던
> `81.3°/171.3°` 를 꺾임각으로 읽은 것인데, 구조 외곽선만(`ci=256`) 세면 그
> 대역이 없다 — **보조선 각도였다.** 기둥 축선에서 직접 잰 6.30° 가 맞다.
> **각도를 선 분포에서 읽지 말고 부재 좌표에서 재라.**
`(1,453,587, 436,249)` 의 Ø2,200 은 `CS-CONC-MAJR` 이고 x 가 19,971 떨어져 있다 —
**단면 A-A** 의 기둥 단면이지 평면도 기둥이 아니다.
## 1단계 — 꺾임의 정체 (여기서 멈추고 보고)
**캡처를 먼저 봐라.** 좌표만으로는 못 가른다.
1. **평면도** — 꺾이는 자리가 **기둥 3번 위**인가 그 **사이**인가.
코핑이 «각진 두 토막»인가 «한 곡선»인가. 꺾임부 폭·필렛
2. **정면도** — 파단선 위치 · 코핑 상면 단수 · EL 지시 위치
3. **단면도** — 코핑 교축폭 · 헌치
4. **기초 평면도** — 기초 3기인가 · 말뚝 배치(P9 는 22본×2)
## 2단계 — 형상 전략 (보고 후 진행)
P9 코핑은 「정면 윤곽(YZ) × 교축 압출」 ∩ 「평면 윤곽 빗각기둥 2장」으로 섰다.
**꺾이면 그 전제가 깨진다** — 정면도가 투영이라 실제 길이를 안 준다.
후보 셋. 캡처 보고 고른다.
| 방법 | 되는 조건 | 걸림돌 |
|---|---|---|
| 꺾임점에서 **끊어** 두 토막을 각자 압출 | 두 토막이 각각 직선 | 이음매 union — 면으로만 맞닿으면 다음 boolean 이 흘린다 |
| 토막마다 **로컬 좌표계** | 가장 정직 | IR 에 배치 개념이 없다. 코어 변경 |
| 평면 압출 ∩ 정면 압출 | 꺾임이 평면에만 있고 정면이 실제 길이를 줄 때 | 대개 안 준다 |
**끊는 쪽이 유력하다.** loft 는 쓰지 마라 — 결과가 안 닫혀 boolean 에서 샌다(아래).
## 절대 규칙
- `src/core/*` · `src/ir.mjs` 에 도면 고유값 금지. 레이어명 · 제목 · 좌표 · 단위 ·
축척은 전부 `src/drawings/pier-p11.mjs`
- **코어 수정이 필요해 보이면 먼저 보고해라.** 그게 방법론의 구멍이다
- 못 찾거나 여러 개면 예외를 던져라. 자동 선택 금지
- **손으로 읽은 수를 코드에 적지 마라.** 도면에서 집고 다른 값과 대조해라
- **그림을 먼저 봐라.** 뷰 상자를 잡기 전에 시트 → 도형 → 확인 → 상자
## 게이트 (P9 에서 전부 통과시킨 순서)
```
0. egm guide | 명령 수 208 이면 편집 모드 · 39 면 뷰어 모드(모델링 불가)
1. node src/run.mjs pier-p11 뷰 폭·높이가 도면 표기와 맞는가
2. node src/gaps.mjs pier-p11 끊김의 원인이 형상인가 파단선인가
3. node src/build.mjs pier-p11 --loops 꼭짓점 수·자기교차
node src/build.mjs pier-p11 --circles / --blocks
node src/table.mjs pier-p11 --title "교량받침 ELEVATION TABLE"
4. node src/build.mjs pier-p11 IR 검증
5. node src/volume.mjs pier-p11 해석 부피 (모델러 없이)
6. node src/emit/egm.mjs out/pier-p11.ir.json
python src/run_egm.py out/pier-p11.egm.json --export=out/pier-p11.obj
7. egm status modelCount == 최종 파트 수
8. node src/measure.mjs pier-p11 --ir 의도 vs 결과 (합격선 절대 0.05 m³)
9. node src/emit/ifc.mjs out/pier-p11.ir.json
```
## 지난 세션에 코어를 이만큼 고쳤다 (되돌리지 마라)
```
C12 core/loops.mjs dropCollinear 중복점 제거
매달린 변 왕복이 길이 0 인 변을 남긴다. 압출하면 퇴화 면이 나온다
C13 ir.mjs · emit/egm.mjs · volume.mjs intersect 연산
BooleanIntersection 은 이항. 「두 방향이 동시에 맞아야 하는 형상」용
C14 ir.mjs · emit/egm.mjs · volume.mjs extrude.drift (빗각 기둥)
Extrude C=True D F 가 자유방향을 받고 결과가 닫힌다
C15 core/parse.mjs collectBlocks · run.mjs · core/views.mjs · core/pick.mjs blocks()
말뚝이 INSERT 블록. 삽입점=위치, 배율=치수
C16 core/table.mjs (신규) · src/table.mjs (CLI) · run.mjs 색인 · pick.tables
표를 (이름표, CSV) 쌍으로 색인. 이름표 아래 글자높이 ×2 로 표를 찾는다
C17 run.mjs 뷰별 entityFilter
뷰마다 무엇이 구조선인지 다르다 (문양은 ci=2, 본체는 ci=256)
C18 volume.mjs 교집합 해석 부피
① 압출∩압출 닫힌 식 ② 종단∩평면(높이 가변) Z 슬라이스 가우스
C19 emit/ifc.mjs (신규) IFC4 출력. 해석 솔리드 우선 + IfcMapConversion
C20 emit/egm.mjs loft → `~Loft Enter` + `~Cap` (그래도 boolean 엔 못 쓴다)
```
## 새로 밟은 함정 (또 밟지 마라)
| 증상 | 원인 | 대응 |
|---|---|---|
| **부피는 맞는데 boolean 이 샌다** | **`Loft` 결과가 안 닫힌다.** 4각형 단면도 열린 변 12개. 발산 정리 부피는 정확해 **부피 검사로 절대 안 걸린다** | loft 를 boolean 인자로 쓰지 마라. 평행이동뿐이면 `drift` 압출 |
| 그려진 길이가 실제가 아니다 | **파단선.** 기둥이 6,100 인데 실제 33,800 | `CS-CUTL` 을 본다. 생략량 = 실제 − 도형 (derived) |
| 한 파일에 도형 17벌 | 도면집 스택 | **도곽 블록에서 상자를 계산** |
| 「단면도」 안쪽 선을 부재로 읽음 | **절단면이 아니라 투영** | 치수가 `외곽 − 2×R` 이면 투영 |
| 평면 모서리가 45° 모따기 | 파서가 `bulges` 를 버려 90° 호가 현으로 눌림 | 호 끝점은 정확 → R 은 되찾는다. 링 면적은 못 믿는다 |
| 적분값이 0.2 m³ 샘 | 구간 끝점이 링 꼭짓점 → 스캔라인 교차 수 어긋남 | 내부 노드 구적(가우스). 심프슨 금지 |
| 구조 형상이 **표**로 잡힘 | 평면도 격자가 73행×83열 「표」 | 표 색인에 `layerFilter` |
| `actualMeasurement` 로 단위 판정 실패 | 주요 m 표기 · 상세 mm 표기 (**표시값**이 온다) | 도곽 배율 · 블록 scale · 격자 간격으로 교차검증 |
## P9 에서 통한 방식 — 그대로 가져다 써라
```
단위 도곽 A1×100 · 블록 scale ↔ Φ 텍스트 · 격자 ↔ 「4@1.300」 → 넷 다 1단위=1mm
공통중심 부재 대칭으로 자기검증 (코핑 ±7,000 · 기초 ±3,250 · 기둥 ±4,100)
표고 공통 기준선이 없어도 **표가 준다** — EL.'X' = 코핑상면 + h1 + h2
6기가 모두 같은 절대표고를 내면 그게 원점이다
받침 평면도(위치·평면치수) × 표(적층고·표고·교축위치) 세 겹 검산
파단 생략량 = 기둥_높이 − 기둥_도형길이 (derived. 손으로 적지 마라)
```
## 보고 형식 (매 단계)
```
쓴 도면·도형: 무엇을, 왜 그것을
통과한 게이트:
막힌 곳: 게이트 번호 + 증상 + 원인
설정으로 해결: 무엇을
코드가 필요: 무엇이 왜 (← 방법론의 구멍)
방법론에서 틀린 것: 어느 절의 어느 주장이
새 함정: 증상 → 원인 → 대응
```
## 아직 안 한 일 (P11 과 별개, 여력 되면)
1. **`manhole1` 재검증** — loft 결과를 union·difference 인자로 쓴다.
C20 의 함정 위에 서 있을 수 있다. 부피가 맞아 보여도 샜을 수 있다
2. **P9 미관문양 형상 재검토** — 사용자가 「제대로 안 된다」고 했다.
지금은 코핑 양 측면의 50 두께 띠 + 하단 250 구간 100 돌출로 세워져 있고,
정면도의 매달린 대각선 6줄(문양 내부 능선)은 재현 안 한다
3. **`docs/2d-3d-conversion.md` 에 교훈 #34~ 추가** — 위 함정표가 아직 안 옮겨졌다
4. **텍스트 셀렉터** — 기둥 높이·말뚝 길이가 아직 `design` 이다.
치수/표고 **텍스트**를 집는 수단이 없다. `blocks()` 를 만든 것과 같은 종류
## 마지막
1. `docs/2d-3d-conversion.md` 에 교훈 추가
2. `docs/methodology.html` **11.5 절** 신설 — P11 이 무엇을 밝혔는지.
판정표를 그대로 싣고, 배지를 올리되 **틀린 주장은 지우지 말고 왜 틀렸는지 적어라**
3. `node src/ui.mjs pier-p11 --port 7333` 로 파라메트릭 UI 까지 확인
4. `node src/emit/ifc.mjs out/pier-p11.ir.json` 로 IFC 까지