读入dxf文件后,如何判断其大小?(200分)

  • 主题发起人 主题发起人 tempc
  • 开始时间 开始时间
T

tempc

Unregistered / Unconfirmed
GUEST, unregistred user!
我编了一个程序读取dxf文件并要将其显示出来,但是不知道dxf文件中哪个字段是表示图像
大小的,另外dxf文件中各种数值对应的单位是什么?
 
下面是DXF画图区大小的GROUP及说明,我从HELP中拷下来的:
$EXTMAX 10, 20, 30 X, Y, and Z drawing extents upper-right corner (in WCS)
$EXTMIN 10, 20, 30 X, Y, and Z drawing extents lower-left corner (in WCS)

贴一段DXF的资料:
DXF文件的结构很清楚,具体如下:
1. 标题段(HEADER )
有关图形的一般信息都可以DXF 文件的这一节找到,每一个参数具有一个变量名和一个相关值。
2. 表段
这一段包含的指定项的定义,它包括:
a、
线形表(LTYPE)
b、
层表(LYER)
c、
字体表(STYLE)
d、
视图表(VIEW)
e、
用户坐标系统表(UCS)
f、
视窗配置表(VPORT)
g、
标注字体表(DIMSTYLE)
h、
申请符号表(APPID)
3. 块段(BLOCKS)
这一段含有块定义实体,这些实体描述了图形种组成每个块的实体。
4. 实体段(ENTITIES )
这一段含有实体,包括任何块的调用。
5. END OF FILE(文件结束)

下面是对DXF的基本结构举一实例进行说明:
0 0 后接SECTION
SECTION 表明这是一个段的开始
2 2 后接的是段名
HEADER 说明该段是HEADER 段(标题段)
9
$ACADVER 文件是由AUTOCAD 产生的
1
AC1008
9 9 后接 $UCSORG
$UCSORG 用户坐标系原点在世界坐标系中的坐标
10 10 对应 X
0.0 X 的值
20 20 对应 Y
0.0 Y 的值
30 30 对应 Z
0.0 Z 的值
9
$UCSXDIR 这是一段不太相关的部分,略去
10
1.0
... ....
9 9 后接 $EXTMIN
$EXTMIN 说明三维实体模型在世界坐标系中的最小值
10 10 对应 X
-163.925293 X 的值
20 20 对应 Y
-18.5415860.0 Y 的值
30 30 对应 Z
78.350945 Z 的值
9 9 后接 $EXTMAN
$EXTMAX 说明三维实体模型在世界坐标系中的最大值
10 10 对应 X
202.492279 X 的值
20 20 对应 Y
112.634300 Y 的值
30 30 对应 Z
169.945602 Z 的值
0 0 后接 ENDSEC
ENDSEC 说明这一段结束了
0 0 后接SECTION
SECTION 表明这是一个段的开始
2 2 后接的是段名
TABLES 说明该段是TABLES 段(表段)
... ... ... ... 该段对我们不太相关,此处略去不进行说明
0 0 后接 ENDSEC
ENDSEC 说明这一段结束了
0 0 后接SECTION
SECTION 表明这是一个段的开始
2 2 后接的是段名
ENTITIES 说明该段是ENTITIES 段(实体段)这是我
0 们要详细说明的段,该段包含了所有实体的
POLYLINE 点的坐标和组成面的点序。0后接POLYLINE
8 表明以下数据是对于一个新的实体;
OBJECT01 8后接的字符串是这个实体的名称
66
1
70 从66 1 到70 64
64 说明该实体是由许多小平面组成的
71
38 71 38说明该实体共有38 个点
72
72 72 72 说明该实体由72 个三角形构成
0 0 VERTEX
VERTEX 表明后面紧跟着的是实体的数据
8
OBJECT01
10 对应X 坐标
-163.925293 X 的值
20 对应Y 坐标
-17.772665 Y 的值
30 对应Z 坐标
128.929947 Z 的值
70 70 192
192 表明上面的数据信息是点的坐标
0 每一个从0 VERTEX 到70 192 之间
VERTEX 的一小段是点的坐标
... ... ...
70
192
0
VERTEX
8
OBJECT01
10
0
20
0
30
0 当70 后跟128 时,表明该实体的每个点的坐标数据已经记录
70 完了,下面紧跟着的是记录这些点是以什么样的方式组合成各
128 个三角形。
71 71、72、73 后面跟着的值表明某一个三角形是第二个、第
2 一个、第四个点构成的,点的顺序是按照记入DXF 文件的顺
72 序。当某一值为负数时,则表明该点到下一点的线不要画出,
1 如果要画三维实体的线型图,就必须使用这一特性,否则线条
73 将会出现紊乱。
-4
0
VERTEX
... ... ... ...
0 0 后接SEQEND 表明该实体的数据已经全部记录完了
SEQEND
8
OBJECT01
0
POLYLINE 0 后接POLYLINE 表明以下又是一个新的实体
... ... ... ...
0
ENDSEC 0 后接ENDSEC 表明这是该段的结尾
0
EOF 0后接EOF 表明这个DXF 文件结束了

建议你去找找DXF格式相关的资料吧。
 
to Huzzz:
我原来的处理方法是,用$EXTMAX的X, Y值分别减去$EXTMIN的X, Y值,得到图的宽和高,
但是在实际处理图片时,发现有些dxf文件的$EXTMAX的X, Y或者Z的值反而要小于$EXTMIN的
X, Y或者Z的值,所以就对原来的处理方法产生了怀疑。
另外想请教您这些数值的单位是多少?英寸吗?
 
in WCS 世界坐标系,单位应该是米吧(我不确定)。
 
to Huzzz:
非常感谢您的回答,您能否告诉我为什么有些dxf文件的$EXTMAX的X, Y或者Z的值反而
要小于$EXTMIN的X, Y或者Z的值。谢谢。
 
re tempc:
不用客气。我没有见过你这种情况,也不知道为什么会这样。这些DXF文件都是
AUTOCAD保存的吗?(如果不是,你用AUTOCAD打开再另存为DXF。如果还是那样,
那就说明是正常的)其它软件保存DXF时可能不严格按DXF格式写入。
 
后退
顶部