AutoLISP简介
AutoLISP规定了函数的形式:
一: ( function argument )
1. ( ) 括号,表示执行某一函数,而括号中的内容即所要执行的部分.
2. function 表示函数名. AutoLISP就是根据菡数名来区分各基本函数和用户自定义的函授数的. 3. argument表示函数的参
4. 如果函数中套有函数称为嵌套函授数. AutoLISP允许用户使用诸如下列嵌套函授数:
( fun1 (fun2 argu2) (fun3 argu3)) (1) 括号 “(” 和 “)”要匹配使用,用户在编写AutoLISP程序时一定要注意左\\右手号匹配问题. (2) AutoLISP程序中,所有的括号( )和双引号 \" \" 都必须在英文状态下输入,即必须是半角符号, 为AutoLISP不识加紧中文全角符号.
二: 设置变量函数( setq或SETQ )
格式: (setq 变量名1值1[变量名2 值2 变量名3 值3···]) 功能: 创建给定的变量,并赋特定值. 说明:
(1) setq函数允许用户同时设置多个变时并赋予相应的数值. (2) 对于字符串类型的值,应加上“”以于区分.
注意:各变量名\\数值之间只用空格隔开,而不能用其它标点符号,如要把3赋给变量abc可采用 setq abc 3)方式.
三: 执行AutoCAD标准命令( command )
格式: ( command\" 标准命令\" \"具体参数1\" \"具体参数2\" ······) 例如: (1)如果要画从(5,3)到(7,8)再到@10<0 三点的联机,可采用: ( command \" Line\" \"5,3\" \"7,8\" \"@10<0\" \"\")
(2)如果用户从已经定义的P1点到P2点画一条直线,可采用: ( command \"Line\" P1 P2 \"\")
四: 选择定点( getpoint)
格式: getpoint(\"\\n操作提示:\")
功能:用户可通过键盘输入体的坐标参数,可以用十字光标在屏幕区域内选取一点,通过该函 数, AutoLISP就得知了用户所选取的点的坐标值.
说明:
(1) AutoLISP将首先显示用户设置的操作提示,在此提示下,才可确定某一给定一点.
(2) Getpoint的操作提示中\\n表示换行.通常,我们都是用(setq P1(getpoint\"\\n请输入第一点的坐标: \"))这和方式来选取给定的点,并把该点坐标赋给变量P1. 五: 目标捕捉( osnap)
格式; osnap 给定顶点名称 “目标捕捉方式”
功能:以某种特定的目标捕捉方式, 捕捉最近给定顶点的某个特殊点.
语名( setq Pt2(osnap pt1 \"midp\"))表示捕捉靠近Pt1端的中点,并把该中点坐标赋给Pt2 六: 提取实体名称( entlast) 格式: entlast
功能:将用户的操作的上一实体的名称提取出来.
( setq m (entlast))表示把用户的操作的上一实体的名称提取出来.并赋于m 这样AutoCAD就可以通过变量m来识别图形实体.
例如:(1) Command :(command \"circle\" \"5,5\" \"2\") 以(5,5)这点为圆心,2为半径画一个圆. (2) Command :(command\"line\" \"3,5\" \"7,5\" \"\") 以这2点画一条直线,然后结束命令
(3) Command :(setq el (entlast)) (4) Command :(setq pt \"5,7\") 将点(5,7)赋给变量pt
(5) Command :(command \"trim\" el \"\" pt \"\") 剪切多余的线.
通过 entlast 函 数得知用户操作的上一实体为直线,并把该直线的实体名赋给变量el 这样el 就代表该直线.
用户自定义函数
AutoLISP提拱defun函数用以自定义用户函数,操作格式如下: ( defun c :XXX( ) 表达式 ) 现就该格式作说明:
(1):defun 函数后面所跟C :XXX( )是一种特定的格式,XXX是用户定义函数的函数名.
(2):表达工可由AutoLISP基本函数变量\\字符串和运算符等组成,是用户定义函数的核心部. (3):定义完函数后,用户就可像AutoLISP基本函数一样调用XXX( )函数.
注意:
(1):defun 函数后所跟的C并不是代表硬盘驱动器符C,而是代表 command line fuuction (命令行
函数).
(2):用这种方式所定义的函数XXX( ) 是无参函数,即不允许携带参数.
(3):定义后,该函数XXX( ),还可以像AutoCAD基本命令一样,在command: 提示符下输入XXX
并回车激活运行.
(4):XXX( )函数, 还可以像AutoCAD透明命令一样,在某一函数运行过程中XXX形式运行. 例如:
( defun C : LXH( )
(setq P1( getpoint\"\\ n请确定零件标注线第一点: \") (setq P2( getpoint\"\\ n请确定零件标注线第二点: \") )
( command \"Line\" P1P2 \"@5<0\" \"\") (setp P3 ( osnap P2 \"midp\" ))
(command \"dtext\" \" J \" \" bc\" P350 ) ( Princ ) )