目录
mxdraw 是个在线CAD的JS库,实现在线CAD,DWG图纸浏览和编辑等功能的一套解决方案, 支持大部分现代主流浏览器比如Chrome、Edge等, 不支持IE浏览器。 DWG文件通过后端程序格式转换后后端程序详见,就可使用mxdraw在线打开。
面向前端开发者 熟悉了解
JavaScript
并且会使用three.js
框架。 如从未接触过three.js建议先阅读three.js中文文档 后再进行开发使用。
yarn add mxdraw 或 npm install mxdraw
import Mx from "mxdraw"
html
<canvas id="mxcad">
</canvas>
js
import Mx from "mxdraw"
// 动态加载 js库核心代码
Mx.loadCoreCode().then(()=> {
// 创建控件对象
Mx.MxFun.createMxObject({
canvasId:"mxcad", // canvas元素的id
cadFile:"http://localhost:8088/demo/buf/hhhh.dwg.mxb1.wgh", // 后端程序转换dwg文件后的文件位置。
callback: (mxDrawObject, {
canvas,
canvasParent
}) => {
// 可以拿到canvas元素和它的父级元素
//console.log(canvas, canvasParent)
//console.log(mxDrawObject)
// 图纸加载完成
mxDrawObject.addEvent("loadComplete", () => {
console.log("mx loadComplete");
});
}
})
})
参考内容:
import Mx from "mxdraw"
// 画线的函数
export async function BR_Line() {
// 让用在图上点取直线的开始点.
const getPoint = new MrxDbgUiPrPoint();
getPoint.setMessage("\n指定第一点:");
let pt1:THREE.Vector3|null = await getPoint.go();
if(pt1 == null){
return;
}
getPoint.setBasePt(pt1.clone());
getPoint.setUseBasePt(true);
getPoint.setMessage("\n指定第二点:");
// 让用在图上点取直线的结束点.
let pt2:THREE.Vector3|null = await getPoint.go();
if(pt2 == null){
return;
}
// 创建一个直线对象,添加到图上。
let line = new MxDbLine()
line.pt1 = pt1;
line.pt2 = pt2;
line.setDashLineDisplay(true);
line.setLineWidth(10);
line.setLineWidthByPixels(true);
MxFun.addToCurrentSpace(line);
}
参考内容:
import Mx from "mxdraw"
// 注册命名
Mx.MxFun.addCommand("BR_Line", ()=> {
if(Mx.MxFun.isRunningCommand()) {
return
}
BR_Line()
})
// 执行命令
Mx.MxFun.sendStringToExecute("BR_Line")
更多Api使用说明请参考Mx模块集对应模块中的Api接口说明
暴露出来的函数/类/对象 包括接口/枚举等Ts的类型
CoreCode 这里加载了核心程序(包括three.js)以及jquery.js库 请在需要时自行调用(所有模块都需要等待CoreCode加载完成才能使用) 列如:
import { loadCoreCode } from "mxdraw"
loadCoreCode().then(()=> {
console.log('CoreCode加载完成')
})
MxFun提供了核心方法, 其中最重要的两个方法就是setMxServer设置服务器地址 以及 createMxObject 创建控制对象
MxFun.createMxObject 创建的控件对象可以对canvas画布上展示的图纸进行控制修改以及添加three.js中各种组合图形等功能详情
自定义对象是为了更加方便的控制一个图形物体对象创建的一个控制器, 在需要对已经绘制在画布上的图形物体进行动态改动操作时,有一系列繁琐的过程,选取对象/选取状态/生成可改动的顶点/拖动改变顶点位置/动态绘制...
如果遵循自定义对象的规范(实现MxDbEntity抽象类),就可以忽略这些步骤,在实现了预设行为(抽象方法)后,鼠标操作就可以完成对物体对象的顶点操作,从而改变图形物体。
使用
babel
插件babel-plugin-import
实现按需引入 需要安装npm i babel-plugin-import -D
然后找到或创建项目根目录的.babelrc
文件新增如下内容
{
"plugins": [
[
"import", {
"libraryName": "mxdraw",
"libraryDirectory": "dist/lib/MxModule",
"camel2UnderlineComponentName": false,
"camel2DashComponentName": false
}
]
]
}
基于
babel-plugin-import
按需引入
import { MxFun } from "mxdraw"
或者直接通过
import MxFun from "mxdraw/dist/lib/MxModule/MxFun"
这样的方式直接引入对应模块
版权所有 (c) 2021 成都梦想凯德科技有限公司