编程读写CAD文件验证笔记

本文探讨了在B/S应用系统中如何将用户上传的CAD坐标数据以DWF/DXF格式展示,并着重对比了Python的ezdxf库与Java潜在解决方案在读写、编辑DXF文件上的实践。作者通过实验证明了Python ezdxf的编辑能力,并提到Java方面的研究尚在初期阶段。

背景

B/S应用系统,根据用户上传数据:业务数据和CAD坐标数据,经过一系列运筹算法运算后,输出一批坐标数据,作为给用户的规划结果。此时需要方便直观的给用户展示坐标数据。可选方式有两个:

  • web页面画图直接展示,能够迅速展示给用户结果,但用户只能根据图形大概位置估计,不能够看到很精细的位置,故该方式只可作为预览使用
  • 把坐标数据输出到CAD软件能够识别的文件中,用户下载文件后,直接用AutoCAD软件直接打开该文件,藉由CAD软件功能的丰富性,可以看到很精细的坐标位置,亦可利用AutoCAD二次人为调整加工。

    故:需要调研编程读写CAD文件的可行性

    AutoCAD文件格式

文件格式共同点不同点
DWGAutocad软件可直接读写并相互转换CAD的图形文件,DWG仅是CAD专用文件格式,
DXF^用于CAD与其它软件之间进行CAD数据交换的CAD数据文件格式,文本文件,文件可能比dwg大很多

故选用dxf格式作为调研格式

目标运行环境

  • Linux

编程语言考量

因项目中服务器端使用到了两种编程语言,故分别调研该两种编程语言

  • Java
  • Python

验证范围

本次验证是为了确认是否能够通过程序代码对CAD的dxf文件进行编辑,编辑以后保存的dxf文件能否被Autocad软件正确打开,数据是否会缺失,不同dxf年份格式的dxf文件是否可正确保存和打开。

各编程语言的可选开源包

Python
包名版本优缺点
ezdxf0.13直接读写dxf格式文件
pyautocad-必须运行在安装有AutoCAD软件的机器上
#### Java
包名版本优缺点
------
kabeja
YCAD
JDXF
jdwglib
Teigha必须运行在安装有AutoCAD软件的机器上
dxf

验证环境

  • 硬件 设备为惠普笔记本电脑,win10系统,64位。
  • 软件
    • Python 3.7
    • Java8
    • Autocad2015
    • Autocad2016
    • 以及一张dwg格式的工程cad图纸

验证过程

  1. 用CAD软件将DWG格式的工程图转成各年份的dxf格式(dxf2000, dxf2004, dxf2007, dxf2010, dxf2013, R12)
  2. 编写代码读入dxf格式文件并新建图层,在新建的图层上用代码画几个圆形和正方形,保存为对应年份的dxf格式文件
  3. 通过AutoCAD软件重新打开代码编辑过并保存的各年份dxf文件,核对是否画图成功,文件大小是否有改变。
  4. 通过AutoCAD自带的文件数据提取功能遍历CAD图中的所有元素,输出execl,核对元素数量是否有出入

验证结果

Python
  • ezdxf 能够正常读写dxf文件

    通过CAD软件打开dxf文件输出execl后发现原文件有887410个元素,代码画图保存后的文件有887415个元素,多出的五个元素为代码新增的一个圆形以及四条线段组成的矩形。元素数目是对应的

    Java
    Java各包文档偏少,多数是读取dxf文件,目前没有找到合适的用例或api去编写测试代码去编辑dxf文件,故目前给出验证可行性结论,有待继续深入研究

注意事项

  • DWG文件转换为R12 dxf格式时,会出现转换后的文件过大(600M),并且转换后的文件打不开。(Auto2015和Auto2016均会出现这种情况),故不能选用该版本的dxf
  • ezdxf库保存的dxf文件转换成DWG格式时,打开会跳出错误弹框,需要修复才能打开展示,修复后内容展示正常并且元素没有减少。

参考

1、先安装CAD2004或CAD2005,安装完重起计算机, 2、再安装YCUT2006共享版里SETUP.EXE, 3、安装时一直点<下一步>,直到完成 4、这样安装就全部完成了,下面讲一下设置。 5 应答传送方式为数据信号和应答信号低电平有效,同步传送为高电平有效(各厂家的单板机不同,效果不一样) 鑫赢数控简介 我公司专业销售线切割,雕铣机,小孔机,海棉切割机及研发各类电器和软件,生产,销售, 售后服务一条龙,拥有专业的科研人员和生产队伍,现就我公司生产的线切割变频机床电器 特点介绍如下: 本产品为线切割专用机床电器,集合运丝开,运丝关,水泵开,水泵关,断丝保护,刹车, 运丝调速,单边放电,短行程往复换向为一体。具有掉电自动刹车等功能, 有效防止掉电时电机因失控而造成断丝、丝筒超程。产品体积小、重量轻、功能齐全、性能稳定, 可整体取代传统交流接触器、继电器、可控硅等形式的机床电器系统。   性能参数如下: 1,3-56Hz调速 2,行程开关接12V电压。(解决老电路接220V电压引起的行程开关触点打火和漏电安全问题) 3,运丝柔和换相。(提高电机使用寿命和电机换相引起的抖丝与松丝问题, 从而提高加工光洁度和精度) 4,故障率低(选用正品元器件,有成熟的生产线和严格的出厂试验) 5 ,3-8Hz短行程自动往复换向(往复行程距离可调) 6 ,可实现单边放电(提高光洁度) 7 ,刹车无需外接电容(停电也有刹车) 8 ,低速上钼丝(安全) 9 ,接线简单(线少) 10 ,维修简单,插拔更换,无须太高专业技术(我方保修一年) 11 ,故障报警(行程开关损坏或过流,过压报警)   加工工艺如下: 1. 机器自动焊接  2. 线路板进行三防处理 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值