From 26f737b2b56f8cbb69b020b20d4b290980cec33f Mon Sep 17 00:00:00 2001 From: mlight lee Date: Sun, 16 Aug 2026 17:53:26 +0800 Subject: [PATCH] feat: upgrade cad-viewer to v1.6.0 with opt-in LibreDWG DWG parsing is no longer bundled in cad-viewer; register libredwg-converter before the viewer opens drawings. --- README.md | 63 ++++++++++-- package.json | 13 +-- pnpm-lock.yaml | 219 ++++++++++++++++++++++------------------ src/App.vue | 12 ++- src/registerLibreDwg.ts | 19 ++++ vite.config.ts | 12 ++- 6 files changed, 220 insertions(+), 118 deletions(-) create mode 100644 src/registerLibreDwg.ts diff --git a/README.md b/README.md index e3e9b7d..fbb0d44 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ pnpm preview ## Usage -Firstly, add the following dependencies into your package.json. +Firstly, add the following dependencies into your `package.json`. - @mlightcad/cad-agent-plugin - @mlightcad/cad-html-plugin @@ -37,14 +37,42 @@ Firstly, add the following dependencies into your package.json. - @mlightcad/cad-simple-viewer - @mlightcad/cad-viewer - @mlightcad/data-model +- @mlightcad/libredwg-converter (optional, GPL-3.0 — required for DWG) - element-plus - lodash-es - three - vue - vue-i18n -Secondly, add the following code in your Vue component. +### Register a DWG converter (required for DWG since 1.6.0) +From `@mlightcad/cad-viewer` **1.6.0**, DXF parsing stays built-in, but **DWG is opt-in**. `@mlightcad/cad-simple-viewer` / `@mlightcad/cad-viewer` no longer depend on or register `@mlightcad/libredwg-converter`. Hosts that need open-source DWG support must: + +1. Add `@mlightcad/libredwg-converter` (GPL-3.0) +2. Copy its worker **and** wasm next to each other +3. Register the converter **before** the viewer opens a `.dwg` file + +```typescript +import { + AcDbDatabaseConverterManager, + AcDbFileType +} from '@mlightcad/data-model' +import { AcDbLibreDwgConverter } from '@mlightcad/libredwg-converter' +import { LIBREDWG_PARSER_WORKER_FILE } from '@mlightcad/cad-simple-viewer' + +const converter = new AcDbLibreDwgConverter({ + convertByEntityType: false, + useWorker: true, + parserWorkerUrl: `./assets/${LIBREDWG_PARSER_WORKER_FILE}` +}) +AcDbDatabaseConverterManager.instance.register(AcDbFileType.DWG, converter) +``` + +This example does that in `src/registerLibreDwg.ts` and calls it from `src/App.vue` before `MlCadViewer` mounts. + +If you ship a closed-source product and cannot distribute GPL code, skip LibreDWG and use a proprietary DWG converter instead. See [cad-viewer proprietary parser](https://github.com/mlightcad/cad-viewer/blob/main/PROPRIETARY-PARSER.md). + +### Use the Vue component ```vue