- Code\rebar_pipeline, review_pipeline, pier-program을 정션에서 실제 폴더로 전환 - Code\rhino_mcp 및 CLAUDE_rhino배경.md 추가, .mcp.json은 PYTHONPATH로 새 위치 사용 - pier-program 내부 .git 제거(이력은 backup\pier-program_20261028.bundle에 보관) - worktree 가이드 반영(CLAUDE.local.md, HANDOFF.md) - D:\Rhino-MCP 경로 참조를 새 위치로 치환 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
8.0 KiB
8.0 KiB
운곡교 P2 교각 도면 판독 (앱 입력 작성)
| 항목 | 내용 |
|---|---|
| 담당자 | 심영표 |
| 작성 | Agent 초안 (사용자 확정 전) |
| 대상 도면 | C0050205-028·029·030 운곡교 교각도(1)(2)(3)(완도방향 P2) — 앱 업로드 사본 (D1·D2·D3) |
| 결과 입력 | Code/교각모델링앱/data/운곡교p2/params.json, expected.json (이전 판은 backup/) |
| 판독 스크립트 | Code/운곡교P2판독/ (dxftools.py, extract_r1.py~extract_r5.py) |
| 검증 | 앱 게이트 G1~G5 (CLI tools/run_gates.py) |
1. 요약
- p2 도면은 P1 도면을 바탕으로 수정한 것입니다. 좌표계가 같습니다(정면도 기둥 중심 x 12,159.4, 코핑 하면 y 16,515.6, 평면 기준점 (12,162.4, 26,412.3)).
- 형식은 P1과 같은 T형이고 치수만 바뀌었습니다. 기초가 X로 1,000 커졌고, 전체 표고는 약 1 m 낮으며, 기둥은 130 깁니다.
- P1 판독 규칙과 사용자 결정을 그대로 적용해 G1~G5 모두 PASS했습니다. 계획 FAIL은 G3 2건(B9·B12 본수)과 G4 5건(C9~C13 작도 폭)입니다.
- 같은 도면 안에서 갱신되지 않은 부분이 여럿 있습니다. 측면도의 받침 높이, 평면도의 패드 크기, 단면의 띠철근 반지름, 재료표의 B9 본수가 P1 값 그대로입니다. 판독에서는 P1 규칙대로 표·재료표 값을 채택하거나(작도 vs 표) 작도를 채택했습니다(본수). p2에 대해 사용자 확인이 필요합니다(6장).
2. 주요 치수 (P1 대비)
| 항목 | P1 | P2 | 근거 |
|---|---|---|---|
| 기초 하면 EL | 26.208 | 25.123 | D1 'EL. 25.123' |
| 기초 X × Y × 두께 | 9,350 × 7,800 × 2,200 | 10,350 × 7,800 × 2,200 | D1 '10.350', 21A76 |
| 말뚝 배치 | 6 × 5, 1,550 공통 | 6 × 5, X 1,750 / Y 1,550 | D1 '5@1.750=8.750', '4@1.550' |
| 말뚝 길이 | 24.4 m | 25.9 m | D1 'L=25.9M' |
| 기둥 높이 | 12,003 | 12,133 | D1 '12.133' |
| 코핑 하면 / 상면 EL | 40.411 / 43.411·43.555·43.698 | 39.456 / 42.456·42.602·42.748 | D1 EL 문자, 17.333 = 2.200 + 12.133 + 3.000 |
| 코핑 상면 단 X | 2.199, 3@2.505, 2.284 | 2.219, 3@2.502, 2.274 | D1 평면 치수 |
| 코핑 우측 높이 | 1,787 | 1,792 | D1 '1.792' |
| 받침 용량 | 3,500 / 2,800 kN | 2,800 kN 전부 | D2 TABLE |
| 받침 EL.'X' (NO.1) | 43.625 | 42.686 | D2 TABLE |
| h1 (전열 / 후열) | 164 / 139 | 180 / 155 | D2 TABLE |
| h3 | 181 | 165 | D2 TABLE |
| B (NO.1 / NO.3) | 640 / 790 | 540 / 650 | D2 TABLE |
| 대좌 회전 | 4.405° | 3.088° | D1 평면 20C1E |
| 받침 열 S1 (전열) | 852 | 851 | D2 TABLE |
검산: 모든 받침에서 EL.'X' − h1 − h2가 해당 코핑 단 높이와 1 mm 이내로 일치했습니다(예: NO.1 42.686 − 0.230 = 42.456).
3. 철근 (P1 대비)
| 부위 | 바뀐 점 | 근거 |
|---|---|---|
| 기둥 | P1·P2 주철근 +130 (A 16.343 / 16.683), 상단 EL 42.106. P4·P5 H29, R904, 커플러 틈 85. P3 37개, R899 | D3, D1 'P4 H29@100', '37@300=11.100' |
| 기초 | Y 방향 철근 개수 증가(B1·B2·B3 42, B4 39), X 방향 길이 +1,000 (B5 A 10.150), B10 10,198 × 7,644, B9 38 × 29열 | D3, D1 '78@125=9.750', '39@250', '37@250' |
| 코핑 | 작도 전체가 P1 − 955 mm. C3·C6 H25. C2·C5 12.082, C15 2.774, C16 5.605 | D3, D1 정면도 |
| 받침·솔플레이트 | W 640 / 750 (= B + 100), L 800 (= A + 100), h3 165 | D2 TABLE |
4. 판독 방법
- params(생성값): D1 작도 객체 좌표를 핸들로 직접 읽었습니다(예: 기초 21A76, 코핑 20D63·20E77
20E7F, 대좌 20C1E20C21, 패드 20C6D·20C64). 받침 값은 D2 표를 썼습니다. - expected(검사 기준): 치수 문자, EL 문자, D2·D3 표를 썼습니다. 생성값과 따로 입력해 검사의 독립성을 지켰습니다. 다만 코핑 중간 단 EL(42.529·42.675)과 철근 단 높이 일부는 치수 문자가 없어 작도에서 유도했습니다
[derived]. - P1과 같은 유형의 판단에는 P1의 사용자 결정을 그대로 썼습니다(6장).
5. 검증 (앱 게이트)
| 게이트 | 결과 | 계획 FAIL | 음성 시험 | 재로드 | 앞 게이트 객체 |
|---|---|---|---|---|---|
| G1 형상 | PASS 171/171 | 0 | 검출 / 검출 | 일치 (54) | — |
| G2 기둥 철근 | PASS 42/42 | 0 | 검출 / 검출 | 일치 | 불변 (54) |
| G3 기초 철근 | PASS 71/73 | 2 (B9·B12 본수) | 검출 / 검출 | 일치 | 불변 (538) |
| G4 코핑 철근 | PASS 111/116 | 5 (C9~C13 폭) | 검출 / 검출 | 일치 | 불변 (2,358) |
| G5 받침·솔플레이트 | PASS 183/183 | 0 | 검출 / 검출 | 일치 (3,350) | 불변 (3,330) |
- 최종 모델 객체는 3,350개입니다(P1 3,190). 기초 철근 841개, 띠철근 1단이 늘었습니다.
- 앱 엔진을 2곳 고친 뒤 P1 회귀를 확인했습니다(7장).
- 한계: 판독과 검사 기준 입력을 같은 주체(Agent)가 했습니다. 독립 검증이 아닌 자기검증이므로 사용자 확인이 필요합니다.
6. 충돌과 적용한 결정
사용자 확정 (2026-10-12): 1~6번은 P1 규칙대로 확정, 9번 솔플레이트 두꺼운 쪽 −Y 유지. 7·8번
[추론]은 P1과 같은 방식으로 유지합니다.
| # | 판정 | 내용 | 적용 (P1 결정 준용) |
|---|---|---|---|
| 1 | 불일치 | D1 측면도 대좌 높이 163.4 / 139, 받침 높이 181 = P1 값 그대로 vs D2 TABLE h1 180 / 155, h3 165 | 표 값 채택 (P1 OPEN #5와 같은 유형) |
| 2 | 불일치 | D1 평면도 패드 900 × 840 (B = 640) vs TABLE B 540 / 650 | 표 값 채택 |
| 3 | 불일치 | D1 단면 띠철근 원호 897.5 (P1 그대로) vs D3 R904 (P4·P5) / R899 (P3) | 재료표 R 채택 (P1 H2) |
| 4 | 불일치 | B9 본수: 작도 551 (38 × 29 엇갈림) vs D3 493 (P1 값 그대로) | 작도 채택, 계획 FAIL (P1 F2) |
| 5 | 불일치 | B12 본수: 작도 32 vs D3 38 | 작도 채택, 계획 FAIL (P1 F2) |
| 6 | 불일치 | C9~C13 폭: 작도 폭 vs 재료표 (P1과 같음) | 작도 폭, 계획 FAIL (P1 K1) |
| 7 | 확인 필요 | 거더 1·2 대좌·패드는 미작도 → 거더 5를 평행 이동 (거더 4 대조 오차 0.13 mm) | [추론] (P1과 같음) |
| 8 | 확인 필요 | 코핑 좌측 스터럽 상단 = 좌측 단 − 100, C16 좌단 = 단 3 좌단 + 100, C14 갈고리 위 4본 | [추론] (P1과 같음, 재료표 범위와 일치) |
| 9 | 확인 필요 | 솔플레이트 두꺼운 쪽 −Y | P1 결정 준용 (p2 확인 안 함) |
| 10 | 표시 | P1의 '콘크리트 숨김'은 P1 전용 결정 → p2는 모두 표시 | 요구사항 기본값 |
7. 앱 개선 목록 (이번 판독에서 드러난 일반화 결함)
| # | 내용 | 처리 |
|---|---|---|
| A1 | 말뚝 간격이 X·Y 공통 값 하나뿐 (p2 X 1,750 / Y 1,550) | 수정함: pitch_x·pitch_y (기존 pitch 호환) — concrete.py, checks/g1_shape.py |
| A2 | 띠철근 반지름이 하나뿐 (p2 P3 899 / P4·P5 904) | 수정함: hoops.radius_by_mark — column_rebar.py |
| A3 | 재료표의 범위 문자('12.228~3.151')가 머리행 열과 어긋나 표 인식에서 빠짐 | 미수정 (위치로 직접 읽음) |
| A4 | 표 후보값은 expected와 철근 직경만 바꾸고, 같은 표에서 오는 params(받침·솔플레이트)는 바꾸지 않음 | 미수정 |
| A5 | 철근 위치 목록(기초 81·42개 등)을 JSON으로 직접 써야 함 → 치수 사슬(시작·간격·개수)로 입력하는 형식 필요 | 미수정 |
| A6 | D1 작도 객체 판독(핸들 지정)은 앱에 없음 — 이번엔 스크립트로 수행 | 미수정 (P1·P2가 같은 도면 틀이라 템플릿 판독 가능성 있음) |
| A7 | 음성 시험 대상(BS08·SP08)은 받침 10개 전제 — p2는 10개라 통과 | 미수정 |
8. 다음 단계
- 6장의 충돌 처리를 사용자가 확인합니다(특히 1·2·4·5·9).
- 앱 화면에서 p2 묶음을 확정하고 게이트를 승인합니다. 이 판독서와 각 묶음의
src를 근거로 씁니다. - 7장 미수정 항목은 앱 개선 Task로 넘깁니다(OPEN #19).
변경 이력
| 버전 | 일자 | 내용 |
|---|---|---|
| v0.1.00 | 2026-10-12 | 최초 작성 (R1 |