minsungandClaude Opus 5 6f200ef692 docs: record the dist2 static-build deploy procedure
This repository has no deploy script or CI: package.json only builds to
dist/ (gitignored), yet dist2/ is committed and is what actually gets
served. The procedure was folklore reconstructed from commit history each
time someone deployed.

Write it down, including the two traps found while deploying fb8f7ca:

- vite's emptyOutDir defaults to true when outDir sits inside the project
  root, so a bare `vite build --outDir dist2` deletes the hand-placed test
  assets in dist2/samples (configBak/, dwg_18.3mb.dwg). Always pass
  --emptyOutDir false.
- npx vite can fail here with `Missing script: "vite"`; call
  ./node_modules/.bin/vite directly.

Also notes the open issues: no build:dist2 script, old hashed bundles
accumulating in dist2/assets, and test fixtures living inside the build
output directory.

Link it from the README issue table.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 15:21:10 +09:00

dwg-dxf-viewer-sample

hmwebviewer 형제 폴더에 분리된 DWG/DXF 2D 뷰어 샘플입니다.

docs/modules-dwg-dxf.html 모듈 지도의 카드 (acadrust-dwg, dxf-parser, Viewer2D …)를 직접 조합해 동작하는 독립 프로젝트입니다. hmwebviewer 저장소 안에 의존하지 않습니다.

D:\MYCLAUDE_PROJECT\
  hmwebviewer\              ← 본 제품
  dwg-dxf-viewer-sample\    ← 이 샘플 (형제)

실행

cd D:\MYCLAUDE_PROJECT\dwg-dxf-viewer-sample
npm install
npm run dev
# → http://localhost:5173
UI 모듈 경로
Sample DWG ext2dacadrust-dwg WASMViewer2D
Sample DXF ext2ddxf-parser + hatch + adapterViewer2D
파일 드롭 / Open 확장자로 위 둘 중 하나

모듈 지도: 브라우저에서 docs/modules-dwg-dxf.html
조합 코드: src/main.ts


레이아웃

dwg-dxf-viewer-sample/
  docs/modules-dwg-dxf.html   # 모듈 조합 레시피 HTML
  public/
    fonts/NanumGothic-Regular.ttf
    samples/BasicSample.dwg
    samples/simple.dxf
  src/
    main.ts                   # 모듈을 import 해서 조립
    viewer2d/                 # 재사용 모듈 본체
      acadrust-dwg/           # WASM
      Viewer2D.js
      dwgParser.ts
      parseDxf.ts
      dxfAdapter.js
      dxfHatchHandler.js
      ext2d.ts
      slugText.ts
      …
  package.json
  vite.config.ts

조합 파이프라인

File/URL
  → ext2d (isDwg / isDxf)
  → parseDwgBuffer  |  parseDxfBuffer
       │                    │
       └ acadrust-dwg       ├ decodeDxf
                            ├ dxf-parser + dxfHatchHandler
                            └ dxfAdapter
  → CadParseResult
  → Viewer2D.load()  (+ three, slugText/font)

의존성

패키지 역할
three WebGL 렌더 / OrbitControls
dxf-parser DXF 텍스트 파싱
opentype.js TTF 글리프 (slugText)

WASM(acadrust_dwg_bg.wasm)은 src/viewer2d/acadrust-dwg/ 에 포함되어 있으며 Vite ?url import 로 로드됩니다.


다른 앱에 이식

  1. src/viewer2d/ 폴더 복사
  2. npm i three dxf-parser opentype.js
  3. 폰트 public/fonts/NanumGothic-Regular.ttf
  4. Vite: assetsInclude: ['**/*.wasm']
  5. src/main.ts 의 ①~④ 블록을 호스트에 붙이고 ⑤ UI만 교체

소스 동기화(선택): 본가 hmwebviewer/src/viewer2d 가 업데이트되면 해당 파일을 이 프로젝트 src/viewer2d 로 다시 복사하면 됩니다.


알려진 이슈 / 원본 반영 메모

이슈 문서
구형 한글 DWG TEXT 깨짐 (CP949→Latin-1 mojibake) docs/korean-dwg-text-encoding.md
Model + Paper 동시 렌더로 글자 겹침 / Layout 탭 docs/model-paper-space.md
dist2 정적 빌드 배포 절차 (공식 배포 스크립트 없음) docs/deploy-dist2-static-build.md

샘플 패치: fixDwgKoreanText, cadSpaces + Viewer2D 공간 필터, Model/Layout 탭.
원본 hmwebviewer 반영 절차는 각 문서를 따른다.


라이선스 메모

조각 라이선스
Viewer2D 포트 · 샘플 글루 MIT (hmwebviewer 계열)
acadrust (WASM 내부) MPL-2.0
dxf-parser · three MIT
NanumGothic OFL
S
Description
Standalone DWG/DXF 2D viewer sample — compose acadrust-dwg + dxf-parser + Viewer2D (Vite/Three.js)
Readme
13 MiB
Languages
JavaScript 50.7%
TypeScript 34.3%
HTML 15%