AutoLISP-程序创建过程
AutoLISP详细讲解
AutoLISP详细讲解
关于AutoLISP
AutoLISP是由Autodesk公司开发的一种LISP程序语言(LISP是List Processor 的缩写)。第一篇关于LISP的参考文献是由John McCarthy 在1960年4月的《ACM 通讯》中发表的。
除了FORTRAN和COBOL,大多数在六十年代早期开发出来的语言都过时了,可是LISP却生下来,并且已经成为人工智能(AI)的首选程序序言。AutoLISP解释程序位于AutoCAD软件包中,然而AutoCAD R2.17及更低版本中并不包含AutoLISP 解释程序,这样,只有通过AutoCAD R2.18及更高版本才可以使用AutoLISP语言。
AutoCAD软件包中包含大多数用于产生图形的命令,但仍有某些命令末被提供。例如,AutoCAD中没有在图形文本对象内绘制矩形及作全局改变的命令。通过AutoLISP,你可以使用AutoLISP程序语言编制能够在图形文本对象内绘制矩形或作全局选择性改变的程序。事实上,可以用AutoLISP编制任何程序,或把它嵌入到菜单中,这样定制你的系统会取得更高的效率。
现在,已经有数以百计的第三方软件开发人员使用AutoLISP语言编制各种应用程序软件包,例如,本文作者开发了一个名为SMLayout的软件包,用它可以产生各种复杂几何图形的平面布局图,这些几何图形包括管道的交叉部、过渡都、圆柱、弯管接头、圆锥以及罐顶。目前社会上非常需要AutoLISP程序员为应用软件及客户菜单的开发提供顾问。
4.2 Autolisp 语言(1)
13)(max〈数 1 〉〈数 2 〉… ) 〈 〉〈数 功能 : 求表中所有整数或实数的最大值。例如 : Command:(max -2.5 2.1 3.4) 3.4 14)(expt 〈底数〉〈幂〉 ) 底数〉〈 〉〈幂 功能 : 求底数的幂次方。例如 : Command:(expt 2.0 3) 8.0 15) (log 〈数〉 ) 功能 : 求一个数的自然对数。例如 : Command:(log 2) 0.693147
4.2.1 AutoLISP数据类型
整数 实型数 符号原子
除(). ,“ ;5个字符以外的任何可打印字符。 Setq是一个赋值函数,如( Setq X 25 ) 查看某个符号的当前约束值(将一个值赋给符号) 方法:Command:! X 注意:程序中定义的符号名称不能与系统定义的函 数和符号名相同,否则后面的定义将取代已有的定 义,从而引起混乱。
10)(atan 〈数 1 〉 [〈数 2 〉]) 〈 功能 : 求数 1/ 数 2 或数 1 的反正切值。例如 : Commad:(atan 0.707 0.707) 0.7854 Command:(atan 1.0 0) 1.5708 11)( sqrt 〈数〉 ) 功能 : 求一个整数或实数的平方根。例如 : Command: (sqrt 256) 16.0 12)(min 〈数 1 〉〈数 2 〉… ) 〉〈数 功能 : 求表中所有整数或实数的最小值。例如 : Command:(min 1.44 -1.2 -2.1 -3.6) -3.6
AutoLISP基础教程
作者:今早去爬山<br><br>
目录<br>第一章 AutoLISP 基础........................................................................................................................... 4 1.1 AutoLISP 简介........................................................................................................................ 4 1.2 AutoLISP 的基本结构和语法................................................................................................. 4 1.3 AutoLISP 程序的加载............................................................................................................. 6 1.4 本章总结.................................................................................................................................. 6 第二章 AutoLISP 功能函数分类........................................................................................................... 7 2.1.功能函数的分类....................................................................................................................... 7 2.2.数学运算功能函数................................................................................................................... 7 2.3 检验与逻辑运算功能函数....................................................................................................... 8 2.4 转换运算功能函数................................................................................................................... 8 2.5 列表处理功能函数................................................................................................................... 9 2.6 字符串、字符、文件处理函数............................................................................................... 9 2.7 等待输入功能函数................................................................................................................. 10 2.7 几何运算功能函数................................................................................................................. 10 2.8 对象处理功能函数................................................................................................................. 11 2.9 选择集、符号表处理功能函数............................................................................................. 11 2.10 AutoCAD 相关查询、控制功能函数................................................................................. 12 2.11 判断式、循环功能函数....................................................................................................... 12 2.12 函数处理、定义、追踪与错误处理功能函数 ................................................................... 12 2.13 显示、打印控制功能函数................................................................................................... 13 2.14 符号、元素、表达式处理功能函数................................................................................... 13 2.15 ADS、ARX、AutoLISP 加载与卸载函数......................................................................... 14<br>1<br><br>
AutoLisp程序设计教程
应用实例1:画矩形
(defun c:rect1(/ p1 p2 p3 p4) (setq p1 (getpoint "\n 请输入矩形的一个角点: ")) (setq p3 (getcorner p1 "\n 请输入矩形的另一 个角点:")) (setq p2 (list (car p3) (cadr p1))) (setq p4 (list (car p1) (cadr p3))) (command "pline" p1 p2 p3 p4 "c") )
程序中的注释
1.整行或后半行注释 分号“; ”开头,到行尾 为注释部分。 2. 整段或行间注释以“;|”开头,以“|;”结 尾。 如
(setq tmode ;| 此处添加注释|; (getvar “tile mode”))
Visual LISP的基本操作
1.进入VLISP 工具菜单\AutoLISP\Visual lISP 编辑器或是 在命令行的提示下输入命令:vlide. 2.切换到AutoCAD窗口 窗口\激活AutoCAD
应用实例2:画旋转矩形
பைடு நூலகம்
(defun c:rect2( ) (setq p1 (getpoint "\n 请输入矩形的一个角点:")) (setq w (getdist p1 "\n 请输入矩形的长:")) (setq h (getdist p1 "\n 请输入矩形的宽:")) (setq alf (getangle p1 "\n 请输入矩形的旋转角:")) ;交互方式输入各个参数 (setq p2 (polar p1 alf w)) (setq p3 (polar p2 (+ alf (* 0.5 pi)) h)) (setq p4 (polar p1 (+ alf (* 0.5 pi)) h)) (command "pline" p1 p2 p3 p4 "c") )
AutoLISP从入门到精通初级教程[新手必备]
AutoLISP入门
单元一:AutoLISP主角登场 (2)
单元二:AutoLISP的关键、基本结构及语法 (4)
单元三:快速分类浏览AutoLISP功能函数(一) (10)
单元四:快速分类浏览AutoLISP功能函数(二) (13)
单元五:轻松快速的掌握AutoLISP设计技巧 (16)
单元六:图元数据的取得与活用技巧(一) (21)
单元七:图元数据的取得与活用技巧(二) (25)
单元八:新手上路-参数设计的关键技巧 (32)
单元一:AutoLISP主角登场
一. AutoLISP 是何方神圣?
1、AutoLISP是AutoCAD的最佳拍檔!
2、AutoLISP内含于AutoCAD软件内,不用另外花钱买!
3、AutoLISP是强化AutoCAD最好、最直接的『程序语言』!
4、AutoLISP易学、易用,即使不会程序设计的AutoCAD使用者,都能在最短的时间内,写出令人惊讶、赞叹的功能!
若说AutoLISP的出现,是替 AutoCAD 创造一片天的『最大功臣』,实不为过一点也不夸张!
5、AutoLISP希望您去学习它、改善它、发挥它、享受它.真的!它的威力、魅力无穷!
二. AutoLISP 程序语言的特质分析:
学习AutoLISP是非常容易的,对初学者而言,即使没有学习过任何的程序语言,都能很快的上手,写出精彩漂亮的AutoLISP程序!
语法简单:不用特殊的变量宣告,非常富有弹性,比起其它的程序语言,它的语法可说是非常简单而有其独特的风格!
功能函数强大:除一般性的功能函数外,又拥有为数不少控制配合AutoCAD的特殊函数,再加上AutoLISP可直接呼叫执行所有AutoCAD的指令,以及掌握运用所有的AutoCAD系统变量,功能之强大令人欣喜不已!
AutoLISP从入门到精通初级教程
AutoLISP入门
单元一:AutoLISP主角登场.................................. 错误!未定义书签。单元二:AutoLISP的关键、基本结构及语法.................... 错误!未定义书签。单元三:快速分类浏览AutoLISP功能函数(一) ................. 错误!未定义书签。单元四:快速分类浏览AutoLISP功能函数(二) ................. 错误!未定义书签。单元五:轻松快速的掌握AutoLISP设计技巧................... 错误!未定义书签。单元六:图元数据的取得与活用技巧(一) ...................... 错误!未定义书签。单元七:图元数据的取得与活用技巧(二) ...................... 错误!未定义书签。单元八:新手上路-参数设计的关键技巧....................... 错误!未定义书签。
单元一:AutoLISP主角登场
一. AutoLISP 是何方神圣
1、AutoLISP是AutoCAD的最佳拍檔!
2、AutoLISP内含于AutoCAD软件内,不用另外花钱买!
3、AutoLISP是强化AutoCAD最好、最直接的『程序语言』!
4、AutoLISP易学、易用,即使不会程序设计的AutoCAD使用者,都能在最短的时间内,写出令人惊讶、赞叹的功能!
若说AutoLISP的出现,是替 AutoCAD 创造一片天的『最大功臣』,实不为过一点也不夸张!
autolisp 曲线程序
正弦曲线:x = a
y = sin a
程序如下:
;画正弦曲:x=a , y=sin a ;
(defun c:zxqx(/ da bp Ai lpt bp1 bp2) (initget 1)
(setq bp (getpoint "\n 起始点?:")) (initget 7)
(setq da (getangle "\n 角度增量?:"))
(setq Ai 0 Ae (* pi 2.0) bp1 (car bp) bp2 (car (cdr bp))) (while (< Ai Ae)
(setq lpt (append lpt (list (list (+ bp1 Ai) (+ bp2 (sin Ai)))))) (setq Ai (+ Ai da))
)
(setq lpt (append lpt (list (list (+ bp1 Ae) (+ bp2 (sin Ae)))))) (setvar "cmdecho" 0)
(command "pline")
(foreach pt lpt (command pt))
(command ^c)
(command "pedit" "l" "f")
(command ^c)
(setvar "cmdecho" 1)
)
渐开线:x = br * (cos a + a sin a)
y = br * (sin a + a cos a)
程序如下:
;渐开线画法x=br*(cos(a)+a*sin(a)) y=br*(sin(a)-a*cos(a)); (defun c:jkx(/ ti lpt ae pt bp1 bp2)
AutoLISP编程
第4 3章 A u t o L I S P编程
为了使用A u t o L I S P,你必须学会如何使用A u t o L I S P中的函数,还必须学习A u t o L I S P编程。结束这一章之后,你应该会:
• 实现基本的A u t o L I S P编程。
• 分析A u t o L I S P程序。
• 在A u t o C A D中使用A u t o L I S P程序。
43.1 AutoLISP基础
A u t o L I S P编程可以非常简单,也可以非常复杂。 A u t o L I S P程序由一系列指令构成。
A u t o L I S P编程语言包含许多对你的工作非常有用的函数,并内置于A u t o C A D之中。让我们先看一看这部分。
43.1.1 算术函数
你可以用A u t o L I S P进行算术运算。启动 A u t o C A D,我们可以在命令行中直接使用
A u t o L I S P子程。
在命令行,直接键入以下命令,并确保包括括号和空格。
Command: (+ 5 4)
9
注意这时A u t o C A D返回了值9。这是一个简单的5加4的算术运算,并在屏幕上显示出结果。继续键入以下加、减、乘、除算式并注意结果。
Command: (- 100 40)
Command: (* 5 6)
Command: (/ 100 20)
注意A u t o L I S P子程在命令行中被键入时的括号。括号告诉A u t o C A D这是一个A u t o L I S P子程。当A u t o C A D检测到一个左括号时,它就把之后的文本交给A u t o L I S P处理。
AutoCAD二次开发实用教程第11章 编辑及维护AutoLISP程序
生成prv文件,该文件包括建立可执行应用程序全部过程的指令。
11.2.1 创建新应用程序
1.创建应用程序的步骤
1) 从Visual LISP 菜单中选择“文件”→“新建应用程序向
导”命令,则将显示如图11-3所示的“向导模式”对话框。 “生成应用程序”向导有两种模式:简单模式和专家模式。 简单模式中,仅需指明要生成的应用程序文件名,而专家模 式则会有更多的选项,在多数情况下,选专家模式。
是保密的,甚至于源代码中的字符串与符号也会被Visual LISP的编译器加密。
11.1.1 Visual LISP编译器
Visual LISP提供几种方法来应用文件编译器,可
以使用VLISP-Complies函数来编译单个AutoLISP程序,
使用“工程”将一个或几个相关的AutoLISP程序编译
文件(.prv)的文件名,在“生成应用程序”向导中,如果需要修改某些选 项的设置,可以在对话框中单击“上一步”按钮。
11.2.1 创建新应用程序
3) 如果是在“专家模式”下运行“生成应用程序”
向导,则将显示“应用程序选项”对话框,如图11-5
所示。在这个对话框中可以设定应用程序是在单独的
变量空间中运行,还是在图文档的变量空间中运行。
Visual LISP可以加载并运行的程序文件类型为LSP、
FAS、VLX,加载这3种文件的步骤是相同的,而且都可以
autolisp教程
第十四章 AutoLISP
14.1 关于AutoLISP
AutoLISP是由Autodesk公司开发的一种LISP程序语言(LISP是List Processor的缩写)。第一篇关于LISP的参考文献是由John McCarthy 在1960年4月的《ACM通讯》中发表的。
除了FORTRAN和COBOL,大多数在六十年代早期开发出来的语言都过时了,可是LISP 却生下来,并且已经成为人工智能(AI)的首选程序序言。AutoLISP解释程序位于AutoCAD 软件包中,然而AutoCAD R2.17及更低版本中并不包含AutoLISP解释程序,这样,只有通过AutoCAD R2.18及更高版本才可以使用AutoLISP语言。
AutoCAD软件包中包含大多数用于产生图形的命令,但仍有某些命令末被提供。例如,AutoCAD中没有在图形文本对象内绘制矩形及作全局改变的命令。通过AutoLISP,你可以使用AutoLISP程序语言编制能够在图形文本对象内绘制矩形或作全局选择性改变的程序。事实上,可以用AutoLISP编制任何程序,或把它嵌入到菜单中,这样定制你的系统会取得更高的效率。
现在,已经有数以百计的第三方软件开发人员使用AutoLISP语言编制各种应用程序软件包,例如,本文作者开发了一个名为SMLayout的软件包,用它可以产生各种复杂几何图形的平面布局图,这些几何图形包括管道的交叉部、过渡都、圆柱、弯管接头、圆锥以及罐顶。目前社会上非常需要AutoLISP程序员为应用软件及客户菜单的开发提供顾问。
AutoLISP教程
AutoLISP教程
来源:中数休闲发表时间:2007-1-30 【字体:大中小】
浏览次数:694
14.1 关于AutoLISP
AutoLISP是由Autodesk公司开发的一种LISP程序语言(LISP是List Processor的缩写)。第一篇关于LISP的参考文献是由John McCarthy 在1960年4月的《ACM通讯》中发表的。
除了FORTRAN和COBOL,大多数在六十年代早期开发出来的语言都过时了,可是LISP
却生下来,并且已经成为人工智能(AI)的首选程序序言。AutoLISP解释程序位于AutoCAD 软件包中,然而AutoCAD R2.17及更低版本中并不包含AutoLISP解释程序,这样,只有通过AutoCAD R2.18及更高版本才可以使用AutoLISP语言。
AutoCAD软件包中包含大多数用于产生图形的命令,但仍有某些命令末被提供。例如,AutoCAD中没有在图形文本对象内绘制矩形及作全局改变的命令。通过AutoLISP,你可以使用AutoLISP程序语言编制能够在图形文本对象内绘制矩形或作全局选择性改变的程序。事实上,可以用AutoLISP编制任何程序,或把它嵌入到菜单中,这样定制你的系统会取得更高的效率。
现在,已经有数以百计的第三方软件开发人员使用AutoLISP语言编制各种应用程序软件包,例如,本文作者开发了一个名为SMLayout的软件包,用它可以产生各种复杂几何图形的平面布局图,这些几何图形包括管道的交叉部、过渡都、圆柱、弯管接头、圆锥以及罐顶。目前社会上非常需要AutoLISP程序员为应用软件及客户菜单的开发提供顾问。
autolisp教程
(f) 定义一个标签栏 dcl_demo : dialog { label = "我的对话框"; …… …… : button //定义按钮 { key = "mybutton"; label = "这是一个按钮!"; } : edit_box //定义编辑框 { key = "myeditbox"; label = "这是一个编辑框:"; } : text //定义标签栏 { key = "mytext"; label = "这是一个标签栏,用来写文字说明的!"; } ok_cancel; }
;读出数据 ; ;写数据 ;换行
第十五章 自定义错误函数
Autolisp遇到错误时,会通过两种渠道显示错误情况:ERRNO系统变量 和*error*函数.通常以后者为主. 当*error*函数被设为nil时,Autolisp的错误以预设的显示方式显示: 例如: command: (/ 1 0) ; 错误: 除数为零 一般来说(并非所有),当Autolisp的函数执行导致autocad侦测到错误 时,系统变量ERRNO会保存对应的错误码. 所以,程序里面的自定义错误函数的自定义变得可行.首先定义一个简 单报错函数: (defun *error* (msg) (alert msg) (princ) ) 执行语句 (/ 1 0) 后,看看响应的提示.
一步步学AutoLisp(二)
一步步学AutoLisp(二)
在第一步中我们是在CAD命令行中进行一些练习,这显然无法满足我们正常的使用要求,所以我们一般将程序写成文件,LISP程序文件的扩展名为“.lsp”。在AutoCAD2004及以后的CAD中有专门的软件编写程序Visual Lisp,也可以用普通的文本编写软件如记事本进行编写,但文件的扩展名一定要是“.lsp”。为使大家能对lsp文件的使用有更好的理解,本文一律按使用普通文本编辑器编写的方式进行描述。
打开文本编辑器编写一个文件,文件名为“key.lsp”,将文件保存到C盘根目录下。键入如下一行程序:
(defun c:cm() (command "COPY" pause "" "m"))
保存后,在CAD命令行键入:(load"c:/key"),即可将key.lsp调入CAD,返回c:cm。如下图:
在命令行键入“cm”可以执行对一个图元进行多次拷贝的命令,在lisp程序中函数及参数不区分大小写,但参数的返回值有大小之分。
先对程序进行解读:
defun 定义函数的函数,后面的c:cm是一个函数的名称。
c:cm 自我定义的函数名称,带“c:”的函数是可以作为操作命令的函数,我们姑且将这类函数称为命令函数。如果没有“c:”,只有“cm”,则得到的返回值是“cm”,在命令行键入“cm”则不会执行前面的多重拷贝操作。键入“(cm)”就会执行该操作,我们就称之为一般函数。
() 这个空括弧是用来填写参数的,由于我们的这段程序没有用到任何其他参数,所以括弧内是空的。
command 调用CAD原有命令的函数,这是lsp程序中应用非常多的一个函数,许多操作可以直接调用CAD自己的命令,不许再重新编写。
autolisp教程
autolisp教程
第⼗四章AutoLISP
14.1 关于AutoLISP
AutoLISP是由Autodesk公司开发的⼀种LISP程序语⾔(LISP是List Processor的缩写)。第⼀篇关于LISP的参考⽂献是由John McCarthy 在1960年4⽉的《ACM通讯》中发表的。
除了FORTRAN和COBOL,⼤多数在六⼗年代早期开发出来的语⾔都过时了,可是LISP却⽣下来,并且已经成为⼈⼯智能(AI)的⾸选程序序⾔。AutoLISP解释程序位于AutoCAD软件包中,然⽽AutoCAD R2.17及更低版本中并不包含AutoLISP解释程序,这样,只有通过AutoCAD R2.18及更⾼版本才可以使⽤AutoLISP语⾔。
AutoCAD软件包中包含⼤多数⽤于产⽣图形的命令,但仍有某些命令末被提供。例如,AutoCAD中没有在图形⽂本对象内绘制矩形及作全局改变的命令。通过AutoLISP,你可以使⽤AutoLISP程序语⾔编制能够在图形⽂本对象内绘制矩形或作全局选择性改变的程序。事实上,可以⽤AutoLISP编制任何程序,或把它嵌⼊到菜单中,这样定制你的系统会取得更⾼的效率。
现在,已经有数以百计的第三⽅软件开发⼈员使⽤AutoLISP语⾔编制各种应⽤程序软件包,例如,本⽂作者开发了⼀个名为SMLayout的软件包,⽤它可以产⽣各种复杂⼏何图形的平⾯布局图,这些⼏何图形包括管道的交叉部、过渡都、圆柱、弯管接头、圆锥以及罐顶。⽬前社会上⾮常需要AutoLISP程序员为应⽤软件及客户菜单的开发提供顾问。
AutoLisp编程入门
基本指南:两数求和
在命令行输入:(+ 2 3) (- 2 3) (* 2 3) (/ 2 3)
如果直接输入(/ 2 3)则会显示0 因为2和3是整型所以AutoLisp把这些数字译为整型(AutoLisp进行了四舍五入)所以输入(setq x (/2.0 3))就可得到0.666667六位小数
在命令行输入:!p则会显示p这个变量的值
SETQ和变量
Setq是来保存计算的结果的,相当于给一个变量赋值例:
(setq x (/2.0 3)) 这边x是变量就是把2.0/3的值赋给x
Setq能完成多项“设置相等”例如:
(setq x 1.0 y 2.0 z 3.0) 就是分别赋给x y z 赋值
AutoLISP函数
1.数学函数
(min 7 3 5 11) 就是取7 3 5 11这四个数的最小值
(setq minbr (min 7 3 5 11))
数学函数功能
+加
- 减
*乘
/除
1+自增1
1- 自减1
FLX截取实数的整数部分
FLOAT整数变为实数
REM返回除法的余数
EXPT指数
SIN求弧度角的正弦
COS求弧度角的余弦
ATAN求两个数字的反正切
(setq rad (*(/ 45 180.0)pi))
2.几何函数
(setq p1 '(1.3 5.7)) ‘表示指定2个(3个)的坐标值,这样AutoLISP就不会计算这些值了
(setq p2 '(7.5 3.1))
(setq p3 '(9 4))
(setq p4 '(0.1 2.5))
(distance p1 p2)
(angle p1 p2)
(inters p1 p2 p3 p4)
AutoLISP初学者参考程序
;;;此程序注释详细,过程简单易懂,适合初学者用来熟悉AutoLISP编程语言;;;下载后按下述方法即可直接运行;;;使用方法如下:;;;1.下载文件后,用记事本打开,点击“文件”->“另存为”;;; 在“保存类型”中选择“所有文件”;;; 在“文件名”中输入:xxx.lsp,点击保存;;;2.打开AutoCAD,点击“工具”->“AutoLISP”->“加载应用程序”;;; 选择xxx.lsp,点击“加载”后再点“关闭”;;; 注意:请在CAD环境下打开线宽,关闭对象捕捉!!!;;;3.在命令栏输入“go”,再输入“ft”,即可执行程序。;;; 提示:程序结束后若没看到曲线,则输入“zoom”->“a”缩放窗口即可;;;【以上为说明,从下文第二行开始为程序主体】;;;;;;#初始化#;;;(defun C:Go ();;;#定义全局变量#(setq Data nil;;;;;;;全局变量Data,用来保存程序中要使用的数据Data_sin nil;;;全局变量data_sin,用来保存正弦曲线绘制函数每一步长计算的y坐标值Data_cos nil;;;全局变量data_cos,用来保存余弦曲线绘制函数每一步长计算的y坐标值dt (* 0.1 PI);;全局变量dt,用来保存简谐函数自变量的增量值oce (getvar "cmdecho");;;保存系统变量的原值);;;;;;改变系统变量,控制程序执行过程中不显示中间过程;;;(setvar "cmdecho" 0);;;(princ "\n初始化...\n");;;;;;改变线宽;;;(command "layer" "LW" "0.35" "0" "");;;(princ "\n初始化完成!")(princ "\n输入[Ft]执行程序:\n")(command));;;End defun;;;;;;#主函数#;;;目标方程式:;;;F(t)=[A1*sin(w1*t)+B1] + [A2*sin(w2*t)+B2] +[A2*cos(w3*t)+B1]...... [t1,t2];;;由n个简谐函数(sin或cos)叠加而成。;;;;;;该自定义函数定义一个命令:Ft;;;实现绘制每个简谐函数的波形以及F(t)的波形;;;(defun C:Ft (/ Q t1 t2 n r s A w B data_f col)(setq Q 1 r 0 s 0 col 1 Data_f '())(while (= Q 1)(setq t1 (getreal "请输入F(t)的左区间t1:")t2 (getreal "请输入F(t)的右区间t2:"))(princ "\n您输入的区间为[")(princ t1)(princ "π,")(princ t2)(princ "π]\n");;;显示输入区间[t1,t2](setq Q (getint "1.修改 2.确认:")));;;End while(setq n (getint "请输入简谐函数个数:"))(Data_in n);;;调用数据录入函数Data_in(Data_fix n);;;调用数据修函数Data_fix(repeat n(repeat 4(cond ((= s 0) (setq Q (nth s (nth r Data))))((= s 1) (setq A (nth s (nth r Data))))((= s 2) (setq w (nth s (nth r Data))))((= s 3) (setq B (nth s (nth r Data)))));;;End cond(setq s (1+ s)));;;End repeat 4(command "color" col)(cond ((= Q 1) (sin_curve A w B t1 t2);;;调用正弦曲线绘制函数(progn(setq Data_f (cons Data_sin data_f))))((= Q 2) (cos_curve A w B t1 t2);;;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AutoCAD开发VisualLISP程序
本节通过一个简单的实例来讲述LISP程序的创建过程,介绍编制LISP程序的一些基本步骤,以及LISP程序在AutoCAD中的加载和运行的方法。
首先来创建一个最简单的LISP程序—-“Hello.lsp”,在AutoCAD2002中加载并运行该程序,将会在命令行出现-“Hello,VisualLISP!”。
VisualLISP与AutoCAD的通信
用户可以直接在AutoCAD命令行中键入AutoLISP表达式。AutoCAD通过括号来确认AutoLISP表达式。AutoCAD每当发现一个左括号,就确认为AutoLISP表达式,并由AutoLISP求表达式的值后返回AutoCAD,AutoCAD使用返回结果并继续进行其他工作。
注意在AutoLISP表达式中,左、右括号必须配对,否则AutoCAD将给出提示符n>,n表示右括号丢失数目。
此外,在AutoCAD中调用并执行AutoLISP程序。在AutoLISP程序中采用COMMAND函数来与AutoCAD命令程序处理器通信,COMMAND从AutoLISP获得命令并将其传给AutoCAD。
实例:最简单的LISP程序——“Hello.lsp”
Step1创建新文件
(1)运行AutoCAD2002系统,以“acadiso.dwt”为样板创建图形文件,并调用“vlisp”命令进入VisualLISP环境。
(2)单击“Standard(标准)”工具栏中的按钮,新建一个LISP文件。Step2输入代码并保存文件
(1)在编辑窗口中输入源文件“Hello.lsp”的代码。程序清单如下:;;;* Hello.lsp – Visual LISP文件实例
(prompt "Pick point:") ;指定运行时的提示信息
(setq ipt (getpoint)) ;在屏幕上指定一点并将其坐标值赋予变量“ipt”
(setq hgt 15) ;给变量“hgt”赋值
(Command "_.TEXT" "_S" "STANDARD" ipt hgt 0 "Hello, Visual LISP!");
调用“Commnad”函数与AutoCAD进行通信
(2)单击“Standard(标准)”工具栏中的按钮,以“Hello.lsp”为名保存该文件。
Step3运行LISP程序
(1)确认编辑窗口处于前台状态,选择菜单【Tools(工具)】→【LoadTextinEditor(加载编辑器中的文字)】,则该程序被加载并运行。系统将返回AutoCAD窗口,并提示用户选择一点,并以指定点为基点来绘制文字。结果如图36-4所示。
(2)如果用户退出VisualLISP环境并返回AutoCAD系统窗口,则需要对该程序进行加载后,才能运行。选择菜单【Tools(工具)】→【LoadAppcation…(加载应用程序)】,弹出“Load/UnloadApplications(加载/卸载应用程序)”对话框,如图
36-5所示。查找并选择上一步中所创建的“Hello.lsp”文件,并单击Load按钮进行加载。加载后的文件名称将显示在“LoadedApplications(已加载的应用程序)”列表中,并在对话框的左下部显示加载信息。
(3)完成加载后,单击Load按钮关闭对话框,系统将运行“Hello.lsp”程序。
实例说明
1.LISP源文件为ACSII格式,并忽略空格键、Tab键和回车键产生的空白。文件中的注释部分可放在文件中任何一处,但必须以分号“;”开始。
2.在编辑窗口中对文件进行编辑时,如果对文件进行了修改或添加了文本,则编辑窗口标题栏上的控制图标将变为,同时VisualLISP在状态栏上的文件名后面显示星号“*”。用户保存该文件后,控制图标变为,同时状态栏上的星号消失。
3.VisualLISP中为程序编写提供了专门的文本编辑器。该编辑器不仅仅是一个书写工具,不但具有常规的编辑功能,同时还具有许多专为支持AutoLISP编程而设计的功能,主要包括:
(1)文件语法着色:用于识别AutoLISP程序的不同部分并给它们指定各自的颜色。这使得用户可以更容易地找到程序的各个组成部分和拼写错误。
(2)设置文本格式:可以设置AutoLISP代码的格式,使代码更易于阅读。用户可以从许多种不同的格式样式中挑选自己喜欢的格式。
(3)括号匹配:可以通过查找与任意开括号匹配的闭括号来帮助用户检测括号匹配错误。
(4)执行AutoLISP表达式:不必离开文本编辑器就可以测试表达式和代码行。
(5)多文件查找:文本编辑器用单个命令就可以在多个文件中查找某个词或表达式。
(6)AutoLISP代码的语法检查:文本编辑器可以对AutoLISP代码进行求值并亮显语法错误。
4.在AutoCAD中还可以自动加载LISP程序。每次启动AutoCAD时,AutoCAD都从库路径中搜索acad.lsp文件。如果找到该文件,则将它加载到内存中。如果用户在每次运行AutoCAD时都需要加载某个AutoLISP程序,则可将该程序复制到acad.lsp文件中即可实现自动加载。用户还可指定在每次创建新文件时加载acad.lsp文件。
另一种由AutoCAD自动加载的AutoLISP程序文件用于定义当前菜单的支持函数,其文件扩展名为.mnl。当AutoCAD加载菜单文件时,它用匹配的文件名来搜索.mnl文件。如果AutoCAD找到了该文件,则将它加载到内存中。此功能确保AutoCAD加载适当的菜单操作所需的AutoLISP函数。因此,也可以把LISP程序复制在当前菜单相应的.mnl 文件中以实现自动加载。.mnl文件在acad.lsp之后加载。