首页 > 其他分享 >在线CAD的SDK如何集成到网页系统-关于MxCad项目二次开发插件集成

在线CAD的SDK如何集成到网页系统-关于MxCad项目二次开发插件集成

时间:2023-09-06 11:13:14浏览次数:44  
标签:集成 插件 dist ts plugins 二次开发 目录 打包

前言

1.很多单位拥有着数量庞大的DWG图纸,部门之间传统的图纸管理和沟通,效率较为低下,而将CAD图纸的浏览,编辑,审图,签章等工作集成到自己的网页系统,将会显著提高工作效率和企业的竞争力。

集成到网页系统需要我们在后台服务器部署web cad sdk,部署后的操作界面效果如下:

 

2.在线CAD功能测试demo:https://demo.mxdraw3d.com:3000/mxcad/

 

前端项目二次开发插件集成

第一步: 下载MxDraw云图开发包https://www.mxdraw.com/download.html

第二步: 解压打开目录找到MxDrawCloudServer\SRC\TsWeb\public\mxcad 目录所在位置,这里就是该项目的打包后的项目位置。

第三步: 修改配置mxUiConfig.json文件和mxServerConfig.json,如下图:

文件可根据自己的需求去修改一些固定配置。

第四步: 再到plugins目录下创建一个testPlugin.js文件,然后我们可用在对应的config.json文件中配置plugins属性, 新增一个testPlugin字符串。

第五步: 在testPlugin.js 写任意的js代码, 项目都会运行,这个时候你可用访问window属性中的Mx、mxcad、Vue 它们分别是mxdraw、mxcad、vue的默认导出。

具体如何使用mxdraw和mxcad库参考文档:

https://mxcadx.gitee.io/mxdraw_docs/start/abstract.html

https://mxcadx.gitee.io/mxcad_docs/zh/

 

如果开发的插件比较复杂,需要用到ts

我们专门提供了一个可用调试和打包的完整集成了项目插件的demo。你可用下载它来二次集成开发。

下载地址:https://gitee.com/mxcadx/mxdraw-article/blob/master/MxCad项目二次开发插件集成/MxCADAppVuetify3.zip

下载好后先解压, 有一个dist目录和createPlugin目录, dist表示项目打包后的资源, createPlugin表示二次开发集成的插件项目。

我们命令行先执行cd createPlugin 进入该目录然后运行npm i或者yarn 安装依赖,然后我们就可与直接运行npm run dev 进行调试,如下图:

 

npm run build 进行打包, 打包后的文件在最开始解压的dist目录下的plugins目录下。

我们可以进入src目录下查看源码, 这个示例是用Vue组件写的一个弹框,然后通过命令调用, 可以在页面中显示的命令输入框中输入MyTestDraw就会弹出对应的弹框,而vue组件是基于dist打包后资源中的vue3, 我们可以通过示例代码了解如何在插件中定义和使用vue组件,如下图:

  

 

该项目electron桌面版本

对应electron版本,前端二次开发的插件项目不变,唯一的区别就算electron版本在window上新增了MxElectronAPI对象, 提供了和主线程通信的能力。

electron 打包后的项目下载:

https://gitee.com/mxcadx/mxdraw-article/blob/master/MxCad项目二次开发插件集成/MxCADAppElectron.zip

同样的下载解压安装依赖electron项目的插件基于vite 打包对应的vite 配置: vite.plugins.config.ts,步骤如下:

1.创建src/plugins 目录, 如果存在则无需创建

2.创建一个插件目录 如testPlugin, 然后在该目录下创建一个index.ts作为该插件入口文件

3.vite.plugins.config.ts 新增插件入口配置pluginEntryFileName: ["plugins/testPlugin/index.ts"]

4.运行命令调试: dev:plugins

5.运行命令打包: build:plugins

6.如果在testPlugin创建preload.ts 并默认导出一个对象,这个对象存放是用来与页面通信的API,这里如果比较难理解可以参考预加载脚本:https://www.electronjs.org/zh/docs/latest/tutorial/tutorial-preload

默认导出的对象就是在通过contextBridge.exposeInMainWorld定义的前端 window.MxElectronAPi.插件目录名称(命名空间)对象,同理preload2d.ts导出的对象会覆盖preload.ts导出对象中属性相同的值,但是preload2d.ts只在显示2d图纸的页面中有效,preload3d.ts与preload2d.ts不同的是它只作用于3d显示页面,而preload.ts则是公共的。

7.plugins可以存在很多插件,它下面的每一个目录都是一个插件,这个插件的目录名就是命名空间名称,前端页面访问的对象也是window.MxElectronAPI.命名空间名称,以下是electron项目中对应目录的描述:

路径

描述

提醒

dist

前端打包的项目资源

目录下有2d、3d等目录,其中2d和3d内还存在一个dist目录, 这个dist目录就是上文中提到的打包后前端资源,不过它是electron版本,但是目录结构是一模一样的, 我们只需要把上文中的生成的dist/plugins/test.js覆盖掉electron版本中对应dist/plugins/test.js, 然后查看config.json中是否存在对应的配置

dist-electron

主线程打包的代码

不建议直接修改这里的代码,因为随时都可能更新替换

rendererTypes

window.MxElectronAPI的ts类型定义

可以在前端使用,提供类型定义和说明描述

src/plugins

插件目录

每一个目录下的index.ts都是入口

vite.plugins.config.ts

vite的打包配置

每一个新的创建目录都要在这里记录,如果你稍微了解vite打包那么可以根据自己的需求作出调整, 但是最终输出文件的结构位置一定不可以变,不然无法加载插件

 

 DEMO源码:

https://gitee.com/mxcadx/mxdraw-article/tree/master/MxCad%E9%A1%B9%E7%9B%AE%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91%E6%8F%92%E4%BB%B6%E9%9B%86%E6%88%90

标签:集成,插件,dist,ts,plugins,二次开发,目录,打包
From: https://www.cnblogs.com/yzy0224/p/17681749.html

相关文章

  • maven插件之Dependency:analyze,去掉无用maven依赖
    前言完成新功能的开发后,在发包前组长告诉我要检查maven工程的依赖,并告诉我相关指令,此文记录一下使用方式正文简介maven官网之Dependency插件Dependency插件提供了操纵artifact的能力,可以复制以及拆包本地或远程仓库的artifact到指定地点。Dependency有很多的goal,这里介绍的是de......
  • python开发之微信的二次开发
    简要描述:根据消息回调收到的xml转发链接消息,适用于同内容大批量发送,可点击此处查看使用方式,第2大类4小节请求URL:http://域名地址/forwardUrl请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是string登录实例标识wcId是......
  • IU5200集成30V的OVP功能,支持I2C接口,3A充电电流,1~4节锂电池升降压充电芯片
    IU5200D是一款自动申请快充输入,开关模式升降压充电管理IC,用于1~4节锂离子电池和锂聚合物电池,以及1~5节磷酸铁锂电池。芯片集成包括4开关MOSFET、输入和充电电流感应电路、电池以及升降压转换器的环路补偿。芯片具有3A的充电电流能力,充电电流可以通过外部电阻灵活可调。IU5200D内置......
  • Jenkins集成Blue Ocean
    Jenkins集成BlueOcean1.安装参考:https://www.jenkins.io/doc/book/blueocean/getting-started/要将BlueOcean插件套件安装到Jenkins实例,按步骤执行以下操作:1.使用管理员用户登录到Jenkins。2.在可用插件中,搜索blueocean,点击安装即可。2.配置配置的话,有两......
  • vim配置和插件
    Linux干活三板斧,shell、vim和git 下面主要内容包括:1、vim安装及基本设置2、插件安装及设置3、快捷键设置     2vim安装及基本设置   下面内容包括:1、vim安装2、查看对python支持3、基本设置    2.1vim安装    sudoapt-getinstal......
  • 初识seata-微服务集成seata
          ......
  • 虹科干货 | 什么是Redis数据集成(RDI)?
    大量的应用程序、日益增长的用户规模、不断扩展的技术需求,以及对即时响应的持续追求。想想这些是否正是你在经历的。也许你尝试过自己构建工具来应对这些需求,但是大量的编码和集成工作使你焦头烂额。那你是否知道,有这样一个工具可以帮助你实现从缓存中执行所有查询?一、推出Redis数......
  • Spring缓存抽象怎么和redis进行集成
    一.在Mavenpom.xml文件中加入Redis包<!--redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-redis</artifactId><version>${boot.version}</version></depen......
  • 你折腾一天都装不上的插件,函数计算部署 Stable Diffusion 都内置了
    在进行函数计算StableDiffusion答疑的过程中,遇到很多同学在装一些插件的过程中遇到了难题,有一些需要安装一些依赖,有一些需要写一些代码,很多时候安装一个插件就能折腾几天,我们收集了很多同学需要的插件,这一次把比较难装的StableDiffusion插件都装好了。可以根据自己的需要自......
  • python开发之微信机器人的二次开发
    简要描述:取消消息接收请求URL:http://域名地址/cancelHttpCallbackUrl请求方式:POST请求头Headers:Content-Type:application/json参数:参数名类型说明codestring1000成功,1001失败msgstring反馈信息成功返回示例{"message":"成功","code":"1000","data":......