跳转至

推荐一些免费的DWG、DXF文件开源解析库

作为一名BIM行业的代码农民工,在软件开发中要经常对dwg文件进行读写操作,目前网上对于dwg文件的处理库都太少了,主要是都是收费居多,虽然有些能找到PJ版的,但也并不是很想用,反观处理dxf的开源库有不少。

于是想着,看看有什么办法能在后台把dwg转dxf,然后对dxf进行读取了。这样也可以达到变相读取dwg文件的效果。

这里先汇总一些目前找到一些对dwg、dxf文件读写的免费开源库,这些库所使用的语言有C、C++、C#、python

不要问为什么没有其它语言,因为其它语言不会,找了也没用

免费的开源库

libredwg

github: https://github.com/LibreDWG/libredwg

官网: https://savannah.gnu.org/projects/libredwg/

文档: https://libreplanet.org/wiki/LibreDWG

是纯C写的开源库,可以直接读取最新版本的dxf、dwg文件,写文件的话,dwg文件目前支持r1.1-r2000,dxf支持 r11-R2021,因为是纯C写的,解析速度很快。

libdxfrw

github: https://github.com/codelibs/libdxfrw

免费的C++开源库,出来较早,是比较成熟的dwg格式的解析库,bug少,但目前基本都不怎么更新了。可以读写dxf、dwg文件,对于dwg文件的读写只支持R14-2015版本的。

ACadSharp

github: https://github.com/DomCR/ACadSharp

免费的c#开源库,读写dxf、dwg的库,对dwg、dxf版本支持较高,目前兼容版本如下:

DxfReader DxfWriter DwgReader DwgWriter
AC1009
AC1012 ✔️ ✔️
AC1014 ✔️ ✔️ ✔️ ✔️
AC1015 ✔️ ✔️ ✔️ ✔️
AC1018 ✔️ ✔️ ✔️ ✔️
AC1021 ✔️ ✔️ ✔️
AC1024 ✔️ ✔️ ✔️ ✔️
AC1027 ✔️ ✔️ ✔️
AC1032 ✔️ ✔️ ✔️ ✔️

这个看着是很不错,不过这个库是新出的,比不上libdxfrw、Teigha之类的库,目前处于2.2版本的beta测试阶段。

ezdxf

github: https://github.com/mozman/ezdxf

开源免费的python库,用于dxf文件的解析,支持dxf版本有:R12, R2000, R2004, R2007, R2010, R2013 and R2018,用这个读写dxf文件挺不错。

收费的库

库名 官网 备注
Teigha https://www.opendesign.com/ ODA组织开发的,网上能找到的可用版本:4.0.2,
CAD.NET https://cn.cadsofttools.com/ 这个网上也能找得到"学习版本"

DWG转DXF

libredwg的源码中,就有一个转换的样例,是一个命令行程序,用于DWG转为DXF的,从github仓库中下载win64版本的文件

另外就是可以使用ODA开发的文件转换工具:

ODAFileConvert: https://www.opendesign.com/cn/guestfiles/oda_file_converter

b5bb230c47c592c7f05f9872bdd04117.png

这个也支持命令行转换

这个对于命令行的参数,官方没有过多的介绍,这里顺便记录一下

安装目录下有ODAFileConverter.exe文件,可以添加这个路径到环境变量,然后在终端输入

ODAFileConverter.exe ?

就会弹出这个参数的输入格式 6d809c7f2359acd3c4ba7f710d2d4194.png

即命令格式如下:

ODAFileConverter.exe 输入文件夹 输出文件夹 输出版本 输出格式 是否递归搜索(0否,1是) 0 *.DWG

示例:

ODAFileConverter.exe .\input\ .\out\ ACAD2018 DXF 0 0 *.DWG

  • input: 是待转换的dwg文件所在的目录路径,我这里是相对路径,可以写绝对路径
  • out:转换后要保存到那个目录下
  • ACAD2018:这个是转换后的版本,看上面的帮助截图中,版本有ACAD9-ACAD2018
  • DXF:要转成什么格式,支持DWG、DXF
  • 0:不递归搜索input文件夹
  • 0:不检查每个文件
  • *.DWG:输入的文件格式,即搜索Input文件夹下,所有DWG后缀的文件

ODA这个文件转换,转换之后的DXF,用AutoCAD打开会一直提示让你输入回车,无法预览,这应该是AutocAD不支持ODA转换后的DXF格式的原因。这个目前好像没什么解决的办法,之前我一度怀疑是我AutoCAD出问题了,后来才发现DXF也有不同的格式。。。AutoCAD软件自己导出的DXF就能正常打开,有些DXF不能打开的,就是AutoCAD不支持那种格式的DXF

目前后台DWG转DXF,可以试试LibreDWG的命令行程序

评论