1.背景介绍
1.1 什么是块
块相当于一个“标准件”,当你要用的时候可以随意插入,插入的时候可以旋转角度,还可以定义比例。块 ,在CAD中,就是一个、或一组图形实体的总称,可以包含任意对象,简单的点、复杂的图纸集合均可。定义块之后,就可以多处应用,减轻重复性绘图工作,定义块的属性后,可以便于统计。
1.2 增强属性块
增强属性块可以理解为添加了自定义属性的块。增强属性块由两个部分组成:
- 固定属性图形,比如图中的圆形和圆中间的分隔线;
- 变量属性内容,图中的数字编号就是可以编辑的变量。
1.3 自定义实体
自定义实体可以理解为应用cad提供的基础绘制功能(画线,画圆等)绘制好图形后,并赋予自定义的属性信息,后续按照自己的类型定义命名为特定的类型。例:我们可以画Line,然后命名为CustomLine。
2.可行技术方案介绍
2.1 应用FreeCAD内置库
- FreeCAD:开源,2D支持较好,对DXF支持较好。需要使用 TeighaFileConverter(商业软件)将 DWG格式转换为 DXF格式,因为 FreeCAD 基本不支持DWG格式。
参考:FreeCAD and DWG Import - FreeCAD Documentation
结论:不支持DWG格式,不满足技术要求。
2.2 开源LibreDWG库
- 版本支持:
- LibreDWG能够解析CAD 2000-2022不同版本,对于低版本的cad有待验证(2008版本以下).
- 2008版本DWG在进行解析时,会丢失以下图元(图片、句柄对象、代理对象、用户坐标系、VBA对象、被引用和参照对象等)。
- 解析能力:
-
解析增强块解析:下图ATTRIB为属性块的属性定义,经过调试,libredwg未能读取属性定义key和value。
-
解析自定义实体:LibreDWG未有CAD自定义实体,libredwg会将自定义实体按照基础图元进行解析(点、直线、多义线等),下边左边的图是天正墙(自定义实体),右边为libredwg解析后画线的效果。
-
结论:LibreDWG不能读取增强属性块内的 自定义属性信息。LibreDWG不能解析自定义实体。
2.3 OpenDwg 工具库
官网地址opendwg.org(怀疑官网被买了,全是投资交易的内容)。个人用途使用此第三方开源库免费,如果是商用用途,需要交纳版权费用。
LX-Viewer基于OpenDWG进行的开发,但是用来进行dwg格式解析、转换等,但此项目2005年之后不再进行维护https://lx-viewer.sourceforge.net/download.php。
结论:opendwg的代码国外已经不再进行维护,已经停止升级。所以此技术路线不能做为开发。
2.4 ODA的Drawing工具库
开放设计联盟是一个非营利性技术联盟,为开发工程应用程序提供高级工具包。该联盟的产品组合包括可在所有常见桌面、移动和网络平台上运行的互操作性、可视化、发布和 CAD 编辑解决方案。
解析能力:可以应用ODA解析属性块的属性数据:可以解析得到增强属性块的内部属性信息,无法用ODA提取自定义实体的属性信息。另外,它支持跨平台开发,支持Windows,Linux,Unix和Mac等。
ODA的收费:
收费版本1(限制版): 只提供SDK、技术文档,但不能给予第三方或者子公司使用,不能进行商业分销。
不能选择 可以解析Revit、Civil等 定制包。不提供源码。
费用 第一年为3K 美元/年,后续为2250美元/年。
收费版本2(专业版): 可以进行商业分销,但是不能给予第三方或子公司使用,可以提供完全定制的功能。 不提供源码。
费用第一年 为7500美元/年, 后续为4500美元。
如果额外选择解析revit的费用为:
收费版本3(完全版): 可以进行商业分销,能给予第三方或子公司使用,可以提供完全定制的功能。可以提供源码。
直接访问ODA Git存储库,ODA董事会提名,业务延续权。
费用第一年 为37500美元/年, 后续为18000美元
如果增加额外的revit解析需要增加12500美元
2.5 采用ObjectArx开发库
ObjectARX是AutoDesk公司针对AutoCAD平台上的二次开发而推出的一个开发软件包,它提供了以C++为基础的面向对象的开发环境及应用程序接口,能真正快速的访问AutoCAD图形数据库。
与以往的 AutoCAD 二次开发工具 AutoLISP 和ADS不同,ObjectARX应用程序是一个DLL(动态链接库),共享AutoCAD的地址空间,ARX 类库采用了标准的C++类库的封装形式。ObjectARX必须依赖CAD环境。
解析能力:应用ObjectARX脚本可以获取块、属性块的文字属性和几何信息。关于objectArx /CAD二次开发中“属性块”操作_cad二次开发遍历acadblock 属性-CSDN博客下图为具体实现代码。
3.方案选择
三.技术总结
不依赖Autodesk CAD环境,应用第三方库进行解析DWG文件。
名称 | 获取块几何信息 | 获取属性块几何信息 | 获取属性块属性信息 | 获取自定义实体几何信息 | 获取自定义实体属性 | 费用 |
FreeCAD | X | X | X | X | X | |
LibreDWG | √ | √ | X | X | X | 免费 |
OpenDwg ToolKit | X | X | X | X | X | 收费 |
ODA | √ | √ | √ | √ | X | 收费 |
依赖Autodesk CAD环境,应用欧特克提供的ObjectArx开发包进行编程
名称 | 获取块几何信息 | 获取属性块几何信息 | 获取属性块属性信息 | 获取自定义实体几何信息 | 获取自定义实体属性 | 费用 |
ObjectArx编程 | √ | √ | √ | √ | 待验证 | 免费 |
从跨平台,解析能力和开发效率等综合平库,选择使用ODA的Drawing SDK来实现。