# @ccpc/cad-viewer

`@mlightcad/cad-viewer` 的内部 Vue 封装。

该包对外只暴露一个组件 `CcpcCadViewer`，并将 `mlightcad` 的接入细节对宿主应用隐藏起来。

```vue
<script setup lang="ts">
import { CcpcCadViewer } from '@ccpc/cad-viewer'
</script>

<template>
  <CcpcCadViewer url="https://example.com/demo.dxf" />
</template>
```

## 为什么要有这个包

`@mlightcad/cad-viewer` 当前会带入一套 CAD 运行时栈，并且有自己的 `three` peer 版本。一些宿主应用已经依赖了其他版本的 `three`。

这个封装会把 CAD 运行时一起打进库产物里，并且让 Vue 成为宿主侧唯一需要关心的 peer 依赖。

## 开发

```powershell
npm install --legacy-peer-deps
npm run build
```

构建产物会输出到 `dist/`。

在构建和打包之前，会先把 CAD worker 资源生成到 `assets/`：

```powershell
npm run prepare-assets
```

## 本地包测试

```powershell
npm run pack:local
```

把生成的 tar 包安装到宿主应用中：

```powershell
cd D:\work\modelcollab
npm install D:\new_work\ccpc-cad-viewer\ccpc-cad-viewer-0.1.0.tgz --legacy-peer-deps
```

## 示例

```powershell
cd examples\vue-demo
npm install --legacy-peer-deps
npm run dev
```

示例项目通过 Vite 别名把 `@ccpc/cad-viewer` 解析到根目录的 `src/index.ts`，因此不会把这个包递归安装到它自己的 `node_modules` 里。

## 文档

- [Usage](./docs/usage.md)
- [Architecture](./docs/architecture.md)
- [Release](./docs/release.md)
- [Changelog](./CHANGELOG.md)
