Files
Pier_v1/DOC/02_분석/분석_통로박스모델링과정_2026-10-07_v0.1.00.md
T
ahnyongjooandClaude Sonnet 5.5 964a841de1 chore(rebar): Pier_T_rebar 작업 폴더 초기 구성 및 외부 의존 파일 통합
- 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>
2026-10-28 11:20:18 +09:00

9.6 KiB

분석 — 기존 통로박스 구조물 모델링 과정 (교각 적용 관점)

버전 수정일 수정자 주요 변경 내용 비고
v0.1.00 2026-10-07 심영표 신규 작성 최초 버전 (Task: 교각 모델링 #1)

0. 개요

  • 분석 대상: RAG/design-model-box-sample_2 (Drawing Model Studio, 통로박스 도면 → 콘크리트·철근 3D 모델 웹 프로그램)
  • 분석 목적: 박스 구조물의 모델링 과정을 단계별로 분해하여, 운곡교 P1 교각(콘크리트 우선) 모델링에 이식할 과정·원칙·데이터 구조를 도출한다.
  • 모집단·범위: 문서 23건 중 모델링 과정 문서 6건 전수 + ERD 코드 위치표의 모듈 중 ①~③ 단계 핵심 모듈 8건 표본 (선정 기준: ERD 코드 위치 표와 DWG·DXF·치수·객체 스키마 직접 관련 모듈). 운영·배포·뷰어·철근 감사 문서(17건)는 콘크리트 범위 밖이므로 목록 확인만 수행.
근거 문서 식별 경로
[A1] docs/DRAWING_TO_MODEL_ERD.md
[A2] docs/OBJECT_MODEL_CONTRACT.md
[A3] docs/OBJECT_MODELING_DEFINITIONS_AND_CRITERIA.md
[A4] src/backend/DRAWING_MODELING_RULES.md
[A5] docs/AGENTS.md
[A6] README.md

1. 전체 모델링 흐름 (5단계)

[출처: A1, 「전체 그림」·「코드 위치」]

단계 입력 처리 출력 핵심 코드
① 도면 입력 DWG·DXF 원본 식별(도면명·SHA-256), DWG→DXF 변환 판독 가능한 DXF dwg_conversion.py
② 정보 추출 DXF 문자·선분·치수·BLOCK/INSERT 판독, 뷰(평면·입면·단면·상세·배근도·재료표) 분류 도면 근거(EVIDENCE) dxf_vector_parser.py, dxf_text_encoding.py, cad_sheet_regions.py, cad_dimension_authority.py
③ 객체·형상 도면 근거 물리 객체 구분 → 외곽·두께·표고 연결 → 콘크리트 생성 concrete_components[] server.py(call_model_plan), box_member_schema.py
④ 철근 콘크리트 + 배근 근거 한 본 형상 + 설치기준(시작·끝·간격), 객체 귀속 본별 3D 경로 progressive_rebar.py 등
⑤ 검사·보고 콘크리트 + 철근 전체 콘크리트 합집합 이탈 검사, 객체별 이미지 PDF·작업 JSON air_exposure.js, model_report.js

교각 적용 범위: 이번 Task는 ①②③⑤(형상 검사)만 적용하고 ④ 철근은 후속 Task로 분리한다 (Step 0 사용자 확정).

2. 단계별 세부 분석

2.1 ① 도면 입력

  • DWG는 LibreDWG dwg2dxf로만 변환하며, "unsafe decoder fallback"을 금지한다. 변환 감사 기록(원본·출력 SHA-256, 엔티티 수, drawing_verified=False)을 남긴다. [출처: dwg_conversion.py L11-43]
  • 기존 DXF를 덮어쓰지 않는다(existing DXF must not be overwritten). [출처: 동 L14]
  • DXF 문자 인코딩: 2007 이상은 UTF-8, 이전 판은 HEADER의 코드페이지($DWGCODEPAGE)로 해독한다. [출처: dxf_text_encoding.py docstring]
  • 교각 적용: 본 PC에는 dwg2dxf가 없고 ODA File Converter가 설치되어 있다 → ODA로 변환하되 동일한 감사 항목(SHA-256·엔티티 수)을 기록한다. 변환 엔진이 다르다는 점을 판독서에 명시한다.

2.2 ② 도면 정보 추출

  • DXF를 의존성 없는 파서로 읽어 엔티티 유형·레이어·블록 계보·월드 좌표를 보존한다. 래스터 이미지는 형상 근거가 아니다. [출처: dxf_vector_parser.py docstring]
  • 한 DXF 안의 도면틀(frame)을 분리하여 시트 영역을 나눈다(파일명으로 분기하지 않음). [출처: cad_sheet_regions.py]
  • 치수 권위 원칙: "Numeric drawing dimensions drive distances; CAD vertices locate datums only." — 거리는 치수 문자(값)로, CAD 정점은 기준점 위치로만 쓴다. [출처: cad_dimension_authority.py L1]
  • 모든 뷰(평면·정면·배면·종단·횡단·단면·상세·배근도·재료표)를 분류하고, 한 뷰만으로 3D를 결정하지 않는다. 충돌 근거는 임의 선택하지 않고 충돌 장부로 남긴다. [출처: A4 §2]

2.3 ③ 객체·형상 생성

  • 객체 장부 선행: 카테고리 분류 후 실제 존재하는 부재를 물리 발생 단위로 나누고, 각 객체에 역할·구간·위치·사용 뷰·도면 근거·접합 객체를 기록한다. [출처: A4 §3]
  • 다중 뷰 폐합: 평면 → 위치·방향·시종점, 정면·종단 → 상하단 프로파일·표고, 단면·상세 → 폭·두께. 세 축이 동시에 만족될 때만 닫힌 3D 객체를 만들고, 원도면 뷰로 재투영해 오차를 검사한다. [출처: A4 §4]
  • 접합과 연속성: 붙는 객체는 동일한 물리 경계·표고를 공유한다. 고립·중복·틈·관통·잘못된 겹침 금지. [출처: A4 §5]
  • 형상 데이터 구조: concrete_components[] 항목은 ⓐ 평면 외곽 footprint_xy_m + bottom_z_m/top_z_m (각기둥 압출) 또는 ⓑ vertices_xyz_m + faces (일반 다면체 메시) 중 하나로 표현한다. [출처: server.py 키 출현 빈도 — footprint_xy_m 129회, top_z_m 112회, bottom_z_m 105회, vertices_xyz_m 41회, faces 27회]
  • 형상과 철근의 분리: memberModel.objects[물리 ID] 아래 geometry(원본 콘크리트 ID·사용 뷰)와 reinforcement를 분리 기록한다. [출처: A2 「형상과 철근 분리」]
  • 비직육면체 부재(예: 헌치)는 실제 단면을 압출한 닫힌 다면체로 만들고 사각 덩어리로 대체하지 않는다. [출처: A4 §10-1]

2.4 ⑤ 검사·출력 게이트

  • 필수 객체 수, 평면·입면·단면 투영, 객체 접합을 검사한다. 미통과 결과는 확정본으로 저장하지 않고 미통과 근거와 함께 초안으로 표시한다. [출처: A4 §11]
  • 결과를 맞추려고 도면 치수·허용오차·통과 조건을 바꾸지 않는다. 수치 연산 오차와 도면 불일치를 구분하고 오차를 숨기지 않는다. [출처: A5 「도면 일치와 수정 완료 기준」]
  • 콘크리트 수량은 실제 형상 산식(길이×폭×두께, 사다리꼴 넓이×두께 등)으로 표시한다. [출처: A5 「캐시·JSON·수량·보고서」]

3. 공통 원칙 (구조물 종류와 무관)

# 원칙 근거 교각 적용
P1 현재 입력 도면이 형상·수치의 유일한 권위. 기존 모델 좌표·치수 복사 금지 A4 §1 박스 모델의 어떤 수치도 교각에 쓰지 않음
P2 카테고리 상식은 누락 뷰·객체 탐색용으로만, 형상 발명 금지 A4 §1 "교각엔 보통 ~가 있다"로 부재를 만들지 않음
P3 치수 문자가 거리의 권위, CAD 정점은 기준점 cad_dimension_authority.py 치수 엔티티 측정값 우선, 도면 축척 확인
P4 객체 장부 → 다중 뷰 폐합 → 재투영 검증 순서 고정 A4 §3·§4·§12 판독서에 객체 장부 작성 후 설계
P5 접합 객체는 경계·표고 공유, 틈·겹침 금지 A4 §5 기초↔기둥↔코핑 접합면 공유 검사
P6 파일명·작업 ID로 분기 금지 (범용 코드) A2, A5 생성 코드는 params.json만 입력으로 받음
P7 충돌 근거는 장부·사용자 확인으로 A4 §2 [CONFLICT DETECTED]로 HITL 처리
P8 형상과 철근 데이터 분리 A2 콘크리트 모델에 철근 레이어 미포함, 후속 확장 대비 객체 ID 부여

4. 박스 → 교각 대응표

박스 개념 박스 예 교각 대응 (예정, 도면 판독 후 확정)
구조물 카테고리 통로박스 교각 (P1, 완도방향)
물리 객체 본체(슬래브·벽체), 날개벽, 헌치, 난간벽, 브라켓, 접속슬래브 기초(확대기초/말뚝캡), 기둥(구체), 코핑(캡빔), 받침 대좌, 전단키 등 — 도면에 존재하는 것만
발생 단위 블럭·좌우·시종점 기둥 개수·받침 위치(교축/교축직각)
평면 뷰 평면도 기초 평면도·코핑 평면도
입면·종단 정면도·종단도 정면도(교축직각), 측면도(교축)
단면·상세 횡단면·헌치 상세 기둥 단면, 코핑 단면, 대좌 상세
표고 종단 경사·EL 기초 하단 EL, 기초 상단 EL, 코핑 상단 EL, 받침면 EL
형상 표현 footprint_xy_m+z 또는 메시 기초·기둥: 압출 / 코핑(변단면): 메시 또는 단면 압출

5. 교각 모델링 이식 방침 (Step 1 승인안의 구체화)

  1. ①: ODA File Converter로 DWG→DXF, SHA-256·엔티티 수 감사 기록.
  2. ②: 파이썬 DXF 판독 스크립트로 레이어·문자·치수 전수 집계 → 뷰 영역 분리 → 치수표 작성. 각 값에 도면/뷰/엔티티 핸들 출처 부여.
  3. ③: 객체 장부 → 설계서(부재 구분·형상 규칙, HITL) → params.json → Rhino 생성(부재별 레이어, 닫힌 솔리드).
  4. ⑤: 모델 실측값(바운딩·단면·표고)과 params.json·도면 치수의 독립 대조 + 접합면 틈·겹침 검사.

6. 한계

  • server.py의 call_model_plan은 외부 AI 판독 경로를 포함한다 [출처: A1 ②]. 본 Task는 해당 서비스를 사용하지 않고 로컬 판독 + 사람 확인(HITL)으로 대체한다.
  • 박스 프로그램 코드는 실행하지 않았다(WSL·Python 3.14 전제 [출처: A6]). 본 분석은 문서·소스 정적 분석이다.
  • 철근(④) 관련 문서 17건은 이번 범위 밖으로 내용 분석을 하지 않았다(미실시).