用Autolisp对AutoCAD进行二次开发

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用AutoLISP对AutoCAD进行二次开发

一、什么是CAD的二次开发?(为什么需要对CAD进行二次开发)

我们在设计、绘图时采用AutoCAD、ProE、Solidwork、UG等设计软件,在复杂问题或特殊用途的设计中,各种软件的原有功能往往难以解决问题,例如CAD里没有直接绘制正弦曲线和抛物线等曲线的命令。因此,只是会使用各软件的基本功能是不够的,根据我们的特殊用途进行软件的用户化定制和二次开发,往往能够大大提高工作效率和技术水平。

二、什么是AutoLisp?如何用其进行二次开发?

AutoLISP是由Autodesk公司开发的一种LISP程序语言,LISP是List Processor的缩写。通过autolisp 编程,可以节省工程师很多时间。AutoLISP语言作为嵌入在AutoCAD内部的具有智能特点的编程语言,是开发应用AutoCAD不可缺少的工具。

当前AutoCAD的二次开发工具主要有:VisualLisp(它是AutoLisp的集成开发环境)、VBA、ObjectARX和.NET API等,这里只介绍AutoLisp。

下面由浅入深地介绍一下如何应用AutolLisp进行二次开发。

最简单的应用是在命令行中编写和执行lisp语句,进行简单的计算、绘图、查询等操作。

稍复杂些的就要把语句(代码)放到扩展名为lsp的文件中,用的时候先加载到CAD中,然后输入自定义的函数名执行。

当开发的程序越来越多,就需要进行有效的管理,使我们能方便的找到和应用这些程序。到那个程度的时候就需要用到用户自定义的工具按钮、菜单和对话框了。

图1 根据程序数量选择二次开发形式

(1)在命令行中编写和执行程序

例1:(+ 2 3)

例2:(setq a 2)

(setq b 3)

(+ a b)

例3:(setq a 2)(setq b 3)(+ a b)

例4:(setq p1 (list 0 0))(setq p2 (list 200 200))(command “line” p1 p2 “”) ;;语句之间不空格

例5:(setq p1 (list 0 0)) (setq p2 (list 200 200)) (command “line” p1 p2 “”) ;;语句之间空格

;; 表示语句(程序代码)的注释

第一步:在文本中编写和保存AutoLISP程序,文件扩展名为.lsp

(defun c:sin(/ lp lpx lpy N x step) ;; c:和自定义函数名sin之间不能有空格

(initget 1)

(setq lp (getpoint "\n Left point:")

lpx (car lp) lpy (cadr lp))

(initget 7)

(setq N (getint "\Nnumber of cyles:"))

(setq x 0 step 0.02)

(command "pline" )

(While (< x (* 2 N pi))

(command (list (+ (car lp) x)

(+ (cadr lp)(sin x)))

)

(setq x (+ x step))

)

(command "line" lp (list (+ lpx (* 2 N pi)) lpy) "")

(command "line" lp (list lpx (+ lpy 2))(list lpx (- lpy 2)) "") ;;注意这里用的是空的双引号“”,中间不空格

(command)

)

第二步:AutoLISP程序的加载和运行

在命令行中输入appload(或ap),在弹出的“加载/卸载应用程序”对话框中选择第一步保存的*.lsp 文件。单击“加载” “关闭”。

执行自定义函数前先将“对象捕捉”功能关闭。运行自定义函数的过程和执行CAD标准函数(命令)是一样的,只要在命令行中输入函数名即可。

(3)添加用户工具按钮

工具按钮能够快速、高效启动AutoLisp的应用程序。为了更方便的管理和应用我们的lisp应用程序。我们要学会创建用户自定义工具栏,并向新工具栏中添加新的工具按钮,点击这些按钮便可以很方便地执行我们自己定义的应用程序。

第一步:创建新工具栏

将鼠标移动到任意一个工具按钮上,单击鼠标右键。

在弹出的菜单最下端找到“自定义(C)...”对话框,左键单击。弹出“自定义用户界面”对话框。右键单击工具栏图标新建一个用户自定义工具栏,命名这个新工具栏。

第二步:向新工具栏添加按钮

在“自定义用户界面”对话框的左下角的命令列表栏中单击“新建”按钮建立一个新命令。按住左键不放,将新的命令按钮拖到第一步新建的工具栏内。这样工具栏里便添加了第一个命令,用此方法可以给工具栏添加多个新按钮。

第三步:定制工具按钮属性

新的工具按钮刚添加到工具栏内的时候是不能执行命令的,需要给它添加属性。

在“自定义用户界面”对话框的右侧可以编辑按钮的图像和属性。其中最重要的是“特性”里的“宏”一栏。将上面pwx.lsp文件的路径和命令名输入到“宏”后面的文本框内,例如:^C^C^P(load"/F:/Autolisp Program/My Lisp/sin.lsp");sin;^P

单击确定退出“自定义用户界面”对话框。这时在CAD的工具栏中会多出一个用户刚才自定义的新

(4)添加用户自定义菜单

当我们开发出的程序越来越多的时候,用工具按钮的形式来执行它们会占用绘图的空间,而且也不便于管理。这种情况下就有必要将众多的程序分类,相同种类的程序写入同一个菜单文件中,便于将来查找和执行。具体的开发步骤为:

第一步:打开Visual LISP编辑器

图2 打开Visual LISP编辑器

第二步:创建用户自定义的菜单文件

打开Visual LISP编辑器后,在文本框中输入生成用户自定义菜单的代码,写好后将文件保存,扩展名为.mnu。例如:

***MENUGROUP=MYLISP ;;用户自定义菜单组名MYLISP

***pop1 ;;第一个菜单

[中间包] ;;第一个菜单名称

[初等函数曲线绘制] ^C^C^P(load "curve of function")(load "csin")(load "ccos")(load "cparabola")(curve_of_function) ;;命令的名称、加载操作和执行操作

[->复合函数曲线绘制];;子菜单名称,->表示生成的是子菜单

[抛物线与正弦曲线的叠加] ^C^C^P(load "cpara_sine") (cparasine)

[抛物线与余弦曲线的叠加] ^C^C^P(load "cpara_cos") (cparacos)

[--] ;;各命令之间的横线

[<-圆环面积与内径的关系曲线(&C)] ^C^C^P(load "cirque") (cirque) ;;<-表示子菜单结束

[挡板内外面积比的计算] ^C^C^P(load "stotal")(load "sdio")(stotal)

相关文档
最新文档