CAD的二次开发.docx
- 文档编号:30712369
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:42
- 大小:411.03KB
CAD的二次开发.docx
《CAD的二次开发.docx》由会员分享,可在线阅读,更多相关《CAD的二次开发.docx(42页珍藏版)》请在冰豆网上搜索。
CAD的二次开发
AutoCAD二次开发的研究学习
学院:
机械与电子信息学院
专业:
机械设计制造及其自动化
姓名:
班级序号:
指导老师:
二零一四年五月二十日
目录
第1章AutoCAD发展历程与研究现状-1-
1.1AutoCAD简介-1-
1.2AutoCAD二次开发-2-
1.2.1AutoCAD二次开发简介-2-
1.2.2AutoCAD二次开发发展历程-2-
1.2.3AutoCAD二次开发发展现状-7-
第2章二次开发应用举例-9-
2.1AutoLISP-9-
2.1.1AutoLISP概述-9-
2.1.2举例-9-
2.2ADS-15-
2.2.1ADS概述-15-
2.2.2ADS应用程序结构-15-
2.2.3举例-16-
2.3ARX-19-
2.3.1ARX概述-19-
2.3.2举例-19-
2.4ActiveX-22-
2.4.1ActiveX概述-22-
2.4.2举例-22-
2.5.NET-26-
第3章AutoCAD未来发展方向-27-
3.1AutoCAD二次开发的必要性-27-
3.2AutoCAD发展趋势-27-
3.2.1集成化与智能化-28-
3.2.2网络化与并行化-28-
3.2.3虚拟设计-28-
3.2.4规范化-29-
3.3二次开发的基本过程-29-
3.4二次开发中的关键技术-30-
3.4.1参数化图库的生成技术-30-
3.4.2用户化界面技术-30-
3.4.3二维工程图的自动生成技术-30-
3.4.4产品设计智能化开发技术-30-
3.4.5特征映射器的开发技术-31-
结束语-32-
参考文献-33-
附1:
-35-
附2:
-36-
摘要:
AutoCAD技术发展至今已经日趋成熟,并已经广泛应用于机械、电子、建筑、航空航天等领域,但仍有许多CAD软件还是单单建立在通用应用平台上。
要使CAD软件能针对专业领域方便地解决问题,增加一些特殊功能,就要应用CAD的二次开发技术。
本文在对前人资料进行整理学习后,分别从AutoCAD二次开发技术的发展历程及发展现状和未来的发展方向及研究重点进行介绍,并举例说明二次开发技术所用的类型、方式、语言等。
本文完成的主要工作有:
①阐述了二次开发的基本理论,包括二次开发的概念、原则、过程和一些关键技术;②列举了几种常用的二次开发方法----面向对象法、利用组件技术方法和利用ActiveX技术方法和DLL方法,介绍了它们的基本原理;③举例说明AutoLISP、ADS、ARX、ActiveX在实际应用中的利用,写出相应的程序语言。
关键词:
CAD二次开发方式类型发展方向例证说明
Abstract:
TheAutoCADtechnologyhasbeenusedwidelyinthefiledofmachinery,electronics,architectureandaerospace,howevermostCADsoftwareisdesignedforgeneralapplication.Forthatreason,theRe-developtechnologyofCADisusedtocaterfortheneedsinprofessionaldesignarea.Thisarticleintroducesthemethod,processandtechniquesofCAD,anditsdevelopment.Thefollowedworkshavebeendoneinpaper:
1.Thebasictheoryofthefurtherdevelopmentwassummarized,whichincludethedefinition,thegeneralprocess,therulesandseveralkeytechniques.2.Severalcurrentmethodsofthefurtherdevelopmenthavebeenstudied,suchasObjectOrientedmethod,componenttechnique,ActiveXtechnique.3.GavesomeexamplesofAutoLISP、ADS、ARX、ActiveX.
Keywords:
CAD;Re-develop;Typemethods;Developingdirection;Example
第1章AutoCAD发展历程与研究现状
1.1AutoCAD简介
AutoCAD(AutoComputerAidedDesign)是美国Autodesk公司于1982年开发的自动计算机辅助设计软件,主要用于二维绘图、详细绘制、设计文档和基本三维设计,用户可以创建、浏览、管理、打印、输出、共享及精确地复用富含信息的设计图形,其现在已成为国际上主流的绘图工具之一。
如机械CAD是指将计算机技术运用到机械设计的全过程中,利用计算机硬、软件系统辅助人们对产品和工程进行分析计算、几何建模、仿真与试验、优化设计、绘制图形、工程数据库的管理、生成设计文件等的方法和技术。
AutoCAD具有良好的用户界面,通过交互菜单或命令行方式便可以进行各种操作。
其完善的图形绘制功能、强大的图形编辑功能以及可开发性和数据交换能力,使其支持多种硬件设备和操作平台,具有广泛的适应性。
Autodesk公司成立以来,在其近二十年的发展历程中,不断丰富和完善AutoCAD系统,并连续推出各个新的版本,每个新版本中都会加入一些更强大的功能。
如AutoCAD2000增添了AutoCAD设计中心(ADC)、多文档设计环境(MDE)、Internet驱动、新的对象化捕捉功能、增强的编著功能以及局部打开和局部加载的功能;AutoCAD2005新增了图纸集功能和用于显示可能会在图形生命周期中修改的数据的字段对象;AutoCAD2006新增了动态块功能,动态块中定义了一些自定义特性,可用于在位调整块,而无须重新定义该块或插入另一个块;AutoCAD2008增添了自动缩放注释及多重引线;AutoCAD2010增强了三维功能,更大的突破是参数化绘图功能,可以在图纸上建立对象之间的几何关系及约束关系(参考文献1)。
AutoCAD系统在发展中不断完善,它的功能也在不断增强,这使得AutoCAD由一个功能非常有限的绘图软件发展到了现在功能强大、性能稳定、市场占有率位居世界第一的CAD系统,在城市规划、建筑、测绘、机械、电子等许多行业中得到了广泛的应用。
随着行业的发展,今后的AutoCAD软件也在原来的基础上朝着集成化、网络化、可视化、参数化、标准化、智能化和多元化的方向发展,在工程制图、工业制图、电子设计、制造业等方面将发挥不可取代的作用。
1.2AutoCAD二次开发
1.2.1AutoCAD二次开发简介
从“二次开发”本身的意思来理解,即在开发了一个大型的软件系统平台的基础上,根据一些特殊需求,在该平台上进行第二次有针对性的开发。
AutoCAD本身的功能集已足以协助用户完成各种设计工作,且因其很好的通用性和开放性,在机械、电子、航空、船舶、建筑、服装等领域得到了极为广泛的应用。
但同时也因为它的通用性,使其专业性很差。
因此,要最大限度的满足用户的个性化需求,就必须给用户提供重新装置、修改及对软件进行二次开发的功能。
对AutoCAD二次开发主要是在其现有的几何处理库以及数据存储、图形绘制、打印及操作机制上根据具体需求对用程序功能进行拓展,建立新业务逻辑;对用户界面进行拓展,创建新的对话框,菜单以及面板等;对数据库拓展,创建新的数据或实体对象。
形成LISP、ARX、VLX、ADS、DLL、以及DCL文件来完善和扩展AutoCAD主程序。
CAD开放的体系结构使其定制或者二次开发成为可能,它允许用户和开发者采用高级编程语言对其进行扩充和修改(即二次开发),大大方便了专业领域的应用,满足了具体行业的要求。
AutoCAD的二次开发工具主要分为两大类:
AutoCAD的内部定制工具和AutoCAD的二次开发工具。
定制是指按照AutoCAD提供的方法和文件格式,根据用户的具体需求,通过编辑系统所支持的ASCII码标准功能文件或者建立同类型新的ASCII码功能文件来设置AutoCAD。
通过定制AutoCAD,可以构造出符合用户习惯的CAD系统,提高工作效率。
二次开发是指利用AutoCAD提供的编程环境和开发工具,通过编写程序来实现对AutoCAD的开发。
1.2.2AutoCAD二次开发发展历程
AutoCAD也一直把二次开发功能放在一个极其重要的位置,CAD的开发随着CAD的发展不断进行。
从第一版AutoCAD1982年11月推出后,其二次开发方式也在不断地涌现。
最近二十年多来,AutoCAD相继推出了四代开发工具:
第一代开发工具AutoLISP,第二代开发工具ADS,第三代开发工具ARX,第四代开发工具ActiveXAutomation等等。
不同的参考资料上略有不同,但本质上是一致的。
以下是以图表形式表示的开发方式时序图(开发方式时序见图1-1)。
1986
AutoLISP
1987
1988
1989
ADS
1990
DCL
1991
1992
1993
ADS-RX
1994
1995
Object
ARX
1996
ActiveX
Automation
1997
VBA
1998
VisualLISP
1999
2000
图1-1开发方式时序图
一、AutoLISP
第一篇关于LISP的参考文献是由JohnMcCarthy在1960年4月的《ACM通讯》中发表的。
但实际上AutoLISP是1986年随AutoCADv2.18提供的二次开发工具,是简单易学而又功能强大的LISP编程语言。
它是一种人工智能语言,是嵌入AutoCAD内部的COMMONLISP的一个子集。
在AutoCAD的二次开发工具中,它是唯一的一种解释型语言,是低版本AutoCAD的首选编程语言。
由于AutoCAD具有内置LISP解释器,所以使用AutoLISP可直接调用几乎所有的AutoCAD命令。
因此用户可以在命令行中输入AutoLISP代码,或者从外部文件加载此代码。
AutoLISP应用程序还可以通过多种方式与AutoCAD交互。
Autodesk公司提供AutoLISP的目的,就是为了帮助用户充分利用CAD强大的功能,从而节省时间,提高工作效率。
AutoLISP最典型的应用之一是实现参数化绘图程序设计,包括尺寸驱动和鼠标拖动程序等。
在实际工程中,70%左右的图形是通过修改已有的设计来完成的,而且多数都是修改设计参数来完成。
现在,已经有数以百计的第三方软件开发人员使用AutoLISP语言编制各种应用程序软件包,例如,开发一个名为SMLayout的软件包,用它可以产生各种复杂几何图形的平面布局图,这些几何图形包括管道的交叉部、过渡都、圆柱、弯管接头、圆锥以及罐顶。
在AutoLISP中,同样提供了编程以及数学计算所需的大部分数学函数,你可以使用AutoLISP对数字进行加、减、乘、除运算,还可以得到以弧度表示的角度的正弦值、余弦值及反正切值等。
目前社会上非常需要AutoLISP程序员为应用软件及客户菜单的开发提供顾问。
AutoLISP具有以下优点:
1、语言规则十分简单;2、直接针对AutoCAD,易于交互;3、解释执行,立竿见影。
但它也有自身无可避免的缺点:
1、功能单一,综合处理能力差;2、程序运行速度慢;3、缺乏很好的保护机制,源程序保密性差;4、不能直接访问硬件设施、进行二进制文件的读写。
它的这些特点,使其仅适合于有能力的终端用户完成一些自己的开发任务。
二、ADS
ADS全称:
AutoCADDevelopmentSystem,是从AutoCADR11开始引入的基于C语言开发应用程序的系统,本质上是一组可以用C语言编写AutoCAD应用程序的头文件和目标库。
ADS不是C语言的一个子集,也不是基于C语言而编制的专用语言,但却包含了C语言的全部功能。
它既利用了AutoCAD环境的强大功能,又利用了C语言的结构化编程、运行效率高的优势,适合于高强度的数据处理,如实际应用中的机械设计CAD、工程分析CAD、土木工程CAD、化学工程CAD等等。
与AutoLISP相比,ADS有其新加的功能和独特的优势:
1、具备错综复杂的大规模处理能力;2、编译成机器代码后执行速度快;3、编译时可以检查出程序设计语言的逻辑错误;4、程序源代码的可读性比后者好。
而其不便之处在于:
1、难以掌握;2、ADS的隐藏错误往往导致AutoCAD系统崩溃;3、要实现同样的功能时,前者比后者的代码要长很多。
早期国内常见的应用软件多是用ADS进行开发的,但ADS程序必须经过AutoLISP解释加载,因此ADS的各方面功能往往会受到一定的限制。
同时,锁着网络技术的迅速发展,面向过程的ADS有些“力不从心”,所以,在AutoCADR13中,提出了新的面向对象的开发工具ARX。
而从R14起,Autodesk已经不再支持和发展ADS程序设计模式,同时增加了VLSP,以进一步提高AutoLISP的整体性能,同时用ObjectARX取代了ADS。
三、ObjectARX
ObjectARX是从AutoCADR13开始推出的一个全新的开发环境,是AutoCAD开发的第一个面向对象的开发工具,与前期的开发工具相比,它更注重的是程序的智能性。
它提供了以C++为基础的应用程序接口,能真正快速访问AutoCAD图形、数据库。
ObjectARX支持面向对象编程方法,同时向下兼容ADS。
ObjectARX的核心是两组关键的API,即AcDb(AutoCAD数据库)和AcEd(AutoCAD编译器),另外还有一些其他的重要组件。
ObjectARX还可以按需求加载应用程序,使用ObjectARX进行应用开发还可以在同一水平上与windows系统集成,并与windows其他应用程序实现交互操作。
ARX程序在很多方面与ADS程序和AutoLISP程序都是不相同的。
最重要的一点是,ARX程序实质上是一个动态链接库,它和AutoCAD共享地址空间并且直接和AutoCAD进行通讯。
在ARX中,每个命令都有独立的入口。
ARX程序还可以创建新的类(class),这些类可以为其他程序所共享,从而充分利用面向对象的编程的优点.ARX程序创建的实体和AutoCAD的内在实体几乎是完全等同的。
对于需要经常和AutoCAD通讯的应用程序来说,ARX程序比ADS程序运行速度更快,这里的运行速度主要指是访问AutoCAD数据库的速度。
但ARX程序崩溃通常会导致AutoCAD系统的崩溃。
ARX程序具有ADS程序和AutoLISP程序所不具备的访问和控制AutoCAD的能力。
ARX程序可以监控和处理AutoCAD各种事件,可以定义AutoCAD命令,包括可以透明执行的命令。
这些命令可以像AutoCAD自身的命令一样被AutoLISP和ADS所调用。
四、VisualLISP
VisualLISP,简称VLISP,取代了AutoLISP成为AutoCAD中新一代的LISP语言,已经被完整地集成到AutoCAD2000中,它显著扩大了AutoLISP的容量,为开发者提供了崭新的、增强的集成开发环境IDE,包括编辑器、调试器和其他工具,使开发者可以直接使用AutoCAD中的对象和反应器,进行更底层的开发。
它的研究内容主要有:
1、是AutoCAD2000中默认的代码编辑工具,提供源代码调试功能;2、用它开发AutoLISP程序的时间被大大地缩短,加速其编程过程,并使其结构化,是程序增加了可读性;3、简化源代码的创建及修改,程序的测试、编译及调试;4、能帮助大家使用ActiveX对象及其事件;5、使用了流行的有色代码编辑器和完善的调试工具,使大家很容易创建和分析LISP程序的运行情况。
在VisualLISP中有新增的一些函数:
如基于AutoLISP的ActiveX/COM自动化操作接口、用于执行基于AutoCAD内部事件的LISP程序的对象反应器、新增了能够对操作系统文件进行操作的函数等等。
它不仅提供了一个完整的集成开发环境,还提供了开发工具,课用于发布独立的应用程序。
五、基于ActiveXAutomation技术的VBA等开发工具
ActiveXAutomation是一台微软标准,以前称为OLEAutomation技术,该标准允许通过外显的对象由一个windows应用程序控制另一个windows应用程序,这也是面对对象编程技术的精髓所在。
VBA是自R14开始嵌套在AutoCAD之中的程序设计方法,根据微软公司的规则,在每一个Windows下的应用软件都必须具有的功能。
ActiveXAutomation技术的完全面向对象化编程的特点,使其开发环境具备了强大的开发能力和简单易用的优良特点,开发工具的选择具有很大的灵活性。
它可以很容易地使用Windows系统资源,使AutoCAD能容易地与其他Windows下的应用软件交互。
VBA对话框设计能力比DCL好得多,多图档环境下的应用程序也比也比VLISP提供了更多的支持。
但其也有很有不方便的地方,如:
1、在设计过程模拟类的程序设计中,VBA明显不如AutoLISP等脱胎于人工智能语言的工具;2、VBA虽然不是编译运行,数据结构和程序写法却像ARX一样相当严格,不能像VLISP那样按照专业设计要求去创建数据结构;3、VBA是以对象作为数据处理的基本单元,在VLISP中堪称特色的CAGD程序设计技术,在VBA中则无法实现。
因此,很多程序设计就不能充分利用AutoCAD的操作技巧,从而会产生冗杂的程序;4、扩充VBA的功能可以用VC++/ARX程序,但是相当复杂,对于初学者来说,很难掌握。
而对其完善和扩充,只能等待Autodesk的工作结果。
故VBA也是备受争议的一个开发工具。
六、AutoCAD.NET
从AutoCAD2006开始,Autodesk为其开发增加了一种.NETAPI,它提供了一系列的外包类,是开发人员可在任何.NET语言下对AutoCAD进行二次开发。
其优点是完全面向对象,在拥有与C++相匹配的强大功能的同时,具有方便实用的特点,同时它采用了垃圾回收机制,自行判断内存回收的时机并实行回收,通过Dispose函数进行资源的自动释放,从而解决了内存泄露问题。
是较理想的二次开发工具。
各种开发工具能力对比如下表所示:
表1-1
LISP
VB/VBA
ObjectARX
.NET
API操作能力
√
√
高级用户界面
√
√
底层事件
√
√
高级API访问
√
√
完善的异常处理
√
√
64位/UNICODE支持
√
√
垃圾回收
√
√
√
混合语言开发
difficult
√
混合API交互性
limited
limited
difficult
√
语法简洁
√
√
√
自定义实体
√
性能
√
√
1.2.3AutoCAD二次开发发展现状
目前,国内CAD技术的应用已逐步进入高级阶段,许多用户都针对本行的特点对CAD进行二次开发,CAD二次开发技术几乎在各个行业中都有应用实例,并已有许多商品化软件问世。
但各行业CAD二次开发技术的发展水平存在较大差距,机械、电子、建筑、航空航天等最早应用二次开发技术,其二次开发程度也最高。
开发出的CAD系统能够集计算、参数化画图、数据管理为一体,并直接与计算机辅助制造(CAM)和计算机辅助工艺设计(cAPP)有机结合。
目前国内已开发成功一批符合工程需要的应用软件,逐渐形成了一批具有较高素质的研究开发队伍。
其他行业的CAD二次开发技术则相对落后,有的仅仅是一小部分工程技术人员的个人行为,还没有形成专门从事CAD二次开发的研究队伍。
虽然也出现了一些CAD应用软件,但大多数仅仅针对某一类型的产品或产品的一部份而开发的小型应用系统,解决的问题也比较有限。
国外成功的CAD技术开发企业为了加快CAD技术开发步伐,都选择了高起点的CAD技术开发战略,印利用已有的技术成果,在此基础上二次开发自己的CAD技术,而不是将人力物力浪费在低水平的重复开发上,这样既可以提高效率,又能保证自己的产品具有较高的技术含量和水平。
现在,在一代代研究人员的努力下,越来越多的开发软件进入我们的生活,已有许多二次开发的CAD系统在实际生产中的各个方面得到了应用,并且获得了一定的成果。
但不可避免的是软件开发还没有达到完美,在人类无止境的需求面前,我们仍需进一步努力来完善我们的开发系统从而满足我们的要求。
就我国而言,软件开发仍处于手工作坊阶段,存在很多的问题,软件产业还没有实现工厂化。
CAD的二次开发,是对软件自身的探索和挖掘,也是对时代的适应和融合。
在不断发展的今天,我们必须掌握这些基本的知识,并具备在其基础上不断开发的能力,才能为以后的设计奠定坚实的基础。
第2章二次开发应用举例
AutoCAD的程序开发是通过AutoCAD应用程序接口(API)来实现的。
其程序开发主要有五种基本形式:
2.1AutoLISP
2.1.1AutoLISP概述
AutoLISP语言是Autodesk公司在AutoCAD中提供给用户的主要的二次开发工具。
AutoLISP(AutoListProcessing)是一种专用的LISP编辑语言,是AutoCAD固有的一部分。
AutoLISP程序储存于ASCII码文本文件中,每当运行它们时,AutoCAD都将读取并解释他们,尽管AutoLISP文件可以有任意的名字和扩展名,但根据约定,AutoLISP文件通常以.LSP为扩展名(与菜单相连的AutoLISP文件除外,这些文件必须以.MNL作为扩展名),用户可以用AutoLISP开发AutoCAD来适应自己的具体要求、自动执行重复的任务或生成新的或修改AutoCAD命令,用户即可编写自己的AutoLISP应用程序,也可使用第三方开发的共享程序。
2.1.2举例
举例1:
下面通过编写一个从上到下逐行写文本的小程序段来简要分析AutoLISP的开发过程。
题目要求如下:
用户只需点击一个自定义工具按钮,系统即会提示用户输入首行文本所在位置、相邻两行文本偏移量、文本高度这三个参数。
其中,首行文本所在位置由鼠标在屏幕上点击获得,文本高度默认值为4。
用户依次输入文本,回车表示结束当行输入。
当所有文本输入结束后,按“Esc”键结束退出。
AutoCAD回到等待命令输入状态下。
设计人员经常会遇到一些“填表”的工作,譬如在电力系统设计中,工作人员现场测得各电力杆的间距,需要在AutoCAD中将其制成电子表格,在表格中从上到下依次填
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CAD 二次开发