CAD中的dxf文件解析(一):准备工作
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 () 表
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应⽤程序所使⽤。
dxf文件怎么打开●THUMBNAILIMAGE 部分 -- 包括 DXF ⽂件的预览图。
●END OF FILE
3.开始进⼊解析(先从⽂件的ASCII码中的组码解析)
需要准备dxf的解析库dxflib,链接如下:
以及在CAD中安装好帮助⽂件。可以去官⽹进⾏下载,需要安装在CAD中
也可以⽤下⾯的链接进⾏下载,直接的帮助⽂档
⼀般我们需要解析的部分会有两个,⼀个是dxf中的层的信息,⼀个是具体的图中的线,圆,圆弧,多段线等信息。
先来解析层。
(1)层的解析
层信息可以通过TABLES部分来进⾏解析。以下是帮助⽂档中对layer做的说明,打开dxf⽂件,查到TABLES中layer的部分,可以对照到相关的层的信息。
dxflib中也是通过组码的信息来解析具体信息的。通常层信息⽐较有⽤的是图层名的信息。
(2)线的解析
线的信息可以通过ENTITIES部分来进⾏解析。以下是帮助⽂档中对line的说明。
其中10,20,30后⾯对应的数字为起点的x,y,z左边,11,21,31后⾯对应的数字为终点的x,y,z坐标。
(3)圆的解析
圆的信息可以通过ENTITIES部分来进⾏解析。以下是帮助⽂档中对circle的说明。
其中10,20,30为x,y,z对应的圆⼼坐标,40为圆的半径。
(4)圆弧的解析
圆弧的信息可以通过ENTITIES部分来进⾏解析。以下是帮助⽂档中对arc的说明。
其中,10,20,30为x,y,z的圆⼼坐标,40为圆的半径,50为圆的起点⾓度(弧度制),51为圆的终点⾓度(⾓度制)
(5)多段线的解析
多段线的信息可以通过ENTITIES部分来进⾏解析。多段线是由多个⾓点连接起来的。⼀般我们解析LWPOLYLINE,POLYLINE属于旧版本了,不过有的时候也会出现。以下是帮助⽂档中对lwpolyline的说明:
其中,90为多段线中⾓点的个数,10,20为多段线中的⾓点的x,y坐标,42为⾓点的凸度,为⾓点对应的圆弧的圆⼼⾓的四分之⼀的正切(这么说有点复杂,后⾯会具体讲到)。⼀般我们会把⾓点信息进⼀步解析出来,变成线和圆的信息。
(6)椭圆的解析
椭圆的信息可以通过ENTITIES部分来进⾏解析。以下是帮助⽂档中对ellipse的说明。
其中,10,20,30为椭圆圆⼼的x,y,z坐标。11,21,31为相对于中⼼的长轴端点的x,y,z坐标,40为短轴与长轴的⽐例,可以⽤来计算长短轴半径。41,42为起始和终⽌⾓度(弧度制)。
4.未完待续
由于内容较多,具体的⽤dxflib中的解析见下⼀篇

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。