@cadview/ dwg (英语)
DWG 文件格式支持 @ cadview/ core (中文(简体) ) 通过 自由数据工作组 编译为 Web Assembly .
在浏览器中将 DWG 文件完全转换为 DXF ——不需要服务器.
许可证
仅限GPL-3.0 ——本套件使用GPL许可的LibreDWG. 使用 @cadview/dwg 在您的申请中,将合并工作纳入GPL-3.0条款。 如果您无法遵守 GPL, 请不要使用此软件包 .
@cadview/core 和框架包装@cadview/react, (中文(简体) ), @cadview/svelte, (中文(简体) ), @cadview/vue) 保持麻省理工学院的许可证,对这个一揽子方案没有依赖性.
安装
npm install @cadview/dwg @cadview/core
快速启动
登记 dwgConverter 与 CadViewer 以自动处理 DXF 文件 :
import { CadViewer } from '@cadview/core';
import { dwgConverter } from '@cadview/dwg';
const viewer = new CadViewer(canvas, {
formatConverters: [dwgConverter],
});
// loadFile() and loadBuffer() now handle both DXF and DWG
await viewer.loadFile(file);
使用框架包装:
// React
import { CadViewer } from '@cadview/react';
import { dwgConverter } from '@cadview/dwg';
<CadViewer file={file} formatConverters={[dwgConverter]} />
<!-- Svelte -->
<script>
import { CadViewer } from '@cadview/svelte';
import { dwgConverter } from '@cadview/dwg';
</script>
<CadViewer {file} formatConverters={[dwgConverter]} />
<!-- Vue -->
<script setup>
import { CadViewer } from '@cadview/vue';
import { dwgConverter } from '@cadview/dwg';
</script>
<CadViewer :file="file" :format-converters="[dwgConverter]" />
独立使用
您可以直接使用转换函数,而不使用 CadViewer数字 :
import { convertDwgToDxf, isDwg, getDwgVersion } from '@cadview/dwg';
import { parseDxf } from '@cadview/core';
// Check if a buffer is a DWG file
const buffer = await file.arrayBuffer();
if (isDwg(buffer)) {
const version = getDwgVersion(buffer); // e.g. "AC1032"
const dxfString = await convertDwgToDxf(buffer);
const doc = parseDxf(dxfString);
}
WASM 预装
LibreDWG WASM模块(~2-5 MB)在第一次DWG转换时被懒惰地装入. 为避免用户第一次打开 DWG 文件时的延迟,在应用程序启动时预加:
import { initWasm } from '@cadview/dwg';
// Preload on app startup
initWasm();
// Or from a CDN
initWasm({ wasmUrl: 'https://cdn.example.com/libredwg.wasm' });
API 密码
dwgConverter: FormatConverter
预配置格式转换器,用于 CadViewer是因为 formatConverters 选项。 通过魔法字节检测出DWG文件,并通过LibreDWG WASM转换.
isDwg(buffer: ArrayBuffer): boolean
通过检查魔法字节来检测 DWG 格式( T)AC10 前缀 + 2 ASCII 数字。 回返 false 任何错误.
getDwgVersion(buffer: ArrayBuffer): string | null
取出6-字符 DWG 版本字符串( 如 . "AC1032") (中文(简体) ). 回返 null 非DWG缓冲器.
getDwgReleaseName(version: string): string | null
获得一个版本字符串(例如. "AC1032" → "R2018") (中文(简体) ).
convertDwgToDxf(buffer: ArrayBuffer, options?: ConvertOptions): Promise<string>
将 DWG 缓冲器转换为 DXF 字符串 。 拉齐将WASM模块初始化为一调.
选项 :
| 选项 | 类型 | 默认 | 说明 |
|---|---|---|---|
timeout | number | 30000 | 转换超时( ms (0 = 无超时)) |
wasmUrl | string | —— 说 | 自定义 URL .wasm 文件( 如 CDN) |
initWasm(options?: WasmOptions): Promise<void>
预初始化WASM模块. 安全呼叫多次。 失败时自动重试 .
isWasmReady(): boolean
检查WASM模块是否已装入并准备就绪 .
DWG_VERSIONS: Record<string, string>
已知 DWG 版本字符串地图到 AutoCAD 发布名称 :
| 版本 | 释放 |
|---|---|
| AC1009 (英语) | 编号11/R12 |
| AC1012 欧冠 | 第13条 |
| AC1014 化学文摘社 | 14号公路 |
| AC1015 (法语) | R2000号公路 |
| AC1018 (法语) | 共和国2004年 |
| AC1021 (法语) | 共和国2007年 |
| AC1024 (法语) | R2010 (英语) |
| AC1027 (法语) | 第2013号公路 |
| AC1032 (法语) | 第2018号公路 |
最小支持版本 : AC1012(R13) (法语)。 。 。 .
构建 WASM 模块
在DWG转换在运行时工作之前,必须使用Emscripten从LibreDWG编译出WASM模块.
先决条件:
- 标记 SDK (单位:千美元)
emsdk(中文(简体) ) - Git (用于 LibreDWG 子模块)
# Add LibreDWG as a git submodule (one-time)
git submodule add https://github.com/LibreDWG/libredwg.git packages/dwg/wasm/libredwg/
# Build the WASM module
pnpm --filter @cadview/dwg build:wasm
此生成 dist/libredwg.js 财务报告和审定财务报表 dist/libredwg.wasm。 。 。 .
许可证
仅限GPL-3.0. 见 自由主义。 。 。 .