一、说明
后台提供梦想Node.JS服务,方便调用控件后台功能,Windows服务程序所在目录:Bin\MxDrawServer\Windows,Linux服务程序所在目录:Bin\Linux\MxDrawServer。
二、启动服务
Windows:进入Bin\MxDrawServer\Windows目录,运行start.bat启动服务,如下图:
Linux: 进入Bin\Linux\MxDrawServer,执行如下命令,增加文件的执行权限:
su root
chmod -R 777 *
如下图所示,运行: ./node app.js 启动服务:
服务启动后,默认会在1337端口监听,目录下有个ini.js文件,编辑该文件,配置服务参数,如下图:
给我们的转换程序设置执行权限:进入Bin\Linux\Bin目录,执行如下命令,增加文件的执行权限:
su root
chmod -R 777 *
cp -r ./mx /mx
chmod -R 777 /mx/*
如下图所示:
三、服务使用
A.上传DWG文件并转换编辑格式mxweb
服务接口说明:
- 直接调用POST对服务器上的文件进行转换。
服务接口说明:
POST mxcad/convert { srcpath: "D:/Test/123.dwg", outpath: "D:/Test/", outname: "123.mxweb" }
file: 需要转的cad文件路径
后台调用服务如下代码:
$.ajax({
url: 'http://localhost:1337/mxcad/convert',
data: {srcpath: "D:/Test/123.dwg",outpath: "D:/Test/",outname: "123.mxweb"},
method: 'post'
}).success(function (res) {
console.log(res);
})
POST文件表单方式上传文件转换接口说明:
- POST mxcad/upfile
代码如下:
$.ajax({
url: 'http://localhost:1337/mxcad/upfile', //上传文件的请求路径必须是绝对路径
data: fd,
method: 'post',
contentType: false,
/*async:false,*/
processData: false //此处是data的预处理,需要设置为false才可以
}).success(function (res) {
console.log(res);
}).error(function () {
alert("上传失败");
$("#mxpopup2").css("display", "none");
$("#mxpopup").css("display", "block");
});
B. 保存批注到DWG文件
服务接口说明:
POST savecomment {filename:保存到的DWG文件;savefile :保存后的dwg, userConvertPath:false}
userConvertPath: 默认值是false,把当前图上的批注内容保存到指定的dwg文件中
filename: 是个相对路径,默认是相对于后台程序所在目录Bin\Release(windows),Bin\Linux\Bin(linux)
如果userConvertPath为接true,相对于Bin\Release\ini.json [linux:Bin\Linux\Bin\ini.json] 中的nodeConvert.path设置值
savefile: 也是个相对路径,同filename。
该接口后台源码在Bin\MxDrawNode\MxDrawNode\src\mxconvert\SaveCommentToDwg.ts 中的SaveCommentToDWG.do
参考例子:SRC\sample\Browse\VueBrowse,代码如下:
demo运行后,点击“保存到DWG文件”,查看接口调用效果:
C. 得到到DWG文件中信息
参考例子:Bin\MxDrawServer\Test\sample.html
服务接口说明:
* POST users {cmd:"getcaddata",cadfile:"1.dwg",outfile:"1.dwg.json"}
代码如下:
function TestPost(){
$.ajax({
url:'http://localhost:1337/users',
data:{cmd:"getcaddata",cadfile:"1.dwg",outfile:"1.dwg.json"},
method:'post'
}).success(function (res){
console.log(res);
})
}
getcaddata的实现,参见“梦想控件2-后台读写CAD文件.doc”执行结果如下:
D. DWG文件转成PDF
参考例子: Bin\MxDrawServer\Test\sample.html
服务接口说明:
* POST tools { cmd: "cadtopdf", param: "file=O:/1.dwg" },
代码如下:
$.ajax({
url: 'http://localhost:1337/users/tools',
data: { cmd: "cadtopdf", param: "file=O:/1.dwg" },
method: 'post'
}).success(function (res) {
console.log(res);
})
E. DWG文件转成JPG
参考例子: Bin\MxDrawServer\Test\sample.html
服务接口说明:
* POST tools { cmd: "cadtojpg", param: "file=O:/1.dwg" },
代码如下:
$.ajax({
url: 'http://localhost:1337/users/tools',
data: { cmd: "cadtojpg", param: "file=O:/1.dwg" },
method: 'post'
}).success(function (res) {
console.log(res);
})
F. 对CAD图纸剪切,剪切输出pdf,dwg
参考例子: Bin\MxDrawServer\Test\sample.html
服务接口说明:
* POST tools { cmd: "cutcad", param: "file=O:/hhhh.dwg out=O:/1.pdf lbx=60009.152793 lby=42457.503649 rtx=120145.567345 rty=85507.693766"},
out传的值扩展名是pdf输出pdf文件,是dwg时输出dwg,代码如下:
$.ajax({
url: 'http://localhost:1337/users/tools',
data: { cmd: "cutcad", param: "file=O:/hhhh.dwg out=O:/1.pdf lbx=60009.152793 lby=42457.503649 rtx=120145.567345 rty=85507.693766"},
method: 'post'
}).success(function (res) {
console.log(res);
})
H. 根据图框折分pdf
参考例子: Bin\MxDrawServer\Test\sample.html
服务接口说明:
* POST tools { cmd: "cadtopdf", file: "tk.dwg"},
调用代码如下:
$.ajax({
url: 'http://localhost:1337/users',
data: { cmd: "cadtopdf", file: "O:/tk.dwg"},
method: 'post'
}).success(function (res) {
console.log(res);
})
该功能的源码在:
Bin\MxDrawNode\MxDrawNode\src\mxconvert\CADToPDF.ts
Ⅰ.上传DWG文件转换wgh浏览格式
服务接口说明:
直接调用POST对服务器上的文件进行转换:
服务接口说明:
- POST users { cmd: "convert", file: "O:/1.dwg" }
- file: 需要转的cad文件路径
后台调用服务如下代码:
$.ajax({
url: 'http://localhost:1337/users',
data: { cmd: "convert", file: "O:/1.dwg" },
method: 'post'
}).success(function (res) {
console.log(res);
})
前端上传文件转换代码如下:
var that = this;
var urlpath = window.location.origin;
var files = !!this.files ? this.files : [];
if (!files.length || !window.FileReader) {
console.log("浏览器不支持HTML5");
return false;
};
var fileName = this.files[0].name;
var fileName = encodeURIComponent(fileName);
var fd = new FormData();
fd.append('file', files[0]);
let param = { fileName: fileName };
fd.append('param', JSON.stringify(param));
$("#mxpopup2").css("display","block");
$("#mxpopup").css("display", "none");
$.ajax({
url: 'http://localhost:1337/convert',
data: fd,
method: 'post',
contentType: false,
/*async:false,*/
processData: false
}).success(function (res) {
console.log(res);
var ret = res;
if (ret.code == 0) {
$('#shareLink').val(urlpath + '/file/' + ret.resultFile + '_mxresult.json');
$("#mxpopup1").css("display", "block");
$("#mxpopup2").css("display", "none");
}
else {
alert("上传失败");
$("#mxpopup2").css("display", "none");
$("#mxpopup").css("display", "block");
}
}).error(function () {
alert("上传失败");
$("#mxpopup2").css("display", "none");
$("#mxpopup").css("display", "block");
});
POST convert file;file是<input id="input"type="file"> 选择的文件.
该接口后台源码在Bin\MxDrawNode\MxDrawNode\src\mxconvert\MxConvert.ts中的CadToMx。
参考例子:Bin\MxDrawServer\Test\test.html,代码如下:
默认文件转换后存放位置如下图:
注意:wgh格式已不再维护,建议使用mxweb格式,已买wgh格式的用户可继续使用!
四、后台使用Node.js调用梦想API
A. 说明
我们提供后台写node.js程序,开发CAD功能模块调用,这样用户可以在服务器后台处理CAD图纸,提供CAD图纸信息,参数化绘图,CAD图纸格式转换,图纸剪切,pdf格式输出等功能。
B.demo工程说明
后台CAD功能模块的调用demo工程解压包的MxDrawCloudServer\Bin\MxServiceCode\MxServiceCode.sln目录下。
它是一个visual studio 2022建立的一个node.js开发工程,所以用户需要安装一个vistual studio 2022,安装中选择node.js开发组件。
使用visual studio 2022 打开 Bin\MxServiceCode\MxServiceCode.sln设置工程属性:
设置程序运行断点,运行程序:
命令直接执行程序如下:
或通过我们后台服务调用,如下:
C.如何写一个图纸剪切功能
写一个函数:
export function Mx_FrameCut(param: any)
如demo截图:
Mx_FrameCut函数里面,实现具体的图纸剪切的功能代码,详细看demo源码。
把刚才写的函数,注册成一个命令,方便调用
MxProcessor.addCommand("frameCut", Mx_FrameCut)
如demo截图:
调用图纸剪功能:
..\..\Release\node.exe mxapp.js frameCut file="D:/Test/1122.dwg" tkname="AAA" outtype=.pdf
如下图: