(WEB集成CAD)在线CAD的Node.JS服务详细说明

474 阅读4分钟

一、说明

后台提供梦想Node.JS服务,方便调用控件后台功能,Windows服务程序所在目录:Bin\MxDrawServer\Windows,Linux服务程序所在目录:Bin\Linux\MxDrawServer。

图片1.png

图片2.png

二、启动服务

Windows:进入Bin\MxDrawServer\Windows目录,运行start.bat启动服务,如下图: 图片3.png

Linux: 进入Bin\Linux\MxDrawServer,执行如下命令,增加文件的执行权限:

su root

chmod -R 777 *

如下图所示,运行: ./node app.js 启动服务: 图片4.png

服务启动后,默认会在1337端口监听,目录下有个ini.js文件,编辑该文件,配置服务参数,如下图:

图片5.png

给我们的转换程序设置执行权限:进入Bin\Linux\Bin目录,执行如下命令,增加文件的执行权限:

su root

chmod -R 777 *

cp -r ./mx /mx

chmod -R 777 /mx/*

如下图所示: 图片6.png

图片7.png

三、服务使用

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',
                    contentTypefalse,
                    /*async:false,*/
                    processDatafalse //此处是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,代码如下: 图片8.png

demo运行后,点击“保存到DWG文件”,查看接口调用效果: 图片9.png   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”执行结果如下: 图片10.png

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',
                contentTypefalse,
                /*async:false,*/
                processDatafalse
            }).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,代码如下: 图片11.png

默认文件转换后存放位置如下图: 图片12.png

注意: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开发组件。 图片13.png 使用visual studio 2022 打开 Bin\MxServiceCode\MxServiceCode.sln设置工程属性: 图片14.png 设置程序运行断点,运行程序: 图片15.png 命令直接执行程序如下: 图片16.png 或通过我们后台服务调用,如下: 图片17.png

C.如何写一个图纸剪切功能

写一个函数:

export function Mx_FrameCut(param: any)

如demo截图: 图片18.png Mx_FrameCut函数里面,实现具体的图纸剪切的功能代码,详细看demo源码。

把刚才写的函数,注册成一个命令,方便调用

MxProcessor.addCommand("frameCut", Mx_FrameCut)

如demo截图: 图片19.png 调用图纸剪功能:

..\..\Release\node.exe mxapp.js frameCut  file="D:/Test/1122.dwg" tkname="AAA" outtype=.pdf

如下图: 图片20.png