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

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: AutoCAD *.dxf文件解析,使用dxflib搞定polyline/spline/ellipse等复杂图形(★firecat推荐★)

一、简介


DXF官方帮助:https://help.autodesk.com/view/OARX/2019/ENU/


网络可以搜索到非常多的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:涵盖了上述的所有元素

image.png



图2:椭圆和样条曲线

image.png



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

image.png



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

image.png



二、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 中);每个拟合点一个条目
相关文章
|
2月前
|
XML Java 数据格式
java解析xml文件内容
java解析xml文件内容
34 0
|
5天前
|
存储 数据采集 数据可视化
深入解析GPS接收机的位置数据文件:项目实战从数据解析到可视化
全球定位系统(GPS)是现代技术的支柱之一,广泛应用于交通导航、科学研究、智能设备等领域。GPS接收机通过接收来自卫星的信号,确定设备的地理位置,并将这些位置信息记录在数据文件中。 这些数据文件通常包含大量的信息,如时间、位置、海拔高度、卫星状态等。本篇文章将通过解析这些数据文件,展示如何利用Python和Folium库实现数据的读取、处理和可视化,帮助读者深入理解GPS数据的处理过程。
|
14天前
|
监控 数据挖掘 Python
python3解析wav文件获取dtmf值
【8月更文挑战第5天】这段Python代码示例展示了如何解析WAV文件并检测其中的双音多频(DTMF)信号。它首先打开并读取WAV文件的内容,接着利用`numpy`和`scipy`库计算频谱图。通过定义标准的DTMF频率对,并在频谱中寻找这些特定的频率组合,从而识别出DTMF值。此代码可用于电话系统监控或音频数据分析项目中,以自动化检测和处理DTMF信号。
|
1月前
|
存储 分布式计算 DataWorks
MaxCompute产品使用合集之如何在代码中解析File类型的文件内容
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
57 11
|
19天前
|
安全 搜索推荐 数据挖掘
文件解析的终极工具:Apache Tika
文件解析的终极工具:Apache Tika
31 0
|
1月前
|
文字识别 Java Python
文本,文识08图片保存()上,最方便在于整体生成代码,serivce及实体类,base64编码保存图片文件,调用flask实现内部ocr接口,通过paddleocr识别,解析结果,base64转图片
文本,文识08图片保存()上,最方便在于整体生成代码,serivce及实体类,base64编码保存图片文件,调用flask实现内部ocr接口,通过paddleocr识别,解析结果,base64转图片
|
1月前
|
JavaScript
js 解析lrc文件(歌词)
js 解析lrc文件(歌词)
33 1
|
2月前
|
XML JavaScript Java
解析XML文件的几种方法
解析XML文件的几种方法
|
1月前
|
XML JavaScript Java
解析XML文件的几种方法
解析XML文件的几种方法
|
2月前
|
机器学习/深度学习 存储 算法
技术好文:ttf文件结构解析
技术好文:ttf文件结构解析
52 0

热门文章

最新文章

推荐镜像

更多