欢迎来到天天文库
浏览记录
ID:34722706
大小:158.28 KB
页数:75页
时间:2019-03-10
《dxf中文开发文档详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、DXF中文开发文档详解在DXF文件中,我们最关心的是如何得到模型上各个点的坐标,并且用这些点连成许多个三用形,构成面,进而绘制出整个模型。在DXF文件的结构中,我们已经看到,DXF文件先叙述实体上各个点的坐标,然后叙述实体上有多少个面,每个面由哪些点构成。这样,我们至少需要2个数组来存储一个实体的信息,一个用于存储点的坐标,一个用于存储点序,我们可以把这2个数组放到一个结构中,如果模型中实体的数目不止一个是,我们就用这个结构来定义一个数组。在本文中,我们使用 VisualC++6.0来写一个读取DXF文件的小程序。 在实际应用中,模型中实体的数目以及实体中点和面的数目都是不定的,为了有
2、效地利用内存,我们选择MFC类库中的聚合类CobArray类所创建的对象vertex, sequence来存储和管理实体的点坐标和点序。 CObArray类是一个用来存放数组类的聚合类,它能根据要存进来的数组(或结构)多少自动进行自身大小的高速,而且这个类本身具有的成员函数使得我们对它的对象的操作更加方便、快捷,用它编的程序也易于读懂。 三维实体模型的模型信息中的一部分信息可以在标题段中读出,通过读取变量名为$UCSORG的三个变量,可以得到三维实体在世界坐标系中自身所定义的用户坐标系原点的三维坐标。通过读取$EXTMAX,$EXTMIN可以获知三维实体在世界坐标系中的范围,而其它部
3、分的信息只有读完了全部DXF文件后才可以通过计算确定。对于三维实体模型的全部点坐标、点序,可以在实体段中按照前面介绍的DXF文件基本结构读出。现在我们开始写这个程序。 先建立一个头文件HEAD.H定义如下的结构:VERTEX,SEQUENCE和类CVertex,Csequence。 typedefstruct{ floatx,y,z; }VERTEX;结构VERTEX用来存储点的坐标 typedefstruct{ inta,b,c; }SEQUENCE;结构SEQUENCE用来存储实体的面的组成 typedefstruct{ charobName[20];定义结构myVer
4、tex来存储实体的名字,点的坐标以及面的组成, CObArrayVertex;其中,点的坐标和面的组成是由聚合类CObArray定义的对象来 CObArraySequence;在存储的,我们可以把VERTEX结构和SEQUENCE结构加入到 }myVertex;这两个对象中保存 classCVertex:publicCObject {因为CObArray类的对象中只能加入由CObject派生的对象,所以 protected:我们还需要建立一个由CObject类派生的CVertex类。在CVertex类 CVertex();中有一个VERTEX结构的变量:m_vertex,信息
5、实际上是存储在这 DECLARE_DYNCREATE(CVertex)个变量中的。 virtual~CVertex(); //Attributes public:我们还需要建立一个由CObject类派生的CVertex类。在CVertex类 CVertex(VERTEX&ver); 中有一个VERTEX结构的变量:m_vertex,信息实际上是存储在这个变量中的,函数CVertex(VERTEX& ver)把VERTEX结构的变量 VERTEXm_vertex;存入CObArray对象中。 }; classCSequence:publicCObject {这也是一个由C
6、Object类派生的类,作用和刚才CVertex类一样, protected:只不过Csequence类是用来存储实体中面的组成(点序)的。 CSequence(); DECLARE_DYNCREATE(CSequence) virtual~CSequence(); public: CSequence(SEQUENCE&sequ); SEQUENCEm_sequence; }; 声明好结构与类后,我们还需要建立一个.CPP文件,来定义几个函数。 IMPLEMENT_DYNCREATE(CVertex,CObject) CVertex::CVertex() { }
7、CVertex::~CVertex()构造函数和销毁函数都是空的 { } CVertex::CVertex(VERTEX&ver) {这个函数的作用是:把一个VERTEX结构的数据存入变量m_vertex中 m_vertex=ver;它是这个类中最重要的一环。 } IMPLEMENT_DYNCREATE(CSequence,CObject) CSequence::CSequence() {
此文档下载收益归作者所有