AutoCad DXF 中文开发文档详解
在DXF文件中,我们最关心的是如何得到模型上各个点的坐标,并且用这些点连成许多个三用形,构成面,进而绘制出整个模型。在DXF文件的结构中,我们已经看到,DXF文件先叙述实体上各个点的坐标,然后叙述实体上有多少个面,每个面由哪些点构成。这样,我们至少需要2个数组来存储一个实体的信息,一个用于存储点的坐标,一个用于存储点序,我们可以把这2个数组放到一个结构中,如果模型中实体的数目不止一个是,我们就用这个结构来定义一个数组。在本文中,我们使用 Visual C++ 6.0 来写一个读取DXF文件的小程序。 在实际应用中,模型中实体的数目以及实体中点和面的数目都是不定的,为了有效地利用内存,我们选择MFC类库中的聚合类CobArray类所创建的对象vertex, sequence来存储和管理实体的点坐标和点序。 CObArray类是一个用来存放数组类的聚合类,它能根据要存进来的数组(或结构)多少自动进行自身大小的高速,而且这个类本身具有的成员函数使得我们对它的对象的操作更加方便、快捷,用它编的程序也易于读懂。 三维实体模型的模型信息中的一部分信息可以在标题段中读出,通过读取变量名为$UCSORG的三个变量,可以得到三维实体在世界坐标系中自身所定义的用户坐标系原点的三维坐标。通过读取$EXTMAX,$EXTMIN可以获知三维实体在世界坐标系中的范围,而其它部分的信息只有读完了全部DXF文件后才可以通过计算确定。对于三维实体模型的全部点坐标、点序,可以在实体段中按照前面介绍的DXF文件基本结构读出。现 在AutoCAD DXF文件的开发过程中,我们主要关注如何解析文件获取模型中各个点的坐标,然后使用这些点构建三角形以形成模型表面。DXF文件的结构是按顺序给出每个实体上的点坐标,接着说明每个实体包含的面数量及面的构成。为了存储这些信息,我们需要两个数组:一个用于存储点坐标,另一个存储点顺序。如果模型包含多个实体,我们可以将这两个数组封装在一个结构体中,并基于此结构体定义一个数组。 在本文的示例中,使用Visual C++ 6.0编写了一个小程序来读取DXF文件。考虑到模型中实体数量和各实体点、面的数量不确定性,为了有效管理内存,我们选择了MFC(Microsoft Foundation Classes)库中的聚合类CObArray来创建对象vertex和sequence,分别用于存储实体的点坐标和点顺序。CObArray类能自动调整大小以适应存储的数据量,其内建的成员函数使操作更便捷,代码也更易理解。 三维实体模型的一些关键信息,如用户坐标系原点(通过变量名$$UCSORG的三个变量获取)和实体在世界坐标系中的范围(通过$$EXTMAX和$$EXTMIN获取),可以在文件的标题段中读取。然而,其他信息,如所有点坐标和点顺序,需在读完整个文件后通过解析实体段来获得。 以下是对实现程序的进一步详细说明: 创建一个名为HEAD.H的头文件,定义VERTEX结构体存储点坐标,SEQUENCE结构体存储面的组成,以及myVertex结构体,用于存储实体名称、点坐标和面的组成。myVertex结构体中包含两个CObArray对象,分别用于存储VERTEX和SEQUENCE结构体。 接着,定义两个由CObject派生的类:CVertex和CSequence。CVertex类包含一个VERTEX结构体变量m_vertex,用于存储点坐标,而CSequence类包含一个SEQUENCE结构体变量m_sequence,用于存储面的组成。这两个类是为了能够将VERTEX和SEQUENCE结构体添加到CObArray对象中,因为CObArray仅接受CObject派生对象。 在.CPP文件中,我们需要实现CVertex和CSequence类的构造函数和其他相关函数,以便于在CObArray对象中正确地插入和管理数据。这些函数包括构造函数、析构函数以及用于复制数据到CObArray的函数。 通过这样的设计,我们能够有效地读取和处理DXF文件中的数据,构建出三维模型。在实际编程时,还需要实现文件读取逻辑,遍历DXF文件的各个部分,解析标题段和实体段,将数据填充到相应的结构体和类中,最后根据这些数据绘制出三维模型。
剩余63页未读,继续阅读
- 粉丝: 1
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Springboot+Vue的疗养院管理系统的设计与实现-毕业源码案例设计(源码+项目说明+演示视频).zip
- 基于Springboot+Vue的旅游推荐系统设计与实现-毕业源码案例设计(高分毕业设计).zip
- 11种概率分布的拟合与ks检验,可用于概率分析,可靠度计算等领域 案例中提供11种概率分布,具体包括:gev、logistic、gaussian、tLocationScale、Rayleigh、Log
- 基于Springboot+Vue的贸易行业crm系统-毕业源码案例设计(95分以上).zip
- 基于Springboot+Vue的秒杀系统设计与实现-毕业源码案例设计(高分项目).zip
- 西门子1200和三菱FXU通讯程序
- 基于Springboot+Vue的名城小区物业管理系统-毕业源码案例设计(高分毕业设计).zip
- 欧美风格, 节日主题模板
- 基于Springboot+Vue的民族婚纱预定系统的设计与实现-毕业源码案例设计(高分毕业设计).zip
- 基于Springboot+Vue的农商订单跟踪售后交流对接系统-毕业源码案例设计(源码+数据库).zip
- 海面目标检测跟踪数据集.zip
- 基于Springboot+vue的人力资源管理系统-毕业源码案例设计(高分毕业设计).zip
- 基于Springboot+Vue的商业辅助决策系统的设计与实现-毕业源码案例设计(95分以上).zip
- 基于Springboot+Vue的企业资产管理系统-毕业源码案例设计(源码+论文).zip
- 准Z源光伏并网系统MATLAB仿真模型,采用了三次谐波注入法SPWM调制,具有更高的电压利用效率 并网部分采用了电压外环电流内环 电池部分采用了扰动观察法,PO Z源并网和逆变器研究方向的同学可
- 基于Springboot+Vue的实习管理系统-毕业源码案例设计(高分项目).zip