AutoCAD *.dxf文件解析,使用dxflib搞定polyline/spline/ellipse等复杂图形(★firecat推荐★)

一、简介

DXF官方帮助:Help

网络可以搜索到非常多的dxf解析博客,但是几乎没有人能完整地实现polyline/spline/ellipse等复杂图形的解析和绘制。

因为dxf的解析较为复杂,涉及的元素很多,例如block解析,图形平移,缩放,参照系坐标等等,另外还有polyline/spline/ellipse等复杂图形,而polyline又存在凸度的问题需要解决。

dxflib开源库实现了dxf文件的解析。所有的图元解析完后,都会通过DL_CreationAdapter的虚函数接口回调,所以我们要继承这个类,重写想绘制的图元的方法,比如直线对应的就是virtual void addLine(const DL_LineData&); 这个DL_LineData结构体数据保存的就是我们要绘制直线的数据。
本人使用dxflib开源库,连续奋战,克服重重困难,终于实现了以下元素的解析和绘制:

元素:point、line、circle、arc、polyline、spline、ellipse、text

其他:layer、block、insert、min、max

绘制图形,使用了opencv,把dxf转化成为png文件。以下举例说明:

图1:涵盖了上述的所有元素

图2:椭圆和样条曲线

图3:polyLine多线实体,注意四个角的倒角圆弧,就是凸度计算得来

图4:图形旋转平移缩放的经典案例

二、DXF Spline的格式说明

Group codes Description 
100
 Subclass marker (AcDbSpline) 
 
210
 Normal vector (omitted if the spline is nonplanar)
DXF: X value; APP: 3D vector
 
220, 230
 DXF: Y and Z values of normal vector
 
70
 Spline flag (bit coded):
1 = Closed spline
2 = Periodic spline
4 = Rational spline
8 = Planar
16 = Linear (planar bit is also set) 
 
71
 Degree of the spline curve
 
72
 Number of knots
 
73
 Number of control points
 
74
 Number of fit points (if any)
 
42
 Knot tolerance (default = 0.0000001)
 
43
 Control-point tolerance (default = 0.0000001)
 
44
 Fit tolerance (default = 0.0000000001)
 
12
 Start tangent--may be omitted (in WCS).
DXF: X value; APP: 3D point.
 
22, 32
 DXF: Y and Z values of start tangent--may be omitted (in WCS).
 
13
 End tangent--may be omitted (in WCS).
DXF: X value; APP: 3D point.
 
23, 33
 DXF: Y and Z values of end tangent--may be omitted (in WCS)
 
40
 Knot value (one entry per knot)
 
41
 Weight (if not 1); with multiple group pairs, are present if all are not 1
 
10
 Control points (in WCS) one entry per control point.
DXF: X value; APP: 3D point
 
20, 30
 DXF: Y and Z values of control points (in WCS) (one entry per control point)
 
11
 Fit points (in WCS) one entry per fit point.
DXF: X value; APP: 3D point
 
21, 31
 DXF: Y and Z values of fit points (in WCS) (one entry per fit point)
 
----------------------------------------中文说明:---------------------------------
样条曲线组码
 
组码
 说明
 
100
 子类标记 (AcDbSpline) 
 
210
 法向矢量(如果样条曲线为非平面型,则省略)

DXF:X 值;APP:三维矢量
 
220, 230
 DXF:法向矢量的 Y 值和 Z 值(可选)
 
70
 样条曲线标志(按位编码):

1 = 闭合样条曲线

2 = 周期样条曲线

4 = 有理样条曲线

8 = 平面

16 = 线性(同时设置平面位) 
 
71
 样条曲线的阶数
 
72
 节点数
 
73
 控制点数
 
74
 拟合点数(如果有)
 
42
 节点公差(默认值 = 0.0000001)
 
43
 控制点公差(默认值 = 0.0000001)
 
44
 拟合公差(默认值 = 0.0000000001)
 
12
 起点切向 — 可以省略(在 WCS 中)

DXF:X 值;APP:三维点
 
22, 32
 DXF:起点切向的 Y 值和 Z 值 — 可以省略(在 WCS 中)
 
13
 端点切向 — 可以省略(在 WCS 中)

DXF:X 值;APP:三维点
 
23, 33
 DXF:端点切向的 Y 值和 Z 值 — 可以省略(在 WCS 中)
 
40
 节点值(每个节点一个条目)
 
41
 权值(如果不为 1);对于多组对,如果均不为 1,则出现。
 
10
 控制点(在 WCS 中);每个控制点一个条目

DXF:X 值;APP:三维点
 
20, 30
 DXF:控制点的 Y 值和 Z 值(在 WCS 中);每个控制点一个条目
 
11
 拟合点(在 WCS 中);每个拟合点一个条目

DXF:X 值;APP:三维点
 
21, 31
 DXF:拟合点的 Y 值和 Z 值(在 WCS 中);每个拟合点一个条目
 

三、可执行程序

exe可执行程序可以打开链接下载运行:

AutoCAD*.dxf文件解析,使用dxflib搞定polyline/spline/ellipse等复杂图形_DXFLIB-C++工具类资源-CSDN下载

鼠标双击运行run.dat即可。支持WinXP/Win7/Win10系统。运行之后dxfparse.exe会把dxf解析并转化成png图片格式。run.dat可以使用txt文本打开编辑,里面可以修改dxf文件路径。

Qt版本:

我的Qt作品(6)使用Qt完整解析dxf文件并绘制(支持椭圆和样条曲线)_libaineu2004的博客-CSDN博客_qt读取dxf文件

作者的联系方式:

423776537@qq.com

  • 12
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 34
    评论
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值