资源描述
AutoLISP培训教程
单元一: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系统变量,功效之强大令人欣喜不已!
撰写环境不挑剔:只要是通常文书编辑软件全部适用! 如:Windows记事本、PE2、PE3、DW3、书中仙、汉书、EDIT....等
直译式程序: 不用再作编译,『即写即测、即测即用』,立即能够在AutoCAD中响应效果,立即就有成就感!
横跨各作业平台:悠然自得,即使AutoCAD有DOS、Windows版本之分不过AutoLISP却可在不改写原貌下,加载和实施!
三.撰写 AutoLISP 动机?
1、欲强化 AutoCAD 原有指令时.
2、欲发明更有用 AutoCAD 新指令.
3、欲简化繁琐环境设定或绘图步骤时.
4、欲处理参数式绘图时.
5、欲做图面资料读文件、写文件.
6、欲做 AutoCAD 演示文稿展示时.
7、欲达成真正灵活掌控 AutoCAD 时.
8、欲提升自己跨上 AutoCAD 高手列车时.
四.AutoLISP 效益评定?
1. 对企业责任人或设计主管而言:
A. 可能某职员或干部花了20个小时撰写一个AutoLISP程序,表面上,这快要三天时间,她连一张图全部没有画,甚至可能偶有发呆、沉思,若此程序一天能够替企业绘图部门节省1小时绘图时间,那算一算,只要20天就抵销开发成本,而20天以后全部是赚,『用愈久,省愈多』!
B. 若职员皆有此动力,在不影响正常工作,『激励』全部来不及,那有『压抑』道理,甚至还要派遣优异人员出去受训,学习愈加好设计技巧和创意呢?!
C. 千万不要因为您不懂或压抑,SHOW您权威和POWER,如此,不仅对职员造成打击,甚至您可能成为阻碍了企业计算机化进步罪魁祸首
D. 当然,若要撰写程序很多,内部设计人员程序功力距离太远,达成需求时间反而变得遥遥无期,那倒不如求援于市面上已经有相关 AutoCAD 支持软件。
2. 对设计人员而言:
A. 得到一笔提升绩效奖金呢? 当然,无形中,『AutoCAD 高手封号』也将黄功力又往前迈出了一大步,对个人成长帮助匪浅,幸运话,搞不好还能够袍加身,不亦乐乎!!!
B. 『半桶水、响叮当』,千万不要因为会写 AutoLISP 程序而自傲、孤僻、嚣张起来,功力增加,只是让您有更多『服务她人、服务企业』机会,若自恃过重,宁可不要!
C. AutoLISP 程序功力累进,是无远弗届,千万不要『孤芳自赏』,『人外有些人,天外有天』,可能您认为是『宝贝加三级』程序,只是其它设计师基础程序中一部份罢了!
D. 既然 AutoLISP 是 AutoCAD 『最大功臣』,当然不会轻易被舍弃,如此,您学习,确保不会白费!
E. 『精益求精』、『虚心讨教』、『用心学习、观摩』、『决心成为高手』
3.对程序本身而言:
A. 少少几行,却可能有『大大满意』时候!!!
B. 充份掌握了控制、发明 AutoCAD 『尚方宝剑』,让您在 AutoCAD 设计运作中『得心应手』,享受无比愉快和成就感!!!
五.怎样有效学习 AutoLISP ?
1、 先由小程序着手,认识AutoLISP语法要求!
2、浏览全部AutoLISP功效函数,关键功效函数要熟记脑海,俗语说好『一回生,二回熟』,除非您不用心,不然没有学不好道理!!!
3、要知道偷懒:不要认为在绘图过程中,繁琐步骤是合理,困难绘图过程是必需忍耐,试着用AutoLISP处理看看!
4、多观摩她人程序设计,吸收精华,像海棉一样=>『吸』、『吸』、『吸』!!!
5、动手『写』程序比用眼睛看程序,更能够领会深记脑海!
6、随时随地整理您程序,并加以批注,以免因时间飞逝,当初用心结果也烟消云散,忘一乾二净!!!
7、『决心』是学好 AutoLISP 最关键关键!
8、期许自己,要由操作者变成发明者!!!
[返回]
单元二:AutoLISP关键、基础结构及语法
一、学好 AutoLISP 关键、 基础结构和语法:
1. AutoLISP 程序语言特质
A.语法简单
B.功效函数强大
C.撰写环境不挑剃
D.直译式程序,『即写即测、即测即用』
E.横跨 AutoCAD 各作业平台,悠然自得 (注:以上五点,读者能够参考上一章剖析!!!)
2.学好 AutoLISP 关键:充份掌握『语法结构』&『功效函数』搭配!!!
3.关键 AutoLISP 基础语法结构
规则1: 以括号组成表示式,、相对称左右括号数一定要成双成对
规则2: 表示式型态:(操作数 运算子 运算子 运算子)
1.1 操作数包含『功效函数』&『自定函式』
1.2 运算子(自变量)包含:
A.整数(Integer) 如 8,-17,500,9999 .....
B.实数(Real) 如 8.5,-17.456 .....
C.字符串(String) 如 "AutoCAD","123"
D.串行(List) 如 ("a" "b" "c"),(x y)
E.像素名称代码 如 <entity name: 6000f262>
F.档案代码 如 <file:#12438>.....
G.选择群集代码 如 <Selection set:1>
规则3:表示式中『运算子』,能够是另一『表示式』或『子程序』
规则4: 多重括号表示式,运算前后次序是『由内而外、由左而右』
规则5: 以档案型态存在 AutoLISP 程序(ASCII 档案),其扩展名必需是.lsp
规则6: 撰写环境,只要是通常文书编辑软件、记事本,可编辑 ASCII 档案者全部适用
规则7: 以 defun 功效函数定义新指令或新功效函式
规则8: 新定义功效函式名称,若为『C:函式名』,则此函式可为 AutoCAD新指令
规则9: 加载 AutoLISP 程序作法:=> 指令:后直接键入 (load "LISP主檔名")
规则10: AutoLISP 程序中,在『分号 ;』后内容均为批注,程序不处理,适时增加批注,将使程序更具可看性、学习性及完整性
规则11: AutoLISP 最常见变量型态是『整数』、『实数』、『字符串』、『点串行』四种,变量型态依据设定值而自动定义,变量会一直储存该值,直到被重新设定值或绘图结束自动消失
规则12:以 setq 功效函数设定变量值 (setq 变量名称 设定值)
规则13:欲在 AutoCAD 环境中,查看一变量值,指令:下键入『!变量名』即可
规则14:以(defun C:函式名(自变量 / 变量) ........)程序中,程序中变量若在『/』右边变量内,则称为『区域变量』,不然为『整体变量』
二、学好 AutoLISP 关键:
充份掌握『语法结构』&『功效函数』搭配!!! 其时这个关键亦是学习其它程序语言关键.
*『语法结构』AutoLISP 语法结构要求并不多,变量不用事先定义及宣告,读者可熟记下一单元相关关键 AutoLISP基础语法结构,十四条设计上要求『规则』
*『功效函数』AutoLISP 之所以能功效如此强大,全部有赖功效函数,其组员共约200个:
1、通常性函数170个
2、ADS 定义特殊函数9个
3、配合 DCL 交谈框设计函数 22个
各功效函数在使用上要求配合运算子(自变量)型态,全部有其要求,当然,您可不能乱给!
比如:
指令:(+ 1 2 3 "ABC")
传回:error : bad argument type (自变量型态错误)
因为『+』函数不接收字符串,而 "abc" 正是字符串
指令:(rtos "abc")
传回:error : bad argument type (自变量型态错误)
因为『rtos』函数只接收实数转字符串
具体内容可参考下一章『快速浏览 AutoLISP 功效函数』至于各功效函数具体语法和实例应用,读者请参阅本书『第三篇AutoLISP功效函数详解』
三、关键 AutoLISP 基础语法结构:
规则1:以括号组成表示式,左右括号数一定要成双成对、相对称
请依序在『指令:』列 (或指令:) 后面直接键入以下表示式
指令:(+ 1 2 3 4 5) 传回加总和15
指令:(max 14.5 8.9 35) 传回最大值35
指令:(menucmd "p1=*") 显示拉下POP1
指令:(getint "Enter Real:") 传回Enter Real:要求输入一个实数
指令:(setq a (* 12.5 4)) 传回相乘值 50,同时设定给『变量 a』
指令:!a 响应50 (注:! 号可用来查询变量值)
指令:(min 75 a 63) 响应最小值50 (因为变量值a代表50)
错误范例:
指令:(setq a (* 12.5 4)
1> 传回1>表示少了一个括号
1> ) 此时,只要再补上一个 ) 即可
指令:(setq a (* 12.5 4
2> 传回2>表示少了二个括号
2> )) 此时,只要再补上二个 ) 即可
规则2:表示式型态 (操作数 运算子 运算子 运算子 ...)或 (函数(式) 自变量 自变量 自变量 ...)
或 (函数(式) 元素 元素 元素 ...)
1.1 操作数包含『功效函数』&『自定函式』
功效函数: 如上练习中 +、max、menucmd、getint、 setq、*、min,具体内容可参考下一章『快速浏览 AutoLISP 功效函数』&『第三篇 AutoLISP功效函数详解』
自定函式: 由设计者自行定义新函式或子程序
1.2 运算子(又称自变量或元素)包含:
A.整数(Integer): 如8,-17,500,9999…
正常范围: 216次方,介于-32768和+32767之间
特殊范围: 若以 float 函数将其转为实数,则范围232次方, 介于-和+之间
B.实数(Real): 如8.5,-17.456…
正常范围: 带有小数点数,精度可达 14 位有效数字
C.字符串(String): 如 "AutoCAD","123","Enter Real:","7.5",…
正常范围: 以双引号内夹『字符』为认定,字符数不受限制
D.串行(List): 如 ("a" "b" "c"),(x y),(x y z),("a" 8 3.5),....
正常范围: 以左右括号内夹『元素』为认定,元素型态很弹性
使用频率: 在 AutoLISP 程序设计中应用很高
范例说明 : ("a" 8 3.5 kk (1 2))
表示此串行内有五个元素 "a"表示字符串a、8表示整数8、3.5表示实数3.5、kk表示变量kk、(1 2)表示串行(1 2)
2D 点坐标(x y) 表示法 => 以二实数形成串行
3D 点坐标(x y z) 表示法 => 以三实数形成串行
E.像素名称代码:如 <entity name: 6000f262> ...
使用范围: AutoCAD 会自动给予像素指向代码,透过此代码可找到像素数据库统计
范例说明: (setq en (entlast))
传回 <entity name: 60000062>
(entget en) 可找到像素数据库串行
F.档案代码: 如<file:#12438>…
使用范围: 开启(open)档案作读档(r)、写档(w)使用时,所产生代码,以下:
范例说明:
(setq ffr (open "test.txt" "r")) 响应 <file:#24138>
(setq ffw (open "abc.txt" "w")) 响应 <file:#34812>
G.选择群集代码: 如<Selection set:1>、<Selection set:1>…
使用范围: 一个或数个像素所形成选择集
范例说明:
(setq ss (ssget))
选择对象: (可选择物体)
选择对象: (可选择物体)
选择对象: (按 [ENTER] 键)
响应 <Selection set:1>
规则3 :表示式中『运算子』,能够是另一『表示式』或『子程序』功效函数使用语法:
(strcat 字符串1 字符串2 字符串3 ....) 字符串结合功效函数
(getstring 提醒) 要求键入一个字符串
(rtos 实数) 将实数转换成字符串
范例说明1: (strcat "abc" "123" "LISP") 传回:"abc123LISP"
范例说明2: (strcat "abc" (getstring "Enter String:" ) (rtos 123.45))
实施结果: Enter String: 键入任一字符串,假设是键入 *HELLO*
响应 "abc*HELLO*123.45"
本例中strcat函数在语法中要求『运算子』必需是『字符串』型态
『运算子1』= "abc" 是正常字符串运算子
『运算子2』= 表示式 (getstring "Enter String:") 传回结果是一字符串 "*HELLO*"
『运算子3』= 表示式 (rtos 123.45) 传回结果是一字符串 "123.45"
规则4:多重括号表示式,运算前后次序是『由内而外、由左而右』
范例说明: 请将10.25 + 17 - 13.2 / 7结果,设定给变量kk,并转换成AutoLISP 表示式
解法技巧A:
1:利用『二分法、加括号』:(10.25 + 17) - (13.2 / 7)
2:操作数往前提: kk = (- (10.25 + 17) (13.2 / 7))
3:操作数再往前提:kk = (- (+ 10.25 17) (/ 13.2 7))
4:转换完成: (setq kk (- (+ 10.25 17) (/ 13.2 7)))
解法技巧B:
1:利用『二分法、加括号』:(10.25 + (17 - (13.2 / 7)))
2:操作数往前提: kk = (+ 10.25 (17 - (13.2 / 7)))
3:操作数再往前提:kk = (+ 10.25 (- 17 (/ 13.2 7)))
4:转换完成: (setq kk (+ 10.25 (- 17 (/ 13.2 7))))
规则5:以档案型态存在AutoLISP程序(ASCII档案),其扩展名必需是.LSP
规则6:撰写环境,只要是通常文书编辑软件,可编辑 ASCII 档案者全部适用
如:PE2、PE3、DW3、书中仙、汉书、EDIT、记事本....等
规则7:以 defun 功效函数定义新指令或新功效函式 (注:自变量及区域变量可省略)
程序结构型态:(defun 函式名称(自变量/区域变量)
: :
: : 程序内容
: :
)
规则8:新定义功效函式名称,若为『C:函式名』,则此函式可为 AutoCAD 新指令
(注:自变量及区域变量可省略)
程序结构型态: (defun C:KK(自变量/区域变量)
: :程序内容
: :
: :
)
则加载此 LISP 程序后,可在 指令: 后直接键入新定义 KK 指令
规则9: 加载AutoLISP程序作法:指令:后直接键入 (load "LISP主檔名")
注:load 和字符串间空格,可有可无
注:load 和双引号间空格,可有可无 (load"LISP主檔名")
范例: 在 c:\lsptools 目录下有一LISP程序tt.lsp,而您现在工作目录在c:\dwg下
若『环境设定』之『支持档案搜寻路径』有指定到c:\lsptools目录,则欲使用加载tt.lspà 指令:后键入 (load "tt") 即可
若『环境设定』之『支持档案搜寻路径』无指定到c:\lsptools目录,则键入 (load"tt") 后,会出现错误讯息以下:
无法开启「tt.lsp」做输入错误: 加载失败(LOAD "tt")*取消*
此时您可键入:
指令:(load "c:\\lsptools\\tt") 或
指令:(load "c:"/lsptools/tt)
不可键入: (load "c:\lsptools\tt")
因为『\』在 AutoLISP 结构语法中已经用于『跳脱码控制』了
规则10:AutoLISP 程序中,在『分号 ;』后内容均为批注,程序不处理,适时增加批注,将使程序更具可看性、学习性及完整性
范例: pp.lsp 内容以下:
;本程序功效可快速画门、窗
;设计者:QQ博士
;版权全部,欢迎使用
(defun c:pp()
: :
; 以下为画门子程序
: :
; 以下为画窗子程序,
: :
: :
)
规则11:AutoLISP 最常见变量型态是『整数』、『实数』、『字符串』、『点串行』四种,变量型态依据设定值而自动定义,变量会一直储存该值,直到被重新设定值或绘图结束自动消失
规则12:以 setq 功效函数设定变量值 (setq 变量名称 设定值)
范例:
(setq a 100) ;变量 a 值设定成整数 100
(setq b 123.56) ;变量b值设定成实数123.56
(setq c "Good morning!!!") ;变量 c 值设定成字符串
(setq pt1 (getpoint "Enter POINT:")) ;变量 pt1 值设定成点串行
(setq pt2 (list a b))
;此时,a值是100,b值是123.56变量pt2值设定成点串行(100 123.56)
(setq pt3 '(297 210)) ;变量 pt3 值设定成点串行 (297 210)
注意: 直接设定成点串行时,不能省略单引号『'』不然会被误认 (297 210)又是一个表示式, 297是操作数而犯错!
规则13:欲在 AutoCAD 环境中,查看一变量值,指令:下键入『!变量名』即可
范例:
指令:(setq aa (+ 100 75)) 传回:175
指令:!aa 传回:175
指令:(setq pp (list 90 50)) 传回:(90 50)
指令:!pp 传回: (90 50)
指令:!ww 传回:nil 空值无设定
规则14:以(defun C:函式名(自变量 / 变量) ........)程序中,程序中变量若在『/』右边变量内,则称为『区域变量』,不然为『整体变量』(注:在 AutoLISP 中,未给予值变量,其值皆响应 nil)
『区域变量』于此程序实施完成后,其值自动消失
『整体变量』于此程序实施完成后,其值仍然存在
范例: test.lsp 内容以下
(defun c:tt(/ sa sb sc)
(setq sa 100)
(setq sb 20)
(setq sc 10)
(setq sd (+ sa sb sc))
)
回到: 指令:键入(load"tt") 传回:c:tt
指令:tt 传回:130
指令:!sa 传回:nil (属区域变量)
指令:!sb 传回:nil (属区域变量)
指令:!sc 传回:nil (属区域变量)
指令:!sd 传回:130 (属整体变量)
[返回]
单元三:快速分类浏览AutoLISP功效函数(一)
一?看到以下那么多 AutoLISP 功效函数,洋洋洒洒17大类:
1、您第一个念头,一定惊讶怎么会那么多,您可能快吓坏了!
2、您第二个念头,一定会想『那么多,怎么记得下来』,您可能快放弃了!
二?其实,您应该要『很兴奋』而『充满信心』,怎么说呢?
1、您有那么多『大将』帮助您撰写 AutoLISP 程序,当然左右又逢源,不仅轻松, 而且要愉快不得了!!!
2、这些函数只要您先浏览有印象, 要用时,再翻查该函数,了解用途语法再加入到您程序中就能够了!!!
3、常见函数,写久、用久后,自然会深深切记脑海,想忘全部极难,不常见函数, 若硬要您记下来,相信连高手全部很困难,更何况是初学您!!!
4、您不用再摸不着头绪了,因为您幸运拥有了本书,就是您成功开始!!!
第一类 数学运算功效函数
项目
函数语法 传 回
1.1 (+ 数值 数值 ...) 累计实数或整数数值
1.2 (- 数值 数值 ...) 减去数值
1.3 (* 数值 数值 ...) 全部数值乘积
1.4 (/ 数值 数值 ...) 第一个数值除以第二个以后数值商
1.5 (1+ 数值) 数值+1
1.6 (1- 数值) 数值-1
1.7 (abs 数值) 数值绝对值
1.8 (atan 数值) 反正切值
1.9 (cos 角度) 角度余弦值,角度值为弪度
1.10 (exp 数值) 数值指数
1.11 (expt 基数 指数) 基数指数值
1.12 (fix 数值) 将数值转换为整数值
1.13 (float 数值) 将数值转换为实数值
1.14 (gcd 数值1 数值2) 二数值最大公因子
1.15 (log 数值) 数值自然对数值
1.16 (max 数值 数值 ...) 数值中最大值
1.17 (min 数值 数值 ...) 数值中最小值
1.18 pi 常数p ,其值约为 3.1415926
1.19 (rem 数值1 数值2) 二数值相除余数
1.20 (sin 角度) 角度正旋值,角度值为弪度
1.21 (sqrt 数值) 数值平方根
第二类 检验 & 逻辑运算功效函数
项目 函数语法 传 回
2.1 (= 表示式1 表示式2) 比较表示式1是否等于表示式2适用数值及字符串
2.2 (/= 表示式1 表示式2) 比较表示式1是否大于等于表示式 2
2.3 (< 表示式1 表示式2) 比较表示式 1 是否 <小于 表示式 2
2.4 (<= 表示式1 表示式2) 比较表示式 1 是否 <=小于等于 表示式 2
2.5 (> 表示式1 表示式2) 比较表示式 1 是否 >大于 表示式 2
2.6 (>= 表示式1 表示式2) 比较表示式1是否大于等于表示式2
2.7 (~ 数值) 传回:数值位not值,(1补码)
2.8 (and 表示式1 表示式2…) 逻辑and结果
2.9 (boole 函数 整数 整数…) 位式布尔运算
2.10 (eq 表示式1 表示式2) 比较表示式1和表示式2是否相同, 适用串行比较(实际相同)
2.11 (equal 表示式1 表示式2 [差量]) 比较表示式1和表示式2是否相同, 差量可省略(内容相同)
第三类 转换运算功效函数
项目 函数语法 传 回
3.1 (angtof 字符串 [模式]) 角度值字符串转成实数
3.2 (angtos 角度 [模式 [精度]]) 角度转成字符串值
3.3 (atof 字符串) 字符串转成实数值
3.4 (atoi 字符串) 字符串转成整数值
3.5 (cvunit 数值 原始单位 转换单位) 数值转换单位后值转换依据 acad.unt 档案
3.6 (distof 字符串 [模式]) 依模式将字符串转成实数值
3.7 (itoa 整数) 整数转成字符串
3.8 (rtos 数值 模式 [精度]) 实数转成字符串
3.9 (trans 点 原位置 新位置 [位移]) 转换坐标系统值
第四类 串行处理功效函数
项目 函数语法 传 回
4.1 (append 串行 串行 ...) 结合全部串行成一个串行
4.2 (assoc 关键元素 联合串行) 依关键元素找寻联合串行中关系资料
4.3 (car 串行) 串行中第一个元素通常见来求 x 坐标
4.4 (cadr 串行) 串行中第二个元素通常见来求 y 坐标
4.5 (caddr 串行) 串行中第三个元素通常见来求 z 坐标
4.6 (cdr 串行) 除去第一个元素后串行
4.7 (cons 新元素 串行) 将新元素结合到串行
4.8 (foreach 名称 串行 表示式) 将串行每一元素对应至名称再依表示式实施响应
4.9 (length 串行) 串行内元素数量
4.10 (list 元素 元素…) 将全部元素结合成一串行
4.11 (listp 元素) 判定元素是否为一串
4.12 (mapcar 函数 串行1 串行2 ...) 将串行1、串行2、…等串行 元素配合函数,求得新串行
4.13 (member 关键元素 串行) 依关键元素(含)以后串行
4.14 (nth n 串行) 串行第n个元素
4.15 (reverse 串行) 将串行元素依次序颠倒过来串行
4.16 (subst 新项 旧项 串行) 替换新旧串行后串行
第五类 字符串、字符、档案处理功效函数
项目 函数语法 传 回
5.1 (ascii 字符串) 字符串第一个字符『ASCII』码
5.2 (chr 整数) 整数所对应 ASCII 单一字符串
5.3 (close 文件名称) 关闭档案
5.4 (open 文件名 模式) 开启档案代码,准备读取或写入资料
5.5 (read 字符串) 串行中字符串第一组元素
5.6 (read-char [档案代码]) 经由键盘或档案中读取单一字符
5.7 (read-line [档案代码]) 经由键盘或档案中读取一行字符串
5.8 (strcase 字符串 [字样]) 转换字符串大小写
5.9 (strcat 字符串1 字符串2 ...) 将各字符串结合成一字符串
5.10 (strlen 字符串) 字符串组成字符数(即字符串长度)
5.11 (substr 字符串 起始 长度) 取出子字符串
5.12 (wcmatch 字符串 格式) T或nil,将字符串和通用字符进行比对
5.13 (write-char 数值 [档案代码]) 将一ASCII字符写到档案或屏幕
5.14 (write-line 字符串 [档案代码]) 将字符串写到档案或屏幕上
第六类 等候输入功效函数
项目 函数语法 传 回
6.1 (getangle [基点] [提醒]) 请求输入十进制角度数值,响应一弪度值提醒及参考点可有可无
6.2 (getcorner 基点 [提醒]) 请求输入另一矩框对角点坐标
6.3 (getdist [基点] [提醒]) 请求输入一段距离
6.4 (getint [提醒]) 请求输入一整数值
6.5 (getkword [提醒]) 请求输入『关键词』
6.6 (getorient [基点] [提醒]) 请求输入十进制角度,响应一弪度值不受angbase、angdir影响
6.7 (getpoint [基点] [提醒]) 请求输入一个点坐标
6.8 (getreal [提醒]) 请求输入一实数
6.9 (getstring [提醒]) 请求输入一字符串
6.10 (initget [位] 字符串) 设定下次 getxxx 函数有效输入
第七类 几何运算功效函数
项目 函数语法 传 回
7.1 (angle 点1 点2) 取得二点角度弪度值
7.2 (distance 点1 点2) 取得二点距离
7.3 (inters 点1 点2 点3 点4 [模式]) 取得两条线交点
7.4 (osnap 点 模式字符串) 依辅助抓点模式取得另一坐标点
7.5 (polar 基点 弪度 距离) 依极坐标法取得另一坐标点
7.6 (textbox 像素串行) 取得文字符串二对角点坐标
第八类 像素处理功效函数
项目 函数语法 传 回
8.1 (entdel 像素名称) 删除或逆删除像素
8.2 (entget 像素名称 [应用程序串行]) 取出像素名称资料串行
8.3 (entlast) 取出图形数据中最终一个像素
8.4 (entmake 像素串行) 建立一个新像素串行
8.5 (entmod 像素串行) 依更新资料串行更新屏幕上元体
8.6 (entnext [像素名称]) 找寻图面中下一个像素
8.7 (entsel [提醒]) 请求选择一个像素,响应包含像素名称及选点坐标串行
8.8 (entupd 像素名称) 更新屏幕上复元体图形
8.9 (handent 图码) 图码元体名称
8.10 (nentsel [提醒]) BLOCK所含副元体像素数据串行
8.11 (nentselp [提醒] [点]) BLOCK所含副元体像素数据(以4 x 4矩形表示) .
[返回]
单元四:快速分类浏览AutoLISP功效函数(二)
第九类 选择集、符号表处理功效函数
项目
函数语法 传 回
9.1 (ssadd [像素名称] [选择集]) 将像素加入选择集或建立一新选择集
9.2 (ssdel 像素名称 选择集) 将像素自选择集中移出
9.3 (ssget [模式] [点1] [点2]) 取得一个选择集
9.4 (ssget "X" [过滤串行]) 取得依过滤串行所指定范围选择集
9.5 (sslenth 选择集) 计算选择集像素个数
9.6 (ssmemb 像素名称 选择集) 响应像素名称是否包含于选择集内
9.7 (ssname 选择集 索引值) 依索引值取出选择集中像素名称
9.8 (tblnext 符号表名称 [T]) 检视符号表,有效符号表: "LAYER"、"LTYPE"、"VIEW"、"STYLE"、"BLOCK"
9.9 (tblsearch 符号表名称 符号) 在符号表中搜寻符号
第十类 AutoCAD 相关查询、控制功效函数
项目
函数语法 传 回
10.1 (command "AutoCAD 指令" ...) 呼叫实施AutoCAD指令
10.2 (findfile 檔名) 传回:应该文件名路径及文件名
10.3 (getfiled 标题 内定档名 扩展名 旗号) 透过标准AutoCAD档案对话DCL交谈框求得档案
10.4 (getenv "环境变量") 取得该环境变量设定值,以字符串表示
10.5 (getvar "系统变量") 取得该系统变量设定值,以字符串表示
10.6 (setvar "系统变量" 值) 设定该系统变量值
10.7 (regapp 应用类项) 将现在AutoCAD图形登记为一个应用程序名称
第十一类 判定式、循环相关功效函数
项目
函数语法 传 回
11.1 (if <比较式> <表示式1> [表示式2]) 检算比较式结果,假如为真,实施<表示式1>不然,实施<表示式2>
11.2 (repeat 整数 [<表示式> <表示式> ...]) 反复实施<整数>次数
11.3 (while 标题 内定檔名 扩展名 旗号) 透过标准 AutoCAD 档案对话DCL交谈框求得档案
11.4 (cond "环境变量") 取得该环境变量设定值,以字符串表示
11.5 (progn 表示式1 表示式2 ...) 连结其内表示式为一组,常见于配合if、cond等函数
第十二类 函数处理、定义、追踪 & 错误处理功效函数
项目
函数语法 传 回
12.1 (*error* 字符串) 程序错误时警示讯息
12.2 (alert 字符串) 以交谈框式显示出警告字符串
12.3 (apply 功效函数 串行) 将功效函数和串行结合后实施
12.4 (defun 名称 自变量串行 表示式 ...) 自定函数或子程序
12.5 (eval 表示式) 传回:表示式实施结果
12.6 (exit) 强制退出现在应用程序
12.7 (lambda 自变量 表示式) 定义未具名函数
12.8 (progn 表示式1 表示式2 ...) 连结其内表示式为一组,常见于配合if、cond等函数
12.9 (quit) 强制退出现在应用程序
12.10 (tablet 代码 [列1 列2 列3 方向]) 取用或建立对数字板校调
12.11 (trace 函数…) 对函数设定追踪旗号,辅助除错
12.12 (untrace 函数…) 对函数设定解除追踪旗号
第十三类 显示、打印控制功效函数
项目
函数语法 传 回
13.1 (graphscr) 作图环境切换到图形画面
13.2 (grclear) 临时清除模前屏幕画面
13.3 (grdraw 起点 终点 颜色 [亮显]) 临时性画出一条线
13.4 (grread [追踪]) 由输入设备读取追踪值
13.5 (grtext 位置 字符串 [亮显]) 将字符串显示在状态列或屏幕菜单上
13.6 (grvecs 向量串行 [转置矩阵]) 临时性画出多条线
13.7 (menucmd 字符串) 提供在AutoLISP中呼叫各菜单
13.8 (prin1 [表示式 [档案代码]) 将表示式打印于命令区或已开启档案,句柄字符则以"\" 为前缀展开
13.9 (princ [表示式 [档案代码]) 除句柄字符则不以 "\" 为前缀展开外其它同prin1
13.10 (print [表示式 [档案代码]) 除表示式会往下一新行列出,及一空格外其它同prin1
13.11 (prompt 讯息) 将讯息显示于屏幕命令区,并随即响应一个nil讯息
13.12 (redraw [像素名称 [模式]]) 重绘整张图或依像素名称重绘该图形
13.13 (terpri) 在屏幕上显示新列
13.14 (textscr) 作图环境切换到文字画面
13.15 (textpage) 清除文字画面文字类似DOScls指令
13.16 (vports) 传回:窗口组态串行
第十四类 符号、元素、表示式处理功效函数
项目
函数语法 传 回
14.1 (atom 元素) 假如元素不是串行,响应 T,不然为 nil
14.2 (atoms-family 格式 [符号串行]) 传回:
展开阅读全文