在线编辑 DWG SDK 的集成方法

前言
我们基于 mxcad 创建了一个在线的 CAD 项目,该项目中包含了预览、编辑图纸、操作图纸数据库等多种 CAD 功能。用户集成后支持二次开发。当前我们提供了两种集成方式,方案 1:通过 iframe 集成 mxcad 项目;方案 2:直接在项目中集成 mxcad-app 插件。下面我们详细讲解第 2 种 mxcad-app 的集成方式,这种方式与 iframe 嵌套集成相比更加方便,集成后也只需要维护当前一个系统项目。
MxCAD 项目初始化界面如下:

一、基础集成步骤
1.1、基于 vite 集成 mxcad-app
第一步,在main.js
中引入 mxcad 项目所需要的样式文件,创建初始 MxCAD 项目
第二步,在vite.config.js
中加入 MxCAD 项目相关的资源配置
1.2、基于 webpack 集成 mxcad-app
第一步,在main.js
中引入 mxcad 项目所需要的样式文件,创建初始 MxCAD 项目
第二步,在vite.config.js
中加入 MxCAD 项目相关的资源配置
二、高阶调用
2.1、自定义界面容器
mxcad-app
如果不指定页面的容器元素,会默认直接在项目界面创建一个宽高为 100vw,100vh 的容器,mxcad 项目也将全屏展示。在某些情境下,我们需要动态控制 mxcad 项目的显隐或显示范围,因此,我们设置如下相关配置来指定mxcad-app
的特定界面容器。
如果需要修改 MxCAD 项目内部的静态资源路径,可以通过调用setStaticAssetPath()
方法修改。
2.2、构建配置设置
mxcad-app
插件内提供了mxcadAssetsPlugin
方法对 MxCAD 项目的加载 wasm 方式、第三方依赖、资源存放的子目录名、界面 UI、快捷命令、服务配置、主题样式等进行设置,用户可以根据自己的需求在不同的场景里修改 MxCAD 项目的内部配置,基于 vite 的配置:
基于 webpack 的配置:
设置加载 wasm 方式
MxCAD 项目内部默认使用多线程加载 wasm 资源,如果需要设置单线程加载,可以设置
mxcadAssetsPlugin
方法中的isWasmSt
属性。
第三方依赖
用户可以直接引入使用
mxcad-app
内部使用的 mxcad 和 mxdraw 模块,如果用户有需要使用mxcad-app
内的其他依赖可以直接在mxcadAssetsPlugin
方法中的libraryNames
属性中添加这些外部依赖的 npm 库,然后直接使用。
目前支持的依赖映射的库有vue
, axios
, vuetify
, vuetify/components
, mapboxgl
, pinia
你也可以访问window.MXCADAPP_EXTERNALLIBRARIES
获取到所有提供的依赖库,从而不依赖与构建工具的使用。
构建打包后
mxcad-app
静态资源存放的子目录名。在自己的项目中安装
mxcad-app
导入 MxCAD 项目后,构建打包的时候会默认创建名为 mxcadAppAssets 的文件夹来存放 MxCAD 相关的所有静态资源。如果用户需要修改放置静态资源的文件夹名,可以直接调用mxcadAssetsPlugin
方法中的outputDir
属性值。
修改界面 UI、CAD 快捷命令、服务配置、主题样式等
调用
mxcadAssetsPlugin
方法中的提供的 transform 方法深度设置 MxCAD 项目。
2.3、核心依赖库
mxcad-app
内置了mxcad
核心库,用户可以直接使用mxcad
不需要在项目中再次安装mxcad
插件。如果不是模块化的方式使用,mxcad
在window.MxCAD
挂载你可以直接使用MxCAD
访问到需要的方法和类。
mxcad
依赖mxdraw
, 用户在项目中也可以直接使用mxdraw
。如果不是模块化的方式使用, mxdraw
在 window.Mx
挂载。你可以直接使用Mx
访问到需要的方法和类。
直接引入mxcad
和mxdraw
模块的前提是要使用构建工具构建。我们提供给了 webpack 和 vite 的插件, 用于支持模块化开发。
只要使用了插件就可以直接使用import
引入mxcad
和mxdraw
模块。
三、MxCAD 项目二次开发示例
基于上述操作,我们已经在我们的项目中集成了 MxCAD 项目并完成了初始化配置,接下来我们就可以直接基于该 CAD 项目做二次开发了,下面以在项目中实现参数化绘制多种直线为例,在我们自己的系统之实现绘制命令后注册,再在 MxCAD 项目调用我们的绘制直线的命令并执行对应的参数操作。
3.1、添加绘制多种直线的方法
3.2、注册绘制命令
3.3、绑定调用逻辑(以点击按钮为例)
3.4、功能效果演示:

更多 mxcad-app 相关示例项目引用,可以下载我们的 mxdraw 云图开发包查看更多详情。
评论