9bc2a22726b200dcebfdc7649d249aff1662030d
2D 도면 기반 3D 수로암거 및 옹벽형 날개벽 모델링 웹 시스템 (Code/3d-drawing)
2D CAD 도면(일반도 및 구조도/배근도 DWG/DXF 5종)을 분석하여 수로암거(STA.13+611.21) 및 옹벽형 날개벽의 3D 솔리드 외형과 3D 내부 철근 배근(19종 508본)을 자동 구축하고, Three.js 기반의 웹 뷰어를 통해 인터랙티브하게 확인·검증·내보내기하는 시스템입니다.
1. 주요 특징 및 구현 내용
- 1단계: 도면 불러오기 및 도면 종류 판별
- DWG/DXF 파일 파싱 (
ezdwg,ezdxf) - 도면명 키워드 자동 판별:
'일반'➔ 일반도,'배근'/'구조'➔ 구조도/배근도 - 2D CAD 벡터 뷰어 및 레이어 제어 지원
- DWG/DXF 파일 파싱 (
- 2단계: 일반도 기반 3D 외형 모델링
- 암거 본체 및 날개벽 위치 판별 (시점부 좌/우, 종점부 좌/우)
- 본 도면 특성 완벽 준수: 시점부 미표기 ➔ 임의 생성 배제 / 종점부 좌·우 2개소 모델링 (
L=4.35\text{m},L=5.40\text{m}) - 완전 폐합 2-Manifold 수밀성(Watertight) 3D 솔리드 메시 생성 (총 콘크리트 체적:
75.45\text{ m}^3)
- 3단계: 배근도 기반 3D 철근 배근 모델링
- 피복두께 80mm 준수
- 19종 철근 기호, 총 508본 3D 입체 배근 (종점 좌 231본 + 종점 우 277본)
- 철근 재료표(BBS) 자동 산출 (총중량:
1.543\text{ TON}, 할증 포함1.590\text{ TON})
- 웹 3D 뷰어 (Three.js)
- 3차원 자유 시점 궤도 제어 (OrbitControls)
- 암거 본체 / 날개벽 / 철근 레이어별 가시화 및 투명도 제어
- 3D 모델 OBJ, STL, DXF 내보내기
2. 작업 환경 및 디렉터리 구성
- 작업 환경: WSL2 (Ubuntu Linux)
- 저장소 위치:
Code/3d-drawing/(Git 관리)
Code/3d-drawing/
├── cad_parser.py # 2D DWG/DXF 도면 파싱 및 종류 판별
├── model_3d.py # 3D 수로암거 및 날개벽 파라메트릭 솔리드 모델러
├── rebar_model.py # 3D 철근 배근 생성기 (19종 기호, 508본)
├── exporters.py # OBJ / STL / DXF 3D 파일 내보내기 모듈
├── bundle_data.py # 도면 및 3D 데이터 번들링 유틸리티
├── app.py # Flask 웹 REST API 서버
├── index.html # Three.js 기반 3D CAD/BIM 웹 뷰어
├── static/ # CSS, JS(app.js, viewer3d.js), Three.js 라이브러리 및 데이터
├── run_wsl.sh # WSL2 원클릭 실행 스크립트
├── test_pipeline.py # 파이프라인 전수 자동화 검증 테스트
├── requirements.txt # Python 패키지 의존성
└── README.md # 본 설명서
3. 원클릭 실행 방법
3.1. Windows 환경 (권장)
최상위 폴더 또는 Code/3d-drawing/ 내의 실행 파일을 더블클릭합니다:
[실행]_암거및날개벽_3D외형배근모델러.bat: 백엔드 서버(WSL2 또는 Windows Python) 자동 기동 및 웹 브라우저(http://localhost:5000) 자동 오픈[실행바로가기]_암거및날개벽_3D외형배근모델러.lnk: 윈도우 바로가기 아이콘[바로가기]_3D모델러_웹접속.url: 서버 동작 중 브라우저 즉시 열기
3.2. WSL2(Ubuntu) 터미널 환경
WSL2(Ubuntu) 터미널에서 아래 명령을 실행합니다:
cd Code/3d-drawing
chmod +x run_wsl.sh
./run_wsl.sh
실행 후 웹 브라우저에서 아래 주소로 접속합니다:
http://localhost:5000또는http://127.0.0.1:5000
4. 자동 테스트 및 검증 실행
cd Code/3d-drawing
~/.venv-3d-drawing/bin/python test_pipeline.py
Languages
JavaScript
96%
Python
3%
CSS
0.6%
HTML
0.4%