




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于ObjectARX技术的AutoCAD图库管理系统设计与开发(高级建模工具的二次开发)软件工程课程设计PAGE1PAGE1第第1页目录引言 3第一章: 概述 3图库管理 3图库管理的发展历程 3图库管理与传统CAD文档管理的区别 4图库管理的意义 5关于图库管理的国内外研究动态与发展现状 6图库管理的国内外研究动态,水平 6本图库管理软件的存在的问题 6高级建模 6高级建模的定义 6高级建模的意义 7本软件开发行业背景 7石材行业的国内发展现状 7石材软件的图库管理需求 8本课题研究的主要内容和意义 9课题研究方向的选择 9本课题研究的主要内容 9在理论及应用方面的意义 10第二章: 图库管理的理论基础 10图库管理 10图库的定义 10图库管理的分层组织结构 10图形数据库研究 11数据库概要 11图形系统与数据库 11图形数据库的形成、特点及类型 12数据库类使用分析 12数据库访问接口说明 12数据库兼容性分析 13第三章: 图库管理的系统构成 13软件开发环境 13开发环境的选择 13AutoCAD和高级语言的接口 15VisualC++/MFC开发环境 16开发环境配置 16ObjectARX2002简介 17ObjectARX简介 17ObjectARX的功能简介 18ObjectARX类库简介 19开发中使用到的主要类库 20设计开发的主要步骤 21创建VC++的工作环境 21配置数据库开发环境 21添加开发类库及配置工程 22添加对话资源及编写主程序代码 22编译链接和运行应用程序 24加载ObjectARX应用程序 24参数化软件体系结构 25第四章基于OBJECTARX的图库管理 264.1 引言 27图库管理的后台数据库表结构及多级分类管理结构的实现 27数据库表结构 27多级分类管理结构的简要说明 28图库管理模块流程图 28部材入库系统流程图 29部材出库系统流程图 29复合部材入库系统流程图 30复合部材出库系统流程图 31外栅工程(半成品库)的系统流程图 32图库管理程序中的关键技术及难点说明 32对部件的预览功能 33对颜色变更中颜色选择对话框使用 33对部材基点变更 34对部材插入动态拖动的ObjectARX的实现 35第五章基于OBJECTARX的高级建模工具 375.1引言 37建模工具类各模块说明 37部材交换 37部材参数变更 37部材信息显示 38部材对称复写 38部材视点回坛 39部材定位移动 39部材未命名,未编号高亮显示 40辅助删除工具类说明 40建模中AutoCAD数据库结构 40AutoCAD数据库对象创建 40AutoCAD数据库对象属性修改 42建模中使用关键技术 44遍历器 44选择集的使用 45第六章总结与展望 486.1 研究开发内容总结 486.2 展望 48PAGE3PAGE3第第3页引言在现代的工业生产和机械制造业中,CAD/CAM发现和修改错误,可靠性更强。ObjectARXAutoCADCAD第一章:概述图库管理图库管理的发展历程件。在图库管理中经历了几个阶段:1)设计人员给图档分类存档,自建目录管理使用文本管理工程图档CAD第一阶段是制造业初期,很多产品的设计是按照标准资料开发。在开发中设计人员有复用的需求,使用自建目录管理不仅不易使用,而且效率和复用性低。第二阶段在复用中使用文本记录需要复用的标准件的基本资料,便于用户检索。使用弊端是无法对多个目录操作,及没有分级别管理,数据量大时较混乱。第三阶段使用高级外建数据库管理图档,使用树型数据库结构,多级别管理使图库更加清晰明了。而且用户可以对其添加,删除,改写等操作,并且屏蔽了用户PAGE4PAGE4第第4页对工程文件的操作,避免丢失数据CAD一、当前CAD文档管理情况效管理。即使设计人员做到了这一步,这也只能体现出资源严重浪费、管理不善。(节约不必要的采购支出和不必要的标准件质量检测实验费用,但是根据调查结果,很多企业目前仍然处于这种比较混乱的情况下。况使工作经历少的设计人员越发处于劣势,更加浪费时间。标准件图库为企业设计人二、标准件管理系统提供的解决方案标准件管理系统,针对企业存在的上述问题,完成了企业标准件资源整合、统一有效管理,从企业的角度解决了资源浪费、成本增加的问题;同时,标准件管理系统还极PAGE5PAGE5第第5页形的烦琐工作中解脱出来,更便洁、高效的工作。标准件管理系统具有以下几个突出特点:一对一的标准件图形文件强大的标准件管理功能企业开发人员只需对标准件库进行有效管理,就能够轻松达到节约成本、提高效率添加新的部件规格,修改部件信息、删除部件及图形文件等。提高企业效率图库管理的意义图库管理是现代制造行业的企业的发展趋势,图库管理能够为企业节约成本、提高PAGE6PAGE6第第6页关于图库管理的国内外研究动态与发展现状图库管理的国内外研究动态,水平本软件主要开发石材行业,该行业在国际领先技术的国家是日本,因此我们对比日本的石材设计软件来看有以下特点:第一、日本软件是使用文本操作的格式,其对文本数据进行加密管理,其有固定的使用格式。其行业严格按照国际标准化,开发精度高,但其图库结构单一,开发分类必须通过WINDOWS文件管理,而且工程量大时候效率会低。第二、国内开发起步较晚,但使用二次开发工具选择也比较新,但大部分还是使用文本管理的方式,对外建数据库的使用不多,对处理大型工程复用性来看效率不高。界面不够人性化。本图库管理软件的存在的问题.WindowsADO1工程图库文件无法识别。2、 使用外建数据库管理,并未开发对外建数据库管理接口3、 设计人员使用效率较高但自扩展性较低高级建模高级建模的定义在AutoCAD中建立的三维对象一般称为模型(model),建立模型的过程称为造型(modelin,AutoCAD支持三种类型的三维模型:线框模型,曲面模型和实体模型,在PAGE7PAGE7第第7页本系统中高级建模的对象是实体模型。①ObjectARX位等操作,以加快设计人员的开发效率。高级建模的意义高级建模工具的开发使得设计人员在设计模型的同时减少了设计中处理实体的难度,降低的出错的机率,是实现了对设计的辅助开发。本软件开发行业背景石材行业的国内发展现状我国石材加工技术和加工机械的整体水平与外国相比还有一定的差距。从市场上来看,国内产品结构不平衡,供过于求,石材市场竞争过于激烈。从产业规模来看,大多数企业规模偏小,产品单一,在与国外企业的竞争中,越来越不利。从产品生产结构来看,虽然我国石材出口已跃居世界第一,但出口产品档次低,数量大,进口产品档次高,价格高。这些因素导致了我国的石材行业竞争激烈而且标准化不够,这些使得我国石材业在国际市场上生存力不强。才能在国际市场站稳脚跟。②①(爱尔兰)麦克奥理(McAuley,C.),AutoCAD2000ObjectARX编程指南,(李世国等译),北京:机械工业出版社,2000.255-32;②中国产业经济信息网第第9页石材软件的图库管理需求分析所得图库管理需求如下:需求模块部材库录入
简要功能描述部材化建模时为加快建模速度,将已设计成型的部材录入部材库,录入部材为已部材化的cad实体和按标准定义的部材。部材库索引是由外栅,周边,墓石等大类,以及其包含的小类构成的。周边,外栅,墓石三大类为标准,其他小类是可以添加,删除,修改的。录入功能包括:一般部材录入和复合部材录入部材库调用 部材化建模时为加快建模速度,从部材库中调已存在的部材,实际上是提供一个部材库的索引。1:部材库索引是由外栅,周边,墓石等大类,以及其包含的小类构成的。2:此部材库由三结构相同的库组成,一个是一般部材库,一个是复合部材库。所谓一般部材库是指由单个实体或块按一定的标准形成的部材库。所谓复合部材是指把两个或两个以上的一般部材或伸缩部材等(必须是实体)在出部品图或入库时都是视作一个一般部材。所谓复合部材库,是指由上述复合部材组成的结所谓复合部材库,是指由上述复合部材组成的结构同一般部材库的部材库。部材选择分为一般部材选择两种选择都提供预览缩略图功能。部材库维护1:部材修改(修改部材相关属性,长宽高的修改,基点的修改,名称的修改等)2:部材删除(从部材库中删除部材)表1:图库管理需求本课题研究的主要内容和意义课题研究方向的选择本课题研究的主要内容图库管理系统的后台外建数据库结构。图库管理系统中图档的多级别管理实现。AutoCADObjectARXAutoCADAutoCAD第第10页在理论及应用方面的意义图库管理作为工程行业中提高开发效率的有利方法,逐步形成在工程行业中有不缺少的地位我们尝试使用ObjectARX技术来开发新的图库系统不仅能提高设计人员开发效率,而且在 AutoCAD平台上使用新的技术架设新的设计管理软件对国内的ObjectARX研究也是一种推动。第二章:图库管理的理论基础图库管理图库的定义AutoCADCADAutoCAD成基本单元称为块(block)或图块,用来表示一种图形或符号。与一般图形文件不管理系统的基本功能就是图库文件的生成和库中块的定义和使用。图库管理的分层组织结构图1:图库管理组织结构图第第17页建库模块:创建和扩充图库;插入模块:用多种途径向当前图形数据库中插入图形或图块;灯片;输出模块:从图库文件中选择任意图块作为一个独立的图形文件保存。图形数据库研究数据库概要数据库是指在计算机存储设备上合理存放的相互关联的数据的集合。这些数据集便的进行数据的输入、修改、增删、检索等操作。图形系统与数据库为有效管理数据的工具。图形数据库的形成、特点及类型图形数据库的形成在计算机辅助设计中,用户所涉及的图形往往是比较复杂的,复杂的图形涉及的数据量大,要完全放在内存中是不可能的,这些数据不是孤立的,而是彼此密切联系的,并且要高速的处理以实现人机交互作用。另外,图形设计往往需要很多单位,许多人共同工作,而且要经常共用以前的设计经验,应用以前设计的图形与数据,以及一些标准的零件、部件、组合件等模型,这些都必存放在磁盘中,这就形成了图形数据库。图形数据库的特点型的信息:一种是有关设计环境的信息,包括规则、方法、标准元素等静态实中是动态的。实用中图形、符号较差,两种类型的数据信息经常混合出现。图形数据库向用户提供的是图形数据。图形数据库的特点是图形数据很复杂;图形数据量大;图形操作特殊,实时性强;图形具有一定的属性。图形数结构中去。数据库类使用分析数据库访问接口说明变量及具体方法参数说明ADOMS_ACCESSSQL_Server变量及具体方法参数说明_ConnectionPtrm_pConnection;_ConnectionPtrm_pConnection;Connection_RecordsetPtrm_pRecordset;RecordsetADOConn();数据库访问类构造函数virtual~ADOConn();数据库访问类销毁函数voidOnInitADOConn();数据库访问类初始化函数_RecordsetPtr&SQLRecordsetGetRecordSet(_bstr_tbstrSQL); bstrSQLCstringSQLBoolExecuteSQL(_bstr_t SQLInsertUpdatebstrSQL);成功返回TURE,失败返回FALSEvoidExitConnect();ADO表2:ADO数据库接口说明数据库兼容性分析使用ADOwindows口方便并且兼容性较强,ACCESSSQL_Server,ORACLE化,使用非常方便.第三章:图库管理的系统构成软件开发环境开发环境的选择CAD技术最早可以追溯到20世纪4020CAD技术从最初的平面辅助绘图工具,迅速向智能化、三维化、集成化和网络化的方向发展。其中,三维技术以其突出的优越性,迅速成为CAD.业界的发展主流。三维技术使工程设计实现了技术上的巨大飞跃,给工程技术人员带来了强烈的震撼,为工程师们的创意和想象力提供了最为广阔的空间,并从设计中得到无穷的乐趣。三维技术的应用,是CAD技术向纵深发展的必由之路。①AutoCAD是当今最流行的CAD软件之一,在建筑和机械等工程设计中得到了极为广泛的应用它将用户和设计信息与外部世界联系起来,在强大的技术平台框架上,集成了许多用户一直追求的特性构成了充满活力而又轻松易用的设计环境同时采用开放式的体系结构允许用户或二次开发商扩充新的功能和设计各种应用程序随着系统功能的逐渐增强和版本的不断升级,提供了一系列开发环境和工具AutoCAD2002提供了完整高性能且面向对象的CAD程序开发环境从菜单和工具栏直到每一个图形对象,都可以精确地定制,为用户和开发者提供了多种选择。这些选择包括基于C++②的ObjectARX;基于ActiveXAutomation(AutoCAD的ActiveXAutomation(AutoCAD的COM接口))的VBA和VisualLISP.所有这些开发接口都能与 AutoCAD的ActiveXAutomation或COM接口对象协同工作正是由于这些第三代的开发环境和工具的支持使AutoCAD本身不仅是一个轻松的设计环境,而且是一个强大的开放式的面向对象的CAD技术平台。ObjectARXAutoCADC++语言②ARX示AutoCAD运行时扩展(AutoCADRuntimeExtension).ObjectARX2002是一个综合的API(ApplicationProgrammingInterface).ObjectARX2002AutoCAD二次开发工具主要原因为:ARX程序有如下的优点:ARXAutoCADADSAutoCAD220类,与操作系统环境紧密联合起来,可充分利用操作系统的各种资源。AutoCADARXC++CADVC,能简洁高效地实现许①高艳明,李利,杨志刚,精通AutoCAD三维设计与开发,北京:中国铁道出版社,2002.1②谭浩强,C++程序设计,北京:清华大学出版社,2002多复杂功能。此外,考虑到其运行速度快、保密性好、交互式接口容易生成等因素,绘图程序决定采用ARX编写。同时,ARX程序也有它自身的缺点:稳定性:运行稳定性反映出程序可能出现的严重错误所导致的危险。由于ARXAutoCADAutoCADVisualC++ARXC+过严格的控制的编译、链接才能生成应用程序。经分析比较,虽然。ObjectARXObjectARXAutoCAD2002开发工具。CAD用AutoCAD2002作为开发平台,对其进行二次开发,建立了基于ObjectARX2002的AutoCADAutoCAD计算机辅助设计(CAD)CAD工作已在各个领域得到广泛的开展和应用。但是AutoCAD在CAD系统仅是一个支撑平台,它必须与工程设编辑处理的能力,真正起到辅助设计的作用。二次开发是用一定的高级语言编写与AutoCAD连接的程序,通过程序对原始资料进行AutoCADAutoCADAutoCAD运行效率,用程序方法对AutoCAD进行二次开发,就是以AutoCAD为支撑软件进行的软件开发。在AutoCAD提供的各种开发工具中,以C/C++开发工具的效率最高、功能最强。AutoCAD2002C/C++ObjectARX(ARX)应用程AutoCADAutoCADAutoCADARXARXAutoCADAutoCADVisualC++/MFC开发环境VisualC++6是Microsoft在多年使用过程中不断改进的基础上推出的,用于支持Win32,Windows95/98和WindowsNT平台的应用程序、服务和控件的一个优秀的可视化开发工具。该开发工具以其用户界面友好、开发过程简单、类库结构完备、不断支持新技术等等一系列优点而备受开发人员青睐。VisualC++6.0给用户提供了良好的可视化编程环境,该软件包含了许多独立的组件,如编辑器、编译器、连接器、实用程序成器、调试器,以及各种各样为开发Windows环境下的C/C++程序而设计的工具,其中最重要的是DeveloperStudio的集成开发环境DeveloperStudio把所有的VisualC++工具结合在一起,集成为一个由窗口、对话框、菜单、工具栏、快捷键及宏组成发和系统,通过该集成环境,程序员可以观测和控制整个开发进程。 VisualC++提供APPWizard帮助使用MFC的用户构造一个程序框架.MFC借助C什的优势为Windows开发开辟了一片新天地同时也借助ApplicationWizard使开发者摆脱了那些每次都必写基本代码借助ClassWizard和消息映射使开发者摆脱了定义消息处理时那种混乱和冗长的代码段更令人兴奋的是利用C++的封装功能使开发者摆脱Windows中各种句柄的困扰只需要面对C++中的对象这样一来使开发更接近开发语言而远离系统另外VisualC++6.0具有执行速度快,底层操作能力强,数据占用资源可以准确控制等优点,但对于图形图像编程则需要特定的开发包,所需工作量大。开发环境配置在使用ObjectARX2002开发应用程序时,需要使用Windows9X/NT4/2000操作系统平台,MicrosoftVisualC++6.0以上版本的编译器,并同时在硬盘上安装好AutoCAD2002和ObjectARX2002开发系统。因为开发生成的应用程序要在AutoCAD2002环境中运行,因此,运行ARX应用程序所需硬件环境同AutoCAD2002。即最低硬件配置为①:1)Pentium1.7GCPU2)256MB内存10G1024X768VGAWindowsObjectARX2002简介ObjectARXAutoCADAutoDeskAutoDeskAutoCAI)ADS,ObjectARX,AutoLispAutoCADObjectARX开发环境提供了一个面向对象的C++应用程序接口,开发人员可以利用接口使用,修改和扩展AutoCAD。ObjectARX(DLL),这些库与AutoCAD行,直接利用AutoCADAutoCADAutoCAD系统,以及几何造型核心,以便能够在运行期间实时扩展AutoCADObjectARXWindowsDLLAutoCADWindows,ObjectARXAutoCAD.WindowsWindowsC①余承飞,方勇,AutoCAD2000二次开发技术(ObjectARX),北京:人民邮电出版社,1999第18第18页OOP(ObjectOrientedProgram)技术的许多特点,如数据封装、继承、多态性等。ObjectARXMFCMFCwindows风格的用户图形界面程序。采用可扩展性思想设计出的ObjectARXObjectARXADS、AutoLISPObjectARXAutoCADAutoCADADS应用程序IPC(进程间通讯)外部进程
IPC(进程间通讯)AutoCAD IPC(直接调用ObjectARX直接调用图2 :ObjectARX.ADS.AutoLisp和AutoCAD之间的关系ObjectARXObjectARXAutoCAD这些工具可以方便应用程序对AutoCAD数据库结构,图形系统及本地命令进行直接访ObjectARXAutoCADAutoCAD①李长勋主编,AutoCADObjectARX程序开发技术,北京:国防工业出版社,2005第第20页MFC支持多文档界面(MDI)创建自定义类建立复杂的应用程序与其他编程环境交互作用。ObjectARXObjectARX环境包含下列几组类和函数:AcRxAcRxDLLAcRxObject。AcRxDictionaryAcRx库将其对象、类和服务词典放在一个全局对AcRxDictionaryAcEd·AcEdAutoCADAutoCADAutoCAD具有相同的内部结构(AcEdCommandStack)AutoCAD信的全局函数。AcDbAcDbAutoCADAutoCADAutoCAD也是图形的一部分。AutoCAD数据库包含如下主要元素:AcDbDatabasetoCAD200AutoCADAcGiAcGi库提供了用于绘制AutoCAD实体的图形界面。AcGeAcGeAcGeAcGeEntity2d和AcGeEntity3d。包括AcGePoint2d.AcOeVector2dAcGeMatrWd开发中使用到的主要类库本系统开发中主要模块使用的类库:开发模块开发模块使用类库及自定义类库(说明)图库管理模块(部材及复合部材)ADO接口。AcDb和非图形对象。AcGi库:用于图形在模型空间的动态拖动的实现。半成品库模块(外栅工程)Ini类:文本操作基类。ParIni类:伸缩部材操作类。GtpIni类:外栅工程操作类高级建模模块AcDb和非图形对象,并且操作处理该对象(如移①陈杉,王宁,郭剑峰,用ObjectARX开发AutoCAD2000应用程序,北京:人民邮电出版社,2000.2动,旋转等动,旋转等。AcBrEntity(按用户需求定制)表3:本系统开发中主要模块使用的类库设计开发的主要步骤创建VC++的工作环境VC.cpp,.def,.rc,.h,其具体过程为:打开VisualC++6.0File-New,在列表框中选择ObjectARX2000/2000i/2002AppWizard,ProjectnameLocationOKObjectARXMFCObjectARXStep1ofObjectARX(AutoCADextension),UseMFC框勾上,确认选择了MFCExtensionDLL(usingsharedMFCDLL)和MFCExtensionsforAutoCADYourRegisterDeveloperFinishNewProjectInformationOKProject经创建好了。配置数据库开发环境开发中使用ACCESS数据库及ADO数据库访问接口。ObjectARXMFCADOInsert-NewClass..,Newclass框中把Classtype 选择为Genericclass。输入Name:ADOConn,对话框中单OK按钮,类建好了。2)ADOConn.hADOConn.cpp3)stdafx.h#import "c:\program files\common no_namespacerename("EOF","adoEOF")\rename("LockTypeEnum","adoLockTypeEnum")rename("DataTypeEnum","adoDataTypeEnum")rename("FieldAttributeEnum","adoFieldAttributeEnum")rename("EditModeEnum","adoEditModeEnum")\rename("RecordStatusEnum","adoRecordStatusEnum")\rename("ParameterDirectionEnum","adoParameterDirectionEnum")\rename("EOS","AdoEOS")添加开发类库及配置工程ObjectARX中手动配置,操作如下:ToolsoptionsoptionsoptionsDirectoriesshowdirectoriesfor“include“[filePath]\K030.ARX.PLUS.ALL\INCshowdirectoriesfor选择为“Libraryfiles”,情况下,添加K030.ARX.PLUS.ALL\LIB”;添加对话资源及编写主程序代码Windows是比较复杂的、可以输入数据的对话框(此类对话框可以用于获取有关数据)。Windows将对话框分为两大类:模式对话框和无模式对话框。本系统中主要采用模式对话框,具体创建过程如下:Insert-Resource,InsertResourceDialog,单New级建模工具操作需要的样式。修改对话框特性包括标题(Caption),IDClassWizard的函数。MFC1)生成对话框对象创建对话框显示对话框使用简单的代码说明上述步骤://在对话框头文件中:private:Cdialog*m_pDialog;//在需要实现的文件中if(this->m_pDialog=NULL){this->m_pDialog=newCdialog2(this);this->m_pDialog->Create(Cdialog2::IDD);}this->m_pDialog->ShowWindow(SW_SHOW);this->m_pDialog->SetFocus();我们可以看出,一般的Windows资源(窗口是一种特殊的资源)的创建步骤,首先是生成C++对象,然后是调用Create生成具体的资源。①在开发ObjectARX中,我们可以使用MFC提供的对话框类,也可以ARX增添由①刘晓华等,精通MFC,北京:电子工业出版社,2004CAcUiDialog派生的类,处理消息的函数,并处理程序中添加必要的开发代码。在开发对话框程序中我们目的是为了处理对话框接收来的数据,所有我们程序主要的处理代码,也就是主程序代码的生成是最关键的,步骤如下:1)首先,单击ObjectARXToolbar的“CMD”按钮,出现ObjectARXDefinedCommands 对话框,填入 Group:(例:henryhyg),International:(例Local:(例:hyg),单击Add按钮,再单击EditCode按钮。2)加入与各个对话框相关联的消息处理函数,同时设定对话框传参。本系统中主OKOK由于用ARX的acedCommand函数可以直接调用AutoCAD的命令来完成部分较为复杂的功能,但是程序实现中比较容易出错,在开发中使用不多。编译链接和运行应用程序MicrosoftVisualC++来进行编译和链接。当没有错误后,自动生成.arx后缀的可执行文件。如:[filePath]/Debug/hyghyg.arx",然后,在AutoCAD加载ObjectARX我们要是用编译生成的ARX程序,需要对其进行加载,步骤如下:AutoCAD2002,从“Tools”菜单选择“LoadApplication”对话框的文件选择框中选中需要加载的ARX文件,这个ARX文件是在MicrosoftVisualLoad”加载该文件,最后选择“Close”按钮结束对话框。AutoCAD2002“Command:”提示符下,键入命令“bchc"(注意:第第25页交互输入有关参数,即可得到相关的结果。我们还可以使用下列方法之一来加载ObjectARX应用程序:图3:图库程序示例加载方法有两种:1AutoCADARXLoad2ObjectARXacedArxLoad()函数。参数化软件体系结构本参数化设计软件体系结构主要由四个模块组成,如图4所示。用户选择部材模块:通过对用户选择的部材进行判断是实体还是块,使用不同的分类入库操作.通过对用户选择的部材分类检索出需要出库的部材.界面设计模块根据选定的参数设计系统的交互式界面,以人机交互的方式输入主参数(类别,部材名称,加工方式及注释).计算处理模块:第第26页根据主程序算法图层操作运算及部件CAD模型组合,使其在保留原有属性前提下进行工程图库的操作.绘图模块:根据程序定义的模型在当前模型空间生成定义的部材或实体用户选择部材模块用户选择部材模块界面设计模块计算处理模块绘图模块图4:参数化体系结构第四章基于OBJECTARX的图库管理第第27页引言AutoCAD(注释:软件工程)图5 AutoCAD系统和图库管理系统与数据库之间的关系图库管理的后台数据库表结构及多级分类管理结构的实现数据库表结构设计思想表结构HD_DBHD_DBPKIDNameFIDIsBlockNotesTypeLengthWidthHeight图6:数据库表结构多级分类管理结构的简要说明每条子节点记录对应一个部品工程文件,使用中对每条记录检索起FID字段,并形成树状结构。入库时检索数据库既可形成分类结构。图7:数据库效果前台说明图库管理模块流程图第第29页部材入库系统流程图开始用户选择部材开始用户选择部材(单个)实体选择类别部材实体基点选择部材信息读取话框弹出参数录入对话框是否同名非同名入库同名覆盖是否同名覆盖入库退出结束图8:部材入库系统流程图部材出库系统流程图开始开始用户选择部材类别用户选择部材部材参数变更动态拖动插入静态插入定位图块扩展属性写入结束图9:部材出库系统流程图复合部材入库系统流程图开始开始用户选择多个实体是否存在块是否深度克隆一份实体拷贝到新的数据库中参数录入对话框是否重名否同名覆盖是同名覆盖入库退出非同名入库退出结束图10:复合部材入库系统流程图复合部材出库系统流程图开始开始用户选择部材部材参数变更动态拖动插入静态插入定位结束图11:复合部材出库系统流程图外栅工程(半成品库)的系统流程图开始开始用户选择外栅外栅参数录入插入方式选择用户输入位置用户屏幕选择结束图12:外栅工程(半成品库)的系统流程图图库管理程序中的关键技术及难点说明对部件的预览功能在图库管理中,设计人员使用过程中如果知道名部件的基本样式图(点,图库的使用就更加便捷和人性化。在该模块的开发过程中,本人使用的是AutoCADSLDSlide.ocx。使用步骤如下:Slide.ocxsystem32“regsvr32“slide.ocxDllRegisterServerMFCClassWizard(m_slideSLDSLD对颜色变更中颜色选择对话框使用在图库使用时,设计人员常需要对使用的部品赋上颜色。经过总结,可以在ObjectARX中使用两种颜色选择方式1):调用CAD自身的调色版.示例代码如下:voidDialog::OnButtonColor(){intcolor=0;if(Adesk::kTrue==acedSetColorDialog(color,Adesk::kTrue,8)){acutPrintf("Thechoosecoloris:%d",color);}CAcUiColorComboBox*cb=newCAcUiColorComboBox();m_color=cb->GetColorFromIndex(color);acutPrintf("Thecolorindexis:%d",color);OnView();UpdateData(false);}说明一下:主要使用CAcUiColorComboBox类的GetColorFromIndex()方法来获得其索引颜色值,autocad定义这个值在0~255.使用virtualCOLORREFGetColorFromIndex(intcolorIndex)方法可以获得你要的颜色.( 注:COLORREFObjectARX定义的颜色变量类别)2)MFCvoidDialog::OnColor(){COLORREFm_color;CColorDialogm_Dlg(0,0,NULL);if(m_Dlg.DoModal()==IDOK){m_color=m_Dlg.GetColor();}}m_color是用户选择的颜色对部材基点变更用户需要对插入的部材按需要定位,在拖动的时候需要修改拖动点,本人实现的方法是用修改基点的方法来操作。技术难点在对块表纪录的操作,示例:voidchangeBasePoint(CstringBlockName/*块名*/,AcGePoint3dbasepoint/*新基点*/){AcDbBlockTable*pBlockTable; //定义块表AcDbBlockTableRecord*pBlockTableRecord;//定义块表记录//得到当前模型空间块表acdbCurDwg()->getBlockTable(pBlockTable,AcDb::kForWrite);//得到该块名对应的块表记录pBlockTable->getAt(BlockName,pBlockTableRecord,AcDb::kForWrite);pBlockTable->close();//关闭块表pBlockTableRecord->setName(BlockName);//把块表记录和该名称块关联pBlockTableRecord->setOrigin(basepoint);//修改该块基点pBlockTableRecord->close();//关闭块表记录}说明:容易出现对该块误操作情况,为了避免错误,需要在修改该块前检查是否有对该名称的块进行了应用。对部材插入动态拖动的ObjectARXAcEdJig变量或是方法变量或是方法说明变量CStringlayerName;定义层名COLORREFm_color;定义颜色AcGeMatrix3drotateForm;定义旋转矩阵AcGeMatrix3dmoveForm;定义移动矩阵doublemAng,angle;定义角度AcDbBlockReference*pBlockReference;定义块引用AcGePoint3dmInsertPt;AcGeVector3dmNormal;AcGeScale3dXrefScale;AcDbObjectIdm_ublkID;方法
定义插入点定义对象IDMyJig(AcDbObjectIdblkId,AcGeVector3d& AcEdJigMyJignormal);virtual~MyJig();voiddoIt();DragStatusdrag();
AcEdJigMyJig拖动入口拖动实现方法在程序中调用该方法会依此按顺序调用AcEdJig::DragStatusMyJig::sampler()和Adesk::BooleanMyJig::update()这两个方法来实现循环拖动virtualDragStatussampler(); 该函数是在drag()调用之后执行的,目的是为了跟踪用户选择的点并存入临时变量virtualAdesk::Booleanupdate(); 该函数实现的画新的子实体模块功能,在户定位新的点的时候画出图型voidsetColor(COLORREF);voidsetLayer(CString);
设定颜色设定层voidsetScale(doublex,doubley,double z);voidsetAngle(doubleangle);voidsetBlkName(CStringbName);voidsetNewBp(AcGePoint3d);
设定角度设定块名修改基点表4:重载AcEdJig类方法说明说明:该方法是专门针对块操作的方法,在拖动后实现颜色修改,基点变更,扩展属性写入等功能。第五章基于OBJECTARX的高级建模工具引言CADCADObjectARX建模工具类各模块说明部材交换该模块对用户选择的单个部材进行参数运算,得到部材信息,得到用户从库中选择的部材,按照CAD布尔运算安放到原来的位置。部材参数变更该模块变更用户选择的标准化部材的各参数,如颜色,加工方式,角度,基点等。第第39页图13:部材参数变更效果图部材信息显示该模块显示按标准化制定部材的信息,包括专有属性信息,体积及编号信息。图14:部材信息显示效果图部材对称复写该模块使用特定的对称方式实现开发人员的需求,主要功能有:对称方向选择共有四种选择方式:按X轴对称,Y轴对称,Z轴对称,XY方向对称对称中心选择共有两种选择方式:按照用户选择的对象的中心来定位;按用户选择两点中心.选择是否需要创建新实体图15:部材对称复写效果图部材视点回坛该模块实现了按用户选择中心点旋转实体对象的功能.部材定位移动该模块实现了对用户选择的对象进行高级定位的功能.提供四种对称方式:移动到选择的对象的上面移动到用户选择点的高度Z按用户手动输入参数移动图16:部材定位移动效果图部材未命名,未编号高亮显示该模块用于检测出图时是否存在未命名未编号的实体,并使用颜色高亮表示.辅助删除工具类说明该模块作为石材行业标准专用操作,其工具分为:用户选择指定部材删除用户整体部材删除外栅类删除墓石类删除周边类删除地板料类删除该操作主要是使用了ObjectARX中的遍历器技术和对象删除技术。建模中AutoCADAutoCAD1、生成实体对象的方法AutoCAD(1AutoCADAutoLISPcommand()函数生成一个对象。第第42页ADSads-command(4ARXAutoCADARX图纸空间块记录块表块表AcDbBlockTable模型空间块表记录实体LineCircle17:AutoCAD2、创建实体对象的过程在AutoCAD数据库中,一个实体实际上是该数据库中的一条记录,其存AutoCADARX创建实体对象的具体过程如下:(1)acdbCurDwggetBlockTable(),(2)AcDbBlockTablegetAt(),获得当前图形的块表记录指针。(3)调用AcDb对象类创建对象,然后调用AcDbBlockTableRecord类的成员函数函数appendAcDbEntity()将对象写入块表记录中。AutoCAD在AutoCAD中要编辑对象必须找到该对象,获取对象主要有三种途径:通过对象句柄对象标识符C++指针。说明:对象句柄是AutoCAD文件打开后,数据库中的每一个对象都具有一个区别于其它对象的对象标识符,直到图形文件的关闭或数据库删除。通过数据库打开函数可以获得对象标识符,并返回指向该对象的指针。①对象编辑的主要操作内容是对其属性的查询和修改。数据库对象的属性包括共有属AcDbEntityAcDbEntity下面是改变对象颜色和层的一段代码:AcDbObjectIdentId;//定义对象ID/*ID*/intm_Color;//AcDbEntity*pEnt;//定义对象的指针①李世国,AutoCAD高级开发技术:ARX编程及应用,北京:机械工业出版社,1999if(Acad::eOk==AcdbOpenObject(pEnt,entId,AcDb:;kForWrite)){pEnt->close();return;}//打开对象,并获得指向对象的指针pEnt->setCorlorlndex(m_Corlor);//调用成员函数改变颜色pEnt->setLayer("layer1")://调用成员函数改变该对象为//层”layer1”;pEnt->close()://关闭对象对象专有属性的查询和修改,要比共有属性的查询和修改复杂些,其基本步骤是:AcDbEntity类指针;利用类型转换函数得到指向该对象某一具体类指针
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 有效管理时间的月度工作方案计划
- 仪表知识温度培训课件
- 第24课《唐诗三首》之《茅屋为秋风所破歌》教学设计 2023-2024学年统编版语文八年级下册
- 某妇产医院品牌推广部网络推广工作思路
- 2025年青海普通货运从业资格证模拟考试
- 2025年淮南驾驶资格证模拟考试
- 2025年杭州货运从业资格模拟考试
- 2025年上海货运从业资格证考试试题及答案
- 2025年德州c1货运从业资格证考试内容
- 2025年陕西货运丛业资格证考试题目及答案
- CJJT8-2011 城市测量规范
- 《当代中国政治制度》期末考试必过(整理版)
- DZ∕T 0033-2020 固体矿产地质勘查报告编写规范(正式版)
- 学校增量绩效考核方案
- 产前筛查标准技术操作规程
- ISO27001:2022信息安全管理手册+全套程序文件+表单
- 私人会所餐饮规章制度 餐饮会所管理规章制度(模板8篇)
- 供应商信息表(中英文)
- 殡仪服务员(初级)理论考试复习题库大全(含答案)
- 中外室内设计史全套教学课件
- 油浸式变压器状态监测装置
评论
0/150
提交评论