上文对于DXF文件的基础图元做了详细的解释,我认为的小白级的描述。对上文的图元定义为基础图元,是因为这些都能直接套用数学公式,拿到DXF中的数据就能使用。并且在显示的时候只用调用基础的系统API就能实现。其他几种解析的图元,会需要一些小小的转换。
先说下多线段。
这里有个特别的属性,凸度。这个是圆弧的一种描述方式。
设圆弧所包含的圆心角为A(弧度表示),则凸度=四分之一圆心角之正切值
凸度=sin(A/4)/cos(A/4)
凸度值的范围即sin(A/4)/cos(A/4)的取值范围,A=0~2*PI,0到正无穷,当A=360时,cos90=0,所以值无效
凸度的正负表明弧的方向。正表示逆时针,负值表示顺时针。0表示直线,1表示半圆。
没有凸度的多线段就是字面上的多线段,这时候表示一组连续线段的集合。如下实例
0
LWPOLYLINE
5
26B
330
1F
100
AcDbEntity
8 //图元层信息
测试1
100
AcDbPolyline
90
6
70
0
43
0.0
10 //多线段折点坐标 X
2325.515427482149
20 //多线段折点坐标 Y
1434.813515288826
10 //多线段折点坐标 X
2334.765848179141
20 //多线段折点坐标 Y
1440.911301575535
10 //多线段折点坐标 X
2346.051348490464
20 //多线段折点坐标 Y
1426.498357444138
10 //多线段折点坐标 X
2360.481998308269
20 //多线段折点坐标 Y
1439.617834296261
10 //多线段折点坐标 X
2375.65267854708
20 //多线段折点坐标 Y
1433.15048500898
10 //多线段折点坐标 X
2391.933412504283
20 //多线段折点坐标 Y
1439.433056018702
这些信息提取出来就能使用,和线类似。我这里要提的是带凸度属性的多线段。如下
0
LWPOLYLINE
5
2DA
330
1F
100
AcDbEntity
8 //图元层信息
测试1
100
A