《板金参数化设计及优化设计.doc》由会员分享,可在线阅读,更多相关《板金参数化设计及优化设计.doc(90页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、空调钣金件CAD目 录中文摘要I英文摘要II1 绪 论11.1 研究背景11.2 课题来源及研究目的与意义21.3 AUTOCAD二次开发的国内外研究与应用状况21.4现行状况与主要存在的问题41.5论文的主要工作内容42 AUTOCAD二次开发方法介绍52.1 二次开发工具的介绍52.3 基VBA与Visual Basic的区别82.4 Autocad 的Activex模型特点92.5 AUTOCAD 中的Activex对象92.6 AutoCAD的对象模型分类92.7 用VBA及ActiveX对AutoCAD进行二次开发102.8 VBA与AutoCAD对象之间的连接112.9 AUTOC
2、AD ActiveX 自动化技术简介113 板金件的展开算法133.1 板金件的展开算法思想的提出133.2钣金件展开的数值算法133.3对话框的设计153.4程序的编制163.5程序运行及调试21本章小结224 参数化绘图的创建与实现234.1参数化实现方法234.2利用变量驱动图形234.3表格驱动图形244.4尺寸驱动图形244.5用户元素驱动图形244.6参数化设计步骤24本章小结345标准件库的绘制355.1 标准件绘制程序的设计思想355.2 螺栓的绘制方法365.3下拉菜单的设计41本章小结466 总结与展望486.1总结486.2 展望486.3实际编程中的问题、经验、体会49
3、致 谢51参考文献53附 录551 绪 论1.1 研究背景AUTOCAD是目前微机上应用最为广泛的通用交互式计算机绘图与设计软件包。AUTOCAD的强大生命力在于它的通用性,多种工业标准和开放的体系结构。其通用性使得它在机械、电子、航空、船舶、建筑、服装等领域得到了极为广泛的应用。但是,不同的行业标准使得各领域在使用AUTOCAD的过程中均需要根据自身的特点进行定制或开发。AUTODESK公司为满足广大用户的需求,自AUTOCAD V2.18至AUTOCAD2004的短短十几年间,就相继推出了三代二次开发工具,可以说,AUTOCAD的通用性为其二次开发提供了必要条件,而AUTOCAD的开放的体
4、系结构则使其二次开发成为可能。AUTOCAD 开发环境的发展 随着系统功能的逐渐增强和版本的不断升级, Autodesk 公司提供了一系列开发环境工具。1985 年 6 月 推 出 的 AUTOCAD2.17版 本 选 用. AUTOLISP.作为内嵌语言,由于 AUTOLISP. 的嵌入,使仅仅作为交互式图形编辑软件的AUTOCAD 变成能真正进行计算机辅助设计、绘图的 CAD 软件。这是AUTODESK 公司提供的第一代开发环境。AUTOCAD 系统的第二代开发环境是R11 版本提供的 ADS(AUTOCAD DEVELOPMENT SYSTM)开发系统。ADS开发了 AUTOCAD 的
5、C 语言设计环境, 以外部函数形式加载到 AUTOCAD中。在AUTOCAD2004 中不再支持 ADS 开发环境,ADS完全被 OBJECTARX 所取代,但用户仍可以在OBJECTARX环境下使用它。1.2 课题来源及研究目的与意义本课题的来源是在实际生产中,传统的钣金件展开图的绘制方法费时费力,且精度较低。随着计算机技术的发展,计算机绘图技术突飞猛进,利用计算机进行钣金件展开图的绘制很有必要。开发的钣金件展开图可视化、参数化绘图系统,不仅能够缩短生产周期、节约人力资源、提高生产率和绘图精度,而且可以对随着钣金件尺寸变化的展开图图形进行分析。因此,本次的的毕业设计就是主要设计开发钣金件的展
6、开算法及其参数化绘制,并在此基础之上再进行标准件的参数化绘制及其标准件库的设计,再设计添加好下拉菜单,以方便更好的高效而准确的得到我们所需要的图形。1.3 AUTOCAD二次开发的国内外研究与应用状况国外研究现状AutoCAD 2002是Autodesk公司推出的跨世纪的、一体化的、功能丰富以及面向未来的大型设计软件。最新推出的AutoCAD2002新增加的Internet功能真正实现了用户设计信息和外部环境的紧密联系,使其组成一个有机的整体。在它的强大技术平台框架之上,结合了许多用户一直追求的特征,如类似Windows常用软件的界面,构成了充满活力而又轻松易用的设计环境。除了继承以前Auto
7、CAD系统的优点之处,又增加了许多新的功能,能够在未来的Windows 2000 Professional及Windows 2000 Server操作平台上安装作用。AutoCAD 2002被认为是目前功能最为强大的计算机辅助设计软件。AutoCAD 2002除了在继承原来版本功能的基础上,又包含了一系列灵活方便的开发工具,如Visual LISP, VBA, ActiveX和ObjectARX等,使用这些工具可以灵活实现功能的集成和设计过程的自动化。目前己经在金属车削过程的动态仿真、设备的集成设计、结构的参数化设计、复杂实体的三维造型设计等方面得到了广泛的应用。今天,全球有数十亿的工程图形采
8、用由AutoCAD最早提出并应用的工业标准格式一DXF和DWG来描述。有近3000家注册开发商向市场提供5000余种基于AutoCAD开发的适应各类专业领域及不同层次应用的增值软件。有5000多所遍及全球的学校和千余家授权培训机构开设AutoCAD及其相关软件技术的课程,每年培训100余万学生和工程技术人员。AutoCAD及其图形格式已成为一种事实上的CAD标准和普及新一代设计文化的基本载体。国内研究现状我国作为发展中国家,虽然CAD技术的开发应用与发达国家有差距,但也取得了许多辉煌成就。CAD作为关键共性的应用技术,已经在我国机械制造、建筑工程、轻工化纺、船舶汽车、航空航天、影视广告等领域起
9、到催化、加速、倍增器的作用。CAD技术在我国建筑工程业的应用深度和广度与发达国家的差距并不显著,其使用效果比发达国家还好。有我国自主版权的CAD支掌软件及其应用软件已能满足我国企业“甩掉图板”的要求,并已形成了一定的产业规模。CAD作为关键的共性技术,其广泛应用必将促进人们思想观念、工作模式、生产方式的转变,由此对世界经济可能产生的影响,可以与十八世纪的工业革命相比拟。CAD应用工程是与CAD技术研究开发、推广应用相关的高新技术密集的大型系统工程。CAD应用工程的实施标志着我国在“企业信息化、信息企业化”的大道上取得了长足的发展。CAD技术的使用使产品和工程设计、制造的工作内容和方式发生了根本
10、性变革,这一技术成为工业发达国家制造业保持竞争优势、开拓市场的重要手段。1990年美国国家工程科学院将CAD技术评为当代十项最杰出的工程技术成就之一。目前,CAD技术日趋成熟、应用日益广泛,有力地促进了全球高新技术的发展和新产品的迅速更新换代。可以肯定,不采用CAD技术,就不会有今天的PC586、PC686和明天的PC786微型计算机,也不会使计算机产品更新如此之快,价格下降得如此之多。不采用CAD技术,就不可能做到波音777大型客机的“无纸设计”和“无纸制造”,使其设计制造成本下降30%以上。不采用CAD技术,也不可能想象30多人在十天内完成一幢18层高层建筑的方案设计和施工图输出。列举不尽
11、的这些优秀产品和工程无一不是采用CAD技术的结晶。 现在,随着计算机性能成数量级的提高,其价格成倍地下降;随着“网络通讯的普及化”、“信息处理的智能化”、“多媒体技术的实用化”,随着CAD技术的普及应用越来越广泛,越来越深入;CAD技术正向着开放、集成、智能和标准化的方向发展。1.4现行状况与主要存在的问题在我国,大多数企业广泛采用AutoCAD绘图软件包,但AutoCAD作为通用的交互式给图软件,在工程实际应用中还存在以下不足之处:(1)过于通用的绘图功能难以满足某些专业、某些领域的需要,使得作图效率低。例如:化工容器制图中,常用的焊缝符号、公差等专业标注,应用AutoCAD的交互式命令不能
12、快速、方便地生成;(2) AutoCAD虽有很强的二维工程制图功能,但其计算、分析、优化等功能相对较弱,仅仅靠绘图已无法更好地辅助设计者进行产品设计;(3)菜单、对话框、工具条的布置等人机交互界面与设计人员习惯不完全一致。为了提高绘图效率,适应各种专业的设计需要,弥补在计算、分析、优化等方面的不足,AutoCAD提供了许多二次开发的方法和工具,为提高绘图效率和产品开发质量提供了坚实的基础。1.5论文的主要工作内容本文注重理论联系实际,紧紧抓住AutoCAD二次开发这个主题针对经常遇到的问题,并且从整体出发,考虑到系统的模块连接问题,用VBA对AutoCAD进行二次开发。在第二章中总体介绍了VB
13、A的基本知识和它的一些独特之处。第三章主要介绍钣金件的有关展开与计算方面的有关知识,这是本次毕业设计的重点。第四章就参数化绘图的相关知识进行了介绍,对与参数化绘图的设计思想和方法以及标准件作了粗略的介绍。2 AutoCAD二次开发方法介绍2.1 二次开发工具的介绍AutoCAD的二次开发工具从最初的初级开发工具AutoLISP,高级开发工具ADS (AutoCAD Development System),己经发展到面向对象的开发工具ARX(Application Runtime eXtension), VisualLISP和VB等。AutoLISP是一种嵌入AutoCAD并运行于其中的、驻留在
14、扩展内存里的解释性执行语言,具有编程简单的特点,但在开发大项目时显得力不从心。ADS是一种开发AutoCAD应用程序的C语言程序设计环境,它与AutoCAD并不直接通信,而是以AutoLISP为中介联系起来,这就摆脱了AutoCAD的约束,从而具有很大的灵活性,其缺点是不适应当前可视化编程的需要。ARX程序是Windows DLL程序,通过调用acrxEntryPointO函数建立与AutoCAD消息传递的入口,采用消息传递机制直接通信并处理来自AutoCAD的各种消息。执行ARX应用程序所需系统开销最小,速度最快,但开发过程相当复杂。VisualLISP是AutoLISP语言的扩展和延伸,它
15、可以把LISP源程序编译成ObjectARX应用程序,编译后的程序比解释型的AutoLISP程序快3-l0倍。VB提供的Object技术能够返回对象及属性,它所开发的应用程序能创建、检索或修改别处应用程序的对象。AutoCAD也是应用程序对象,VB开发的应用程序是通过对AutoCAD的各级对象的方法和属性进行操作而控制AutoCAD工作的。调用AutoCAD资源,可拓宽AutoCAD的功能并加强与用户的交互。VB编程相对简单,因而开发周期较短。 AutoLISP语言开发工具: AutoLISP是嵌入AutoCAD内部的编程语言,它提供了150多个函数,可以进行数学运算、关系运算、位运算、字符串
16、运算、表处理、交互输入和文件操作,具有流程控制函数,可以调用Auto-CAD提供的所有指令,可以对AutoCAD绘制的实体访问和修改,可以访问外部设备。AutoLISP程序通过它所提供的函数以及调用AutoCAD提供的所有指令对AutoCAD指令进行扩充,所扩充的指令能直接被AutoCAD加载调用。AutoLISP语言是一种解释性语言,利用它开发的程序特点是编程简单,但程序执行速度较慢、程序的保密性较差,特别是在开发大型程序时,没有丰富的出错信息,缺乏强大的调试工具,使得程序的调试和维护都比较麻烦。ADS开发工具:ADS是为C语言提供的AutoCAD开发工具1。它支持常见的一些C语言编译系统,
17、如:MicrosoftC、HighC以及BorlandC等等,适用于DOS、DOSExtender、OS/2以及UNIX等环境。ADS程序不仅可以调用丰富的内部库函数,而且可以调用AutoCAD提供的ADS库函数,大部分C语言编译器都有极其强大的集成调试环境,这给ADS程序在设计、调试和维护上带来了很大的方便。由于ADS程序编译后生成的是“.EXE”或“.EXP”文件,因此在程序的运行速度与保密性方面优于AutoLISP程序。另外,由于C语言有极好的结构化编程功能,丰富的数据结构,灵活的编程风格,再加上可以直接与计算机硬件通讯的能力,这些都使其成为二次开发AutoCAD的有效途径。利用ADS开
18、发的应用程序能象普通AutoCAD指令一样被用户调用,例如:Auto-CAD提供的AME模块就是ADS应用程序,但ADS程序由一组外部函数组成,它们由Au-toLISP解释器来加载调用,ADS程序本身并不直接与AutoCAD进行通讯,它需要通过IPC与AutoLISP来与AutoCAD联系。在实际应用中,C程序主函数负责与ADS通信链接,其格式基本上是固定的。开发者主要精力在于设计能实现数据处理和绘制功能的子函数。ObjectARX开发工具ObjectARX是AutoCADR13之后推出的第一个全新的面向对象的开发工具,在此之前,ADSC已经能在AutoCAD上开发较大规模的程序,然而计算机技
19、术的发展不仅要求CAD的交互性、综合性,同时对自动化、智能化也提出了更高的要求。特别是当前,面向对象的编程技术已经成为软件开发的主流,传统的结构化编程模式正逐步被面向对象以及消息驱动编程模式所代替,在这种情况下,Autodesk公司推出了ARX开发工具。该开发工具充分支持C+以及面向对象的编程技术,无论在程序的运行速度、通用性、功能上都是相当强大的,ARX应用程序实质上是一个动态联接库(DLL),它直接与AutoCAD进行通讯,与AutoCAD溶为一个整体,并具有ADS程序及AutoLISP程序所不具备的访问和控制Au-toCAD的能力,而且运行速度上比后两者更快。值得注意的是,开发ARX程序
20、对软件开发人员的技术要求比开发AutoLISP程序及ADS程序更高,所需的硬件配置也比后两者高,三种开发工具与AutoCAD系统的关系如图(1)所示。VB开发工具:VB是一种可视化的、面向对象的Windows开发语言。VB从问世之初,就有易用和开发效率高的特点,随着VB语言的不断升级,这一特点显得越来越突出,同时,由于该语言平台的不断完善和计算机性能的不断提高,VB语言本身的缺陷显得并不那么重要。由于它具有易学、易用的特点,在软件开发领域有着越来越多的应用场合。在这种前提下,Autodesk在AutoCADR14.0以上版本中设置了VB开发工具的接口,使得用户可以在VB语言环境下对AutoCA
21、D进行二次开发。在利用VB对AutoCAD进行二次开发时,为了调用AutoCAD中的各种对象,必须在VB工程中引用AutoCAD的对象库,引用之后,就可以在VB中方便地操作AutoCAD的各种对象了。VBA开发工具: 尽管ARX开发技术功能强大,而且VB开发工具又是那么简单易用,但是也存在一些不足。其一是开发ARX程序对软件开发人员的技术要求比开发AutoLISP程序及ADS程序更高,因此开发者掌握起来特别困难。其二是VB开发的软件必须脱离开AutoCAD,而在VB的集成环境下进行调试,使用起来总觉得二者不是一个有机整体,因而不太方便,为改善这些缺点,在AutoCAD2000上出现了内置的VB
22、A和VisualLISP开发工具。VBA是一种标准宏语言,其语言结构简洁明了,作为VB的一个子集,同样具有灵活易用的特点,而且作为AutoCAD的一个内置工具,它与AutoCAD形成了一个统一的整体,二者之间的通信十分简单而高效。VBA的代码完全是在进程内执行的,尽管VBA目前是以解释方式执行,但它与AutoCAD完全共享内存空间,所以执行速度比用C语言开发的应用程序还要快。VBA程序在AutoCAD2000中的开发与调试特别简单,因此,逐渐受到了AutoCAD开发人员的青睐,同时,为了改善解释型语言系统的保密性能,在VBA的工程管理中加入了代码加密功能,使得开发者的源程序不会轻易被其他人获取
23、。VisualLISP开发工具: VisualLISP是最近Autodesk公司推出的一种可视化的LISP语言环境,它是AutoLISP语言的扩展与延伸,基于ObjectARX的VisualLISP开发工具提供了一组性能优越的面向对象的工具集,它不仅具有LISP语言简单易学的特点,而且带有功能强大的集成开发环境,开发之后的程序编译执行,速度比解释型的LISP程序快310倍。开发工具选择:由于软件工程技术的不断发展,因此在开发软件过程中的各个阶段对软件的集成化调试、保密性要求、开发速度和开发质量等要求也越来越高,同时为了加强程序代码的模块性和可复用性等性能,现代软件设计中大量采用了面向对象编程技
24、术。纵观上述二次开发技术的发展过程,也同样遵循这个模式。Autodesk公司为了加强产品在市场上的竞争能力,为用户提供了二次开发工具,在软件的分析、设计、编码、调试、维护等方面都在不断采用一些新的软件开发技术,可以认为,上述几种不同的开发工具,是软件开发技术在不同历史发展阶段的产物。因此,为了获得高质量的软件产品,必须对二次开发工具的选用作一个综合而全面的权衡。由于科学技术的发展和软件开发水平的提高,使用LISP和ADS开发工具的用户已越来越少,而目前使用比较多的是ARX、VBA及VisualLISP三种开发工具。在上述三种开发工具中,由于ARX是基于VisualC+平台的,与VBA一样,它们
25、都自带大量的可视化的编程控件,这样在软件开发时,人机交互界面的设计更加方便和快捷,从而使开发出的软件更加具有个性,而VisualLISP在这方面就显得有所欠缺。尤其是在软件开发中如果需要和数据库接口时,ARX和VBA工具中都有专用的数据库控件可直接选用,可以省去很多繁琐的工作。但是VisualLISP工具由于具有简单实用的特点,在设计中小型程序时,也是一个不错的选择。在本次毕业设计中,本来打算用ARX 作为此次二次开发的工具,由于ARX相关软件经过多条渠道还是没有得到,并且visual basic是内嵌于AUTOCAD内部和其他的优点,由于采用类似于的可视化开发环境,使编程简单直观,容易上手,
26、决定这次毕业设计的二次开发工具就选择VBA。2.3 基VBA与Visual Basic的区别就实质而言,可以毫不夸张地说,VBA寄生于”VB的应用程序的版本。也就是说,VBA和VB的语法、语言结构、编程思想等几乎是完全一致的。因此,如果用户已经了解了VB,则会发现学习VBA非常快,相应地,学完VBA会给你学习VB打下坚实的基础。 至于它们的区别,主要体现在如下几个方面:(1) VB是设计用于创建标准的应用程序:而VBA则是使已有的应用程序(Excel Autocad等)自动化。(2) VB具有自己的开发环境:而VBA必须 “寄生”于已有的应用程序,因为它已经内嵌在应用程序之中。(3) 要运行V
27、B开发的应用程序,用户不必安装VB,因为VB开发出的应用程序是可执行文件(*.EXE);而VBA开发的 程序必须依赖于它的应用程序,例如EXCEL、AUTOCAD等,必须由其应用程序来打开。2.4 Autocad 的Activex模型特点ActiveX是Microsoft提出的一个基于COM(CommponentObjectModel)的技术标准,利用Ac-tiveX,在Windows系统的统一管理下,不同的应用程序之间可以相互沟通,相互控制。VBA、VB等内部或外部程序也可以利用ActiveX技术来操作控制Auto-CAD。利用AutoCAD软件中的ActiveX对象模型,用户可以按照自己的
28、愿望编制和定制AutoCAD软件,并和其他支持ActiveX的应用程序直接共享数据。2.5 AUTOCAD 中的Activex对象任何具有明确内涵的事务都可以作为对象,在AutoCAD中,应用程序、图形文件、图形内的任何实体,都是一种对象。对象是类定义的,用类可以创建对象,类规定了每个对象的特征。在VBA中,使用对象,首先需要引用,就是将对象指定给变量。使用对象变量和使用普通变量类似,其步骤如下:Dim变量标识符As类名声明变量对象 Set变量标识符=对象引用对象不同的对象,类名也不同。AutoCAD中,所有的类名均以Acad开头,例如,AutoCAD应用程序对象的类名是AcadApplica
29、tion,绘图元素实体对象直线Line的类名是AcadLine,对象圆AcadCircle是圆的类名等。任何对象都支持属性、方法和事件,在VBA中,对象的数据特征为属性,在对象上可执行的操作为方法,属性和方法都是对象的组成部分。而事件就是可被对象识别的动作,如单击鼠标的操作,可以缩写代码相应对象的事件。例如,对AutoCAD的图形实体Line,可以指定下面的属性行为和方法:Line.Color=acRed设置Line颜色为红色Line.Visibe=True设置Line可见Line.LineType=ByBlock设置Line的线性为“ByBlock”Line.Erase删除图形实体Line2
30、.6 AutoCAD的对象模型分类 AutoCAD的对象模型按照从属关系,有层次的组织在一起,层次化的分类,使得对象模型便于理解和分类。例如 图形实体对象:如直线(Line)、圆弧(Arc)等; 样式对象:如线型(LineType)、文本式样(Style)等; 图形结构组织对象:如层(Laver)、块(Block)等; 图形显示对象:如视图(View)、视图区(View-port)等应用程序对象:如Application等。在所有的对象中,Application对象是所有对象的基础,成为“根”对象。通过该对象的方法和属性,可以设置应用程序的某些数据和特征,可以利用其方法来执行某些和应用程序有关
31、的操作,如加载、卸载某些应用程序等。2.7 用VBA及ActiveX对AutoCAD进行二次开发和VB一样,用AutoCADVBA进行二次开发,都要用工程来组织应用程序。一个工程就是与应用程序有关的全部模块、对象以及和环境选项有关的设置。在AutoCADVBA中,工程分为嵌入式(embeddedpro-ject)工程和通用式(globalproject)工程两种。嵌入式工程在打开图形文件的时候自动加载,其本身依赖文件的存在而存在;通用式工程是以文件的形式保存在磁盘上,具有更好的通用性。通用式工程可以方便的实现不同用户和不同图形文件之间的共享。通常一个AutoCADVBA工程文件一般包括下面的部
32、分: AutoCAD对象:当前的AutoCAD的图形文件; 窗体:描述窗体及其控件的程序代码; 类模块:用于创建用户定义的对象; 标准模块:供应用程序中其他模块调用的外部过程、通用事件等; 引用:能被应用程序使用的外部ActiveX部件或其他工程文件。利用AutoCADVBA进行二次开发步骤和VB类似,首先,在AutoCAD中启动VBA开发环境,即在AutoCAD命令行上键入VBAIDE,或在菜单中启动相应的菜单。在VBA的可视化开发环境中,根据用户需求,建立相应的工程文件,添加所需的各种模块、窗体、控件,定义对象的属性和方法,编写对象相应事件对应的程序代码,最后完成整个工程设计。利用Auto
33、CADVBA进行二次开发步骤和VB类似,首先,在AutoCAD中启动VBA开发环境,即在AutoCAD命令行上键入VBAIDE,或在菜单中启动相应的菜单。在VBA的可视化开发环境中,根据用户需求,建立相应的工程文件,添加所需的各种模块、窗体、控件,定义对象的属性和方法,编写对象相应事件对应的程序代码,最后完成整个工程设计。随着AutoCAD在工程设计应用中的日益广泛,对其进行二次开发的需求也更显得迫切。本文介绍了利用VBA和ActiveX技术对AutoCAD进行二次开发的一般概念。实践表明,即使非专业人员,也能利用VBA和ActiveX技术,快速、高效的开发出AutoCAD的应用程序。2.8
34、VBA与AutoCAD对象之间的连接目前,虽然有很多工具可以对AUTOCAD进行二次开发,如前文所介绍的ADS, VISUAL LISP等。但是这些开发工具都有自己的优缺点,象在与cad之间的通信方面,ADS是一种C语言程序设计环境,它与AUTOCAD之间并不直接通信,具有很大的灵活性,但不适应当前可视化的需要。ARX程序是WINDOWNS动态链接库程序,执行ARX应用程序所需的开销少,速度最快,但是开发过程相当复杂。VBA是通过AUTOCAD ACTIVEX Automation 接口来建立和AUTOCAD对象间的联系。ACTIVEX是建立在COM对象之上的一个标准通信协议,它容许对象之间通
35、过一定的接口相互通信。而AUTOCAD ActiveX 提供在AUTOCAD外控制编程的机制,通过使用AUTOCAD对象,实现控制AUTOCAD。2.9 AUTOCAD ActiveX 自动化技术简介ActiveX 自动化技术(ActiveX automation)是微软建立的标准,基于COM的自动服务程序,是对象连接与嵌入(OLE: Object link and Embed)的进一步发展,他允许用户在Windowns的应用程序中通过暴露的对象控制另一个Windowns应用程序,Autocad ActiveX 技术提供一种机制,可使编程者通过编程从AUTOCAD的内部或外部操作控制AUTOC
36、AD。 ActiveX Automation 提供了开发脚本、宏以及用Automation编程环境(如Visual Basic6.0)开发第三方应用程序的途径。通过Automation,AutoCAD提供了可由Automation控制器(例如VB和Excel)进行操作的可编程对象。因此,使跨应用程序的宏编程成为可能,而这种功能在Auto LISP中是不存在的。简单地说,使用Automation可以将许多应用程序的功能合并到单个的应用程序中。 即 ActiveX 自动化接口(ActiveX Automation Interface) 技术。它是在对象链接与嵌入 (OLE) 基础上发展起来的。利用
37、ActiveX 技术,通过编程,用户可以在自己的应用程序中,方便地对另一应用程序进行操作。自 AutoCAD R14 以后,AutoCAD 都支持该技术。这样许多面向对象的语言和应用程序都可以通过该接口从AutoCAD的内部或外部来操纵AutoCAD. ActiveX 所具有的大多数AutoCAD功能,均以方法、属性的方式被封装在ActiveX 对象中,如 Acadtext 和AcadLine 等就是 AutoCAD ActiveX用来封装 AutoCAD 中创建文本和画直线功能的类对象,通过声明语句: dim lineobj as acadline“暴露”ActiveX对象,通过语句:set
38、 lineobj=thisdrawing.modelspace.addline.(startpnt,endpnt)引用已“暴露”的 acadline对象中的adddline方法,实现在当前图形文档(thisdrawing)的模型空间(modelspace)中画出一条直线。 Autocad VBA 是受ActiveX技术支持的,它可以通过编程对Autoca的功能进行利用,如上面提到的画线、文本等图元操作,另外标注,线型和图层的设置等。因此,开发CAD系统的结构设计(绘图)的程序采用AutoCAD VBA编程。3 板金件的展开算法3.1 板金件的展开算法思想的提出 在实际生产中,传统的钣金件展开图
39、的绘制方法费时费力,且精度较低。随着计算机技术的发展,计算机绘图技术突飞猛进,利用计算机进行钣金件展开图的绘制很有必要。本人开发的钣金件展开图可视化、参数化绘图系统,不仅能够缩短生产周期、节约人力资源、提高生产率和绘图精度,而且可以对随着钣金件尺寸变化的展开图图形进行分析。对钣金件的分类,目前比较常见的分法是根据其形状特点将其分为若干类,如圆管类、棱柱、棱锥管类、长圆管类、方口曲面管类、圆锥管类、异口形管类、球体类等。3.2钣金件展开的数值算法下面以大小方口直角换向接口展开计算为例来具体介绍一下钣金件的展开计算过程。钣金件的展开当中比较难的一步就是对于要展开的图形的展开算法,这个过程需要很多的
40、几何代数方面的知识,特别是对于形状比较没有规则的钣金件,其展开算法有时候真要花很大的力气才能确定各个展开图形之后的点的坐标。图一 大小方口直角换向接头已知该接头的上边长为a,上边高h,下边高b其中各个参数展开后的长度代表见图二图二:异口方直角换向过渡接头展开图计算展开之后的各个点的坐标假设上面的各个参数已知,并且选择第一点插入点p0的坐标为x,y,z根据第一点和已知参数计算各个顶点的坐标pt0(0) = x: pt0(1) = y: pt0(2) = zpt01(0) = x + b / 2: pt01(1) = y: pt01(2) = zpt02(0) = x + a / 2: pt02(
41、1) = y + f: pt02(2) = zpt03(0) = x - b / 2: pt03(1) = y: pt03(2) = zpt04(0) = x - a / 2: pt04(1) = y + f: pt04(2) = z其他的点的坐标通过用画圆弧的方法,确定两个圆的交点,进行比较,确定哪个交点是我们所要求的。这一方法可以用于很多场合,具有很好的应用价值。3.3对话框的设计对话框的设计如下图所示,CAD系统分为“交互式”和“自动式”接口形式。 “交互式”是在人的直接参与下,采用人机对话的方式来进行工作的系统。“自动式”是指不具有人机对话或很少有人机接口功能,计算机根据所编写的程序自
42、动地完成各个步骤操作的系统。从实体造型设计和虚拟仿真的需要看, “交互式”系统的应用更为普及.对于AutoCAD VBA 来说,由于带有自身的窗口创建功能,采用更加方便、灵活、速成的交互对话方式,避免了人工编程的麻烦。其创建方法和步骤如下: (1)进入 AutoCAD界面; (2)选择菜单工具宏 visual basic编辑器进入 microsoft visual basic 对话框; (3) 在vb对话框中选择菜单 编辑选择“添加用户窗体” 再选取视图菜单中的“属性窗口”后便出现窗体属性对话框; (4) 在窗体属性对话框中进行对话输入窗体形式和内容的设计。窗体设计的内容一般包括窗口标题文字(
43、主标题,也可有副标题)及交互对话内容;窗口界面设计的形式可以选择是“开关型”还者是“数值驱动型”,具体在窗口属性对话框上打开工具箱就可以选择你喜欢的类型和界面形式了。建立好的界面图形如下图所示:3.4程序的编制Option ExplicitDim x, y, z, a, b, h As DoublePublic Function f()f = Sqr(a 2 + (b + h) 2)End FunctionPublic Function f1()f1 = Sqr(a 2 + h 2 + (a - b) 2 / 4)End FunctionPublic Function f2()f2 = 1 /
44、 2 * Sqr(a - b) 2 + 4 * h 2)End FunctionPublic Function f3()f3 = 1 / 2 * Sqr(b 2 + 4 * h 2)End FunctionPrivate Sub userform_initalize()Texta.Text = : Textb.Text = : Texth.Text = : Textx.Text = : Texty.Text = : Textz.Text = 0: Textz.Enabled = FalseEnd SubPrivate Sub CommandButton1_Click()If Texta.Tex
45、t = Or Textb.Text = Or Texth.Text = Or Textx.Text = Or Texty.Text = Then MsgBox 参数不能空,输入参数后才能展开计算。, vbExclamation, 警告 Exit Sub End If 定义直线对象Dim objline01, objline02, objline03, objline04, objline05, objline06, objline07, objline08, objline09, objline10, objline11, objline12, objline13, objline14, ob
46、jline15, objline16, objline17, objline18, objline19, objline20, objline21, objline22, objline23 As AcadLine定义数组变量作为展开图的各顶点坐标Dim pt0(2) As DoubleDim pt01(2) As DoubleDim pt02(2) As DoubleDim pt03(2) As DoubleDim pt04(2) As DoubleDim pt05(2) As DoubleDim pt06(2) As DoubleDim pt07(2) As DoubleDim pt08(
47、2) As DoubleDim pt09(2) As Double用变量表示中心点的坐标x = Textx.Text: y = Texty.Text: z = Textz.Texta = Texta.Text: b = Textb.Text: h = Texth.Text根据第一点和已知参数计算各个顶点的坐标pt0(0) = x: pt0(1) = y: pt0(2) = zpt01(0) = x + b / 2: pt01(1) = y: pt01(2) = zpt02(0) = x + a / 2: pt02(1) = y + f: pt02(2) = zpt03(0) = x - b / 2: pt03(1) = y: pt03(2) = zpt04(0) = x - a / 2: pt04(1) = y + f: pt04(2) = z以两个顶点为圆心,绘制两个圆形以两个顶点为圆心,绘制两个圆形Dim objcircle01, objcirc