AutoLISP基础入门案例,很受用.docx
《AutoLISP基础入门案例,很受用.docx》由会员分享,可在线阅读,更多相关《AutoLISP基础入门案例,很受用.docx(34页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、1单单元一:元一:AutoLISP主角潇洒登场主角潇洒登场一一.AutoLISP 是何方神圣是何方神圣?1.AutoLISP 是 AutoCAD 的最佳拍檔!2.AutoLISP 内含于 AutoCAD 软件内,不用另外花钱买!3.AutoLISP 是强化 AutoCAD 最好、最直接的程序语言!4.AutoLISP 易学、易用,即使不会程序设计的 AutoCAD 使用者,都能在最短的时间内,写出令人惊讶、赞叹的功能!5.若说 AutoLISP 的出现,是替 AutoCAD 创造一片天的最大功臣,实不为过一点也不夸张!6.AutoLISP 希望您去学习它、改善它、发挥它、享受它.真的!它的威力
2、、魅力无穷!二二.AutoLISP 程序语言的特质分析程序语言的特质分析:学习 AutoLISP 是非常容易的,对初学者而言,即使没有学习过任何的程序语言,都能很快的上手,写出精彩漂亮的 AutoLISP 程序!语法简单语法简单不用特殊的变量宣告,非常富有弹性,比起其它的程序语言,它的语法可说是非常简单而有其独特的风格!功能函数功能函数强大强大除一般性的功能函数外,又拥有为数不少控制配合 AutoCAD 的特殊函数,再加上 AutoLISP 可直接呼叫执行所有 AutoCAD 的指令,以及掌握运用所有的 AutoCAD 系统变量,功能之强大令人欣喜不已!撰写的环撰写的环境不挑剔境不挑剔只要是一
3、般的文书编辑软件都适用!如:Windows 的记事本、PE2、PE3、DW3、书中仙、汉书、EDIT.等直译式程直译式程序序不用再作编译,即写即测、即测即用,马上可以在 AutoCAD 中响应效果,马上就有成就感!横跨各作横跨各作业平台业平台悠然自得,虽然 AutoCAD 有 DOS、Windows 版本之分但是 AutoLISP却可在不改写的原貌下,加载与执行!三三.撰写撰写 AutoLISP 的动机的动机?1.欲强化 AutoCAD 原有指令时.2.欲创造更有用的 AutoCAD 新指令.3.欲简化繁琐的环境设定或绘图步骤时.4.欲处理参数式绘图时.25.欲做图面资料读文件、写文件.6.欲
4、做 AutoCAD 简报展示时.7.欲达到真正灵活掌控 AutoCAD 时.8.欲提升自己跨上 AutoCAD 高手列车时.四四.AutoLISP 的效益评估的效益评估?1.对公司负责人或设计主管而言对公司负责人或设计主管而言:A.也许某员工或干部花了 20 个小时撰写一个 AutoLISP 程序,表面上,这将近三天的时间,他连一张图都没有画,甚至可能偶有发呆、沈思,若此程序一天可以替公司绘图部门节省 1 小时绘图时间,那算一算,只要 20 天就抵销开发成本,而 20 天以后都是赚的,用的愈久,省的愈多!B.若员工皆有此动力,在不影响正常工作,鼓励都来不及,那有压抑的道理,甚至还要派遣优秀人员
5、出去受训,学习更好的设计技巧与创意呢?!C.千万不要因为您的不懂或压抑,SHOW 您的权威与 POWER,如此,不但对员工造成打击,甚至您可能成为阻碍了公司计算机化进步的罪魁祸首D.当然,若要撰写的程序很多,内部设计人员的程序功力距离太远,达成需求的时间反而变得遥遥无期,那倒不如求助于市面上已有的相关 AutoCAD 支持软件。2.对设计人员而言对设计人员而言:A.得到一笔提升绩效奖金呢?当然,无形中,AutoCAD 高手的封号 也将功力又往前迈出了一大步,对个人的成长帮助匪浅,幸运的话,搞不好还可以黄袍加身,不亦乐乎!B.半桶水、响叮当,千万不要因为会写 AutoLISP 程序而自傲、孤僻、
6、嚣张起来,功力的增长,只是让您有更多服务他人、服务公司的机会,若自恃过重,宁可不要!C.AutoLISP 程序功力的累进,是无远弗届的,千万不要孤芳自赏,人外有人,天外有天,也许您觉得是宝贝加三级的程序,只是其它设计师基本程序中的一部份罢了!D.既然 AutoLISP 是 AutoCAD 的最大功臣,当然不会轻易被舍弃,如此,您的学习,保证不会白费!E.精益求精、虚心求教、用心学习、观摩、决心成为高手33.对程序本身而言对程序本身而言:A.少少的几行,却可能有大大满意的时候!B.充份掌握了控制、创造 AutoCAD 的尚方宝剑,让您在 AutoCAD 的设计运作中得心应手,享受无比的快乐与成就
7、感!五五.如何有效的学习如何有效的学习 AutoLISP?1.先由小程序着手,认识 AutoLISP 语法规定!2.浏览所有的 AutoLISP 功能函数,重要的功能函数要熟记脑海,俗语说的好一回生,二回熟,除非您不用心,否则没有学不好的道理!3.要懂得偷懒:不要认为在绘图的过程中,繁琐的步骤是合理的,困难的绘图过程是必须忍耐的,试着用 AutoLISP 解决看看!4.多观摩别人的程序设计,吸取精华,像海棉一样=吸、吸、吸!5.动手写程序比用眼睛看程序,更能够领略深记脑海!6.随时随地整理您的程序,并加以批注,以免因时间的飞逝,当时用心的成果也烟消云散,忘的一乾二净!7.决心是学好 AutoL
8、ISP 最重要的关键!8.期许自己,要由操作者变成创造者!4单单元二:元二:AutoLISP 的关键、基本结构及语法的关键、基本结构及语法一、学好一、学好 AutoLISP 的关键、的关键、基本结构与语法:基本结构与语法:1.AutoLISP 程序语言的特质A.语法简单B.功能函数强大C.撰写的环境不挑剃D.直译式程序,即写即测、即测即用E.横跨 AutoCAD 各作业平台,悠然自得(注:以上五点,读者可以参考上一章的剖析!)2.学好 AutoLISP 的关键:充份掌握语法结构&功能函数的搭配!3.重要的 AutoLISP 的基本语法结构规则 1:以括号组成表达式,、相对称左右括号数一定要成双
9、成对规则 2:表达式型态:(操作数 运算子 运算子 运算子)1.1 操作数包括功能函数&自定函式1.2 运算子(自变量)包括:A.整数(Integer)如 8,-17,500,9999.B.实数(Real)如 8.5,-17.456.C.字符串(String)如 AutoCAD,123D.串行(List)如(a b c),(x y)E.像素名称代码 如 F.档案代码 如.G.选择群集代码 如 5规则 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 的语法结构规定的并不多,变量不用事先定义及宣告,读者可熟记下一单元有关重要的 AutoLISP 基本语法结构,十四条设计上要求的规则功能函数
12、AutoLISP 之所以能功能如此强大,都有赖功能函数,其成员共约 200 个:61.一般性函数 170 个2.ADS 定义特殊函数 9 个3.配合 DCL 交谈框设计函数 22 个各功能函数在使用上要求配合的运算子(自变量)型态,均有其规定,当然,您可不能乱给!例如:指令:(+1 2 3 ABC)传回:error:bad argument type(自变量型态错误)因为+函数不接受字符串,而 abc 正是字符串指令:(rtos abc)传回:error:bad argument type(自变量型态错误)因为rtos函数只接受实数转字符串详细内容可参考下一章快速浏览 AutoLISP 功能函
13、数至于各功能函数详细的语法与实例应用,读者请参阅本书第三篇 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
14、 回应 50(注:!号可用来查询变数值)7指令:(min 75 a 63)响应最小值 50(因为变量值 a 代表 50)错误的范例:指令:(setq a(*12.5 4)1 传回 1表示少了一个括号1)此时,只要再补上一个)即可指令:(setq a(*12.5 42 传回 2表示少了二个括号2)此时,只要再补上二个)即可规则 2:表达式型态(操作数 运算子 运算子 运算子.)或(函数(式)自变量自变量 自变量.)或(函数(式)元素 元素 元素.)1.1 操作数包括功能函数&自定函式功能函数:如上练习中的+、max、menucmd、getint、setq、*、min,详细内容可参考下一章快速浏览
15、 AutoLISP 功能函数&第三篇 AutoLISP 功能函数详解自定函式:由设计者自行定义的新函式或子程序1.2 运算子(又称自变量或元素)包括:A.整数(Integer):如 8,-17,500,9999正常范围:2 的 16 次方,介于-32768 与+32767 之间特殊范围:若以 float 函数将其转为实数,则范围 2 的 32 次方,介于-2147483648 与+2147483647 之间B.实数(Real):如 8.5,-17.456正常范围:带有小数点的数,精度可达 14 位有效数字C.字符串(String):如 AutoCAD,123,Enter Real:,7.5,8
16、正常范围:以双引号内夹字符为认定,字符数不受限制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.像素名称代码:如 .使用范围:AutoCAD 会自动赋予像素指向代码,透过此代码
17、可找到像素的数据库记录范例说明:(setq en(entlast)传回(entget en)可找到像素的数据库串行F.档案代码:如使用范围:开启(open)档案作读档(r)、写档(w)使用时,所产生的代码,如下:范例说明:(setq ffr(open test.txt r)回应(setq ffw(open abc.txt w)回应 G.选择群集代码:如、9使用范围:一个或数个像素所形成的选择集范例说明:(setq ss(ssget)选取对象:(可选择物体)选取对象:(可选择物体)选取对象:(按 ENTER 键)回应 规则 3:表达式中的运算子,可以是另一表达式或子程序功能函数使用语法:(str
18、cat 字符串 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 E
19、nter String:)传回结果是一字符串*HELLO*运算子 3=表达式(rtos 123.45)传回结果是一字符串 123.45规则 4:多重的括号表达式,运算的先后顺序是由内而外、由左而右范例说明:请将 10.25+17-13.2/7 的结果,设定给变量 kk,并转换成 AutoLISP的表达式解法技巧 A:101:运用二分法、加括号:(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)解法技巧
20、 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 功能函数定义新的指令或新的功能函式(注:自变量及区域变量可省略)程序结构
21、型态:(defun 函式名称(自变量/区域变量):程序内容:)规则 8:新定义的功能函式名称,若为C:函式名,则此函式可为 AutoCAD 新指令(注:自变量及区域变量可省略)程序结构型态:(defun C:KK(自变量/区域变量)11:程序内容:)则加载此 LISP 程序后,可在 指令:后直接键入新定义的 KK 指令规则 9:加载 AutoLISP 程序的作法:指令:后直接键入(load LISP 主檔名)注:load 与字符串间的空格,可有可无注:load 与双引号间的空格,可有可无(loadLISP 主檔名)范例:在 c:lsptools 目录下有一 LISP 程序 tt.lsp,而您目
22、前的工作目录在 c:dwg下若环境设定之支持档案搜寻路径有指定到c:lsptools目录,则欲使用加载tt.lsp 指令:后键入(load tt)即可若环境设定之支持档案搜寻路径无指定到 c:lsptools 目录,则键入(loadtt)后,会出现错误讯息如下:无法开启tt.lsp做输入错误:载入失败(LOAD tt)*取消*此时您可键入:指令:(load c:lsptoolstt)或指令:(load c:/lsptools/tt)不可键入:(load c:lsptoolstt)因为在 AutoLISP 结构语法中已经用于跳脱码控制了规则 10:AutoLISP 程序中,在分号;后的内容均为批
23、注,程序不处理,适时的增加批注,将使程序更具可看性、学习性及完整性12规则 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 值设定成
24、点串行(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
25、50)指令:!ww 传回:nil 空值无设定规则 14:以(defun C:函式名(自变量/变数).)程序中,程序中的变量若在/右边变量内,则称为区域变量,否则为整体变量(注:在 AutoLISP 中,未赋予值的变量,其值皆响应 nil)13区域变量于此程序执行完毕后,其值自动消失整体变量于此程序执行完毕后,其值仍然存在范例:test.lsp 内容如下(defun c:tt(/sa sb sc)(setq sa 100)(setq sb 20)(setq sc 10)(setq sd(+sa sb sc)回到:指令:键入(loadtt)传回:c:tt指令:tt 传回:130指令:!sa 传回:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AutoLISP 基础 入门 案例 受用
限制150内