- CLAUDE.md: 프로젝트 전체 가이드 및 워크플로우 정의 - CONSIDERATIONS.md: 8개 영역 고려사항 분석 (기술, 품질, 배포, UX) - PROGRESS.md: 진행 상황 추적 및 체크리스트 - PLAN.md: 단계 5~9 상세 계획 및 에이전트 역할 정의 - 메모리: 프로젝트 정보 저장 다음: 단계 5 (에이전트/커맨드/스킬/훅 아이디어 제안)
195 lines
11 KiB
Markdown
195 lines
11 KiB
Markdown
# 다음 세션 프롬프트 — 교각 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 까지
|