第一节        lisp 、 autolisp 、 visual lisp

26
LISP AutoLISP Visu al LISP 第 17 第 AutoLISP 第 Visual LISP 第第第 Visual LISP 第第第第第第 VLISP 第第 第第→ AutoLISP→Visual LISP 第第第 2 1 第第第 第第第第 第第第 、、 1 第第第 第第第 第第第 第第第 第第第 第第第 第第第 第第第 第第第 第第第 :、、、、、、、、。 2 第第第 第第第 第第第 第第第 第第第 第第第 :、、、、。 3 第第第 第第第第第第第第第第第第第第 :。

Upload: ghazi

Post on 19-Jan-2016

296 views

Category:

Documents


6 download

DESCRIPTION

第 17 章   AutoLISP 与 Visual LISP. 第一节        LISP 、 AutoLISP 、 Visual LISP. 第二节        Visual LISP 集成开发环境 VLISP 命令 工具→ AutoLISP→Visual LISP 编辑器 2 . 1 菜单栏、工具栏、状态栏 1 、 菜单栏:文件、编辑、搜索、视图、工程、调试、工具、窗口、帮助。 2 、  工具栏:标准、搜索、调试、视图、工具。 3 、  状态栏:显示与当前操作所对应的信息。. 2 . 2 文本编辑器 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第一节         LISP 、 AutoLISP 、 Visual LISP

第一节         LISP、 AutoLISP、 Visual LISP

第 17 章   AutoLISP与 Visual LISP

第二节         Visual LISP集成开发环境  

  VLISP命令     工具→ AutoLISP→Visual LISP编辑器2. 1 菜单栏、工具栏、状态栏  1、 菜单栏:文件、编辑、搜索、视图、工程、调试、工具、窗口、帮助。  2、  工具栏:标准、搜索、调试、视图、工具。  3、  状态栏:显示与当前操作所对应的信息。

Page 2: 第一节         LISP 、 AutoLISP 、 Visual LISP

2. 2 文本编辑器

1、  程序代码以不同的颜色显示: Visual LISP默认颜色设置如下表所示。

Page 3: 第一节         LISP 、 AutoLISP 、 Visual LISP

  2、  文本格式化:

 ⑴ 设置代码格式的样式

   工具→环境选项→ Visual格式选项

 ⑵ 使程序代码按当前样式显示

   工具→设置编辑器中代码的格式

   工具→设置选定代码的格式

  3、  括号匹配:编辑→括号匹配

  4、  执行 AutoLISP表达式:

  5、  在多文件之间进行查找:

  6、  语法检查:

2. 3          控制台窗口

2. 4          跟踪窗口

Page 4: 第一节         LISP 、 AutoLISP 、 Visual LISP

第三节        加载、执行 AutoLISP程序

3. 1 在 Visual LISP集成开发环境中加载、运行 AutoLISP

程序

    1、加载 AutoLISP程序

⑴启动 Visual LISP集成开发环境:工具→ AutoLISP→Visua

l LISP编辑器

⑵编写新程序或打开已有的 AutoLISP程序:

⑶加载 AutoLISP程序:工具→加载编辑器中的文字

     2、运行 AutoLISP程序

Page 5: 第一节         LISP 、 AutoLISP 、 Visual LISP

3. 2 在 AutoCAD环境中加载、运行 AutoLISP程序

1、在 AutoCAD环境中加载 AutoLISP程序工具→ AutoLISP→加载    即执行 APPLOAD

命令。 2、在 AutoCAD环境中运行 AutoLISP函数用“ c: defun<函数名>”格式定义和用“ defun<函数名>” 格式定义有区别。

Page 6: 第一节         LISP 、 AutoLISP 、 Visual LISP

第四节       AutoLISP 编程

4. 1 AutoLISP程序文件及其结构

1、 AutoLISP程序文件:以 ASCII码文本格式保存,其扩展名通常为 .LSP。

2、 AutoLISP程序结构: AutoLISP程序由注释和表达式组成。注释以分号“;”开头,可单独位于一行,也可位于某一程序语句的后面。表达式是 AutoLISP的基本语句,所有表达式都具有以下形式:(函数名[变元表]……)

Page 7: 第一节         LISP 、 AutoLISP 、 Visual LISP

例如,( setq z 78.0)和( setq a( setq c 78.0))    可见, AutoLISP语言的结构与常用高级语言的结构有所区别。不是“中缀表示法”如 z=78.0 即赋值运算符“ =”位于中间。 AutoLISP采用“前缀表示法”,把运算符放在表的第一个元素的位置,后面为其他参数,如 (setq z 78.0) 又如表达式 X=(A+B)*C在 AutoL

ISP中表示为 (setq X (*(+ A B) C) 在 AutoLISP表达式中,函数变元表对表达式的执行过程中是从最内层表开始逐步到最外层表。

Page 8: 第一节         LISP 、 AutoLISP 、 Visual LISP

4. 2 AutoLISP数据类型

1、  整型数:由 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,+和 -这 12个字符组成的数字。如 +230, 450, -180等。取值范围 -2147483647~+2147483648。

2、  实型数:带小数点的数。如 13.2, 0.045, 4.5e-2等。

3、  字符串:由一对双引号括起来的字符序列。双引号称字符串定界符。

“\nnn”如“ \101\102\103”与“ ABC”即反斜杠“ \”以作为字符串中的前导转义符。

Page 9: 第一节         LISP 、 AutoLISP 、 Visual LISP

 表中 e、 n、 r、 t必须为小写字母。例如 (prompt “\nEnter Passwords :” )和 (prompt “\012Enter Passwords:” )二者功能相同。

下表列出了常用控制字符的 ASCII码。

Page 10: 第一节         LISP 、 AutoLISP 、 Visual LISP

4、符号(或变量):用于存储数据。以下六个字符不可用:左括号(    右括号)  句号 . 撇号’  双引号”  分号 ; 不允许数字作为符号名的第一个字符。在 Aut

oLISP程序中,通常应给各符号赋值。如 (setq s “Ente

r your password!”)

5、表: AutoLISP的表指包含在一对相匹配的左、右圆括号之间的相关数据的集合。表中每一项称为表的元素,各元素间用空格隔开。如 (0.54 0.47) (7.89 9.32

6.78) (setq a 6.1) (“Hello” “everyone”)等。

Page 11: 第一节         LISP 、 AutoLISP 、 Visual LISP

6、文件描述符:当 AutoLISP打开一个文件时,系统将给该文件赋一个数字标号,当 AutoLISP函数要访问该文件时(读或写),应通过该文件的描述符对此文件进行操作。如(setq data (open “mydata.dat” “w”))

(print “This is an Example.” data)

7、 AutoCAD选择集:如 (setq ss (ssget “p”))

8、 AutoCAD实体名:如  (setq olast (entlast))

9、 VLA对象:图形中的对象同时可被描述成 VLA对象,当通过 Active X函数编程时,必须引入 VLA对象。10、内部函数、外部函数:

Page 12: 第一节         LISP 、 AutoLISP 、 Visual LISP

4. 3  AutoLISP函数

1、  计算函数:

Page 13: 第一节         LISP 、 AutoLISP 、 Visual LISP

2、  关系运算函数:

3 、逻辑运算函数:

Page 14: 第一节         LISP 、 AutoLISP 、 Visual LISP

4、  赋值函数:

(setq  <符号 1>  <表达式 >  [符号 2] [表达式 2]…… )

函数的功能为:依次将 <表达式 >的值赋给对应的符号。如(setq a (/ 12 3)) 返回 4。

(setq a 34 c 45 d 56) 返回 56

5、  禁止求值函数:

 (quote  <表达式 >)或简写为 ( ' <表达式 >)

函数的功能为:禁止对 <表达式 > 求值,返回 <表达式 >本身。如 ( ' abc) 返回 ABC。

6、  转换函数:

Page 15: 第一节         LISP 、 AutoLISP 、 Visual LISP

7、字符串处理函数:

Page 16: 第一节         LISP 、 AutoLISP 、 Visual LISP

8、   command函数:利用 command函数, AutoLISP几乎可以调用的全部命令,从而能够利用AutoLISP程序完成各种绘图工作。函数的格式: (command <参数 >…)

其中  <参数 >为调用 AutoCAD命令所需要的全部数据,它们的格式取决于执行 AutoCAD命令时实际需要的数据。例如:在 AutoCAD环境中,从点( 100, 120)向点( 23, 116)画线的操作格式为:  

命令: line/

  指定第一点: 100, 120/

  指定下一点或[放弃 (U)]: 23, 116/

指定下一点或[放弃 (U)]:/

   在 AutoLISP程序中,利用 command函数实现此画线操作的程序代码如下:

(command “line” “100,120” “23,116” “”) 或

(command “line”`( 100 120)`( 23 116) “” )

Page 17: 第一节         LISP 、 AutoLISP 、 Visual LISP

command命令有以下约定:

    ⑴ 作为参数的 AutoCAD命令、相应的选项均应以不含空格的字符串表示,大小写均可。

    ⑵ 调用 line、 pline, Iayer等命令时,最后以“”结尾,等效于在键盘上按一次空格键,以

终止该命令的执行。

    ⑶画圆时最后不需要加“”。例如,

(command “circle” “100,80” 30)

    ⑷用 command命令可执行多条 AutoCAD命令。例如,

(command “line” “100,50” “45,68” “67,90” “”

“circle” “100,50” 60)

9、求值函数: 

Page 18: 第一节         LISP 、 AutoLISP 、 Visual LISP

10、表处理函数:

Page 19: 第一节         LISP 、 AutoLISP 、 Visual LISP

11、交互式输入函数:

12 、条件函数:

Page 20: 第一节         LISP 、 AutoLISP 、 Visual LISP

13、循环函数:

14 、文件处理函数:

Page 21: 第一节         LISP 、 AutoLISP 、 Visual LISP

15、显示控制、输入输出函数:

16 、函数处理函数:defun 函数用来定义用户的函数,该函数的使用格式如下所示:

(defun < 函数名 > < 形参表 > < 表达式 >…)

其中 < 函数名 > 是所定义函数的名字; < 形参表 > 是该函数的变量列表,可以为空; < 表达式 > 用于函数执行时的计算。将含有用户定义函数的 AutoLISP 程序加载到 AutoCAD 环境后就可以直接调用该函数。调用已定义函数的格式为:

命令: (< 函数名 > < 实参表 >)

Page 22: 第一节         LISP 、 AutoLISP 、 Visual LISP

例:定义一个将度转换成弧度的函数 dtor。

己知将度转换成弧度的计算公式为: dtor(a)= a*π/ 180

相应的程序代码可以为如下所示形式:

(defun dtor(a)

(* a (/ pi 180.0))

)

   在此程序中, dtor为函数名, a为形式参数。在 AutoCAD环境中加载该程序后,可按以下格式调用 dtor函数:   命令: (dtor 45) ↙ 执行结果为 0. 785398。

在此调用中, dtor是函数名, 45是实际参数。

Page 23: 第一节         LISP 、 AutoLISP 、 Visual LISP

  可以看出,当调用由 defun定义的函数时,应采用( <函数名 > <实参表 >)格式。如果希望定义的函数成为 AutoCAD的一个命令,应采用如下定义格式:      (def

un c: <函数名 > <形参表 > <表达式 >…)

      注意这里的 c:并不表示硬盘驱动器,而是函数名前缀。按这样的格式定义函数,当与其对应的 AutoLISP

程序被加载到 AutoCAD环境后,直接在“命令:”提示下输入函数的名称,即可执行相应的功能。在 VisualLIS

P集成开发环境中运行按“ c: <函数名 >”格式定义的函数时,当加载对应程序后,应在控制台窗口的 $提示符后输入 (c: <函数名 >)后回车来执行该函数。

Page 24: 第一节         LISP 、 AutoLISP 、 Visual LISP

第五节   在 VisualLISP 集成开发环境中调试程序

    编写程序,特别是编写大型程序时,很难保证程序一次就能运行成功。即使程序能够执行,也有可能存在各种缺陷,如不能完成全部功能、语法错误、括号不配对等。利用 VisualLISP集成开发环境提供的调试工具,可以方便地调试程序、查找错误。

Page 25: 第一节         LISP 、 AutoLISP 、 Visual LISP

本节以下面所示程序为例说明程序的调试过程。;;;本程序将根据输入的三个点绘制圆和三角形(defun Mydraw() (setq pl (getpoint “\ n输入第一点” )) (setq p2 (getpoint “\ n输入第二点” )) (setq p3 (getpoint “\ n输入第三点” )) (command “circle” “3p” pl p2 p3) ;通过三点绘制圆 (command “line” pl p2 p3 “c”) ;通过三点绘制三角形)执行Mydraw函数后,依次提示用户输入三个点的位置,此时可以用点的坐标响应,也可以直接在绘图屏幕上拾取点。确定这三个点后,以这三点绘圆和三角形。

Page 26: 第一节         LISP 、 AutoLISP 、 Visual LISP

1.启动 VisualLISP

在 AutoCAD环境中,选择“工具”→“ AutoLISP” →“Visual LISP编辑器”下拉菜单项,即执行 VLISP命令, AutoCAD切换到 VisualLISP集成开发环境。

2.输入程序代码并设置其格式

     通过 VisualLISP集成开发环境中的新建文件按钮新建一文件;在文本编辑器中输入上述程序代码;选择“工具” →“设置编辑器中代码的格式”下拉菜单项,或单击“工具”工具栏上的 (设置编辑窗口格式 )按钮,按 VisualLISP的默认设置给输入的程序代码设置格式。在执行设置格式操作之前,可以通过 “格式选项”对话框定义格式的样式。

3.保存程序

输入程序代码后,单击“标准”工具栏上的按钮 (保存文件 ),从弹出的对话框中以文件名MyLisp来保存输入的程序。