墓石CAD设计系统出图模块的_第1页
墓石CAD设计系统出图模块的_第2页
墓石CAD设计系统出图模块的_第3页
墓石CAD设计系统出图模块的_第4页
墓石CAD设计系统出图模块的_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、墓石CAD设计系统出图模块的ObjectArx实现本科毕业论文(科研训练、毕业设计)题 目:墓石CAD设计系统出图模块的ObjectArx实现姓 名:丁学清学 院:软件学院系: /专 业:软件工程年 级:03复合(转专业)学 号:01061003指导教师: 朱宗番 职称:教授2004年 05月 30 日摘要AutoCAD是Autodesk公司开发的专门用于计算机绘图设计工作的软件,在各个行业有广泛的应用。ObjectArx是Autodesk公司提供的利用Visual C+6.0平台对AutoCAD进行二次开发的工具包。厦门*公司墓石CAD设计系统开发的目的是实现墓石产品的快速开发,使员工能在较

2、短的时间内完成石材的建模,分类部材化,赋属性,出图纸,其最终目的是为提高豪达公司的员工的工作效率,加快设计速度,减低其开发成本,争取更多客户。本文按照软件工程过程对系统的出图纸模块进行需求分析,构架设计,详细设计,以及编码实现,详细阐述设计思想以及在设计开发过程中软件工程思想的应用。关键字:AutoCAD,ObjectArx,石材设计系统,软件工程AbstractAutoCAD is the Autodesk exclusively software which used for the company development calculator painting design work ,

3、 there is extensive application in the each profession.The ObjectArx is the tool that the AutoCAD carry on developping two times ,using VisualC+ 6.0.The company gravestone CAD design system development is a fast development that carries out the gravestone product, making the employee be able to comp

4、lete the stone material to set up the mold in shorter time. Its purpose is raising the employee's work efficiency , speeding to design the speed, turning down it develop the cost and fighting for more customers.This article carries on the need analysis to a diagram paper mold piece of the system

5、 according to the software engineering process,the frame design, detailed design, and codeing, detailed elaborate.the software engineering thought is used in design develop process.Keywords:AutoCad, ObjectArx, ,Software Engineering目录1 系统概述61.1 课题背景 61.2 AutoCAD发展概述 61.3 ObjectArx发展概述 61.4 开发工具以及支持条件

6、 61.4.1 Visual C+ 6.0 71.4.2 Arx数据库浏览器 72 需求分析72.1 客户工作流程分析72.2 功能需求分析72.3 性能需求分析72.4 系统可扩展性以及可移植性需求分析72.4.1 可扩展性需求分析72.4.2 可移植性需求分析72.5 详细需求分析83 概要设计123.1 总体设计123.2 接口设计133.2.1 内部接口设计133.2.2 外部接口设计143.2.3 公共函数类接口设计153.3 系统维护设计174 详细设计174.1 图纸产生模块详细设计174.1.1 模块功能描述174.1.2 接口与属性194.1.3 数据结构与算法194.1.4

7、 其他214.2 图纸属性修改模块详细设计214.2.1 模块功能描述214.2.2 接口与属性214.2.3 数据结构与算法224.2.4 其他224.3 文字输入模块详细设计224.3.1 模块功能描述224.3.2 接口与属性224.3.3 数据结构与算法234.3.4 其他234.4 总图模块详细设计234.4.1 模块功能描述234.4.2 接口与属性244.4.3 数据结构与算法244.4.4 其他255 编码以及实现255.1 编码规范255.2 部分代码266 结束语286.1 改进与分析286.2 缺陷286.3 工作展望28参考文献28致谢281 系统概述1.1 课题背景福

8、建是全国著名的石材产地。中国的石材产业已经逐渐做大做强,而福建石材则在国内的石材产业中处于领头羊的位置。目前我国每年石材出口总额约10亿美元,福建每年石材的出口额为7.5亿美元,而厦门的石材出口额为4.5亿美元,占全国石材出口总额的近二分之一,而且还以每年20%的速度递增,目前厦门市以及其周边地区的石材企业大都采用AutoCAD为设计软件,但都存在科技含量低,技术水平不足等问题,未经过二次开发的AutoCAD 软件对石材设计人员的素质要求比较高,设计的成品难以满足客户(尤其是日本和欧洲市场的客户)的需要,企业急需个性化的石制品计算机辅助设计软件。1.2 AutoCAD发展概述 计算机辅助设计(

9、Computer-Aided Design,即CAD)的技术发展非常迅速,在机械、电子、土木、广告等领域中都有比较广泛的应用,随着CAD技术的发展,各种商品化的 CAD软件也应用而生并迅速发展,AutoCAD软件就是其中的优秀软件之一。Autodesk公司自从开发了auroCAD系列软件以来,取得了巨大的成功,现在已经成为全世界广大使用CAD软件的科技人员非常喜欢使用的软件之一。 Autodesk公司在软件基础上提供了支持多种开发工具的二次开发包,开发人员可以在此基础上进行二次开发,减少重复输入,提高设计效率,满足不同客户的需要,对石制品设计而言具有极为重要的显示意义和使用价值。1.3 Obj

10、ectArx发展概述 AutoCAD有好几种编程接口,最原始的一种是AutoLisp,它是一种解释性的编程语言,最早出现在1985年发行的AutoCAD2.5中。四年后,在Autocad r10中增加了称为ads的c语言编程能力。ObjectArx是AutoCAD r13 之后推出的一个全新的面向对象的二次开发环境,是Autocad第一次提供面向对象的二次开发工具。AutoCAD r14自身的很大一部分就是用Arx开发的。ObjectArx 在AutoCAD R14中有了很大的加强。它使得用户可以使用c+来开发AutoCAD的应用程序,扩充了AutoCAD的类和协议,而且可以建立和AutoCA

11、D的内部命令在同一层次上的命令。随着AutoCAD2000的发布,Autodesk公司也推出了新一代的强大的二次开发工具。ObjectArx2000使用面向对象的c+应用程序开发机制,以动态连接库的形式共享AutoCAD的地址空间,对AutoCAD的直接函数进行调用,避免了新的系统开销引起的性能下降。它可充分利用c+的继承性,封装性和多态性等特点,大大提高了应用程序的安全和代码的可重用性。综上所述ObjectArx2000是最适合进行CAD二次开发的工具。1.4 开发工具以及支持条件1.4.1 Visual C+ 6.0Visual C+6.0是微软公司推出的c语言开发工具。 1.4.2 Ar

12、x数据库浏览器Arx数据库浏览器是前Autodesk公司员工开发的用来观察CAD内部表结构变化的工具,利用它可以了解Arx的工作方式,加快开发进度。 2 需求分析2.1 客户工作流程分析 在进行详细的调查和分析之后,将客户的工作流程总结如下: 1:在国外的石制品经营者接到客户(最终客户)定单和设计草图。 2:在国内的石制品公司接到设计草图,并利用CAD进行详细的设计得到设计总图和渲染效果图。 3:设计人员将设计总图和渲染效果图发往国外。 4:最终客户得到总图和渲染效果图,满意则确认定单,不满意则取消定单。 5:在国内的石制品公司接到确认后的定单,利用CAD进行详细的设计,得到详细加工书(包括各

13、个部件的加工尺寸,加工方式等) 6:将图纸发往工厂进行加工。 7:将成品装船,发往国外。根据以上的工作流程分析,把握客户的需求进行详细的需求分析整理。2.2 功能需求分析本模块在功能方面要达到以下设计目标: 1:在接到客户设计草图后,能够得到设计总图和渲染效果图,能够得到整个定单的用材总数,报价,能够得到仿真的渲染效果图。 2:在接到客户定单后,能够在较短时间内完成赋属性等其他工序,得到部材加工图。面向石材加工场2.3 性能需求分析 本模块在性能方面要达到以下设计目标: 1:要快速出图,加快出图速度。 2:要具有一定的安全性和可靠性,防止用户的错误操作造成的数据丢失。3:要设计合理,具有一定的

14、可扩展性,以备后期的修改以及进行下一轮的开发。2.4 系统可扩展性以及可移植性需求分析2.4.1 可扩展性需求分析考虑到系统日后的维护和进一步开发,系统要具有一定的可扩展性,具体内容如下: 1:图纸可扩展,在提交1 2 4 分割的图纸后,客户能够方便的添加新的图纸,并能够兼容旧的图纸。 2:部材库的可扩展性,用户在不改变库结构的情况下能够修改部材库的索引。 3:要预留系统与excel的接口。2.4.2 可移植性需求分析 1:可以将系统从AutoCAD2002移植到mdt6下。2.5 详细需求分析图纸部材属性C类的定义:从数学的角度来看,类是一个集合,而部材则是这个集合的元素。周边,墓石等是类的

15、子集。从系统的角度来看,类是一个有部材构成的库,分两层进行索引。类的作用:1:部材的分类实际上是由一定的行业标准指定的,分类为以后的出图纸提供便利。2:部材分类便于管理部材库了,便于建立索引以及实现快速的查找,随着工作的进行,部材库会越来越大,不分类很难实现部材的快速查找,并且增加管理难度。属性的定义属性是指用来描述部材相关性质的参数,包括:1:部材名2:指定石种3:部材编号4:部材加工方式这些属性最终都将体现在加工书中。部材分类C1将部材按事先规定好的类别分类,(外珊,墓石,周边),可创建,删除,修改类,可创建,删除,修改子类。如果未分类,则默认为外栅类。过程如下:1:调用部材分类命令2:选

16、择类(创建,删除,修改)3:选择子类(创建,删除,修改)4:分类结束部材自动命名C2将所选部材按事先规定好的命名规则自动命名命名规则待定。(某种行业规定或由用户指定的某种规则)部材手动命名C3用手工输入的方式为部材命名。命名删除C4 将已确定的命名删除。部材自动编号C5将所选部材按事先规定好的编号规则自动编号自动编号规则待定。(某种行业规定或由用户指定的某种规则)部材手动编号C6用手工输入的形式为部材编号注意:部材编号时应提供选择项,使完全相同的部材编号相同,但数量相应增加。过程如下:1:调用部材手动编号功能2:选择部材3:如出现完全相同的部材,出现提示,是否要求编号相同,数量加一。4:按选择

17、编号5:重复上面的过程,直到编号结束。这样做是因为出图时可将相同的部材编号相同数量加一,便于工厂下料加工。编号删除C7将已确认的编号删除。部材石种选择C8选择加工部材的石料种类系统要求提供以下功能1:石种选择2:石种录入3:石种删除部材加工方法选择C9选择加工部材的方法(单面磨光 多面磨光等)文字输入家纹输入C10C10输入石料表面雕刻的文字,此文字实际上是CAD的一个实体,可部材化,并且部材化后可以渲染图,以及加工书中出现。过程如下:1:调用文字输入命令2:选择文字种类3:选择文字方向(纵向录入或横向录入)其他功能C11因为设计员在设计过程中的重复操作,可能忘记了哪些部材已编号,哪些已命名,

18、客户要求系统提供经用户选择可显示未命名,未编号部材的功能。过程如下:1:调用命令2:选择(未命名 未编号)3:显示(在模型上以特殊方式显示出来。)4:结束渲染石料特殊加工选择D1选择渲染石料种类,从石料库中选择石料,首先按墓石,周边,外栅等事先设定的类选择,然后根据需要对局部部材石料进行变更。同时为了扩充石料种类库,要求提供石料种类的删除,添加,修改功能。本功能可以指定部材某一面为特殊加工,如:自然面加工(即表面较大幅度的凹凸不平感)龙眼皮或荔枝面加工(即表面象龙眼皮或荔枝面一样的比较细小的颗粒状)从渲染的角度来讲就是将部材的指定面用相应的加工方式图片渲染。设定渲染精度D2设定渲染精度,精度高

19、则图片清晰度高,精度低则清晰度低。外部景观设定D3设定渲染所需外部景观(树,人等)灯光设定D4模拟外部灯光,使效果图中出现阴影等效果,增加效果图真实感。主要设定如下:1:周围光设定 2:太阳光设定 3:环境光设定 4:自定义模式:手动设定外部灯光,并提供灯光效果记忆功能,即可见本次的灯光设定命名保存,下次需要时调入使用。5、固定组合模式:提供多种常用各种光源的组合模式。内部铺设石料设定D5设定渲染所需的内部铺设石料,实际上是铺设地板料,同时提供地板料的添加,删除,修改功能。外部景观设定D6外部景观,是指树,人,等为了模拟实际效果而加入的图片。系统要求提供外部景观的添加,删除,修改功能。在选择外

20、部景观时可改变高度,修改其相关属性。出图纸E按所建模型及其属性出图纸主要有渲染效果图,见绩书,总图及加工部品图,同时提供图纸的删除,修改功能。渲染效果图E1根据渲染的相关属性,渲染精度出渲染效果图(面向客户)。见绩书E21:见绩书首页要求显示已完成的渲染效果图。2:见绩书实际上一张总的数据表,将整个组装图的所有数据写入见绩书的work表,然后根据客户需要设计excel的模板产生其他的表,所有数据都与work表建立连接。3:先产生work表,其他表根据客户需求待定。总图与加工书E3出加工书(面向石材加工厂)系统出图要求:1:总图一张。2:总图的三视图一张3:外栅图一张。4:墓石图一张。5:每个部

21、材加工图一张(位于)。加工图具体要求:1:二、四、六分割等2:三维实体一个,可旋转。3:正面,侧面,上面的二维视图(这三个视图是线条构成,并非实体)各一个,要求标注尺寸与实体一致,可修改。4、页面排版及相关属性的显示(见参考软件)另:要求提供图纸删除功能。1、当删除了多页图纸中的某页,其后的页码自动连续的替补。2、当删除了单页图纸中的一个或多个部材,其后的部材自动替补。此时部品图编号与建模时的编号将产生差异,是否能够实现建模编号的修正。图纸打印E41:当前页打印2:多页可选打印,如:1、3、5页3:多页连续打印过程如下: 1:选择起始页 2:选择终止页 3:打印 4:结束4:要求系统可以预览打

22、印雅所已经生成的图纸。3 概要设计3.1 总体设计 1:模块总体设计图 本模块主要分两部分,一部分是在出图纸前对各个部材进行分类,赋属性,为出图纸做准备。另一部分是将部材中的属性提取出来并反应到图纸上去,各部分自上而下分为不同的小模块。 3.2 接口设计3.2.1 内部接口设计本模块针对单个部材进行操作,在分类赋属性时将属性写入到工程文件中,在出图纸的时候将部材属性提取出来,按一定的规则写入到图纸中去,所以对部材属性的读写操作是主要的内部接口。对部材属性的初始化称为部件化流程。对部材属性的修改称为属性流程修改内部接口设计流程图3.2.2 外部接口设计本模块的外部接口主要是1:系统与excel的

23、接口 采用CspreadSheet Class(from codeProject)类对excel表的数据进行读写操作。 2: 系统与打印机的接口 直接调用CAD的plot命令进行系统打印以及系统打印设置3.2.3 公共函数类接口设计在系统开发过程中有一些操作出现频率高,重复性强,例如对图层的打开,关闭,冻结,解冻操作。为增强系统的代码可重用性,同时减少系统模块间的关联,设计此类。类设计说明如下:-类名:Tool-功能:综述文件功能,并描述提供给其他模块的接口 提供部件化模块常用的工具函数-类以及方法说明 提供分类赋属性模块常用的工具函数 方法以及方法参数说明: /构造函数Tool();/析构函

24、数 Tool();/函数名:selectObjects(实体选择函数)/函数作用:选择函数,成功返回RTNORM; 失败返回RTERROR,此函数用于选择多个或单个实体并保存选择集到sset中。 ); /函数名:selectBlock(单个块实体选择函数) /作用:选择函数,成功返回RTNORM; 失败返回RTERROR;/选择单个实体,检查是否为块,并返回块实体与块id /函数名:isBlock (块检查函数)/作用:检查选择的entid的实体是否为带有属性块,是则返回1 否则返回0,实体无效返回2/函数名makeHilght/作用,将传入的entid的实体高亮显示/函数名unHilght/

25、作用,将传入的entid的非高亮显示 /函数名maxNumber/作用:遍历Model_Space record的所有块记录。利用块表记录浏览器寻找当前数据库中已编号的所有部材中的最大的编号/要了解数据库结构。/函数名allOfNamed/遍历Model_Space record的所有块记录。/如果所有的部材(带有系统自带的属性的块实体,存在于Model_Space record)都已经命名,则返回1/如果存在部材(带有系统自带的属性的块实体,存在于Model_Space record)未命名,则返回0/要了解数据库结构。/函数名haveSameNameVolume(PartName,long

26、 volume)/此函数用于检查确定部材相同的标准:名称相同,部材体积相差小于50/遍历Model_Space record的所有块记录。/如果存在已编号的部材(带有系统自带的属性的块实体,存在于Model_Space record)的PartName与函数传入的PartName和volume相同,则返回此部材编号(大于0的一个数)/其它情况返回0/要了解数据库结构。/函数名drawNumber/在当前视图创建编号实体,所有实体都放在number层/参数num为字符指针,函数中已acdbtext创建,放在圆型中,并把circle和acdbText在一起做成块/把块插入到insertpoint的

27、位置/该函数用于自动编号和手动编号,以及标记。/作块的同时为该编号实体增加新的属性,属性值为被编号实体的handle /函数名createNewLayer/创建一个新的图层,名为layername/如果已存在,相当与重命名void createNewLayer(CString layerName); /函数名delNumber/将所有编号实体中的扩展属性为handleStr的编号实体删除/使用到数据库浏览器,详细的实现过程见tool.cpp/该函数用于编号和自动编号。/函数名findObjectId/在进行自动编号时,从temp表中获得记录,同时获得表中要编号的实体handle,无法由读出的c

28、string直接获得/实体的真实handle,此函数利用实体浏览器遍历搜索,获得要编号实体的id/解决表中记录与工作区中的待编号实体的一一对应关系。/理解此函数的用法请详细阅读详细设计里的自动编号的设计方法。 /函数名insertMissNumber/作用:在编号过程中用户有可能忘记了对某个部材编号,事后要插入编号/要求当前已编号部材中编号等于这个编号和比这个编号大的所有实体编号统统加一/实现这部操作时调用这个命令。/该函数涉及使用表结构浏览器。/handleStr用于避免对要插入编号的重复操作。要把要插入编号的实体和其他实体区别开。3.3 系统维护设计由于系统配置文件复杂,所以要预留系统维护

29、接口 1:系统工作区路径修改 2:excel模板文件修改4 详细设计4.1 图纸产生模块详细设计4.1.1 模块功能描述模块名称产生图纸功能描述在部件化,分类赋属性等工作结束后,人工选取所要出图的相关实体进行出图操作.过程如下:1:调用出图命令2: 选取分割数3: 选择是出新图纸,还是添加旧的图纸.4: 选取要出图的实体5:对获得的选择集进行,处理去掉不是部材的实体。6:对选择集进行排序7:调用papercontrol类进行处理,对选择集进行出图操作。8:调整第一张图到适当的位置。9:图纸产生命令结束。4.1.2 接口与属性接口与属性一:类接口设计1:paperControl类 图纸调度类 1

30、) 根据已排序的部材选择集和当前图纸编号最大值,对出图过程进行综合的调度和操作。是出图纸模块的核心调度类主要负责以下问题:1:负责调用对话框类获取用户选取的图纸分割信息2:负责调用对话框类获取用户选取的是否做新图纸的信息3:负责调度modelcreat类产生模型空间内的标注实体4:负责调度paperInsert类根据图纸分割信息插入不同的图纸背景5:负责调用paperCreat类对插入的图纸属性进行修改6:负责调用makeblk类将插入的图纸背景做成块 7:负责调用函数清理由于多分割中实体缺失而产生的0层属性实体冗余。2:modelCreat 类 模型空间标注实体产生类1)类说明 此类负责产生

31、已模型空间的标注实体2)主要的接口用到TOOL.H中的全局函数/复制单个部材AcDbObjectId cpyBlk( AcDbObjectId id, /被复制部材CString layerName /复制后部材要存放的层);AcDbObjectId cpyBlk( AcDbObjectId objId,CString layerName )/深度克隆objId,新建表记录/设置基点/设置插入点/把得到的haodablk放在layerName层3:paperCreat 类 图纸空间写入属性图纸产生类1) 类说明:负责将相关的属性写入到图纸中去2) 属性与接口:/作用/1:将AcDbObject

32、Id Id的属性写入到pageNum张图纸中的partofpaper个位置中去。/cutnumber代表图纸的分割数PaperCreat(AcDbObjectId Id, int pageNum, int partOfPaper,int CutNumber);4:makeBlk 类 将图纸背景做成块 1)类说名:此类用于将插入的图纸背景做成块,主要实现过程是先获得所有的带有图纸背景的属性的实体的id,然后将他们加入到idarray中去,然后将他们做成块。二:实现过程设计 实现:1:调用对话框获得用户输入的图纸。2:调用对话框获得用户是否要做新图3:获得选择集 4:将选择集中不是部材的实体去掉。

33、 5:按编号大小对选择集进行排序6:如果用户选择做新图,则将调用图纸空间和模型空间与出图相关的实体删除。7:获得当前图纸的最大编号 8:调用paperControl对获得的选择集进行出图操作。 过程如下: 根据传入的选择集做模型空间的标注实体(creatmodel) 切换到图纸空间 根据用户选择的图纸分割信息,将相应的图纸插入到0层(insertpaper) 在插入的图层上写入属性,并修改属性所属的层(paperCreat) 将图纸背景做成块,并改变块所属的层(makeblk)4.1.3 数据结构与算法数据结构与算法Visio 结构图4.1.4 其他补充说明几个特殊的函数和方法:/函数名 re

34、adPageAttbuite(CString layerName , CString pageAtt)/作用:读出图纸空间layerName层的pageAtt属性/该函数使用了遍历器/pageAtt是属性实体的扩展属性CString readPageAttbuite(CString layerName, CString pageAtt);/函数名 writePageAttbuite(CString layerName , CString pageAtt)/作用:写入图纸空间layerName层的pageAtt属性/该函数使用了遍历器/pageAtt是属性实体的扩展属性/attbuite是属性值

35、/请严格按照说明使用void writePageAttbuite(CString layerName, CString pageAtt, CString attbuite); /函数名 writeAllPageAttbuite(CString layerName , Cstring批 pageAtt)/作用:写入图纸空间所有层的pageAtt属性/该函数使用了遍历器/pageAtt是属性实体的扩展属性/attbuite是属性值/请严格按照说明使用/由于客户的需求对图纸空间的所有该属性值进行一次性修改/与函数writePageAttbuite有区别void writeAllPageAttbuit

36、e(CString layerName, CString pageAtt, CString attbuite);/函数名:deletePaper()/出新图纸时删除图纸空间内的所有实体和图层/实现过程:调用层表浏览器,将所有与出图有关的layername保存/调用命令对所有的layername进行便利和冻结,删除操作void deletePaper();/函数名:deleteModel()/删除与出图有关的模型空间内的所有实体和图层/实现过程:调用层表浏览器,将所有与出图有关的layername保存/调用命令对所有的layername进行便利和冻结,删除操作void deleteModel()

37、;/函数名 void setModelToCurrentPositiom(CString layerNamne,CString viewPortAttbuite,CString ModelName)/参数 LayerName 层名,也就是图纸所在的层的名字,viewPortAttbuite:视窗所带有的属性 ModelName:对应的视窗中的实体的层的名字/作用,图纸产生后利用此函数把每张图纸,对应ModelName中的视窗中实体调整到适当的位置 void setModelToCurrentPositiom(CString layerNamne,CString viewPortAttbuite

38、,CString ModelName);/函数名AcDbObjectId findViewPortId(CString layerName,CString viewPortAttibute)/作用 在图纸做多分割的时候要获得图纸中的viewport的指针,以便进行相关操作/此函数用于在layerName层获得带有viewPortAttibute的viewport的id AcDbObjectId findViewPortId(CString layerName,CString viewPortAttibut); /函数名:void setViewPortToOnOrOff( CString la

39、yerName,int operation,CString viewportAtt );/参数:layerName 对应的图层的名字 opertion:操作符0 关闭 1 打开 viewPortAtt:视窗的属性void setViewPortToOnOrOff( CString layerName,int operation,CString viewportAtt );/函数名:void deleteUnrelationAttbuiteOnZero()/作用:在进行多分割出图时,可能由于实体的缺失(四分割,但一次出图只有3个实体),导致0层存在冗余的属性,会对下次出图造成影响/所有要调用函数

40、把这些属性和视窗删除 void deleteUnrelationAttbuiteOnZero();/函数名: int findCutNumberOfPaper(CString layName,CString attbuite)/作用:在对图纸进行操作时,利用此函数可以知道当前所处理的图纸是几分割的/输入图层名,图纸属性名,如果这张图纸上存在这个属性,则返回1,不存在则返回0int findCutNumberOfPaper(CString layName,CString attbuite);2:所有的图纸模版都是插入到0层,然后进行对图纸的属性读写操作,注意在多分割时,如果出现实体缺失(例如四分

41、割的图只有三个实体),时,会出现0层的属性实体的冗余。4.2 文字标记输入模块详细设计4.2.1 模块功能描述模块名称文字标记录入功能描述在出图纸操作结束后,要对图纸进行一写特殊的加工和标记处理。此时调用此命令将一些特殊的标记和符号写入图纸。过程如下:1:调用文字标记录入命令2:选取相关的文字标记3:将获得文字标记写入图纸4:文字标记录入结束4.2.2 接口与属性接口与属性1:类接口设计1. 数据库表设计1) 表名:paperText2) 字段:paperText2. ADOConn 类 数据库连接查询类连接数据库,执行sql语句,获得选择集,并对数据库访问进行出错控制,包含以下属性和方法:定

42、义变量public:/添加一个指向Connection对象的指针:_ConnectionPtr m_pConnection;/添加一个指向Recordset对象的指针:_RecordsetPtr m_pRecordset;定义方法public:ADOConn();ADOConn();/ 初始化连接数据库void OnInitADOConn();/ 执行查询_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);/ 执行SQL语句,Insert Update _variant_tBOOL ExecuteSQL(_bstr_t bstrSQL);void

43、ExitConnect();2:实现过程同分类赋属性模块的部材石种插入等模块4.2.3 数据结构与算法数据结构与算法无特殊数据结构4.2.4 其他补充说明1) 要对可能存在的空变量,空输入进行控制和提示要对选择集中的实体进行检查,不为块则不进行任何操作,提示某实体不为块即可.4.3 图纸工程属性模块详细设计4.3.1 模块功能描述模块名称图纸属性读取修改功能描述在出图结束以后,要对某张图纸上的某个部材的属性进行修改,则调用此命令 1:调用图纸属性修改命令 2:选择新的属性 3:将新的属性写入图纸 4:图纸属性修改命令结束4.3.2 接口与属性接口与属性无特殊数据格式此模块设计调用Tool类的方

44、法/函数名 readPageAttbuite(CString layerName , CString pageAtt)/作用:读出图纸空间layerName层的pageAtt属性/该函数使用了遍历器/pageAtt是属性实体的扩展属性CString readPageAttbuite(CString layerName, CString pageAtt);和函数/函数名 writePageAttbuite(CString layerName , CString pageAtt)/作用:写入图纸空间layerName层的pageAtt属性/该函数使用了遍历器/pageAtt是属性实体的扩展属性/a

45、ttbuite是属性值/请严格按照说明使用void writePageAttbuite(CString layerName, CString pageAtt, CString attbuite);即可实现相关功能对数据库的表的操作同分类赋属性模块的tstone tname等模块设计。后台数据表也用类赋属性模块的tstone tname等模块的表4.3.3 数据结构与算法数据结构与算法无特殊数据结构4.3.4 其他补充说明4.4 总图模块详细设计4.4.1模块功能描述模块名称工程总图(零号图)功能描述出系统总图(面向客户)在进行分类赋属性之后要得到一张总图,系统工作流程如下:1:基本完成分类赋属

46、性操作2:在模型空间调用总图命令3:提取当前所有部材的相关信息4:将获得的部材中没有编号的去掉5:用冒泡法将部材按编号大小进行排序6:将获得的部材信息按外栅,墓石,周边分类写入excel表,获得表信息7:将工程名 工程编号以及分类信息写入excel表,获得表头。8:将0号图模板插入图纸空间,在模板上写入属性9:按照计算的出的位置将excel表格插入到图纸空间10:对图层进行操作,并调整总图的视窗位置。11:结束4.4.2接口与属性接口与属性一:类接口设计1:ZeroPaper类 Excel 数据表产生类 2) 遍历当前的数据库,按部材分类产生总图所需要的excel表 主要负责以下问题:1:遍历

47、当前模型空间数据库,寻找已编号部材2:按部材编号大小排序 3:将读取的部材属性写入excel 表2:HandOfExcel 类 表头产生类1)类说明 此类负责产生已excel表表头3:Tool 类 将数据表插入到当前的图纸空间来/函数名: void insertXls(CString filePath)/作用:将filePath路径上的excel文件插入到图纸空间来,并把它放在适当的位置/该函数运行前要切换到图纸空间内void insertXls(CString filePath, CRectangle3d rect);/函数名 writeAllPageAttbuite(CString lay

48、erName , CString pageAtt)/作用:写入图纸空间所有层的pageAtt属性/该函数使用了遍历器/pageAtt是属性实体的扩展属性/attbuite是属性值/请严格按照说明使用/由于客户的需求对图纸空间的所有该属性值进行一次性修改/与函数writePageAttbuite有区别void writeAllPageAttbuite(CString layerName, CString pageAtt, CString attbuite);二:实现过程设计 实现:1:基本完成分类赋属性操作2:在模型空间调用总图命令3:提取当前所有部材的相关信息4:将获得的部材中没有编号的去掉5:用冒泡法将部材按编号大小进行排序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论