发布企业信息

AutoCAD 2000定制开发技术简介及在工程制图中的应用

作者:  信息来源:无忧机械电子  2006-10-17

字体大小:  网友评论  进入论坛  

com/machine/softedu/CADAutoCAD 2000定制开发技术简介及在工程制图中的应用 周荣军(辽宁省国土资源规划院遥感所 沈阳 110031)摘要 本文介绍AutoCAD 2000定制开发的必要性、开发工具、定制开发内容和方法,使AutoCAD用户能够定制开发自己的AutoCAD系统,从而使系统更高效,举例说明其在工程制图中的应用。关键词 AutoCAD ...

CAD/" target="_blank">AutoCAD 2000定制开发技术简介及在工程制图中的应用

周荣军(辽宁省国土资源规划院遥感所 沈阳 110031)

摘要 本文介绍AutoCAD 2000定制开发的必要性、开发工具、定制开发内容和方法,使AutoCAD用户能够定制开发自己的AutoCAD系统,从而使系统更高效,举例说明其在工程制图中的应用。

关键词 AutoCAD 2000 定制 开发 应用

0 引言

        在工程CAD领域中,各种商用CAD系统层出不穷,如Autodesk公司的AutoCAD系统、Computervision公司的CADDS系统、Dassault公司的Catia系统、EDS公司的Unigraphics系统、HP公司的PE系统、Intergraph公司的I/EMS系统、Matra Datavision公司的Euclid系统、PTC公司的PRO/Engineer系统和SDRC公司的I桪eas系统等等。

        由Autodesk公司开发的AutoCAD自20世纪80年代以来一直独领风骚。成为各工程领域首选的CAD系统,是市场上最流行的PC桟AD系统。全世界有80个国家的200万人在使用AutoCAD绘制各种各样的图形。1998年AutoCAD在市场上的占有率达79%,成为事实上的世界范围内的计算机制图标准。

        AutoCAD的巨大成功,首先得益于它的开放性,使得第三方很容易开发各种适用的专用软件,给用户带来标准、廉价、方便、高效等益处,从而进一步占领了市场。用户通过对AutoCAD系统的定制开发,可以结合自己的专业特点,开发属于自己的专用型CAD系统。目前,国内开发的工程制图软件大多采用AutoCAD作为其软件支撑平台,进行二次开发而成,为工程设计和制图行业创造了巨大的经济效益和社会效益。

1 定制开发的必要性

        AutoCAD是目前Windows95/98/nt/2000环境下应用最广泛、使用人数最多的CAD软件。但是AutoCAD所提供的只是一般的通用的CAD功能,如造型、编辑、注释等。如果不利用AutoCAD开发系统,要想完成某一具体醒目的设计,就会显得较为复杂。例如,我们要设计一台活塞式发动机,就需要根据发动机功率先手工计算出活塞直径,然后再调用AutoCAD的绘图命令,一笔一笔地绘出发动机的图形。这样,一旦在设计完成后,要更改发动机的功率,则需要重复刚才的全部内容。

        如果使用AutoCAD开发系统,则我们可以将上述计算和绘图通过高级语言编制相应的程序,在需要设计时,只一个命令便可以运行该程序,计算和绘图过程自动完成。显而易见,这不仅大大提高了设计效率,而且通过开发系统可以定制出某些专业化模块,甚至大型设计绘图软件。国内的建筑行业天正CAD系统、机械行业的大恒CAD系统等,均是对AutoCAD开发定制而实现的。

2 定制开发的常用工具

        AutoCAD系统的定制开发工具,又称为AutoCAD开发工具。有时称作AutoCAD API (Application programming Interface 应用编程接口),是将AutoCAD环境客户化的基本手段。在AutoCAD2000中,我们使用的开发工具主要有:ObjectARX、AutoLISP、VisualLISP、Java、VisualBASIC和Delphi等。

        2.1 AutoLISP和VisualLISP

        AutoLISP是AutoCAD最早的解释型API,它不是面向对象的语言,主要用来自动完成重复性任务,进行客户化开发和编制AutoCAD菜单以及通过简单机制为AutoCAD增加命令。它在逻辑上是一个独立的进程,通过IPC(进程间通讯)与AutoCAD交互。AutoLISP学习起来很简单,但是很难用它来开发大型应用程序,而且形成的程序运行速度比较而言是最慢的。

        在AutoCAD R14中,Autodesk公司首次提供了一种新的LISP编程工具梀isualLISP,它是一种面象对象的开发环境,是AutoLISP的扩展和延伸。在AutoCAD 2000中,VisualLISP得到了进一步的加强。作为一种编译型API,与AutoLISP完全兼容,并提供AutoLISP所有功能,同时它能访问AutoCAD2000的多文档设计环境、COM/ActiveX用户界面和事件响应器等。

        2.2 VisualBASIC、Delphi 、Java

        AutoCAD从R14起,采用ActiveX Automation的形式丰富了自身的API,它为AutoCAD的进一步发展开辟了新的途径。

        微软的ActiveX Automation技术是API和一组规范,提供ActiveX Automation服务的软件通过标准用户接口能够开放它的特定功能。AutoCAD 2000中ActiveX Automation提供的编程接口,可以用于在Windows环境下的应用程序操作AutoCAD中的对象。主要操作功能有:用户输入提示、使用优先对象、处理选择集、输出图形、增加视图、增加专业对象等。用户可以使用ActiveX客户编程语言(如VisualBASIC、Delphi 、Java等)来定制AutoCAD。

        2.3 ADS、ARX、ADSRX和ObjectARX

ADS(AutoCAD Development System)是Autodesk公司最早在AutoCAD R11中提供的C语言编程环境。除了可以使用标准的C函数外,又增加了专用于对AutoCAD进行操作的函数,形成的可执行文件(EXE文件),装入AutoCAD后即可运行。但是,ADS与AutoLISP一样,内在结构不是面向对象的,使用AutoLISP解释器加载和调用,也是通过IPC与AutoCAD通讯。

        ARX(AutoCAD Runtime Extention)是在ADS基础上发展起来的一种面向对象的C语言编程环境。由ADS向ARX的变迁就如同C向C++的转变。ARX应用程序为动态链接库(DLL),共享AutoCAD地址空间,对AutoCAD进行直接调用,避免了IPC的系统开销和由此引起的性能下降。它最早在AutoCAD R13中提供,但是在AutoCAD R14中,ARX很快被第二代面向对象C++编程环境棗ObjectARX所代替,原来的ADS全部库函数被包含在ObjectARX中。ADS全部库函数归并为单一的库,形成了ADSRX。

        在AutoCAD 2000中,传统意义上的“ADS开发环境”的概念不复存在,而且ADSRX作为ObjectARX的一个子集。ObjectARX是包含了ADS、ARX和ADSRX的综合的C/C++开发环境。它引入了面向对象的编程机制,在与AutoCAD 2000配套的ObjectARX 3.0中,提供大量类库,而且提供了兼容原来的ADS、ADSRX函数的新函数。ObjectARX 3.0成为了AutoCAD 2000定制开发的高效开发工具。

        2.4 几种开发工具的比较

        在以上的开发工具中,直接与AutoCAD通讯的API比利用IPC通讯的API在速度上要快。因此,ObjectARX的速度最快,AutoLISP速度最慢。

        但是在程序稳定性上,采用AutoLISP开发的应用程序一旦失败,并不危害AutoCAD自身进程。而由于ObjectARX应用程序共享的AutoCAD地址空间,一旦失败,AutoCAD进程也随之崩溃。

        ObjectARX应用程序在运行期间实时扩展AutoCAD,共享AutoCAD地址空间,性能无比强大,甚至为所欲为,以至于AutoCAD自身的许多模块均是用ObjectARX制作。

        在技术难度上,AutoLISP和VisualBASIC均为解释型语言,方便易学,开发周期短。许多程序员在使用它们。相比之下,ObjectARX依赖于C++语言,它必须经过严格控制的编译、链接才能生成程序,开发人员必须有足够的编程经验才能处理开发中的各种问题。但是,在开发速度和性能要求都很高的应用程序或者大型CAD应用软件,应使用ObjectARX。

3 定制开发的主要内容和方法

        AutoCAD2000定制开发的内容很多,但最主要的是:脚本文件(SCR文件)定制、菜单文件定制、AutoCAD命令的定制。

        3.1脚本文件(SCR文件)定制

        AutoCAD提供了一个叫script file(脚本文件)的工具,它允许不同的AutoCAD命令组合起来,并按照预先确定的顺序执行。这些命令可以用任何一种文字编辑器(如Notepade、记事本等)编写成文本文件,其扩展名为.SCR(如PLOT1.SCR)。脚本文件用AutoCAD中的SCR命令来执行。

        用户在对AutoCAD进行开发时,可以使用任何一种高级语言(如:VC、VB、Delphi、Java等)设计用户交互界面,对绘图所需要参数进行计算生成,然后确定AutoCAD命令、命令选项、命令序列等,最后生成扩展名为SCR的AutoCAD脚本文件。在AutoCAD中用SCR命令来执行脚本文件,完成所需操作。

        脚本文件具有AutoCAD的所有功能,包括图形初试化、编辑、修改、绘图、输出等。但脚本文件有一些限制,它不能使用对话框和菜单,当从脚本文件中发出打开文件、文件存盘、打印等命令时, AutoCAD执行命令行中的命令含义而不打开对话框,无法提供用户交互功能。

        运用脚本文件定制AutoCAD,需要(只需要)熟悉一门高级编程语言和AutoCAD常用命令、命令选项及命令序列即可。此方法,对编程技术要求不高,简单实用。它曾经作为最原始的定制开发手段,一直保留至今。实践证明,它可以取得很好的令人满意的效果。目前,仍有许多应用软件还在使用这项技术。

        下面是利用VC生成的一个脚本文件的片段,从中可以看出CAD命令序列的使用规律。

……………

LIMITS 0,0 3775.8,3110

ZOOM A

UNITS 2 0 1 0 0 Y

BLIPMODE OFF

LAYER N 1,2,3,4,5,6,7,8,9,10

UNITS 2 0 1 0 0 Y

STYLE HZ complex,HZDX 0 1 0 N N N

TRACE 6 250,50 3425.8,50

3425.8,2760 250,2760 250,50

TEXT 300,70 40 0 荣军岩土软件工作室

LINE

1637.9,2450 @400,0

TEXT 390,2500 40 0 工程名称:

……………

3.2 ACAD.PGP文件定制

        AutoCAD软件带有程序参数文件ACAD.PGP,该文件分为三个部分:注释、外部命令、命令别名。

        文件中的注释可以包含任何数目的注释行,并且可以出现在文件任何地方。每一个注释行用(;)开头。任何用分号开头的句子在执行时都被忽略。

        ACAD.PGP允许用户从图形编辑器中直接使用操作系统命令。例如:想要删除一个文件,只需要在命令行输入DEL (COMMAND:DEL),然后根据提示输入需要删除的文件名。

        ACAD.PGP定义了一些AutoCAD命令的别名。例如,LINE命令的别名是L。如果在命令行输入L (COMMAND:L),AutoCAD将把它当作LINE命令。

        用户根据自己使用需要,定制ACAD.PGP文件,扩充操作系统命令和AutoCAD命令别名。

        3.3 ACAD菜单文件定制

        AutoCAD软件提供了一个定制AutoCAD的强大工具。AutoCAD软件带有一个名为ACDA.MNU的标准菜单文件。在启动AutoCAD时,ACDA.MNU菜单文件自动装载。菜单文件中包含AutoCAD命令,用户可以修改、排列这些常用命令。它允许用户删除不常用的命令,并定义新的命令,通过编辑ACDA.MNU菜单文件或者编写新的菜单文件来实现。可以为每一个应用程序编写一个单独的菜单文件。使用AutoCAD的MENU命令,可以随时装载这些菜单。

        菜单文件的扩展名为MNU,可以用任何文本编辑器进行编辑。菜单文件中可以定制屏幕菜单、下拉菜单、工具条、快捷菜单、上下文菜单、图像菜单等内容。

        用户开发过程中,可以参照标准菜单文件ACAD.MNU编写自己的专用菜单文件。

        3.4 定制AutoCAD命令

        根据用户特定专业领域的问题,采用上述开发工具通过编程,定制自己的AutoCAD专用功能模块。

        3.4.1 AutoLISP、VisualLISP开发工具

        使用AutoLISP或者VisualLISP开发工具开发出的应用程序,其扩展名为LSP。在一个LISP程序文件中可以有一个或者多个函数定义。要运行其中一个函数,定义该函数的LISP程序文件必须被装载。用下面命令装载一个LISP程序文件:

Command:(load “file name”)

其中:Command…………AutoCAD命令提示符。

load ……………… 调入一个LISP程序文件。

file name………… LISP程序文件的路径和文件名。

装载LISP程序文件后,可以在命令行状态下输入函数名,完成所需特定操作。

3.4.2 ObjectARX开发工具

        使用ObjectARX开发工具开发出的应用程序,其扩展名为ARX。在一个ObjectARX程序文件中可以注册一个或者多个AutoCAD命令。要运行其中的AutoCAD命令,定义该命令的ObjectARX程序文件必须被装载。用下面命令装载一个ObjectARX程序文件:

Command:(arxload “file name”)

其中:Command…………AutoCAD命令提示符。

arxload ……………调入一个ObjectARX程序文件。

file name………… ObjectARX程序文件的路径和文件名。

其他几种开发工具定制AutoCAD命令的方法基本上与上述方法类似,详细内容,可以参见有关书籍,本文不再赘述。

4、应用举例

        笔者通过绘制一个简单排水沟剖面图的例子,介绍在VisualC++6.0环境下,创建基于MFC(Microsoft Foundation Class)的用户界面,生成一个ObjectARX应用程序的过程。此程序注册了一个AutoCAD命令        4.1 ObjectARX软件获得与安装

        ObjectARX软件不随AutoCAD 2000发行盘一起发行,而由Autodesk的产品供应商来提供,用户可以在Autodesk的网址自由下载(http://www.autodesk.com)。下载后得到一个ObjectARX.exe文件,该文件约19MB,是一个自解压的压缩文件。

 

              在Windows环境中双击下载所得到的ObjectARX.exe文件,此文件会自动解压缩到用户指定的目录(缺省为C:\)。解压后,运行它提供的安装程序Setup.exe,将它安装到指定的目录(缺省为C:\ObjectARX 2000)。安装后,ObjectARX 3.0约占52MB硬盘空间。
 
 

4.2 运行ObjectARX软件的软硬件环境

·Windows 9X/NT4/2000

·AutoCAD 2000

·Microsoft Visual C++6.0或更高版本

        因为开发出的应用程序要在AutoCAD 2000环境下运行,因此运行ObjectARX应用程序所需要硬件环境同AutoCAD 2000,最低配置为:

·Pentium 90 CPU

·32MB内存

·150MB硬盘自由空间

·60MB虚拟内存

4.3 建立ObjectARX应用程序的基本过程

·按照ObjectARX的要求设置Visual C++工作环境

·在Visual C++中编辑应用程序(包括CPP、DEF、RC等文件)

·编译链接生成以ARX为扩展名的DLL文件

·进入AutoCAD 2000,装载ObjectARX应用程序到内存

·运行在源程序中定义的AutoCAD 2000外部命令

下面给出源程序中的片段:

…………

// This is command 'PSG'

void zrjzrjpsg()//画排水沟

{

// TODO: Implement the command

CPsg dlg;

ads_point pt,pt1,pt2,pt3,pt4,pt5,pt6;

char s[40];

if(dlg.DoModal()==IDOK)

{

acedGetPoint(NULL,"选择绘制排水沟位置:",pt);

pt1[X]=pt[X]+dlg.m_fH*dlg.m_iScale/dlg.m_fScale;

pt1[Y]=pt[Y];

pt1[Z]=pt[Z]=0;

pt2[X]=pt1[X]+(dlg.m_fL1-dlg.m_fL2)*dlg.m_iScale/(2*dlg.m_fScale);

pt2[Y]=pt1[Y]-dlg.m_fH*dlg.m_iScale/dlg.m_fScale;

pt2[Z]=pt1[Z]=0;

pt3[X]=pt2[X]+dlg.m_fL2*dlg.m_iScale/dlg.m_fScale;

pt3[Y]=pt2[Y];

pt3[Z]=pt2[Z]=0;

pt4[X]=pt1[X]+dlg.m_fL1*dlg.m_iScale/dlg.m_fScale;

pt4[Y]=pt1[Y];

pt4[Z]=pt1[Z]=0;

pt5[X]=pt4[X]+dlg.m_fH*dlg.m_iScale/dlg.m_fScale;

pt5[Y]=pt4[Y];

pt5[Z]=pt4[Z]=0;

pt6[X]=(pt2[X]+pt3[X])/2;

pt6[Y]=pt2[Y]-20*dlg.m_iScale;

pt6[Z]=pt2[Z]=0;

sprintf(s,"%2.0f",dlg.m_fHeight);

acedCommand(RTSTR,"LINE",RTPOINT,pt,RTPOINT,pt1,RTPOINT,pt2,RTPOINT,pt3,RTPOINT,pt4,RTPOINT,pt5,RTSTR,"",0);

acedCommand(RTSTR,"LINE",RTPOINT,pt4,RTPOINT,pt5,RTSTR,"",0);

acedCommand(RTSTR,"TEXT",RTSTR,"J",RTSTR,"C",RTPOINT,pt6,RTSTR,s,RTSTR,"0",RTSTR,dlg.m_sText,0);

        }

        else ads_printf("取消绘制排水沟");

        }

        …………

        编译链接生成以ARX为扩展名的DLL文件,进入AutoCAD 2000,装载ObjectARX应用程序到内存,运行在源程序中定义的AutoCAD 2000外部命令“psg”,运行正常,结果令人满意。

5 结论

        从上可以看出AutoCAD 2000定制开发的必要性和优越性,用户可以根据自己的情况,选择适合的开发工具,通过对AutoCAD的定制开发,开发出属于自己的AutoCAD系统,从而使系统更高效运转,发挥更大的经济效益。随着计算机技术的不断发展,技术人员素质的不断提高,AutoCAD定制开发技术在工程制图中的应用将会得到更快更好的发展。

The Introduction to The Customization and Exploitation Technology to AutoCAD 2000 and Its Application in Engineering Mapping

ZhouRongJun

Liaoning Institute of Land and Resources Planning (ShenYang) 110031

【Abstract】 This paper discusses the necessity of the customization and exploitation technology to AutoCAD 2000,its developing tools, its customizing and exploiting contents and the main customizing and exploiting methods, for the purpose of making the user be able to customize his own AutoCAD system and make it work effectively. At last, it illustrates the application in the engineering mapping.

【Key Words】AutoCAD 2000 customization exploitation application

分页:
Google


推荐图文

广告

机械热点图文

  • 数控车床加工编程典型实例分析2
  • 内螺纹车削加工——数控车床编程实例42
  • 子程序编程方法-数控车床编程实例36
  • 塑料模具动画演示

机械风云人物

Copyright © 2004 51base.com Inc. All rights reserved.

无忧基地 版权所有│粤ICP备06098418号│XHTML | CSS

客服:+86-755-2212 2202 工作时间:周1~5 10点~16点

感谢中国网络提供带宽支持

《网络营销技巧》