版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、AutoLISP培训教程单元一:AutoLISP主角潇洒登场一 . AutoLISP 是何方神圣?1、AutoLISP是AutoCAD的最佳拍槽!2、AutoLISP内含于AutoCAD软件内,不用另外花钱买!3、AutoLISP是强化AutoCAD最好、最直接的程序语言!4 AutoLISP易学、易用,即使不会程序设计的AutoCAD使用者,都能在最短的 时间内,写出令人 惊讶、赞叹的功能 !若说 AutoLISP 的出现,是替AutoCAD 创造一片天的最大功臣 ,实不为过一点也不夸张!5、AutoLISP希望您去学习它、改善它、发挥它、享受它.真的!它的威力、魅力无穷!二 . AutoL
2、ISP 程序语言的特质分析 :学习AutoLISP是非常容易的,对初学者而言,即使没有学习过任何的程序语言,都能很快的上手, 写出精彩漂亮的AutoLISP程序!语法简单:不用特殊的变量宣告,非常富有弹性,比起其它的程序语言,它的语法可说是非常简单而有其独特的风格!功能函数强大:除一般性的功能函数外 ,又拥有为数不少控制配合AutoCAD 的特殊函数,再加上AutoLISP可直接呼叫执行所有AutoCAD的指令,以及掌握运用所有的AutoCAD系统变量,功能 之强大令人欣喜不已 !撰写的环境不挑剔:只要是一般的文书编辑软件都适用 ! 如 :Windows 的记事本、PE2、 PE3、DW3、书
3、中仙、汉书、EDIT.等直译式程序: 不用再作编译,即写即测、即测即用,马上可以在AutoCAD 中响应效果,马上就有成就感!横跨各作业平台:悠然自得,虽然AutoCAD有DOS、Windows版本之分但是AutoLISP却可在不 改写的原貌下,加载与执行!三 .撰写AutoLISP 的动机 ?1、欲强化 AutoCAD 原有指令时.2、欲创造更有用的AutoCAD 新指令 .3、欲简化繁琐的环境设定或绘图步骤时4、欲处理参数式绘图时.5、欲做图面资料读文件、写文件.6、欲做AutoCAD 演示文稿展示时.7、欲达到真正灵活掌控AutoCAD 时 .8、欲提升自己跨上AutoCAD 高手列车时
4、.四 .AutoLISP 的效益评估?1. 对公司负责人或设计主管而言 :A.也许某员工或干部花了 20个小时撰写一个AutoLISP程序,表面上,这将近三天的时间,他连一张图都没有画 ,甚至可能偶有发呆、沉思,若此程序一天可以替公司绘图部门节省1 小时绘图时间 ,那算一算,只要20天就抵销开发成本,而 20 天以后都是赚的, 用的愈久,省的愈多!B. 若员工皆有此动力,在不影响正常工作, 鼓励都来不及,那有压抑的道理,甚至还要派遣优秀人员出去受训,学习更好的设计技巧与创意呢?!C.千万不要因为您的不懂或压抑,SHOW您的权威与POWER如此,不但对员工造成打击,甚至您 可能成为阻碍了公司计算
5、机化进步的罪魁祸首D. 当然 ,若要撰写的程序很多,内部设计人员的程序功力距离太远,达成需求的时间反而变得遥遥无期 ,那倒不如求助于市面上已有的相关AutoCAD 支持软件。2. 对设计人员而言 :A. 得到一笔提升绩效奖金呢 ? 当然 ,无形中 ,AutoCAD 高手的封号也将黄功力又往前迈出了一大步,对个人的成长帮助匪浅,幸运的话,搞不好还可以袍加身,不亦乐乎 !B. 半桶水、响叮当,千万不要因为会写AutoLISP 程序而自傲、孤僻、嚣张起来,功力的增长,只是让您有更多服务他人、服务公司的机会,若自恃过重,宁可不要 !C. AutoLISP 程序功力的累进 ,是无远弗届的,千万不要孤芳自
6、赏,人外有人,天外有天,也许您觉得是宝贝加三级的程序,只是其它设计师基本程序中的一部份罢了!D. 既然 AutoLISP 是 AutoCAD 的最大功臣 , 当然不会轻易被舍弃,如此,您的学习 ,保证不会白费 !E. 精益求精、虚心求教、用心学习、观摩、决心成为高手3. 对程序本身而言:A. 少少的几行,却可能有大大满意的时候!B. 充份掌握了控制、创造AutoCAD 的尚方宝剑 ,让您在 AutoCAD 的设计运作中得心应手 ,享受无比的快乐与成就感!五 .如何有效的学习AutoLISP ?1、先由小程序着手,认识AutoLISP语法规定!2浏览所有的AutoLISP功能函数,重要的功能函数
7、要熟记脑海,俗语说的好一回生二回熟,除非您不用心,否则没有学不好的道理!3、要懂得偷懒:不要认为在绘图的过程中 ,繁琐的步骤是合理的,困难的绘图过程是必须忍耐的,试着用AutoLISP解决看看!4、多观摩别人的程序设计,吸取精华,像海棉一样=吸、吸、吸!!!5、动手写程序比用眼睛看程序,更能够领略深记脑海!6随时随地整理您的程序,并加以批注,以免因时间的飞逝,当时用心的成果也烟消云散,忘的 一乾二净!7、决心是学好 AutoLISP最重要的关键!8、期许自己,要由操作者变成创造者!返回单元二:AutoLISP的关键、基本结构及语法一、学好AutoLISP的关键、基本结构与语法:1. AutoL
8、ISP程序语言的特质A.语法简单B.功能函数强大C.撰写的环境不挑剃D.直译式程序,即写即测、即测即用E横跨AutoCAD各作业平台,悠然自得(注:以上五点,读者可以参考上一章的剖析!!)2 .学好AutoLISP的关键:充份掌握语法结构&功能函数的搭配!3 .重要的AutoLISP的基本语法结构规则1:以括号组成表达式,、相对称左右括号数一定要成双成对规则2:表达式型态:(操作数运算子运算子运算子)1.1 操作数包括功能函数&自定函式1.2 运算子(自变量)包括:A.整数(Integer)如 8,-17,500,9999 .1.3 数(Real)如 8.5,-17.456 .
9、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
10、档案 ),其扩展名必须是.lsp规则 6: 撰写的环境,只要是一般的文书编辑软件、记事本,可编辑ASCII 档案者都适用规则 7: 以 defun 功能函数定义新的指令或新的功能函式规则8:新定义的功能函式名称,若为C:函式名,则此函式可为 AutoCAD新指令规则9:力嵌 AutoLISP程序的作法:=> 指令:后直接键入(load "LISP主槽名")规则 10: AutoLISP 程序中 ,在分号 ;后的内容均为批注,程序不处理,适时的增加批注,将使程序更具可看性、学习性及完整性规则11: AutoLISP 最常用的变量型态是整数、实数、字符串、点串行四种 ,变
11、量的型态依据设定值而自动定义,变量会一直储存该值,直到被重新设定值或绘图结束自动消失规则 12:以 setq 功能函数设定变量值(setq 变量名称 设定值 )规则13:欲在AutoCAD 的环境中,查看一变量值,指令 :下键入 !变量名即可规则14:以(defun C函式名(自变量/变量)沸序中,程序中的变量若在/右边变量内,则称为区域变量 ,否则为整体变量二、学好 AutoLISP 的关键:充份掌握语法结构& 功能函数的搭配! 其时这个关键亦是学习其它程序语言的关键 .* 语法结构 AutoLISP 的语法结构规定的并不多,变量不用事先定义及宣告,读者可熟记下一单元有关重要的 Au
12、toLISP基本语法结构,十四条设计上要求的规则* 功能函数 AutoLISP 之所以能功能如此强大,都有赖功能函数,其成员共约200个 :1、一般性函数170个2、 ADS 定义特殊函数9 个3、配合DCL 交谈框设计函数22个各功能函数在使用上要求配合的运算子(自变量)型态 ,均有其规定,当然 ,您可不能乱给!例如 :指令 :(+ 1 2 3 "ABC")传回:error : bad argument typ则变量型态错误)因为+函数不接受字符串,而 "abc" 正是字符串指令 :(rtos "abc")传回:error : ba
13、d argument typ则变量型态错误)因为rto刚函数只接受实数转字符串详细内容可参考下一章快速浏览AutoLISP 功能函数至于各功能函数详细的语法与实例应用读者请参阅本书第三篇AutoLISP功能函数详解三、重要的AutoLISP 的基本语法结构:规则 1:以括号组成表达式,左右括号数一定要成双成对、相对称请依序在指令:列(或指令:) 后面直接键入以下表达式指令 :(+ 1 2 3 4 5)传回加总和15指令 :(max 14.5 8.9 35)传回最大值35指令 :(menucmd "p1=*") 显示拉下 POP1指令:(getint "Enter
14、Real:")传回Enter Rea腰求输入一个实数指令 :(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 42> 传回 2>表示少了二个括号2> ) 此时 ,只要再补上二个) 即可规则2:表达式型态(操作数运算子 运算子 运算子 .)或
15、 (函数 (式) 自变量 自变量 自变量 .)或 (函数 (式) 元素 元素 元素 .)1.1 操作数包括功能函数& 自定函式功能函数:如上练习中的 十、max、menucmd getint、setq> *、min,详细内容可参考下一章快速浏览AutoLISP功能函数&第三篇AutoLISP功能函数详解自定函式 : 由设计者自行定义的新函式或子程序1.2 运算子 (又称自变量或元素)包括 :A.整数(Integer):如 8,-17,500,9999正常范围 : 2 的 16次方 ,介于 -32768与+32767之间特殊范围 : 若以 float 函数将其转为实数,则范
16、围 2 的 32次方 , 介于 -2147483648与+2147483647之间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)
17、,.正常范围: 以左右括号内夹元素为认定,元素型态非常弹性使用频率: 在 AutoLISP 程序设计中应用非常高范例说明 : ("a" 8 3.5 kk (1 2)表示此串行内有五个元素"a"表示字符串a 8表示整数8、3.5表示实数35 kk表示变量kk、(1 2)表示串行(1 2)2D 点坐标 (x y) 表示法 => 以二实数形成串行3D 点坐标 (x y z) 表示法 => 以三实数形成串行E.像素名称代码:如<entity name: 6000f262>使用范围: AutoCAD 会自动赋予像素指向代码,透过此代码可找到
18、像素的数据库记录范例说明: (setq en (entlast)传回 <entity name: 60000062>(entget en)可找到像素的数据库用行F档案代码:如<巾©#12438>使用范围:开启(open)®案作读档(r)、写档(w)使用时,所产生的代码,如下:范例说明 :(setq ffr (open "test.txt" "r") 响应 <file:#24138>(setq ffw (open "abc.txt" "w") 响应 <fi
19、le:#34812>G.选择群集代码:<Selection set:1> <Selection set:1>使用范围:一个或数个像素所形成的选择集范例说明:(setq ss (ssget)选取对象:(可选择物体)选取对象:(可选择物体)选取对象:(按 ENTER 键 )<Selection set:1>规则 3 :表达式中的运算子,可以是另一表达式或子程序功能函数使用语法(strcat 字符串 1 字符串 2 字符串 3 ) 字符串结合功能函数(getstring 提示 ) 要求键入一个字符串(rtos 实数 ) 将实数转换成字符串范例说明 1: (s
20、trcat "abc" "123" "LISP")传回:"abc123LISP"范例说明 2: (strcat "abc" (getstring "Enter String:" ) (rtos 123.45)执行结果:Enter String:键入任一字符串,假设是键入*HELLO*响应 "abc*HELLO*123.45"本例中的strcat函数在语法中要求的运算子必须是字符串型态运算子 1 = "abc" 是正常的字符串运算子运算子
21、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:操作数再往前
22、提: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:撰写的环境,只要是一般的
23、文书编辑软件,可编辑ASCII 档案者都适用如:PE2 PE3 DW3、书中仙、汉书、EDIT、记事本.等规则 7:以 defun 功能函数定义新的指令或新的功能函式(注:自变量及区域变量可省略)程序结构型态: (defun 函式名称(自变量/区域变量): : 程序内容)规则8:新定义的功能函式名称,若为C:函式名,则此函式可为 AutoCAD新指令(注:自变量及区域变量可省略)程序结构型态:(defun C:KK(自变量/区域变量): :程序内容)则加载此 LISP 程序后 ,可在 指令 : 后直接键入新定义的 KK 指令规则9:加载AutoLISP程序的作法:指令:后直接键入(load &
24、quot;LISP主槽名”)注 :load 与字符串间的空格, 可有可无注:load与双引号间的空格,可有可无(load"LISP主槽名") 范例:在c:lsptools目录下有一 LISP程序tt.lsp,而您目前的工作目录在 c:dwg下若环境设定之支持档案搜寻路径有指定到c:lsptools目录,则欲使用加载tt.lspa指令:后键入 (load "tt") 即可若环境设定之支持档案搜寻路径无指定到c:lsptools目录,则键入(load"tt")后,会出现错误讯息如下:无法开启tt.lsp做输入错误:加载失败(LOAD &q
25、uot;tt")*取消*此时您可键入:指令 :(load "c:lsptoolstt") 或指令 :(load "c:"/lsptools/tt)不可键入 : (load "c:lsptoolstt")因为在 AutoLISP 结构语法中已经用于跳脱码控制了规则 10: AutoLISP 程序中 ,在分号;后的内容均为批注,程序不处理,适时的增加批注,将使程序更具可看性、学习性及完整性范例 : pp.lsp 内容如下 :;本程序功能可快速画门、窗;设计者:QQ博士;版权所有,欢迎使用(defun c:pp(); 以下为画门子
26、程序; 以下为画窗子程序,)规则 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 值设定成点
27、串行(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)指
28、令 :!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
29、 指令:!sa传回:nil (属区域变量) 指令:!sb传回:nil (属区域变量) 指令:!sc传回:nil (属区域变量) 指令:!sd传回:130 (属整体变量)返回I单元三:快速分类浏览AutoLISP功能函数(一)一布到以下那么多的 AutoLISP功能函数,洋洋洒洒17大类:1、您第一个念头,一定惊讶怎么会那么多,您可能快吓坏了 !2、您第二个念头,一定会想那么多,怎么记得下来,您可能快放弃了 !二项实,您应该要很兴奋而充满信心的,怎么说呢?1、您有那么多的大将协助您撰写 AutoLISP程序,当然左右又逢源,不但轻松,而且要快乐 的不得了 !2、这些函数只要先浏览有印象,要用时,
30、再翻查该函数,了解用途语法再加入到您的程序中就 可以了 !3、常用的函数,写久、用久后,自然会深深牢记脑海,想忘都很难,不常用白函数,若硬要您记下 来,相信连高手都很困难,更何况是初学的您!4、您不用再摸不着头绪了,因为您幸运的拥有了本书,就是您成功的开始!第一类 数学运算功能函数 项目函数语法 传 回1.1 (+ 数值数值.)累计实数或整数数值1.2 (- 数值数值.)减去数值1.3 (* 数值数值.)所有数值乘积1.4 (/ 数值数值.)第一个数值除以第二个以后数值的商1.5 (1+ 数值 ) 数值 +11.6 (1- 数值 ) 数值 -11.7 (abs 数值 ) 数值的绝对值1.8 (
31、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.14159261.19 (rem 数值 1 数值 2) 二数值的相除的余数1.20 (sin角
32、度)角度的正旋值,角度值为强度1.21 (sqrt 数值 ) 数值的平方根 第二类 检验 & 逻辑运算功能函数项目 函数语法 传 回2.1 (= 表示式 1 表示式 2) 比较表示式1 是否等于表示式2适用数值及字符串2.2 (/= 表示式 1 表示式 2) 比较表示式1 是否大于等于表示式22.3 ( 表示式1表示式2) 比较表示式1 是否小于表示式22.4 (= 表示式 1 表示式 2) 比较表示式1 是否=小于等于表示式 22.5 ( 表示式1表示式2) 比较表示式1 是否大于表示式22.6 (= 表示式 1 表示式 2) 比较表示式1 是否大于等于表示式22.7 ( 数值 )
33、传回:数值的位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
34、.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 串行 ) 串行中的第二个元
35、素通常用来求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关键元素串行)依关键元素(含)以后的
36、串行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
37、档案代码)经由键盘或档案中读取一行字符申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 (geta
38、ngle基点提示)请求输入十进制角度数值,响应一强度值提示及参考点可有可无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
39、位 字符串 ) 设定下次 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像素名称应
40、用程序用行)取出像素名称的资料用行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矩形表示).返回单
41、元四:快速分类浏览AutoLISP功能函数(二)第九类选择集、符号表处理功能函数项目函数语法传回9.1 (ssadd彳gt素名称选择集)将像素加入选择集或建立一新选择集9.2 (ssdel像素名称 选择集)将像素自选择集中移出9.3 (ssget模式点1点2)取得一个选择集9.4 (ssget "X" ±滤用行)取得依过滤申行所指定范围的选择集9.5 (sslenth选择集)计算选择集的像素个数9.6 (ssmemb素名称 选择集)响应像素名称是否包含于选择集内9.7 (ssnam蜒择集 索引值)依索引值取出选择集中的像素名称9.8 (tblnext符号表名称T)
42、检视符号表,有效的符号表:"LAYER"、"LTYPE"、"VIEW"、"STYLE"、 "BLOCK"9.9 (tblsearch符号表名称符号)在符号表中搜寻符号第十类AutoCAD相关查询、控制功能函数 项目函数语法传回10.1 (command "AutoCAD指令".)呼叫执行 AutoCAD 指令10.2 (findfile槽名)传回:应该文件名的路径及文件名10.3 (getfiled标题 内定档名 扩展名 旗号)透过标准AutoCAD档案对话DCL交谈框求得档
43、案10.4 (getenv环境变量”)取得该环境变量的设定值,以字符串表示10.5 (getvar系统变量")取得该系统变量的设定值,以字符串表示10.6 (setvar系统变量"值)设定该系统变量的值10.7 (regapp应用类项)将目前的AutoCAD图形登记为一个应用程序名称第十一类判断式、循环相关功能函数 项目函数语法传回11.1 (if 比较式表示式1 表示式2)检算比较式结果,如果为真,执行表示式1否则,执行 表示式211.2 (repeat整数表达式 表达式 .)重复执行 整数 次数11.3 (while标题 内定槽名 扩展名 旗号)透过标准AutoCAD档
44、案对话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表示式)传回:表示式的执行结果1
45、2.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)暂时清除模前的屏
46、幕画面13.3 (grdraw 起点终点 颜色 亮显 ) 暂时性的画出一条线13.4 (grread 追踪 ) 由输入设备读取追踪值13.5 (grtext 位置 字符串亮显 ) 将字符串显示在状态列或屏幕菜单上13.6 (grvecs 向量串行转置矩阵) 暂时性的画出多条线13.7 (menucmd字符串)提供在AutoLISP中呼叫各菜单13.8 (prin1 表示式档案代码 ) 将表示式打印于命令区或已开启的档案,句柄字符则以"" 为前缀展开13.9 (princ 表示式档案代码 ) 除句柄字符则不以 "" 为前缀展开外其余同 prin113.10
47、 (print 表示式档案代码) 除表示式会往下一新行列出 ,及一空格外其余同 prin113.11 (prompt 讯息 ) 将讯息显示于屏幕的命令区,并随后响应一个nil 讯息13.12 (redraw像素名称模式)重绘整张图或依像素名称重绘该图形13.13 (terpri)在屏幕上显示新列13.14 (textscr)作图环境切换到文字画面13.15 (textpageX青除文字画面文字类似 DOS的cls指令13.16 (vports)传回:窗口组态串行第十四类 符号、元素、表示式处理功能函数 项目函数语法 传 回14.1 (atom元素)如果元素不是用行,响应T,否则为nil14.2
48、 (atoms-family 格式符号串行) 传回:一组已定义函数的符号串行14.3 (boundp表示式)传回:T或nil,响应表示式是否有值存在14.4 (minusp元素)传回:T或nil,元素是否为负值14.5 (not元素)传回:T或nil,判定元素是否为 nil14.6 (null 元素 ) 传回: T 或 nil 判定元素是否被赋予 nil 值14.7 (numberp元素)传回:T或nil,元素是否为整数或实数14.8 (. 表示式') 响应表示式未检算前状态14.9 (quote表示式)响应表示式未检算前状态,同'功能14.10 (set 符号表示式 ) 将表
49、示式结果设定给带单引号' 符号14.11 (setq 符号1 表示式 1 符号2 表示式2.) 设定表示式结果给各符号14.12 (type 元素 ) 传回:元素的资料型态14.13 (zerop元素)传回:T或nil,元素是否为 0值第十五类ADS、 AutoLISP 加载与释放函数 项目函数语法 传 回15.1 (ads)传回:目前加载ADS程序串行15.2 (ver)传回:目前AutoLISP版本字符串15.3 (load LSP常名加载失败)加载AutoLISP档案(*lsp)15.4 (arxload 应用程序名称 错误响应) 加载一个 ARX 应用程序文件15.5 (arx
50、unload 应用程序名称 错误响应) 释放 ARX 应用程序文件15.6 (autoarxload2!1名称指令定义)加载一个关连式的ARX槽15.7 (autoload ADS定义的函数 &指令)加载一个关连式的 AutoLISP槽15.8 (autoxload文件名称 指令定义 )加载一个关连式的ADS槽15.9 (xload应用程序出错处理)加载ADS应用程序15.10 (xunload应用程序出错处理)释放ADS应用程序第十六类 内存空间管理函数项目函数语法 传 回16.1 (alloc 数值 ) 以节点数值设定区段大小16.2 (expand数值)以区段数值配置节点空间16
51、.3 (gc)强制收回废内存16.4 (mem)显示目前的内存使用状态16.5 (vmon)释放ADS应用程序16.6 (xdroom像素名称)传回像素延伸资料允用得内存空间16.7 (xdsize串行)传回像素延伸资料所占用的内存空间第十七类ARX定义的函数项目函数语法传回17.1 (acad_colordlg®色码 旗号)显示出标准AutoCAD颜色选择交谈框17.2 (acad_helpdl球助文件名 主题)显示出标准 AutoCAD求助交谈框返回单元五:轻松快速的掌握AutoLISP设计技巧一、AutoLISP程序设计的四个步骤:1 .第一步骤:产生写程序的动机、预期目标2
52、.第二步骤:构思程序流程、所需之 LISP功能函数、相关变量订定&提示讯息3 .第三步骤:利用文书软件(如记事本)撰写xxx.lsp程序4 .第四步骤:回到 AutoCAD下,加载AutoLISP程序以(load"LSP主槽名")或(load "LSP主槽名 ")5 .第五步骤:执行新的 AutoLISP指令二、透过简单范例全程演练AutoLISP:1 .第一步骤:动机、预期目标2 .第二步骤:构思程序相关变量订定定出程序名为 pbox.lsp构思程序流程、相关变量:变量名称可自行设定(如paww、hh、pb、pc、pd、mp1、mp2、mp3、
53、mp4),掌握三个原则:* 不可重复* 好记不会混淆* 适时的以分号;加上批注(defun c:pbox();以下pa、 ww、 hh 值须由使用者输入(setq pa请求输入左下角点)(setq ww (请求输入矩形宽度实数值)(setq hh 请求输入矩形高度实数值();以下pb、pc、pd值须由程序依据pa ww、hh求出(setq pb 依据相对极坐标法求出(pb 点坐标值)(setq pc依据相对极坐标法求出pc点坐标值)(setq pd 依据相对极坐标法求出(pd 点坐标值);以下依据pa、 pb、 pc、 pd 点画矩形(以pline指令画出矩形);以下mp1、 mp2、 mp3
54、、 mp4 值须由程序依据pa、 ww、 hh;& pb、 pc、 pd 值求出(setq mp1 求出(mp1点坐标值)(setq mp3 求出(mp3点坐标值)(setq mp2 求出(mp2点坐标值)(setq mp4 求出(mp4点坐标值);以下依据mp1、 mp2、 mp3、 mp4 点画出二条线(以 line 指令画出mp1 到 mp3 的线)(以 line 指令画出mp2 到 mp4 的线)本程序所需的AutoLISP功能函数及其用法(getpoint 基点 提示 ) <- 请求输入一个点坐标(getreal 提示 ) <- 请求输入一实数(polar基点强度
55、距离)<-依极坐标法取得另一坐标点其中强度值之转换为:十进制角度0度90 度180 度270 度N度骁度值01/2兀兀2/3兀兀 *N/180十进制转骁度公式0(/ pi 2) 或 (* pi 0.5)pi(* pi 1.5)(* pi (/ n 180)(command "AutoCAD 指令 " .) <-呼叫执行AutoCAD 指令注意:指令及其副选项皆要用双引号处理假设pa、 pb、 pc、 pd 皆为变量 ,其值为点坐标正确:(command"pline"pa pbpc pd "c")错误: (command p
56、line pa pb pc pd c)原因:指令 pline及其副选项c皆没用双引号括住错误:(command"pline"pa pbpc pd c)原因: 副选项 c (代表close) 没用双引号括住,会被误认为是AutoLISP 的变量名 ,但事实又没有c 这个变量错误 :(command "pline" "pa" "pb" "pc" "pd" "c")原因 :变量pa、 pb、 pc、 pd 不须用双引号括住注意 :副选项中,若使用"" ,连续二个双引号,代表按 ENTER 键若想画一条pa 到 pc 的 LINE & 一条 pb 到 pd 的 LINE正确:(command "line" pa pc "")(command "line" pb pd "")错误:(command "line" pa pc)(command "line" pb pd)其它相关接近的功能函数(getdist 基点 提示 )?请求输入一段距离(geti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园绿化草坪翻新合同
- 酒店装修工程协议
- 宗教建筑塔吊信号工录用协议
- 滑翔伞班组施工合同
- 展会现场保安招聘合同
- 房屋交易争议预防补充协议
- 商业街区广告位外墙体租赁合同
- 酒店改造粉墙施工合同
- 家政公司文职人员招聘协议
- 电商企业聘用合同范本
- 《2022年版新课程标准》初中地理课程标准理论测试题
- (162题)2024时事政治考试题库及答案
- 管理评审输入材料
- GB/T 43657.2-2024工业车辆能效试验方法第2部分:操作者控制的自行式车辆、牵引车和载运车
- VR游戏设计与制作智慧树知到期末考试答案2024年
- 坚持立足中国又面向世界讲解
- 市政道路技术标
- 2024年卫生系统招聘考试-卫生系统招聘考试(公共卫生管理)笔试历年真题荟萃含答案
- 病情突变应急预案护理课件
- 工业机器人大学生职业生涯规划
- 企业风险管理与人才培养的关系
评论
0/150
提交评论