Files
TDC_R2C_Drawing/README.md
T

82 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# R2C DXF → 3D 웹 뷰어
`drawing/R2C_일반도_20260601.dxf`를 읽어 단면 기반 3D 모델, 원본 벡터 도면, 독립 HTML 페이지를 생성하고 웹 서버로 게시하는 Python 프로그램입니다. Python 3.9 이상에서 외부 패키지 없이 실행합니다.
## 실행 및 로컬 웹 게시
WSL 터미널에서 다음 명령을 실행합니다.
```bash
cd /home/b19203/3d-drawing-web
python3 r2c.py serve
```
브라우저에서 **http://localhost:8000** 을 엽니다. 서버 종료는 `Ctrl+C`입니다. 실행할 때마다 DXF에서 모델과 웹페이지를 다시 생성합니다. 생성된 루트 `index.html`은 더블클릭해서 직접 열 수도 있습니다.
다른 포트 또는 로컬 네트워크에 게시하려면 다음처럼 실행합니다.
```bash
python3 r2c.py serve --host 0.0.0.0 --port 8080
```
다른 기기에서는 이 PC의 IP 주소와 포트로 접속합니다. WSL의 네트워크 모드 및 Windows 방화벽 설정에 따라 접근 범위가 달라집니다. 서버는 생성된 `dist/`만 제공하므로 저장소의 Git 파일이나 프로그램 소스를 노출하지 않습니다.
## 정적 호스팅에 게시
```bash
python3 r2c.py build
```
생성된 **`dist/` 폴더 전체**를 정적 웹 호스팅의 게시 폴더로 지정하면 됩니다. 빌드 후 웹 서버 측 Python이나 CAD 소프트웨어는 필요하지 않습니다. HTML은 모델과 벡터 도면을 포함하고 외부 CDN을 사용하지 않습니다.
입력 및 출력 경로를 바꾸려면 다음 옵션을 사용합니다.
```bash
python3 r2c.py build --dxf './drawing/R2C_일반도_20260601.dxf' --output ./dist
```
## 화면 기능
- R2C 전환관과 원심력 콘크리트관의 3D 보기
- 마우스 회전, 휠 확대, 방향키 회전, 입구/소켓/측면/평면 시점
- 덮개 분리, 상부를 제거한 내부 보기, 윤곽선 표시
- DXF 벡터 도면 확대·이동 및 A-A/B-B 단면 비교
- 7개 규격의 변화치수표와 현재 Ø1,000 규격 표시
- OBJ 모델, 원본 DXF, 추출 근거 JSON 다운로드
- JavaScript 실행 전에도 미리 생성한 SVG 3D 형상 표시
## 도면에서 추출한 형상
현재 DXF의 제목은 `R2C관`, 연결 원심력관은 `Ø1000 일반 B형`입니다. 이전의 2,500 × 1,620 직사각형 관 모델은 교체했습니다.
| 항목 | 추출값 |
| --- | ---: |
| R2C 길이 L | 1,620 mm |
| 외형 폭 B | 1,540 mm |
| 외형 높이 H | 1,486 mm |
| 원형 유로 내경 D | 1,000 mm |
| 관 중심 높이 h6 | 666 mm |
| 사각 입구 | 1,310 × 1,205 mm |
| 사각→원형 전환 구간 | X = 100 ~ 1,400 mm |
| 소켓 구간 | X = 1,500 ~ 1,620 mm |
R2C의 A-A 외곽선과 치수표가 일치하는지 검증한 후 단면을 연결합니다. B-B 원호에서 소켓 반지름을 추출하며, 원심력관은 실제 폴리라인 `195`의 종단을 회전하여 만듭니다. 추출 근거에는 DXF 엔티티 핸들과 원본 파일 SHA-256이 남습니다.
2D 도면을 기반으로 단면 사이의 면을 직선 보간합니다. 상·하부 접합 홈, 철근, 개스킷은 3D에서 생략했습니다. 원본 SVG에는 외곽선·숨은선·원호·타원·스플라인·문자·치수 블록을 표시하고, 해치 채움과 SOLID 치수 화살표는 생략합니다.
이 프로그램은 **이 R2C 일반도의 구성에 맞춘 변환기**입니다. 임의의 모든 2D CAD 도면을 자동으로 3D화하는 범용 변환기가 아닙니다. 필수 단면이나 치수표를 찾지 못하면 오류로 종료합니다.
## 파일 구성 및 수정
- `r2c.py`: DXF 파서, 치수 추출, 모델 생성, SVG 변환, 웹 서버
- `web/viewer.html`: 웹페이지 원본 템플릿
- `tests/test_r2c.py`: 치수/단면/폐곡면/정적 패키지 검증
- `dist/`: 웹 게시 산출물 (`index.html`, `drawing.svg`, `model.json`, `model.obj`, 원본 DXF)
- `index.html`: 직접 열기용으로 함께 생성하는 단일 HTML
화면 수정은 `web/viewer.html`에 하고 `python3 r2c.py build`로 반영합니다.
```bash
python3 -m unittest discover -s tests -v
```