Files
gwangteo-underpass-block8/README.md
T

3.4 KiB

광터지하차도 BLOCK7 도면 기반 3D 모델

원본 DXF의 단면 구조선과 공동구 실제 윤곽을 추출해, 사용자가 허용한 19.980m 직선 연결로 만든 검토용 웹 3D 표면 모델입니다. 평면 중심선·실제 중간 형상은 미확정이며 모든 연결면에 확인 필요를 표시합니다.

실행

프로젝트 폴더의 WSL 터미널에서 실행합니다. Node 24 환경으로 확인했습니다.

npm ci
npm run dev -- --host 127.0.0.1

터미널에 나오는 주소를 브라우저에서 엽니다. 기본 포트가 사용 중이면 다음 포트를 선택합니다. npm run build는 dist 폴더를 만들고, npm run preview -- --host 127.0.0.1로 빌드 결과를 볼 수 있습니다.

사용

  • 끌기: 회전 / 휠: 확대 / Shift+끌기 또는 오른쪽 끌기: 이동
  • 터치: 한 손가락 회전 / 두 손가락 확대·이동
  • 방향키: 회전 / +와 -: 확대·축소 / Home: 전체 보기 / Esc: 선택 해제
  • 전체·평면·정면·측면·A-A·B-B 시점, 연결면 표시 전환
  • 선 또는 면 선택: 이름·좌표 기반 치수·원본 선 번호 표시
  • 목록: 개별/그룹 숨김, 검색, 포장 반복선 표시
  • 기본/렌더링 보기: 표면 명암·배경·그림자 전환. 실사 렌더링이 아닙니다.
  • 3D OBJ 다운로드: 숨기지 않은 객체의 단면선·연결면 내보내기
  • 좌표·근거 JSON 다운로드: 원본 좌표와 HANDLE, 가정 상태 보존

미리 생성된 OBJ: public/models/BLOCK7_검토용모델.obj. 표면과 선이 포함된 열린 모델이며 닫힌 체적이 아닙니다. 단위는 m, OBJ 축은 X=횡방향 / Y=EL / Z=종단 경계 기준 거리 0~19.980입니다. 실제 평면 좌표는 적용하지 않았습니다. 포장 반복선은 웹 기본 보기에서만 숨기며, OBJ에는 별도 선 객체로 보존합니다.

분석과 검증

python3 scripts/analyze_dxf.py
python3 scripts/verify_model.py
node scripts/verify_geometry.mjs
npm run lint
npm run build

Python은 표준 라이브러리만 사용합니다. 추출 중간 자료는 docs/extracted/에 만들고 Git에서는 제외합니다. verify_geometry.mjs는 검증 후 미리 생성된 OBJ도 갱신합니다.

개발 서버에서 /scripts/browser-check.html을 열면 브라우저 동작 검증 결과를, /scripts/mobile-check.html에서 좁은 화면의 가로 넘침 검사를 확인할 수 있습니다. 이 검증 페이지는 배포용 dist에 포함되지 않습니다.

  • 도면 근거·치수·불일치: docs/도면분석.md
  • 검증 결과·미검증 항목: docs/검증보고.md
  • 화면 캡처: docs/screenshots/

다음 수정 위치

원본 개정 시 DXF를 교체하고 분석 스크립트의 단면 범위·EL 기준·공동구 INSERT 좌표를 새 도면에 맞춰 수정합니다. scripts/analyze_dxf.py의 group 함수는 현 도면의 원본 선 순서에 대응하므로 개정 시 부재 분류를 다시 대조해야 합니다. 자동 추출만으로 변경 검증을 대신하지 않습니다.

src/model/block7.json은 추출된 값, geometry.js는 연결·OBJ 생성, Viewer.jsx는 화면 조작과 명암, App.jsx는 검토 패널입니다. 부재별 윤곽 좌표와 이름은 JSON에서 분리되어 있습니다. JSON을 직접 수정하면 다음 원본 재추출 때 덮어쓰므로, 확정 변경은 추출 스크립트의 근거값에도 반영하세요.

원격 저장소로 푸시하거나 공개하지 않았습니다.