CAD中的dxf文件解析(一):准备工作

  1.引言

       CAD是工程中常见的画图软件,dxf是CAD中经常用到的文件,在工作中有用到对dxf文件进行解析的情况。这篇文章将说明如何用代码将dxf文件中的信息解析出来。

 

2.dxf文件(可以了解一下)

       DXF是一种开放的矢量数据格式,可以分为两类:ASCII格式和二进制格式;ASCII具有可读性好的特点,但占用的空间较大;二进制格式则占用的空间小、读取速度快。

       DXF文件是由很多的"代码"和"值"组成的"数据对"构造而成,这里的代码称为"组码"(group code),指定其后的值的类型和用途。每个组码和值必须为单独的一行的。

       DXF文件是由很多的"代码"和"值"组成的"数据对"构造而成,这里的代码称为"组码"(group code),指定其后的值的类型和用途。每个组码和值必须为单独的一行的。

       DXF 文件的基本组成如下所示:

●HEADER 部分 - 图的总体信息。每个参数都有一个变量名和相应的值。

●CLASSES 部分 - 包括应用程序定义的类的信息,这些实例将显示在 BLOCKS、ENTITIES 以及

●OBJECTS 部分-通常不包括用于充分用于与其它应用程序交互的信息。

●TABLES 部分 - 这部分包括命名条目的定义。

Application ID (APPID) 表

Block Recod (BLOCK_RECORD) 表

Dimension Style (DIMSTYPE) 表

Layer (LAYER) 表

Linetype (LTYPE) 表

Text style (STYLE) 表

User Coordinate System (UCS) 表

View (VIEW)表

Viewport configuration (VPORT) 表

●BLOCKS 部分- 这部分包括 Block Definition 实体用于定义每个 Block 的组成。

●ENTITIES 部分 - 这部分是绘图实体,包括 Block References 在内。

●OBJECTS 部分 -- 包括非图形对象的数据,供 AutoLISP 以及 ObjectARX应用程序所使用。

●THUMBNAILIMAGE 部分 -- 包括 DXF 文件的预览图。

●END OF FILE

 

3.开始进入解析(先从文件的ASCII码中的组码解析)

      需要准备dxf的解析库dxflib,链接如下:

   https://download.csdn.net/download/weixin_40196271/12471365

      以及在CAD中安装好帮助文件。可以去官网进行下载,需要安装在CAD中

https://knowledge.autodesk.com/zh-hans/support/autocad/learn-explore/caas/downloads/downloads/CHS/content/download-install-autocad-2021-product-help.html

     也可以用下面的链接进行下载,直接的帮助文档

https://download.csdn.net/download/weixin_40196271/12471381

      一般我们需要解析的部分会有两个,一个是dxf中的层的信息,一个是具体的图中的线,圆,圆弧,多段线等信息。

先来解析层。

(1)层的解析

层信息可以通过TABLES部分来进行解析。以下是帮助文档中对layer做的说明,打开dxf文件,查找到TABLES中layer的部分,可以对照找到相关的层的信息。

CAD中的dxf文件解析(一):准备工作_第1张图片CAD中的dxf文件解析(一):准备工作_第2张图片

dxflib中也是通过组码的信息来解析具体信息的。通常层信息比较有用的是图层名的信息。

(2)线的解析

线的信息可以通过ENTITIES部分来进行解析。以下是帮助文档中对line的说明。

CAD中的dxf文件解析(一):准备工作_第3张图片CAD中的dxf文件解析(一):准备工作_第4张图片

其中10,20,30后面对应的数字为起点的x,y,z左边,11,21,31后面对应的数字为终点的x,y,z坐标。

(3)圆的解析

圆的信息可以通过ENTITIES部分来进行解析。以下是帮助文档中对circle的说明。

CAD中的dxf文件解析(一):准备工作_第5张图片

其中10,20,30为x,y,z对应的圆心坐标,40为圆的半径。

(4)圆弧的解析

圆弧的信息可以通过ENTITIES部分来进行解析。以下是帮助文档中对arc的说明。

CAD中的dxf文件解析(一):准备工作_第6张图片

其中,10,20,30为x,y,z的圆心坐标,40为圆的半径,50为圆的起点角度(弧度制),51为圆的终点角度(角度制)

(5)多段线的解析

多段线的信息可以通过ENTITIES部分来进行解析。多段线是由多个角点连接起来的。一般我们解析LWPOLYLINE,POLYLINE属于旧版本了,不过有的时候也会出现。以下是帮助文档中对lwpolyline的说明:

CAD中的dxf文件解析(一):准备工作_第7张图片

其中,90为多段线中角点的个数,10,20为多段线中的角点的x,y坐标,42为角点的凸度,为角点对应的圆弧的圆心角的四分之一的正切(这么说有点复杂,后面会具体讲到)。一般我们会把角点信息进一步解析出来,变成线和圆的信息。

(6)椭圆的解析

椭圆的信息可以通过ENTITIES部分来进行解析。以下是帮助文档中对ellipse的说明。

CAD中的dxf文件解析(一):准备工作_第8张图片

其中,10,20,30为椭圆圆心的x,y,z坐标。11,21,31为相对于中心的长轴端点的x,y,z坐标,40为短轴与长轴的比例,可以用来计算长短轴半径。41,42为起始和终止角度(弧度制)。

 

4.未完待续

由于内容较多,具体的用dxflib中的解析见下一篇

你可能感兴趣的:(图像处理知识学习)