DXF 中文开发文档详解 在 DXF 文件中,我们最关心的是如何得到模型上各个点的坐标,并且用这些点连成许多个三用形,构成面,进而绘制出整个模型
在 DXF 文件的结构中,我们已经看到,DXF 文件先叙述实体上各个点的坐标,然后叙述实体上有多少个面,每个面由哪些点构成
这样,我们至少需要 2 个数组来存储一个实体的信息,一个用于存储点的坐标,一个用于存储点序,我们可以把这 2 个数组放到一个结构中,如果模型中实体的数目不止一个是,我们就用这个结构来定义一个数组
在本文中,我们使用 Visual C++ 6
0 来写一个读取 DXF 文件的小程序
在实际应用中,模型中实体的数目以及实体中点和面的数目都是不定的,为了有效地利用内存,我们选择 MFC 类库中的聚合类 CobArray 类所创建的对象 vertex, sequence 来存储和管理实体的点坐标和点序
CObArray 类是一个用来存放数组类的聚合类,它能根据要存进来的数组(或结构)多少自动进行自身大小的高速,而且这个类本身具有的成员函数使得我们对它的对象的操作更加方便、快捷,用它编的程序也易于读懂
三维实体模型的模型信息中的一部分信息可以在标题段中读出,通过读取变量名为$UCSORG 的三个变量,可以得到三维实体在世界坐标系中自身所定义的用户坐标系原点的三维坐标
通过读取$EXTMAX,$EXTMIN 可以获知三维实体在世界坐标系中的范围,而其它部分的信息只有读完了全部 DXF 文件后才可以通过计算确定
对于三维实体模型的全部点坐标、点序,可以在实体段中按照前面介绍的 DXF 文件基本结构读出
现在我们开始写这个程序
先建立一个头文件 HEAD
H 定义如下的结构:VERTEX, SEQUENCE 和类 CVertex, Csequence
typedef struct { float x,y,z; }V