Files
dxf-to-3d-gasiseol/EXECUTION-GUIDE.md
T
Claude Haiku 2f8f078b1e 배포 전 검증: 가시설 도면 설정 파일 & 실행 가이드 완성
- src/drawings/gasiseol.mjs: 가시설(임시 구조물) 도면 설정 파일
  * DXF 경로 지정 (RAG/가시설_*.dxf)
  * 5개 뷰 정의 (평면도, 종단면, 횡단면 A-A/B-B, 상세)
  * 좌표 앵커 (XY/XZ/YZ 평면 변환)
  * assemble(ir) 함수: 3D 조립 로직

- EXECUTION-GUIDE.md: DXF→3D 변환 절차 (356줄)
  * 단계별 커맨드 (검증 → IR → 3D → 검증)
  * 확인 항목 & 성공 기준
  * 예상 시간 (7~10분)
  * 문제 해결 가이드

- MOCK-TESTING.md: 예상 결과물 & 테스트 시뮬레이션 (330줄)
  * 6단계 변환 예상 결과
  * 파일 목록 & 크기 예상
  * 부피 검증 기준 (오차 < 0.5%)
  * 문제 시나리오별 해결책
  * 성능 예상 (총 7분 50초)

사용자 요청에 따라 실제 배포 전에 DXF→3D 변환 결과를
웹 배포 전에 검증할 수 있도록 준비 완료
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-10-19 08:59:38 +09:00

6.2 KiB

실행 가이드 — DXF to 3D 실제 변환

가시설 DXF 파일을 3D 모델로 변환하는 전체 절차

작성일: 2026-10-19
대상 파일: RAG/가시설_*.dxf (7개 파일)
예상 시간: 20~30분


🚀 빠른 시작

# 1. 의존성 설치
cd D:\Obsidian Vault\999ETC\261016_HW_DwfTo3D
npm install

# 2. 도면 검증 (단계 1)
node src/run.mjs gasiseol

# 3. 뷰 분리 & 폐곡선 추출 (단계 2)
node src/gaps.mjs gasiseol

# 4. 폐곡선 검증 (단계 2-3)
node src/build.mjs gasiseol --loops

# 5. IR 생성 (단계 4)
node src/build.mjs gasiseol

# 6. 3D 생성 (단계 5-6)
python src/run_egm.py gasiseol --export=out/gasiseol.obj

# 7. 부피 검증 (단계 8)
node src/measure.mjs gasiseol --ir

# 8. 모델 검증
node src/measure.mjs gasiseol

📋 단계별 상세 절차

단계 0: 환경 확인

# Node.js 버전 확인
node --version
# → v18.0.0 이상 필요

# Python 확인
python --version
# → 3.8+ 필요

# EGModeler 상태 확인
egm guide | wc -l
# → 39 = 뷰어 모드 (오류!)
# → 200+ = 정상

문제 시: docs/2d-3d-conversion.md 교훈 #15 참고


단계 1: DXF 파일 검증

node src/run.mjs gasiseol

확인 항목:

✓ 파일 로드 성공
✓ 기준점 감지
✓ 뷰 폭/높이 도면 표기와 ±2% 일치
✓ 좌표 범위 타당

실패 시:

  • 기준점 수동 지정 (docs/2d-3d-conversion.md 교훈 #1)
  • DXF 파일 손상 여부 확인

단계 2: 뷰 분리 & 폐곡선 추출

# 끊김 분석
node src/gaps.mjs gasiseol

# 폐곡선 검증
node src/build.mjs gasiseol --loops

확인 항목:

✓ 끊김 = 0
✓ 폐곡선 개수 예상과 일치
  (평면도: 4개, 단면: 8개 등)
✓ 자기교차 링 = 0 (중요!)
✓ 꼭짓점 수 정상 (4 = 정사각형, 8+ = 추가 형상)

문제 시:

  • 자기교차: docs/2d-3d-conversion.md 교훈 #12, #18
  • 끊김: 교훈 #3, #12

단계 3: IR 생성

node src/build.mjs gasiseol

생성 파일:

out/gasiseol.ir.json  (중간 표현)

확인:

  • 파일 크기 > 1KB
  • JSON 구문 유효

단계 4: 3D 모델 생성

# EGModeler로 3D 생성
python src/run_egm.py gasiseol --export=out/gasiseol.obj

# 또는 OBJ + IFC 동시 생성
python src/run_egm.py gasiseol --export=out/gasiseol.obj --ifc

생성 파일:

out/gasiseol.obj      (웹 렌더링용)
out/gasiseol.ifc      (BIM 표준, 선택)

확인:

# 파일 크기 확인
ls -lh out/gasiseol.*

# 정점 수 확인
grep "^v " out/gasiseol.obj | wc -l
# → 1000+ 정상

단계 5: 부피 검증

# IR 기준 부피 (의도)
node src/measure.mjs gasiseol --ir

# 모델러 측정 부피 (결과)
node src/measure.mjs gasiseol

# 기준값 저장
node src/measure.mjs gasiseol --baseline

성공 기준:

부피 오차 < 0.5%

예:
IR 부피: 100.50 m³
모델 부피: 100.45 m³
오차: 0.05% ✅

실패 시:

  • assemble() 함수 재검토 (gasiseol.mjs)
  • Boolean 손실 확인 (egm status에서 modelCount)
  • docs/2d-3d-conversion.md 교훈 #14, #19

단계 6: 최종 검증

# 전체 검증
/validate --level=full

# 또는 커맨드 사용
node src/run.mjs gasiseol && \
node src/gaps.mjs gasiseol && \
node src/build.mjs gasiseol --loops && \
node src/build.mjs gasiseol && \
python src/run_egm.py gasiseol --export=out/gasiseol.obj && \
node src/measure.mjs gasiseol

📊 예상 결과물

파일 구조

out/
├── gasiseol.obj           (웹용 3D 모델)
│   └─ 크기: 500KB~5MB
│   └─ 정점: 1,000~50,000
│   └─ 면: 2,000~100,000
│
├── gasiseol.ifc           (BIM 표준)
│   └─ 크기: 200KB~2MB
│   └─ 포함: 부재 정보, 재질
│
└── gasiseol-validation.json
    └─ 부피, 검증 결과

baselines/
└── gasiseol.volumes.json  (기준값, 회귀 테스트용)
    {
      "irVolume": 245.823,
      "realVolume": 245.756,
      "error": 0.027,
      "status": "PASS"
    }

부피 예상

가시설(임시 구조물) 특성상:

소형 부재 예상:
- 기둥: 10~20 m³ 범위
- 보: 5~15 m³ 범위
- 전체: 50~300 m³

오차: 0~1% (정상)

🔍 문제 해결

오류 1: "DXF 파일을 찾을 수 없음"

# RAG 폴더 확인
ls -la RAG/가시설*.dxf

# 절대 경로 확인
file RAG/가시설_평면.dxf

오류 2: "폐곡선이 안 닫혀 있음"

# 자기교차 확인
node src/build.mjs gasiseol --loops | grep "✗"

# 원인 확인
node src/build.mjs gasiseol --debug

오류 3: "부피 오차 > 0.5%"

# IR 다시 계산
node src/build.mjs gasiseol --verbose

# assemble() 함수 검토
cat src/drawings/gasiseol.mjs | grep -A 20 "assemble("

# Boolean 문제 확인
egm status | grep modelCount

✅ 성공 신호

파일 생성됨

✅ out/gasiseol.obj 생성 (크기 > 0)
✅ baselines/gasiseol.volumes.json 저장

검증 통과

✅ 부피 오차 < 0.5%
✅ 폐면 (manifold) 체크 통과
✅ 렌더링 성공

웹 배포 준비

✅ OBJ 파일 준비 완료
✅ Three.js에서 로드 가능
✅ 부재 정보 추출 가능

🌐 웹 배포

# 3D 모델을 웹앱으로 로드
cd src/web
npm install
npm run dev

# 브라우저에서
http://localhost:3000
→ "가시설_평면.dxf" 업로드
→ 3D 모델 시각화
→ 부재 정보 조회

📈 성능 예상

단계 예상 시간 병목
파일 검증 30초 DXF 파싱
뷰 분리 30초 클러스터링
폐곡선 1분 위상 추적
IR 생성 1분 프로파일 변환
3D 생성 3~5분 EGModeler
검증 1분 부피 계산
총 7~10분 EGModeler

🎯 다음 단계

# 1. 위 절차 실행
# ↓
# 2. 결과물 확인 (out/gasiseol.obj)
# ↓
# 3. 웹 배포
cd src/web && npm install && npm run build
# ↓
# 4. Vercel 배포
vercel --prod

📞 문제 시 연락

기하학 문제: docs/2d-3d-conversion.md 교훈 #1~#19
설정 파일: src/drawings/gasiseol.mjs
검증 실패: node src/measure.mjs gasiseol --ir (의도 확인)
배포 문제: FINAL-REPORT.md (배포 체크리스트)