55 lines
3.4 KiB
Markdown
55 lines
3.4 KiB
Markdown
# 광터지하차도 BLOCK7 도면 기반 3D 모델
|
|
|
|
원본 DXF의 단면 구조선과 공동구 실제 윤곽을 추출해, 사용자가 허용한 19.980m 직선 연결로 만든 검토용 웹 3D 표면 모델입니다. 평면 중심선·실제 중간 형상은 미확정이며 모든 연결면에 `확인 필요`를 표시합니다.
|
|
|
|
## 실행
|
|
|
|
프로젝트 폴더의 WSL 터미널에서 실행합니다. Node 24 환경으로 확인했습니다.
|
|
|
|
```bash
|
|
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에는 별도 선 객체로 보존합니다.
|
|
|
|
## 분석과 검증
|
|
|
|
```bash
|
|
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을 직접 수정하면 다음 원본 재추출 때 덮어쓰므로, 확정 변경은 추출 스크립트의 근거값에도 반영하세요.
|
|
|
|
원격 저장소로 푸시하거나 공개하지 않았습니다.
|