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 
100Subclass marker (AcDbSpline) 210Normal vector (omitted if the spline is nonplanar)
DXF: X value; APP: 3D vector220, 230DXF: Y and Z values of normal vector70Spline flag (bit coded):
1 = Closed spline
2 = Periodic spline
4 = Rational spline
8 = Planar
16 = Linear (planar bit is also set) 71Degree of the spline curve72Number of knots73Number of control points74Number of fit points (if any)42Knot tolerance (default = 0.0000001)43Control-point tolerance (default = 0.0000001)44Fit tolerance (default = 0.0000000001)12Start tangent--may be omitted (in WCS).
DXF: X value; APP: 3D point.22, 32DXF: Y and Z values of start tangent--may be omitted (in WCS).13End tangent--may be omitted (in WCS).
DXF: X value; APP: 3D point.23, 33DXF: Y and Z values of end tangent--may be omitted (in WCS)40Knot value (one entry per knot)41Weight (if not 1); with multiple group pairs, are present if all are not 110Control points (in WCS) one entry per control point.
DXF: X value; APP: 3D point20, 30DXF: Y and Z values of control points (in WCS) (one entry per control point)11Fit points (in WCS) one entry per fit point.
DXF: X value; APP: 3D point21, 31DXF: Y and Z values of fit points (in WCS) (one entry per fit point)----------------------------------------中文说明:---------------------------------
样条曲线组码组码说明100子类标记 (AcDbSpline) 210法向矢量(如果样条曲线为非平面型,则省略)DXF:X 值;APP:三维矢量220, 230DXF:法向矢量的 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, 32DXF:起点切向的 Y 值和 Z 值 — 可以省略(在 WCS 中)13端点切向 — 可以省略(在 WCS 中)DXF:X 值;APP:三维点23, 33DXF:端点切向的 Y 值和 Z 值 — 可以省略(在 WCS 中)40节点值(每个节点一个条目)41权值(如果不为 1);对于多组对,如果均不为 1,则出现。10控制点(在 WCS 中);每个控制点一个条目DXF:X 值;APP:三维点20, 30DXF:控制点的 Y 值和 Z 值(在 WCS 中);每个控制点一个条目11拟合点(在 WCS 中);每个拟合点一个条目DXF:X 值;APP:三维点21, 31DXF:拟合点的 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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部