前文已经讲述了层参数的获取,下面就是图元数据的获取。DXF文件中图元数据基本都记录在ENTITIES段中。ENTITIES段的大体结构和其他段是一样的。前文有介绍,这里就不重复叙述了。ENTITIES段中有各种图元,如下图:
因为目前的项目需求,只解析点、线、圆、圆弧、椭圆、椭圆弧、多线段和样条曲线。
先说点。这个图形基本算是最简单的图元了。
上面是点中适用的码值和解释。
下面在贴出DXF中部分文档
0
POINT
5
27C
330
1F
100
AcDbEntity
8 //图元层信息
测试1
100
AcDbPoint
10 //X坐标值
2352.826650065656
20 //Y坐标值
1399.492594513477
30 //Z坐标值
0.0
这段就是一个完整的点信息的描述,在提取图形信息时,红色部分的内容才是有意义的。其他的基本可以忽略。
上段描述的就是在位置(2352.826650065656,1399.492594513477,0.0)有个点,处在图层“测试1”中。
提取的带代码和层信息的类似,修改部分基本可以通用,就不贴出来了。有兴趣就自己改改,没兴趣的就当没看过好了。
再写线的
举个例子
0
LINE
5
26A
330
1F
100
AcDbEntity
8 //图元层信息
测试1
100
AcDbLine
10 //线起始点 X坐标
2324.59038541245
20 //线起始点 Y坐标
1448.302561586974
30 //线起始点 Z坐标
0.0
11 //线终止点 X坐标
2363.997154938374
21 //线终止点 Y坐标
1448.302561586974
31 //线终止点 Z坐标
0.0
这里描述的就是一个起始点在(2324.59038541245,1448.302561586974,0.0)终止点在(2363.997154938374,1448.302561586974,0.0)的处在图层“测试1”中的线段。
接着写圆
按照上面的格式上个例子:
0
CIRCLE
5
26C
330
1F
100
AcDbEntity
8 //图元层信息
测试1
100
AcDbCircle
10 //圆心坐标 X
2326.995504497924
20 //圆心坐标 Y
1417.074504152281
30 //圆心坐标 Z
0.0
40 //圆半径信息
11.60916452779647
接上解释:圆心在(2326.995504497924,1417.074504152281,0.0)半径为(11.60916452779647)在图层“测试1”的圆。
后面在是圆弧
不多话,上实例
0
ARC
5
26D
330
1F
100
AcDbEntity
8 //图元层信息
测试1
100
AcDbCircle
10 //圆弧圆心坐标 X
2369.648533060235
20 //圆弧圆心坐标 Y
1407.103259317271
30 //圆弧圆心坐标 Z
0.0
40 //圆弧半径信息
18.18758538283407
100
AcDbArc
50 //圆弧起始角度
36.07782534783297
51 //圆弧结束角度
164.1016676978583
这里就是圆心在(2369.648533060235,1407.103259317271,0.0)半径为(18.18758538283407)起始角度为(36.07782534783297)终止角度为(164.1016676978583)在图层"测试1"的圆弧。
可以看出,圆弧比圆多了蓝色部分的信息。其中描述角度的信息默认是角度,即一圈360度的描述方式。这个方式似乎是可以修改的,但我没有仔细研究,有兴趣的可以在CAD资料中查找。在CAD中画圆弧都是按照逆时针来的。这个和一般的认知好像不一致,这个要注意下。
以上几个图元都有标准的,简单的数学公式,在解析出相关的信息后,可以直接而且简单的加以运用,所以在一章中都罗列出来。获取信息的代码,和层信息获取代码都大同小异。贴出来有点占地方,就算了。
后面的椭圆之类有各自的特异点,就单独开章说了。