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>
This commit is contained in:
commit
964a841de1
3978 files changed
+58013356
No files matched your search
@@ -0,0 +1,104 @@
|
||||
# 분석 — 기존 통로박스 구조물 모델링 과정 (교각 적용 관점)
|
||||
|
||||
| 버전 | 수정일 | 수정자 | 주요 변경 내용 | 비고 |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| 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건은 이번 범위 밖으로 내용 분석을 하지 않았다(`미실시`).
|
||||
Reference in new issue
Block a user