您现在的位置:机电论文网>> CAD>> 正文内容

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

作者: 来源: 发布时间:2011/2/14 17:23:45  点击数:3813

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等。
3 定制开发的主要内容和方法
        AutoCAD2000定制开发的内容很多,但最主要的是:脚本文件(SCR文件)定制、菜单文件定制、AutoCAD命令的定制。 


        3.1脚本文件(SCR文件)定制
        AutoCAD提供了一个叫scrtpt 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 “[path]file name”)
其中:Command…………AutoCAD命令提示符。
load ……………… 调入一个LISP程序文件。
file name………… LISP程序文件的路径和文件名。
装载LISP程序文件后,可以在命令行状态下输入函数名,完成所需特定操作。
3.4.2 ObjectARX开发工具
        使用ObjectARX开发工具开发出的应用程序,其扩展名为ARX。在一个ObjectARX程序文件中可以注册一个或者多个AutoCAD命令。要运行其中的AutoCAD命令,定义该命令的ObjectARX程序文件必须被装载。用下面命令装载一个ObjectARX程序文件:
Command:(arxload “[path]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定制开发技术在工程制图中的应用将会得到更快更好的发展。

更多
字体:【】-【】-【】【关闭此页

上一篇:c与c++ static函数的区别'   下一篇:开关电源中光电耦合器电路的设计'


特别声明:机电之家(http://www.jdzj.com )所共享的机电类资料,机电论文、机电类文章、机电企业类管理制度、机电类软件都来自网上收集,其版权归作者本人所有,如果有任何侵犯您权益的地方,请联系我们,我们将马上进行处理。购买的论文都出自原创,保证作者的原创的版权的转让,任何纠纷由法律解决。