R2C DXF → 3D 웹 뷰어

drawing/R2C_일반도_20260601.dxf를 읽어 단면 기반 3D 모델, 원본 벡터 도면, 독립 HTML 페이지를 생성하고 웹 서버로 게시하는 Python 프로그램입니다. Python 3.9 이상에서 외부 패키지 없이 실행합니다.

실행 및 로컬 웹 게시

WSL 터미널에서 다음 명령을 실행합니다.

cd /home/b19203/3d-drawing-web
python3 r2c.py serve

브라우저에서 http://localhost:8000 을 엽니다. 서버 종료는 Ctrl+C입니다. 실행할 때마다 DXF에서 모델과 웹페이지를 다시 생성합니다. 생성된 루트 index.html은 더블클릭해서 직접 열 수도 있습니다.

다른 포트 또는 로컬 네트워크에 게시하려면 다음처럼 실행합니다.

python3 r2c.py serve --host 0.0.0.0 --port 8080

다른 기기에서는 이 PC의 IP 주소와 포트로 접속합니다. WSL의 네트워크 모드 및 Windows 방화벽 설정에 따라 접근 범위가 달라집니다. 서버는 생성된 dist/만 제공하므로 저장소의 Git 파일이나 프로그램 소스를 노출하지 않습니다.

정적 호스팅에 게시

python3 r2c.py build

생성된 dist/ 폴더 전체를 정적 웹 호스팅의 게시 폴더로 지정하면 됩니다. 빌드 후 웹 서버 측 Python이나 CAD 소프트웨어는 필요하지 않습니다. HTML은 모델과 벡터 도면을 포함하고 외부 CDN을 사용하지 않습니다.

입력 및 출력 경로를 바꾸려면 다음 옵션을 사용합니다.

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로 반영합니다.

python3 -m unittest discover -s tests -v
S
Description
No description provided
Readme
894 KiB
0 Stars 1 Watchers 0 Forks
Languages
Python 70.9%
HTML 23.9%
PowerShell 5%
Batchfile 0.2%