H5云图后台读写CAD文件-在线CAD,网页CAD,网页浏览编辑CAD
说明
后台提供MxFileConvert.exe程序,它可以将CAD图纸转换成前台能加载显示的格式,程序调用方法见: https://help.mxdraw.com/?pid=32中的“如何在自己系统中浏览dwg文件”章节,该程序还可以在转换过程中,使用JS编程,读写CAD文件,而读取的CAD图纸数据可以写成json文件,方便传给前台使用。
原理说明:MxFileConvert.exe启动Node.js,先加载我们提供的CAD模块,再加载js程序,然后提取CAD图纸数据。

开发步骤:
A.安装vs2019,node.js,TypeScript运行环境
B.打开安装目录下,Bin\MxDrawNode\MxDrawNode.sln工程
如下图:

例子中用DoGetEntityData得到图纸上对象数据,比如文本数据,然后写到json文件,该文件前台可以使用Get协议获取,然后使用。
得到指定层上的文字代码如下:
export class TestGetEntityData {
private sDwgFileName: string;
private getDataFilePath(): string {
return mxConvert.getConvertPath() + this.sDwgFileName + ".json";
}
// 得到图层"飘檐"上的文本
private getText1() {
// 把得到数据,写到sDataFile.
let sDataFile = this.getDataFilePath();
let ss: Mx.MrxDbgSelSet = new Mx.MrxDbgSelSetClass();
// 创建一个选择过滤条件.
let filter: Mx.MrxDbgRbList = new Mx.MrxDbgRbListClass();
// 只选择文字对象.
filter.addString("TEXT", 5020)
// 图层过滤.
filter.addString("飘檐", 8);
// 得到图上所有文字对象.
ss.allSelect(filter);
let dataObject: any = {};
let iCount = ss.count;
for (let i = 0; i < iCount; i++) {
// 选择集不为空.
let txt: Mx.McDbText = Mx.MxType.MxCast<Mx.McDbText>(ss.item(i), Mx.MxType.TypeString.kMcDbText);
// 得到文字对象,文字内容.
if (txt) {
if (!dataObject[txt.layer]) {
dataObject[txt.layer] = [];
}
// 把文字对象数据返回.
let txtData: any = {};
txtData.txt = txt.textString;
txtData.posx = txt.position.x;
txtData.posy = txt.position.y;
dataObject[txt.layer].push(txtData);
}
}
// 保存数据文件.
MxFun.writeFile(sDataFile, JSON.stringify(dataObject));
}
public Do(filename: string) {
this.sDwgFileName = filename;
this.getText1();
}
}
C.编译程序,生成MxConvert.js
把dist\mxconvert目录下的所有js程序拷到Bin\Release\mxconvert目录下,覆盖原来的文件,如下图:


D.启动程序
命令行入MxDrawCloudServer\Bin\Release目录
执行代码:
MxFileConvert.exe {"srcpath":"0008.dwg","nodejs":1,"nodeparam":"4"}
运行提取程序,如下图:

成功执行..\Test目录,生成数据文件,如下图:

生成的 json文件内容:

E.错误查看,日志文件位置
在程序运行过程,出现错误信息,会自动写到日志文件中,日志文件,默认在如下目录:
C:\Users\MxDraw\AppData\Local\Temp\MxCloudDebug
如下截图:

日志文件内容:

H5云图后台读写CAD文件-在线CAD,网页CAD,网页浏览编辑CAD的更多相关文章
- 基于开源方案构建统一的文件在线预览与office协同编辑平台的架构与实现历程
大家好,又见面了. 在构建业务系统的时候,经常会涉及到对附件的支持,继而又会引申出对附件在线预览.在线编辑.多人协同编辑等种种能力的诉求. 对于人力不是特别充裕.或者项目投入预期规划不是特别大的公司或 ...
- 怎么在线预览.doc,.docx,.ofd,.pdf,.wps,.cad文件以及Office文档的在线解析方式。
前言 Office文件在线预览是目前移动化办公的一种新趋势.Office在线预览指的是Office系列的文件在线查看而不依附域客户端的存在.在浏览器或者浏览器控件中可以预览查看Word.PDF.Exc ...
- 免费在线CAD文件转换
AnyCAD Exchange Cloud 提供在线的CAD文件转换服务,包括二维图纸和三维模型的数据转换. 支持的格式有: DWG/DGN/DXF 到 PDF, SVG, DAE等的转换 STEP/ ...
- 编程读写CAD文件验证
背景 B/S应用系统,根据用户上传数据:业务数据和CAD坐标数据,经过一系列运筹算法运算后,输出一批坐标数据,作为给用户的规划结果.此时需要方便直观的给用户展示坐标数据.可选方式有两个: web页面画 ...
- PDF怎么转换为CAD文件?这两种方法你的会
在日常的办公中,我们最常见的文件格式就是PDF格式的,因为PDF文件的安全性是比较高的,可以防止不小心触碰到键盘修改文件内容,而且PDF文件便于进行文件的传输.但是有时候也需要将PDF转换成CAD,那 ...
- AD10 怎样精确导入CAD 文件
1. 在 AD10 中 PCB 的形状根据实际情况设定,设定的尺寸等信息略.2. CAD 导入的格式要 CAD2004 以下的版本,AutoCAD 文件(*.DXF 或*.DWG)即可. 3. ...
- CAD文件导入AD09
1.首先将CAD图纸倒出为DXF格式的文件. 2.在altium designer 的pcb编辑中点菜单文件--导入,在弹出的对话框中,选择导入文件的类型,选择 DWG,DXF类型.然后确定,再弹出的 ...
- 如何将CAD文件导入到Protel和PADS中
一. 如何把CAD中的板框图纸导入到Protel中? a. 在CAD中单位设置为“毫米”,并做简单的处理,板框图是有合并还是分解都无所谓,另存为R12(*dxf)格式文件. b. 打开DXP,新建PC ...
- arcgis10.2 打开CAD文件注记乱码
1.使用ARCGIS10.2打开CAD文件,图面显示的注记内容为乱码,属性表中的注记内容正常2.同样的CAD文件在ARCGIS9.3中打开正常出现此情况影响历史数据使用,请求ESRI技术支持注:系统添 ...
- C#、AE开发入门之打开CAD文件并显示
加载CAD文件稍显复杂一些,总体还是和前面基本类似 private void button3_Click(object sender, EventArgs e) { axMapControl1.Cle ...
随机推荐
- CF1250C Trip to Saint Petersburg
题目传送门 思路 线段树入门题. 不妨固定一个右端点 \(r\),把所有右端点小于 \(r\) 的区间都在 \(1\) 至此区间的左端点处 update 一个 \(p\),然后每次都给区间 \(1\) ...
- ABAP 辨析CO|CN|CA|NA|CS|NS|CP|NP
1.文档说明 本篇文档将通过举例,解析字符的比较运算符之间的用法和区别,涉及到的操作符:CO|CN|CA|NA|CS|NS|CP|NP 2.用法和区别 用法总览 以下举例,几乎都使用一个字符变量和一个 ...
- 解决veture和eslint冲突的问题
vscoder自带的veture和eslint存在冲突,主要表现在 末尾逗号,分号,单双引号的不一致.解决办法:1.npm install --save-dev prettier2.在根目录新建.pr ...
- Python爬虫-爬取17K小说
随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...
- ESXi 安装 Truenas Core 解决企业共享存储免费方案
服务器配置 创建虚拟机内存最少8+,建议选择32,CPU没啥用,我给了2,硬盘我选择了50G+8T,因为一个虚拟机无法使用两个存储池,所以全部使用非SSD硬盘,自带网卡删除,单独给一个直通网卡,建议上 ...
- 【1】部署环境python+pycharm+JDK+SDK+node安装+appium安装+Appium-python-client安装及配置+(模拟器)
安装SDK检查命令 adb doctor 安装JDK,SDK是为了手机端应用程序的访问去做的基础库的搭建 JDK,SDK环境变量需要在一块,不要一个上,一个下 JAVA_HOME Path 在一 ...
- Django,Flask中的request
request的结构获取 class Upload(Resource): def post(self): print(curPath) print(request.files['file'].__di ...
- 基于VS码代码时出现访问错误的个人理解
日常在VS写代码中,有时候我们将写好的代码调试出来会出现有未经处理的异常,在0x00000000XXXX处有未经处理的异常,写入位置0xFFFFFFFFFFFFXX时发生访问冲突. 类似于图中情况,遇 ...
- Vue项目使用/deep/报错:SassError: expected selector解决方案--亲测有效
项目npm run dev报错如下: 解决方法: 尝试用 ::v-deep 替换 /deep/ ,成功解决了问题. 效果如下图所示(完美解决~) 某些预处理器(例如Sass)可能无法>>& ...
- task 子线程添加数据到主线程 winfrom
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...