最近在做一个读取dxf格式文件的程序,大部分的几何信息都可以获取出来,一般都是通过读取polyline等实体的信息读出,但是这样不完全而且还有一点点小错误。经过测试,我发现insert对象里还有些东西没弄出来,但是,insert对象里存储的是一些点数据,以及数据之间的宽度等信息,而不是象polyline等实体一样,存有点数据还有点的连接关系。有谁知道,这中间存在一些什么样的联系,怎样才能完整的获取一个正确的dxf文件中的几何实体信息呢?
------解决方案--------------------------------------------------------
insert里面找块名,找到后去找对应的块定义,然后解释成基本实时就可以了。
100
子类标记 (AcDbBlockReference)
66
可变属性跟随标志(可选;默认值 = 0);如果属性跟随标志的值为 1,则跟随插入的将是一系列属性图元,并以一个 seqend 图元终止
2
块名
10
插入点(在 OCS 中)
DXF:X 值;APP:三维点
20, 30
DXF:插入点的 Y 值和 Z 值(在 OCS 中)
41
X 缩放比例(可选;默认值 = 1)
42
Y 缩放比例(可选;默认值 = 1)
43
Z 缩放比例(可选;默认值 = 1)
50
旋转角度(可选;默认值 = 0)
70
列计数(可选;默认值 = 1)
71
行计数(可选;默认值 = 1)
44
列间距(可选;默认值 = 0)
45
行间距(可选;默认值 = 0)
210
拉伸方向(可选;默认值 = 0, 0, 1)
DXF:X 值;APP:三维矢量
220, 230
DXF:拉伸方向的 Y 值和 Z 值(可选)
------解决方案--------------------------------------------------------
Blocks里面 包含多个 Block,每个Block里面包含多个 Entity。
在 Eitities里面 ,可以引用前面已经定义过的Blocks.
Insert BlockName