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
)所共享的机电类资料,机电论文、机电类文章、机电企业类管理制度、机电类软件都来自网上收集,其版权归作者本人所有,如果有任何侵犯您权益的地方,请联系我们,我们将马上进行处理。购买的论文都出自原创,保证作者的原创的版权的转让,任何纠纷由法律解决。
|