DWG-DXF图纸解析及查看

DWG-DXF图纸解析及查看

三月 28, 2021

DWG-DXF图纸解析及查看

目标:

能够解析dwg格式文件,以及通过web查看

开源方案思路:

将dwg格式的文件转换为公开格式的dxf文件,之后通过开源的代码与在线查看

实现过程

  1. 通过libredwg(https://github.com/LibreDWG/libredwg)把dwg格式转换成dxf格式

此时的dxf可以直接打开查看其中的内容、注意这里我转换出来的dxf为gbk格式

  1. 使用fs和dxf-parser(https://github.com/gdsestimating/dxf-parser)读取解析
1
2
3
4
5
6
7
8
9
10
11
const fs = require('fs');
const DxfParser = require('dxf-parser');

const rbuf = fs.readFileSync('文件目录', 'utf8');
const parser = new DxfParser();
try {
const dxfData = parser.parseSync(rbuf);
//这里解析出来的为 json 格式
} catch (err) {
ctx.body = console.error(err.stack);
}
  1. 使用view-dxf(https://github.com/meng885234/view-dxf)查看

类似的还有https://github.com/gdsestimating/three-dxf 但是加载库时直接报错

1
2
3
4
5
6
import Viewer from 'view-dxf'
new Viewer(dxfData, document.getElementById('cad-view'), 2000, 2000, dxfData, (dxfCallback) => {
console.log(dxfCallback, '用户操作之后的回调函数')
})
<div id="cad-view
"></div>

但遇到带有中文的dxf文件是解析会报错,猜测是由于解析出的json中带有中文的key值所致

此时已可进行拖动与放大

商业方案解决思路

先说下,这些厂商都没有给我钱,我只是和大家一样通过搜索引擎寻找的解决方案。如果条件允许,我更希望大家能更多的支持开源事业,将我们的中文开源社区做到世界最佳。

  1. http://www.xunjiecad.com/
  2. http://www.mxdraw.com/download.html
  3. https://cadviewer.com

CADViewerJS思路

CADViewerJS有试用版,这里拿它举个例子 CADViewerJS试用版下载地址

https://cadviewer.com/alldownloads/

下载的内容有三部分,依次为:

前端html的部分

后端服务的部分

cad相关文件解析器的部分

这三者需要相互配合才能实现正常功能

之后按照官方文档进行配置启动即可

https://cadviewer.com/cadviewertechdocs/handlers/nodejs/

实现过程

下载完后 将前端与后端部分解压到

1
c:/nodejs/cadviewer

其中的cad相关文件解析器的部分需要放到如下图的位置

CADViewer_config.json中的内容替换成CADViewer_config_nodejs.json中的内容

1
2
3
4
5
6
#安装相关依赖并启动服务
npm i express
npm i request
node CVserver-v6_4_21.js
npm install http-server -g
http-server -p 8081

前端需要替换的部分为

这里的html为你想要访问的html页面,下方的文件为你想要查看的cad文件

https://tcs-devops.aliyuncs.com/storage/1123127158175f0d221f49b031bf27a3b028?Signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBcHBJRCI6IjVlNzQ4MmQ2MjE1MjJiZDVjN2Y5YjMzNSIsIl9hcHBJZCI6IjVlNzQ4MmQ2MjE1MjJiZDVjN2Y5YjMzNSIsIl9vcmdhbml6YXRpb25JZCI6IiIsImV4cCI6MTYxNzUyNzU5MSwiaWF0IjoxNjE2OTIyNzkxLCJyZXNvdXJjZSI6Ii9zdG9yYWdlLzExMjMxMjcxNTgxNzVmMGQyMjFmNDliMDMxYmYyN2EzYjAyOCJ9.xJuxOkgHQumZcaYCGeZdMLH-Qv9i6Y6_eeBg9OMmeXE&download=image.png

https://cadviewer.com/alldownloads/fonts/

下载字体以支持中文字体

字体放置位置为

1
C:\nodejs\cadviewer\converters\ax2020\windows\fonts