# @cadview/core 中文文档

规范地址：https://npmcn.com/package/%40cadview/core/

版本：0\.5\.0
npm 元数据更新时间：2026-02-20T05:05:49.858Z
中文译文更新时间：2026-11-08T23:14:35.959Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40cadview/core
原文对照：https://npmcn.com/package/%40cadview/core/?lang=original
项目主页：https://github.com/wiscaksono/cadview/tree/main/packages/core#readme
源码仓库：https://github.com/wiscaksono/cadview

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.1 MB，9 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=18
- 运行依赖：2 个
- 首次发布：2026-02-19T07:33:09.066Z
- 最新版本发布：2026-02-20T05:05:49.707Z
- 近 30 天下载量：5265（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：5（近 12 个月 5 个）

## 中文简介

带有 DXF 解析器和 Canvas 2D 渲染器的框架不可知 CAD 文件查看器引擎

## 安装

```sh
npm install @cadview/core
```

也可以使用：`pnpm add @cadview/core`、`yarn add @cadview/core`、`bun add @cadview/core`

## README

# @ cadview/ core (中文(简体) )

框架-不可知 CAD 文件查看器引擎有 DXF 剖析器和 Canvas 2D 渲染器.

## 特征

-   快速 DXF 解析器, 支持13个实体类型( LINE, CIRCLE, ARC, LWPOLYLINE, POLYLLLINE, ELLIPSE, SPLINE, TEXT, MTEXT, InSERT, DIMENSION, HATCH, POINT)
-   带有 DPR 感知渲染和暗/淡主题的 Canvas 2D 渲染器
-   与 pan 、 缩放( Mouse wheel + citch) 和指针抓取交互查看器
-   具有空间索引(R-tree)和几何打击测试的实体选择
-   带有速成对地测量(端点、中点、中点)的测量工具
-   带有能见度切换和色彩覆盖的层管理
-   ACI 颜色表( 256 颜色) 有主题意识的颜色 7 互换
-   用嵌入式块支持屏蔽 INSERT 渲染
-   零框架依赖性——与任何UI框架或vanilla JS合作

## 安装

```bash
npm install @cadview/core
```

## 快速启动

```ts
import { CadViewer } from '@cadview/core';

const canvas = document.getElementById('canvas') as HTMLCanvasElement;
const viewer = new CadViewer(canvas, { theme: 'dark' });

// Load a DXF file
const response = await fetch('/drawing.dxf');
const buffer = await response.arrayBuffer();
viewer.loadArrayBuffer(buffer);

// Or load from File input
const file = input.files[0];
await viewer.loadFile(file);

// Controls
viewer.fitToView();
viewer.setTheme('light');
viewer.setTool('select'); // 'pan' | 'select' | 'measure'

// Events
viewer.on('select', (e) => {
  console.log('Selected:', e.entity.type, 'on layer:', e.entity.layer);
});

viewer.on('measure', (e) => {
  console.log('Distance:', e.distance);
});

// Cleanup
viewer.destroy();
```

## API 密码

### `CadViewer`

主取景器类 管弦乐解析,渲染,和相互作用.

#### 构造器

```ts
new CadViewer(canvas: HTMLCanvasElement, options?: CadViewerOptions)
```

#### 选项

| 选项 | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `theme` | `'dark' | 'light'` | `'dark'` | 颜色主题 |
| `minZoom` | `number` | `0.0001` | 最小缩放比例 |
| `maxZoom` | `number` | `100000` | 最大缩放尺度 |
| `zoomSpeed` | `number` | `1.1` | 每个轮子的缩放系数勾选 |
| `initialTool` | `Tool` | `'pan'` | 启用时使用的工具 |
| `formatConverters` | `FormatConverter[]` | `[]` | 非 DXF 文件的格式转换器( 如 DWG) |

#### 方法

| 方法 | 说明 |
| --- | --- |
| `loadFile(file: File)` | 从文件对象装入( 同步, 运行格式转换器) |
| `loadBuffer(buffer: ArrayBuffer)` | 从矩阵缓冲器装入( 同步, 运行格式转换器) |
| `loadString(dxf: string)` | 从字符串装入 DXF( 同步, 不转换) |
| `loadArrayBuffer(buffer: ArrayBuffer)` | 从矩阵缓冲器装入 DXF( 同步, 不转换) |
| `loadDocument(doc: DxfDocument)` | 直接装入预放的 DxfDocument |
| `clearDocument()` | 在不破坏查看器的情况下清除当前文档 |
| `fitToView()` | 适合绘制边框 |
| `setTheme(theme)` | 设置颜色主题 |
| `setTool(tool)` | 设置活动工具( S)`pan`, (中文(简体) ), `select`, (中文(简体) ), `measure`(中文(简体) ) |
| `getLayers()` | 获取所有层 |
| `setLayerVisible(name, visible)` | 切换层可见度 |
| `on(event, callback)` | 订阅事件 |
| `off(event, callback)` | 未订阅事件 |
| `destroy()` | 清理所有资源 |

### `FormatConverter`

用于注册自定义文件格式转换器的接口 。 转换器在 `loadFile()` 财务报告和审定财务报表 `loadBuffer()` —— 第一场比赛取胜.

```ts
interface FormatConverter {
  /** Return true if the buffer is in this format (check magic bytes, not extensions). */
  detect(buffer: ArrayBuffer): boolean;
  /** Convert the buffer to a DXF string. */
  convert(buffer: ArrayBuffer): Promise<string>;
}
```

**示例——通过DWG支持 `@cadview/dwg`数字 :**

```ts
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);
```

> **说明:** `@cadview/dwg` 由GPL-3.0(因LibreDWG而批准). `@cadview/core` 麻省理工学院 见 [@cadview/ dwg 读取ME](https://npmcn.com/package/%40cadview/dwg/README.md) 详细情况.

### `parseDxf`

独立的 DXF 解析器 — 如果您不需要解析器, 请使用此解析器 .

```ts
import { parseDxf } from '@cadview/core';

const doc = parseDxf(dxfString);
console.log(doc.entities.length, 'entities');
console.log(doc.layers.size, 'layers');
```

## 支助的DXF实体

线, CIRCLE, ARC, LWPOLLINE, POLYLLLINE, ELLIPSE, SPLINE, TEXT, MTEXT, InSERT (有MINSERT 网格), DIMENSION (有几何区块), HATCH (线/弧/圈边缘), POINT.

## 许可证

麻省理工学院

## 常见问题

### @cadview/core 是什么？

带有 DXF 解析器和 Canvas 2D 渲染器的框架不可知 CAD 文件查看器引擎

### 如何安装 @cadview/core？

在项目目录运行 npm install @cadview/core，或使用 pnpm add / yarn add / bun add。

### @cadview/core 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @cadview/core 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @cadview/core 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=18。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @cadview/core 可以商用吗？

@cadview/core 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @cadview/core 的下载量有多少？

根据 npm 官方下载统计，@cadview/core 在 2026/10/09 – 2026/11/07 这 30 天内被下载 5,265 次，日均约 176 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @cadview/core 还在维护吗？

最新版本 0\.5\.0 发布于 2026/02/20（8 个月前）；至今共发布 5 个版本，其中过去 12 个月发布了 5 个；首次发布于 2026/02/19。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

