# 운곡교 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, 대좌 20C1E~20C21, 패드 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. 다음 단계 1. 6장의 충돌 처리를 사용자가 확인합니다(특히 1·2·4·5·9). 2. 앱 화면에서 p2 묶음을 확정하고 게이트를 승인합니다. 이 판독서와 각 묶음의 `src`를 근거로 씁니다. 3. 7장 미수정 항목은 앱 개선 Task로 넘깁니다(OPEN #19). ## 변경 이력 | 버전 | 일자 | 내용 | |---|---|---| | v0.1.00 | 2026-10-12 | 최초 작성 (R1~R5 판독, 게이트 G1~G5 PASS) |