编程读写CAD文件验证笔记
背景
B/S应用系统,根据用户上传数据:业务数据和CAD坐标数据,经过一系列运筹算法运算后,输出一批坐标数据,作为给用户的规划结果。此时需要方便直观的给用户展示坐标数据。可选方式有两个:
- web页面画图直接展示,能够迅速展示给用户结果,但用户只能根据图形大概位置估计,不能够看到很精细的位置,故该方式只可作为预览使用
- 把坐标数据输出到CAD软件能够识别的文件中,用户下载文件后,直接用AutoCAD软件直接打开该文件,藉由CAD软件功能的丰富性,可以看到很精细的坐标位置,亦可利用AutoCAD二次人为调整加工。
故:需要调研编程读写CAD文件的可行性AutoCAD文件格式
文件格式 | 共同点 | 不同点 |
---|---|---|
DWG | Autocad软件可直接读写并相互转换 | CAD的图形文件,DWG仅是CAD专用文件格式, |
DXF | ^ | 用于CAD与其它软件之间进行CAD数据交换的CAD数据文件格式,文本文件,文件可能比dwg大很多 |
故选用dxf格式作为调研格式目标运行环境
- Linux
- Java
- Python
dxf
文件进行编辑,编辑以后保存的dxf
文件能否被Autocad软件正确打开,数据是否会缺失,不同dxf年份格式的dxf文件是否可正确保存和打开。各编程语言的可选开源包 Python 【编程读写CAD文件验证笔记】|包名|版本|优缺点|
|--|--|--|
|ezdxf|0.13|直接读写dxf格式文件|
|
Java |包名|版本|优缺点|
|--|--|--|
|kabeja|||
|YCAD|||
|JDXF|||
|jdwglib|||
|Teigha||
|dxf|||
验证环境
- 硬件
设备为惠普笔记本电脑,win10系统,64位。 - 软件
- Python 3.7
- Java8
- Autocad2015
- Autocad2016
- 以及一张dwg格式的工程cad图纸
- 用CAD软件将DWG格式的工程图转成各年份的dxf格式(dxf2000, dxf2004, dxf2007, dxf2010, dxf2013, R12)
- 编写代码读入dxf格式文件并新建图层,在新建的图层上用代码画几个圆形和正方形,保存为对应年份的dxf格式文件
- 通过AutoCAD软件重新打开代码编辑过并保存的各年份dxf文件,核对是否画图成功,文件大小是否有改变。
- 通过AutoCAD自带的文件数据提取功能遍历CAD图中的所有元素,输出execl,核对元素数量是否有出入
- ezdxf
能够正常读写dxf文件
通过CAD软件打开dxf文件输出execl后发现原文件有887410个元素,代码画图保存后的文件有887415个元素,多出的五个元素为代码新增的一个圆形以及四条线段组成的矩形。元素数目是对应的
注意事项
- DWG文件转换为
R12
dxf格式时,会出现转换后的文件过大(600M),并且转换后的文件打不开。(Auto2015和Auto2016均会出现这种情况),故不能选用该版本的dxf - ezdxf库保存的dxf文件转换成DWG格式时,打开会跳出错误弹框,需要修复才能打开展示,修复后内容展示正常并且元素没有减少。
- http://docs.autodesk.com/ACD/...
- https://sourceforge.net/p/dxf...
本文由博客一文多发平台 OpenWrite 发布!
推荐阅读
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- HTML基础--基本概念--跟着李南江学编程
- 我的软件测试开发工程师书单
- 怎么将桌面上的CAD图纸添加到软件中进行BMP格式转换()
- 芯灵思SinlinxA33开发板Linux内核定时器编程
- 关于响应式编程的十个问题
- iOS-Swift-map|iOS-Swift-map filter reduce、函数式编程
- 零基础学习Python作业本(13)
- 网络编程基础--HTTP
- 我用我的坚持来推动读写