|
5 月之前 | |
---|---|---|
.. | ||
src | 5 月之前 | |
README.md | 5 月之前 | |
index.ts | 1 年之前 |
该组件旨在提供一个Viewer以预览、下载、编辑、打开DWG等通用格式的CAD文件。
<template>
<CADViewer style="width: 1920px" :height="1080" />
</template>
<script lang="ts" setup>
import { CADViewer } from '/@/components/CADViewer';
</script>
`
详见/@/components/CADViewer/src/CADViewer.vue
通过iframe嵌入即成的主体应用,编写客制化的操作栏并下发指令对其进行操作。可以通过前期文档了解更多。
有了主体应用(mxcad app)后,使用 postMessage 技术与其通信以下达指令即可完成操作。需要额外说明的,预设的某些指令可能不足以满足需求,此时需要在 mxcad app 中修改源码以添加客制化指令。本组件中的 MKY_Download_DWG、MKY_Open_DWG 即是客制化指令,具体细节参考实现细节。
对于操作栏,使用时首先应该向/@/components/CADViewer/src/operationMap.ts
里注册操作配置。具体说明见/@/components/CADViewer/src/types
和/@/components/CADViewer/src/operationMap.ts
阅读完实现原理里操作相关的内容后,我们了解了如何注册操作配置,但对于如何完整的实现还不清楚,那么它的细节如下:
/public/mxcad/mxQuickCommand.json
中可以查阅。MxFun.addCommand
添加指令到 mxcad app 中。这里以 MKY_Open_DWG 举例,这个指令不在 mxcad app 的默认指令集中,我们需要手动添加它,步骤如下:
mxcad_app/2d/MxCAD/src/cadfile.ts
。/** 打开指定的文件 */
export async function MKY_Open_Mxweb({ param }: { param: string }) {
MxCpp.getCurrentMxCAD().openWebFile(param);
}
MxFun.addCommand('MKY_Open_Mxweb', MKY_Open_Mxweb);
在项目中更新 mxcad app,即将其打包后把新的文件mxcad_app/2d/dist/plugins/test.js
、mxcad_app/2d/dist/plugins/test.js.map
替换到项目的public/mxcad/plugins
中。
注册操作配置,使用该指令:
operationMap.set('MKY_Open_Mxweb', {
name: 'MKY_Open_Mxweb',
alias: '打开DWG文件',
component: OpenFile,
on: {
select: (file: File) => {
processFile(file).then((path) => {
postMessage('MKY_Open_Mxweb', path);
});
},
},
});
钩子方法本质上和操作配置的实现细节一致,就是在 mxcad_app 中发送消息,我们接受到消息后执行钩子函数。目前仅支持为事件注册单个钩子
上文中提到的 mxcad app 在前期文档中下载(不会读到这还没看这个文档吧?)。
关于客制化指令的实现未在git上同步。需要添加了客制化指令的项目源码的可以联系@houzekong。
全文到此结束。