墓石CAD设计系统出图模块的DOC.docx
《墓石CAD设计系统出图模块的DOC.docx》由会员分享,可在线阅读,更多相关《墓石CAD设计系统出图模块的DOC.docx(44页珍藏版)》请在冰豆网上搜索。
墓石CAD设计系统出图模块的DOC
本科毕业论文
(科研训练、毕业设计)
题目:
墓石CAD设计系统出图模块的
ObjectArx实现
姓名:
丁学清
学院:
软件学院
系:
/
专业:
软件工程
年级:
03复合(转专业)
学号:
01061003
指导教师:
朱宗番职称:
教授
2004年05月30日
摘要
AutoCAD是Autodesk公司开发的专门用于计算机绘图设计工作的软件,在各个行业有广泛的应用。
ObjectArx是Autodesk公司提供的利用VisualC++6.0平台对AutoCAD进行二次开发的工具包。
厦门**公司墓石CAD设计系统开发的目的是实现墓石产品的快速开发,使员工能在较短的时间内完成石材的建模,分类部材化,赋属性,出图纸,其最终目的是为提高豪达公司的员工的工作效率,加快设计速度,减低其开发成本,争取更多客户。
本文按照软件工程过程对系统的出图纸模块进行需求分析,构架设计,详细设计,以及编码实现,详细阐述设计思想以及在设计开发过程中软件工程思想的应用。
关键字:
AutoCAD,ObjectArx,石材设计系统,软件工程
Abstract
AutoCADistheAutodeskexclusivelysoftwarewhichusedforthecompanydevelopmentcalculatorpaintingdesignwork,thereisextensiveapplicationintheeachprofession.TheObjectArxisthetoolthattheAutoCADcarryondeveloppingtwotimes,usingVisualC++6.0.
ThecompanygravestoneCADdesignsystemdevelopmentisafastdevelopmentthatcarriesoutthegravestoneproduct,makingtheemployeebeabletocompletethestonematerialtosetupthemoldinshortertime.Itspurposeisraisingtheemployee'sworkefficiency,speedingtodesignthespeed,turningdownitdevelopthecostandfightingformorecustomers.
Thisarticlecarriesontheneedanalysistoadiagrampapermoldpieceofthesystemaccordingtothesoftwareengineeringprocess,theframedesign,detaileddesign,andcodeing,detailedelaborate.thesoftwareengineeringthoughtisusedindesigndevelopprocess.
Keywords:
AutoCad,ObjectArx,,SoftwareEngineering
目录
1系统概述………………………………………………………………………………………6
1.1课题背景…………………………………………………………………………………6
1.2AutoCAD发展概述………………………………………………………………………6
1.3ObjectArx发展概述……………………………………………………………………6
1.4开发工具以及支持条件………………………………………………………………6
1.4.1VisualC++6.0…………………………………………………………………7
1.4.2Arx数据库浏览器………………………………………………………………7
2需求分析………………………………………………………………………………………7
2.1客户工作流程分析………………………………………………………………………7
2.2功能需求分析……………………………………………………………………………7
2.3性能需求分析……………………………………………………………………………7
2.4系统可扩展性以及可移植性需求分析…………………………………………………7
2.4.1可扩展性需求分析…………………………………………………………………7
2.4.2可移植性需求分析…………………………………………………………………7
2.5详细需求分析……………………………………………………………………………8
3概要设计………………………………………………………………………………………12
3.1总体设计………………………………………………………………………………12
3.2接口设计………………………………………………………………………………13
3.2.1内部接口设计……………………………………………………………………13
3.2.2外部接口设计……………………………………………………………………14
3.2.3公共函数类接口设计……………………………………………………………15
3.3系统维护设计……………………………………………………………………………17
4详细设计………………………………………………………………………………………17
4.1图纸产生模块详细设计………………………………………………………………17
4.1.1模块功能描述……………………………………………………………………17
4.1.2接口与属性………………………………………………………………………19
4.1.3数据结构与算法…………………………………………………………………19
4.1.4其他………………………………………………………………………………21
4.2图纸属性修改模块详细设计…………………………………………………………21
4.2.1模块功能描述……………………………………………………………………21
4.2.2接口与属性………………………………………………………………………21
4.2.3数据结构与算法…………………………………………………………………22
4.2.4其他………………………………………………………………………………22
4.3文字输入模块详细设计…………………………………………………………………22
4.3.1模块功能描述……………………………………………………………………22
4.3.2接口与属性………………………………………………………………………22
4.3.3数据结构与算法…………………………………………………………………23
4.3.4其他………………………………………………………………………………23
4.4总图模块详细设计……………………………………………………………………23
4.4.1模块功能描述…………………………………………………………………23
4.4.2接口与属性……………………………………………………………………24
4.4.3数据结构与算法………………………………………………………………24
4.4.4其他……………………………………………………………………………25
5编码以及实现………………………………………………………………………………25
5.1编码规范………………………………………………………………………………25
5.2部分代码………………………………………………………………………………26
6结束语………………………………………………………………………………………28
6.1改进与分析……………………………………………………………………………28
6.2缺陷……………………………………………………………………………………28
6.3工作展望………………………………………………………………………………28
参考文献…………………………………………………………………………………………28
致谢………………………………………………………………………………………………28
1系统概述
1.1课题背景
福建是全国著名的石材产地。
中国的石材产业已经逐渐做大做强,而福建石材则在国内的石材产业中处于领头羊的位置。
目前我国每年石材出口总额约10亿美元,福建每年石材的出口额为7.5亿美元,而厦门的石材出口额为4.5亿美元,占全国石材出口总额的近二分之一,而且还以每年20%的速度递增,目前厦门市以及其周边地区的石材企业大都采用AutoCAD为设计软件,但都存在科技含量低,技术水平不足等问题,未经过二次开发的AutoCAD软件对石材设计人员的素质要求比较高,设计的成品难以满足客户(尤其是日本和欧洲市场的客户)的需要,企业急需个性化的石制品计算机辅助设计软件。
1.2AutoCAD发展概述
计算机辅助设计(Computer-AidedDesign,即CAD)的技术发展非常迅速,在机械、电子、土木、广告等领域中都有比较广泛的应用,随着CAD技术的发展,各种商品化的CAD软件也应用而生并迅速发展,AutoCAD软件就是其中的优秀软件之一。
Autodesk公司自从开发了auroCAD系列软件以来,取得了巨大的成功,现在已经成为全世界广大使用CAD软件的科技人员非常喜欢使用的软件之一。
Autodesk公司在软件基础上提供了支持多种开发工具的二次开发包,开发人员可以在此基础上进行二次开发,减少重复输入,提高设计效率,满足不同客户的需要,对石制品设计而言具有极为重要的显示意义和使用价值。
1.3ObjectArx发展概述
AutoCAD有好几种编程接口,最原始的一种是AutoLisp,它是一种解释性的编程语言,最早出现在1985年发行的AutoCAD2.5中。
四年后,在Autocadr10中增加了称为ads的c语言编程能力。
ObjectArx是AutoCADr13之后推出的一个全新的面向对象的二次开发环境,是Autocad第一次提供面向对象的二次开发工具。
AutoCADr14自身的很大一部分就是用Arx开发的。
ObjectArx在AutoCADR14中有了很大的加强。
它使得用户可以使用c++来开发AutoCAD的应用程序,扩充了AutoCAD的类和协议,而且可以建立和AutoCAD的内部命令在同一层次上的命令。
随着AutoCAD2000的发布,Autodesk公司也推出了新一代的强大的二次开发工具。
ObjectArx2000使用面向对象的c++应用程序开发机制,以动态连接库的形式共享AutoCAD的地址空间,对AutoCAD的直接函数进行调用,避免了新的系统开销引起的性能下降。
它可充分利用c++的继承性,封装性和多态性等特点,大大提高了应用程序的安全和代码的可重用性。
综上所述ObjectArx2000是最适合进行CAD二次开发的工具。
1.4开发工具以及支持条件
1.4.1VisualC++6.0
VisualC++6.0是微软公司推出的c语言开发工具。
1.4.2Arx数据库浏览器
Arx数据库浏览器是前Autodesk公司员工开发的用来观察CAD内部表结构变化的工具,利用它可以了解Arx的工作方式,加快开发进度。
2需求分析
2.1客户工作流程分析
在进行详细的调查和分析之后,将客户的工作流程总结如下:
1:
在国外的石制品经营者接到客户(最终客户)定单和设计草图。
2:
在国内的石制品公司接到设计草图,并利用CAD进行详细的设计得到设计总图和渲染效果图。
3:
设计人员将设计总图和渲染效果图发往国外。
4:
最终客户得到总图和渲染效果图,满意则确认定单,不满意则取消定单。
5:
在国内的石制品公司接到确认后的定单,利用CAD进行详细的设计,得到详细加工书(包括各个部件的加工尺寸,加工方式等)
6:
将图纸发往工厂进行加工。
7:
将成品装船,发往国外。
根据以上的工作流程分析,把握客户的需求进行详细的需求分析整理。
2.2功能需求分析
本模块在功能方面要达到以下设计目标:
1:
在接到客户设计草图后,能够得到设计总图和渲染效果图,能够得到整个定单的用材总数,报价,能够得到仿真的渲染效果图。
2:
在接到客户定单后,能够在较短时间内完成赋属性等其他工序,得到部材加工图。
{面向石材加工场}
2.3性能需求分析
本模块在性能方面要达到以下设计目标:
1:
要快速出图,加快出图速度。
2:
要具有一定的安全性和可靠性,防止用户的错误操作造成的数据丢失。
3:
要设计合理,具有一定的可扩展性,以备后期的修改以及进行下一轮的开发。
2.4系统可扩展性以及可移植性需求分析
2.4.1可扩展性需求分析
考虑到系统日后的维护和进一步开发,系统要具有一定的可扩展性,具体内容如下:
1:
图纸可扩展,在提交124分割的图纸后,客户能够方便的添加新的图纸,并能够兼容旧的图纸。
2:
部材库的可扩展性,用户在不改变库结构的情况下能够修改部材库的索引。
3:
要预留系统与excel的接口。
2.4.2可移植性需求分析
1:
可以将系统从AutoCAD2002移植到mdt6下。
2.5详细需求分析
图纸部材属性
C
类的定义:
从数学的角度来看,类是一个集合,而部材则是这个集合的元素。
周边,墓石等是类的子集。
从系统的角度来看,类是一个有部材构成的库,分两层进行索引。
类的作用:
1:
部材的分类实际上是由一定的行业标准指定的,分类为以后的出图纸提供便利。
2:
部材分类便于管理部材库了,便于建立索引以及实现快速的查找,随着工作的进行,部材库会越来越大,不分类很难实现部材的快速查找,并且增加管理难度。
属性的定义
属性是指用来描述部材相关性质的参数,包括:
1:
部材名
2:
指定石种
3:
部材编号
4:
部材加工方式
这些属性最终都将体现在加工书中。
部材分类
C1
将部材按事先规定好的类别分类,(外珊,墓石,周边),可创建,删除,修改类,可创建,删除,修改子类。
如果未分类,则默认为外栅类。
过程如下:
1:
调用部材分类命令
2:
选择类(创建,删除,修改)
3:
选择子类(创建,删除,修改)
4:
分类结束
部材自动命名
C2
将所选部材按事先规定好的命名规则自动命名
命名规则待定。
(某种行业规定或由用户指定的某种规则)
部材手动命名
C3
用手工输入的方式为部材命名。
命名删除
C4
将已确定的命名删除。
部材自动编号
C5
将所选部材按事先规定好的编号规则自动编号
自动编号规则待定。
(某种行业规定或由用户指定的某种规则)
部材手动编号
C6
用手工输入的形式为部材编号
注意:
部材编号时应提供选择项,使完全相同的部材编号相同,但数量相应增加。
过程如下:
1:
调用部材手动编号功能
2:
选择部材
3:
如出现完全相同的部材,出现提示,是否要求编号相同,数量加一。
4:
按选择编号
5:
重复上面的过程,直到编号结束。
这样做是因为出图时可将相同的部材编号相同数量加一,便于工厂下料加工。
编号删除
C7
将已确认的编号删除。
部材石种选择
C8
选择加工部材的石料种类
系统要求提供以下功能
1:
石种选择
2:
石种录入
3:
石种删除
部材加工方法选择
C9
选择加工部材的方法(单面磨光多面磨光等)
文字输入
家纹输入
C10
C10
输入石料表面雕刻的文字,此文字实际上是CAD的一个实体,可部材化,并且部材化后可以渲染图,以及加工书中出现。
过程如下:
1:
调用文字输入命令
2:
选择文字种类
3:
选择文字方向(纵向录入或横向录入)
其他功能
C11
因为设计员在设计过程中的重复操作,可能忘记了哪些部材已编号,哪些已命名,客户要求系统提供经用户选择可显示未命名,未编号部材的功能。
过程如下:
1:
调用命令
2:
选择(未命名未编号)
3:
显示(在模型上以特殊方式显示出来。
)
4:
结束
渲染石料特殊加工选择
D1
选择渲染石料种类,从石料库中选择石料,首先按墓石,周边,外栅等事先设定的类选择,然后根据需要对局部部材石料进行变更。
同时为了扩充石料种类库,要求提供石料种类的删除,添加,修改功能。
本功能可以指定部材某一面为特殊加工,如:
自然面加工(即表面较大幅度的凹凸不平感)
龙眼皮或荔枝面加工(即表面象龙眼皮或荔枝面一样的比较细小的颗粒状)
从渲染的角度来讲就是将部材的指定面用相应的加工方式图片渲染。
设定渲染精度
D2
设定渲染精度,精度高则图片清晰度高,精度低则清晰度低。
外部景观设定
D3
设定渲染所需外部景观(树,人等)
灯光设定
D4
模拟外部灯光,使效果图中出现阴影等效果,增加效果图真实感。
主要设定如下:
1:
周围光设定
2:
太阳光设定
3:
环境光设定
4:
自定义模式:
手动设定外部灯光,并提供灯光效果记忆功能,即可见本次的灯光设定命名保存,下次需要时调入使用。
5、固定组合模式:
提供多种常用各种光源的组合模式。
内部铺设石料设定
D5
设定渲染所需的内部铺设石料,实际上是铺设地板料,同时提供地板料的添加,删除,修改功能。
外部景观设定
D6
外部景观,是指树,人,等为了模拟实际效果而加入的图片。
系统要求提供外部景观的添加,删除,修改功能。
在选择外部景观时可改变高度,修改其相关属性。
出图纸
E
按所建模型及其属性出图纸
主要有渲染效果图,见绩书,总图及加工部品图,同时提供图纸的删除,修改功能。
渲染效果图
E1
根据渲染的相关属性,渲染精度出渲染效果图(面向客户)。
见绩书
E2
1:
见绩书首页要求显示已完成的渲染效果图。
2:
见绩书实际上一张总的数据表,将整个组装图的所有数据写入见绩书的work表,然后根据客户需要设计excel的模板产生其他的表,所有数据都与work表建立连接。
3:
先产生work表,其他表根据客户需求待定。
总图与加工书
E3
出加工书(面向石材加工厂)
系统出图要求:
1:
总图一张。
2:
总图的三视图一张
3:
外栅图一张。
4:
墓石图一张。
5:
每个部材加工图一张(位于)。
加工图具体要求:
1:
二、四、六分割等
2:
三维实体一个,可旋转。
3:
正面,侧面,上面的二维视图(这三个视图是线条构成,并非实体)各一个,要求标注尺寸与实体一致,可修改。
4、页面排版及相关属性的显示(见参考软件)
另:
要求提供图纸删除功能。
1、当删除了多页图纸中的某页,其后的页码自动连续的替补。
2、当删除了单页图纸中的一个或多个部材,其后的部材自动替补。
此时部品图编号与建模时的编号将产生差异,是否能够实现建模编号的修正。
图纸打印
E4
1:
当前页打印
2:
多页可选打印,如:
1、3、5页
3:
多页连续打印
过程如下:
1:
选择起始页
2:
选择终止页
3:
打印
4:
结束
4:
要求系统可以预览打印雅所已经生成的图纸。
3概要设计
3.1总体设计
1:
模块总体设计图
本模块主要分两部分,一部分是在出图纸前对各个部材进行分类,赋属性,为出图纸做准备。
另一部分是将部材中的属性提取出来并反应到图纸上去,各部分自上而下分为不同的小模块。
3.2接口设计
3.2.1内部接口设计
本模块针对单个部材进行操作,在分类赋属性时将属性写入到工程文件中,在出图纸的时候将部材属性提取出来,按一定的规则写入到图纸中去,所以对部材属性的读写操作是主要的内部接口。
对部材属性的初始化称为部件化流程。
对部材属性的修改称为属性流程修改
内部接口设计流程图
3.2.2外部接口设计
本模块的外部接口主要是
1:
系统与excel的接口
采用CspreadSheetClass(fromcodeProject)类对excel表的数据进行读写操作。
2:
系统与打印机的接口
直接调用CAD的plot命令进行系统打印以及系统打印设置
3.2.3公共函数类接口设计
在系统开发过程中有一些操作出现频率高,重复性强,例如对图层的打开,关闭,冻结,解冻操作。
为增强系统的代码可重用性,同时减少系统模块间的关联,设计此类。
类设计说明如下:
--类名:
Tool
--功能:
综述文件功能,并描述提供给其他模块的接口
提供部件化模块常用的工具函数
--类以及方法说明
提供分类赋属性模块常用的工具函数
方法以及方法参数说明:
//构造函数
Tool();
//析构函数
~Tool();
//函数名:
selectObjects(实体选择函数)
//函数作用:
选择函数,成功返回RTNORM;失败返回RTERROR,此函数用于选择多个或单个实体并保存选择集到sset中。
);
//函数名:
selectBlock(单个块实体选择函数)
//作用:
选择函数,成功返回RTNORM;失败返回RTERROR;
//选择单个实体,检查是否为块,并返回块实体与块id
//函数名:
isBlock(块检查函数)
//作用:
检查选择的entid的实体是否为带有属性块,是则返回1否则返回0,实体无效返回2
//函数名makeHilght
//作用,将传入的entid的实体高亮显示
//函数名unHilght
//作用,将传入的entid的非高亮显示
//函数名maxNumber
//作用:
遍历Model_Spacerecord的所有块记录。
利用块表记录浏览器寻找当前数据库中已编号的所有部材中的最大的编号
//要了解数据库结构。
//函数名allOfNamed
//遍历Model_Spacerecord的所有块记录。
//如果所有的部材(带有系统自带的属性的块实体,存在于Model_Spacerecord)都已经命名,则返回1
//如果存在部材(带有系统自带的属性的块实体,存在于Model_Spacerecord)未命名,则返回0
//要了解数据库结构。
//函数名haveSameNameVolume(PartName[],longvolume)
//此函数用于检查确定部材相同的标准:
:
名称相同,部材体积相差小于50
//遍历Model_Spacerecord的所有块记录。
//如果存在已编号的部材(带有系统自带的属性的块实体,存在于Model_Spacerecord)的PartName与函数传入的PartName[]和volume相同,则返回此部材编号(大于0的一个数)
//其它情况返回0
//要了解数据库结构。
//函数名drawNumber
//在当前视图创建编号实体,所有实体都放在number层
//参数num为字符指针,函数中已acdbtext创建,放在圆型中,并把circle和acdbText在一起做成块
//把块插入到insertpoint