AutoLISP绘图程序设计
时间:2025-02-22
时间:2025-02-22
第三章
AutoLISP绘图程序设计主要内容
1.AutoLISP特点 2.AutoLISP函数的用法 3.AutoLISP程序结构 4.AutoLISP程序执行方式
2015-1-28
§3.1 AutoLISP概述一、AutoLISP介绍1.AutoLISP的作用 ( 1 ) AutoLISP 是 一 种 表 语 言 , 是 常 用 的 AutoCAD二次开发手段。 所谓二次开发:是指以AutoCAD软件为平台, 加入自己所需要的功能。开发过程,就是编程 的过程。 二次开发所支持的语言有VB、C++,大型的 二次开发,以C++为主,而小型二次开发,一 般以AutoLISP为主。2015-1-28 2
(2)必须在AutoCAD环境下运行(内嵌); ( 3 ) AutoLISP 可以编写程序,调用 AutoCAD 的许多 命令; 举例:在水平方向画n个大小相等的圆。;;调用AutoCAD命令画圆 (defun C:HY() (setq P0 (getpoint "第一圆心坐标:")) (setq R (getreal"半径:")) (setq L (getreal"圆心间距离:")) (setq a 1) (setq n(getint"\n圆的个数:")) (while (<= a n) (command "circle" P0 R) (setq P0 (polar P0 0 L)) (setq a (1+ a)) ) )2015-1-28 3
( 4 ) AutoLISP 语言中使用大量的函数(有 200多个函数),进行各种运算; ( 5 ) AutoLISP 编写的程序特点(学习中注 意): 以表形式描述数据处理过程,程序执行过 程就是函数求值过程; 每段程序都是一个函数; 具有交互处理功能,边解释边执行; 采用模块化设计方法。2015-1-28 4
2.AutoLISP的数据类型
( 1 )整型数( INT ):是由 0 、 1 、2…9 、 +、 - 组成的。 ( 2 )实型数( REAL ):如 0.4 ( 0 不能少)、 -1.23 、 0.526E9(0.526×109)。 (3)符号(SYM):除(、)、*、‘、”、;之外的字 符序列,并且不能全部是数字。 符号常用着变量,如: Command:(setq X 12) ;整型数 Command:(setq X 12.0) ;实型数 Command:(setq X “12”) ;字符串
2015-1-28
( 4 )字符串( STR ):如:“ ABC” 、“ abc” 、 “457”等。 (5)表(LIST):带有一对括号、有若干元素 组成。(元素1 元素2 … 元素n) 如:(2 4 f) ◇元素的个数叫表的长度。 ◇元素也可以是表,如( 45 ( 3 6 ) 7 ),这 叫嵌套。 ◇元素之间必须用“空格” 隔开。 ◇表的定义方式:(LIST 5 6);’(5 6); 还可以用defun定义(后面讲)。2015-1-28 6
例: (setq P(list 12.36 -26.58)) 结果是:(12.36 -26.58) 例:(setq P '(12.36 -26.58)) 结果是:(12.36 -26.58)提示: (1)表的嵌套时一定要注意括号“(”、“)” 匹 配。 (2)西文状态下输入!!!2015-1-28 7
(6)文件描述符 (7)AutoLISP内部函数 (8)AutoCAD的选择集 (9)AutoCAD的实体名 上述数据类型中,前四种称原子,原子 包括数值原子(整型数、实型数),符号 原子和字符串原子。 AutoLISP基本数据类型是原子和表,重 点介绍前五种数据类型。
2015-1-28
二、几
个基本概念1.常数 PI——数学中的π(3.1415929…) T——逻辑真,即成立。 NIL——逻辑假,即不成立。还代表空,即无值。 注意:(1)大小写等效;(2)它们不能作为变量。 2.原子 是程序处理中最小的数据单元。 3.表达式 原子和表的统称。 如:(setq P '(12.36 -26.58))
2015-1-28
4.点 是表的一种形式,也叫点表。 有三种获得点的方式: (1)用'表示 '(120.35 253.24) (2)list函数定义点 (setq X 12.36 Y -26.58) (setq M (list X Y)) 结果是: M=(12.36 -26.58) (setq M '( X Y)) 结果是:(X Y) (3)由getpoint函数得到点 其格式:(getpoint “\n输入一点:”)2015-1-28 10
三、AutoLISP程序结构1.举例 例(1) ;;在屏幕上显示 ASCII码为(65-90)的字符 (defun C:zm(/ as) ;自定义命令 (setq as 65 n 100) (while (<= as 90) (command "text" (list n 100) 15 "" (chr as)) (setq as (+ as 1) n (+ n 20)) ) )2015-1-28 11
例(2) ;;绘制正多边形程序(defun c:dbx() (setq n (getint"\n输入多边形边数:")) (setq L (getreal"\n输入多边形边长:")) (setq P1(getpoint"\n输入多边形第一个角点坐 标:")) (setq P2(polar P1 0 L)) (command "polygon" n "e" p1 p2) )
2015-1-28
例(3) (defun yuan( ) ;;画圆函数 (setq r (getreal"\n半径:")) (setq p (getpoint"\n圆心:")) (command "circle" p r) )
2015-1-28
例(4) (defun ld( ) (setq p1 (getpoint"\n p1:") p2 (getpoint"\n p2:") );;;输入两点 (setq d (distance p1 p2));求距离 (setq ang (angle p1 p2));求方位角 (print d) (print ang) (command "line" p1 p2 "");画直线 )2015-1-28 14
2.结构( 1 )注释行以 ;开始,可在程序头或句尾,增加程 序可读性。也可以不要。 (2)除字符串外,字母大小写等效。 (3)表与表之间可以有空格,也可没有,建议有,这 样清楚。 如:(distance'(3 4)'(56 32))或 (distance '(3 4) '(56 32)) (4)函数名后至少要有一个空格,函数名与表之间可 有可无。
2015-1-28
3.特点 (1)所谓语句都是以表形式出现。 (2)一切成分都是以函数的形式给出。 (3)程序执行过程就是求函数值的过程。
四、AutoLISP程序执行方式有三种方式:行方式、源文件方式、编译文件方式。 1.行方式 就是在AutoCAD的“command:”提示符下,输入表后 回车。如: command:(+ 15 6.3)↙ command:(setq a 10)(setq b (+ a 5)) ↙2015-1-28 16
…… 此处隐藏:1029字,全部文档内容请下载后查看。喜欢就下载吧 ……