1 / 38
文档名称:

AutoLISP从入门到精通初级教程(新手必备).pdf

格式:pdf   大小:2,406KB   页数:38页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

AutoLISP从入门到精通初级教程(新手必备).pdf

上传人:小屁孩 2023/4/12 文件大小:2.35 MB

下载得到文件列表

AutoLISP从入门到精通初级教程(新手必备).pdf

文档介绍

文档介绍:该【AutoLISP从入门到精通初级教程(新手必备) 】是由【小屁孩】上传分享,文档一共【38】页,该文档可以免费在线阅读,需要了解更多关于【AutoLISP从入门到精通初级教程(新手必备) 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:.
AutoLISP从入门到精通初级教程(新手必备)--第1页
AutoLISP从入门到精
通初级教程(新手必备)
-CAL-FENGHAI.-(YICAI)-CompanyOne1
AutoLISP从入门到精通初级教程(新手必备)--第1页:.
AutoLISP从入门到精通初级教程(新手必备)--第2页
AutoLISP入门
单元一:AutoLISP主角登场....................................................................错误!未定义书签。
单元二:AutoLISP的关键、基本结构及语法........................................错误!未定义书签。
单元三:快速分类浏览AutoLISP功能函数(一).....................................错误!未定义书签。
单元四:快速分类浏览AutoLISP功能函数(二).....................................错误!未定义书签。
单元五:轻松快速的掌握AutoLISP设计技巧.......................................错误!未定义书签。
单元六:图元数据的取得与活用技巧(一).............................................错误!未定义书签。
单元七:图元数据的取得与活用技巧(二).............................................错误!未定义书签。
单元八:新手上路-参数设计的关键技巧..............................................错误!未定义书签。
2
AutoLISP从入门到精通初级教程(新手必备)--第2页:.
AutoLISP从入门到精通初级教程(新手必备)--第3页
单元一:AutoLISP主角登场

1、AutoLISP是AutoCAD的最佳拍档!
2、AutoLISP内含于AutoCAD软件内,不用另外花钱买!
3、AutoLISP是强化AutoCAD最好、最直接的『程序语言』!
4、AutoLISP易学、易用,即使不会程序设计的AutoCAD使用者,都能在最短的时间内,
写出令人惊讶、赞叹的功能!
若说AutoLISP的出现,是替AutoCAD创造一片天的『最大功臣』,实不为过一点也不夸
张!
5、AutoLISP希望您去学****它、改善它、发挥它、!它的威力、魅力无穷!
:
学****AutoLISP是非常容易的,对初学者而言,即使没有学****过任何的程序语言,都能很
快的上手,写出精彩漂亮的AutoLISP程序!
语法简单:不用特殊的变量宣告,非常富有弹性,比起其它的程序语言,它的语法可说是
非常简单而有其独特的风格!
功能函数强大:除一般性的功能函数外,又拥有为数不少控制配合AutoCAD的特殊函
数,再加上AutoLISP可直接呼叫执行所有AutoCAD的指令,以及掌握运用所有的
AutoCAD系统变量,功能之强大令人欣喜不已!
撰写的环境不挑剔:只要是一般的文书编辑软件都适用!如:Windows的记事本、
PE2、PE3、DW3、书中仙、汉书、EDIT....等
直译式程序:不用再作编译,『即写即测、即测即用』,马上可以在AutoCAD中响应
效果,马上就有成就感!
横跨各作业平台:悠然自得,虽然AutoCAD有DOS、Windows版本之分但是AutoLISP
却可在不改写的原貌下,加载与执行!

1、欲强化AutoCAD原有指令时.
2、欲创造更有用的AutoCAD新指令.
3、欲简化繁琐的环境设定或绘图步骤时.
4、欲处理参数式绘图时.
5、欲做图面资料读文件、写文件.
6、欲做AutoCAD简报展示时.
7、欲达到真正灵活掌控AutoCAD时.
8、欲提升自己跨上AutoCAD高手列车时.

:
,表面上,这将近三天的时
间,他连一张图都没有画,甚至可能偶有发呆、沈思,若此程序一天可以替公司绘图部门
节省1小时绘图时间,那算一算,只要20天就抵销开发成本,而20天以后都是赚的,
『用的愈久,省的愈多』!
,在不影响正常工作,『鼓励』都来不及,那有『压抑』的道理,甚
至还要派遣优秀人员出去受训,学****更好的设计技巧与创意呢!
,SHOW您的权威与POWER,如此,不但对员工造成打
击,甚至您可能成为阻碍了公司计算机化进步的罪魁祸首
3
AutoLISP从入门到精通初级教程(新手必备)--第3页:.
AutoLISP从入门到精通初级教程(新手必备)--第4页
,若要撰写的程序很多,内部设计人员的程序功力距离太远,达成需求的时间反而
变得遥遥无期,那倒不如求助于市面上已有的相关AutoCAD支持软件。
:
,无形中,『AutoCAD高手的封号』也将功力又往前迈
出了一大步,对个人的成长帮助匪浅,幸运的话,搞不好还可以黄袍加身,不亦乐乎!!!
B.『半桶水、响叮当』,千万不要因为会写AutoLISP程序而自傲、孤僻、嚣张起来,功
力的增长,只是让您有更多『服务他人、服务公司』的机会,若自恃过重,宁可不要!
,是无远弗届的,千万不要『孤芳自赏』,『人外有人,天外
有天』,也许您觉得是『宝贝加三级』的程序,只是其它设计师基本程序中的一部份罢
了!
『最大功臣』,当然不会轻易被舍弃,如此,您的学****保
证不会白费!
E.『精益求精』、『虚心求教』、『用心学****观摩』、『决心成为高手』
:
,却可能有『大大满意』的时候!!!
、创造AutoCAD的『尚方宝剑』,让您在AutoCAD的设计运作中
『得心应手』,享受无比的快乐与成就感!!!

1、先由小程序着手,认识AutoLISP语法规定!
2、浏览所有的AutoLISP功能函数,重要的功能函数要熟记脑海,俗语说的好『一回生,
二回熟』,除非您不用心,否则没有学不好的道理!!!
3、要懂得偷懒:不要认为在绘图的过程中,繁琐的步骤是合理的,困难的绘图过程是必
须忍耐的,试着用AutoLISP解决看看!
4、多观摩别人的程序设计,吸取精华,像海棉一样=>『吸』、『吸』、『吸』!!!
5、动手『写』程序比用眼睛看程序,更能够领略深记脑海!
6、随时随地整理您的程序,并加以批注,以免因时间的飞逝,当时用心的成果也烟消云
散,忘的一乾二净!!!
7、『决心』是学好AutoLISP最重要的关键!
8、期许自己,要由操作者变成创造者!!!
4
AutoLISP从入门到精通初级教程(新手必备)--第4页:.
AutoLISP从入门到精通初级教程(新手必备)--第5页
单元二:AutoLISP的关键、基本结构及语法
一、学好AutoLISP的关键、基本结构与语法:




,『即写即测、即测即用』
,悠然自得(注:以上五点,读者可以参考上一章的剖析!!!)
:充份掌握『语法结构』&『功能函数』的搭配!!!

规则1:以括号组成表达式,、相对称左右括号数一定要成双成对
规则2:表达式型态:(操作数运算子运算子运算子)
操作数包括『功能函数』&『自定函式』
运算子(自变量)包括:
(Integer)如8,-17,500,9999.....
(Real)如,.....
(String)如"AutoCAD","123"
(List)如("a""b""c"),(xy)
<entityname:6000f262>
<file:#12438>.....
<Selectionset:1>
规则3:表达式中的『运算子』,可以是另一『表达式』或『子程序』
规则4:多重的括号表达式,运算的先后顺序是『由内而外、由左而右』
规则5:以档案型态存在的AutoLISP程序(ASCII档案),
规则6:撰写的环境,只要是一般的文书编辑软件、记事本,可编辑ASCII档案者都适

规则7:以defun功能函数定义新的指令或新的功能函式
规则8:新定义的功能函式名称,若为『C:函式名』,则此函式可为AutoCAD新指令
规则9:加载AutoLISP程序的作法:=>指令:后直接键入(load"LISP主档名")
规则10:AutoLISP程序中,在『分号;』后的内容均为批注,程序不处理,适时的增加批
注,将使程序更具可看性、学****性及完整性
规则11:AutoLISP最常用的变量型态是『整数』、『实数』、『字符串』、『点串
行』四种,变量的型态依据设定值而自动定义,变量会一直储存该值,直到被重新设定值
或绘图结束自动消失
规则12:以setq功能函数设定变量值(setq变量名称设定值)
规则13:欲在AutoCAD的环境中,查看一变量值,指令:下键入『!变量名』即可
规则14:以(defunC:函式名(自变量/变数)........)程序中,程序中的变量若在『/』右边
变量内,则称为『区域变量』,否则为『整体变量』
二、学好AutoLISP的关键:
5
AutoLISP从入门到精通初级教程(新手必备)--第5页:.
AutoLISP从入门到精通初级教程(新手必备)--第6页
充份掌握『语法结构』&『功能函数』的搭配!!!其时这个关键亦是学****其它程序语
言的关键.
*『语法结构』AutoLISP的语法结构规定的并不多,变量不用事先定义及宣告,读者可熟
记下一单元有关重要的AutoLISP基本语法结构,十四条设计上要求的『规则』
*『功能函数』AutoLISP之所以能功能如此强大,都有赖功能函数,其成员共约200个:
1、一般性函数170个
2、ADS定义特殊函数9个
3、配合DCL交谈框设计函数22个
各功能函数在使用上要求配合的运算子(自变量)型态,均有其规定,当然,您可不能乱给!
例如:
指令:(+123"ABC")
传回:error:badargumenttype(自变量型态错误)
因为『+』函数不接受字符串,而"abc"正是字符串
指令:(rtos"abc")
传回:error:badargumenttype(自变量型态错误)
因为『rtos』函数只接受实数转字符串
详细内容可参考下一章『快速浏览AutoLISP功能函数』至于各功能函数详细的语法
与实例应用,读者请参阅本书『第三篇AutoLISP功能函数详解』
三、重要的AutoLISP的基本语法结构:
规则1:以括号组成表达式,左右括号数一定要成双成对、相对称
请依序在『指令:』列(或指令:)后面直接键入以下表达式
指令:(+12345)传回加总和15
指令:(max35)传回最大值35
指令:(menucmd"p1=*")显示拉下POP1
指令:(getint"EnterReal:")传回EnterReal:要求输入一个实数
指令:(setqa(*4))传回相乘值50,同时设定给『变量a』
指令:!a回应50(注:!号可用来查询变数值)
指令:(min75a63)响应最小值50(因为变量值a代表50)
错误的范例:
指令:(setqa(*4)
1>传回1>表示少了一个括号
1>)此时,只要再补上一个)即可
指令:(setqa(*4
2>传回2>表示少了二个括号
2>))此时,只要再补上二个)即可
规则2:表达式型态(操作数运算子运算子运算子...)或(函数(式)自变量自变量自
变量...)
或(函数(式)元素元素元素...)
操作数包括『功能函数』&『自定函式』
功能函数:如上练****中的+、max、menucmd、getint、setq、*、min,详细内容可参
考下一章『快速浏览AutoLISP功能函数』&『第三篇AutoLISP功能函数详解』
自定函式:由设计者自行定义的新函式或子程序
运算子(又称自变量或元素)包括:
6
AutoLISP从入门到精通初级教程(新手必备)--第6页:.
AutoLISP从入门到精通初级教程(新手必备)--第7页
(Integer):如8,-17,500,9999…
正常范围:2的16次方,介于-32768与+32767之间
特殊范围:若以float函数将其转为实数,则范围2的32次方,介于-48与+47之间
(Real):如,…
正常范围:带有小数点的数,精度可达14位有效数字
(String):如"AutoCAD","123","EnterReal:","",…
正常范围:以双引号内夹『字符』为认定,字符数不受限制
(List):如("a""b""c"),(xy),(xyz),("a"8,....
正常范围:以左右括号内夹『元素』为认定,元素型态非常弹性
使用频率:在AutoLISP程序设计中应用非常高
范例说明:("a"8kk(12))
表示此串行内有五个元素"a"表示字符串a、8表示整数8、表示实数、kk表示变量
kk、(12)表示串行(12)
2D点坐标(xy)表示法=>以二实数形成串行
3D点坐标(xyz)表示法=>以三实数形成串行
:如<entityname:6000f262>...
使用范围:AutoCAD会自动赋予图元指向代码,透过此代码可找到图元的数据库记录
范例说明:(setqen(entlast))
传回<entityname:>
(entgeten)可找到图元的数据库串行
:如<file:#12438>…
使用范围:开启(open)档案作读档(r)、写档(w)使用时,所产生的代码,如下:
范例说明:
(setqffr(open"""r"))回应<file:#24138>
(setqffw(open"""w"))回应<file:#34812>
:如<Selectionset:1>、<Selectionset:1>…
使用范围:一个或数个图元所形成的选择集
范例说明:
(setqss(ssget))
选取对象:(可选择物体)
选取对象:(可选择物体)
选取对象:(按[ENTER]键)
回应<Selectionset:1>
规则3:表达式中的『运算子』,可以是另一『表达式』或『子程序』功能函数使用
语法:
(strcat字符串1字符串2字符串3....)字符串结合功能函数
(getstring提示)要求键入一个字符串
(rtos实数)将实数转换成字符串
范例说明1:(strcat"abc""123""LISP")传回:"abc123LISP"
范例说明2:(strcat"abc"(getstring"EnterString:")(rtos)
执行结果:EnterString:键入任一字符串,假设是键入*HELLO*
回应"abc*HELLO*"
7
AutoLISP从入门到精通初级教程(新手必备)--第7页:.
AutoLISP从入门到精通初级教程(新手必备)--第8页
本例中的strcat函数在语法中要求的『运算子』必须是『字符串』型态
『运算子1』="abc"是正常的字符串运算子
『运算子2』=表达式(getstring"EnterString:")传回结果是一字符串"*HELLO*"
『运算子3』=表达式(rtos传回结果是一字符串""
规则4:多重的括号表达式,运算的先后顺序是『由内而外、由左而右』
范例说明:请将+17-/7的结果,设定给变量kk,并转换成AutoLISP的表达式
解法技巧A:
1:运用『二分法、加括号』:+17)-/7)
2:操作数往前提:kk=(-+17)/7))
3:操作数再往前提:kk=(-(+17)(/7))
4:转换完成:(setqkk(-(+17)(/7)))
解法技巧B:
1:运用『二分法、加括号』:+(17-/7)))
2:操作数往前提:kk=(+(17-/7)))
3:操作数再往前提:kk=(+(-17(/7)))
4:转换完成:(setqkk(+(-17(/7))))
规则5:以档案型态存在的AutoLISP程序(ASCII档案),
规则6:撰写的环境,只要是一般的文书编辑软件,可编辑ASCII档案者都适用
如:PE2、PE3、DW3、书中仙、汉书、EDIT、记事本....等
规则7:以defun功能函数定义新的指令或新的功能函式(注:自变量及区域变量可省
略)
程序结构型态:(defun函式名称(自变量/区域变量)
::
::程序内容
::
)
规则8:新定义的功能函式名称,若为『C:函式名』,则此函式可为AutoCAD新指令
(注:自变量及区域变量可省略)
程序结构型态:(defunC:KK(自变量/区域变量)
::程序内容
::
::
)
则加载此LISP程序后,可在指令:后直接键入新定义的KK指令
规则9:加载AutoLISP程序的作法:指令:后直接键入(load"LISP主档名")
注:load与字符串间的空格,可有可无
注:load与双引号间的空格,可有可无(load"LISP主档名")
范例:在c:\lsptools目录下有一LISP程序,而您目前的工作目录在c:\dwg下
若『环境设定』之『支持档案搜寻路径』有指定到c:\lsptools目录,则欲使用加载à指
令:后键入(load"tt")即可
若『环境设定』之『支持档案搜寻路径』无指定到c:\lsptools目录,则键入(load"tt")
后,会出现错误讯息如下:
无法开启「」做输入错误:载入失败(LOAD"tt")*取消*
8
AutoLISP从入门到精通初级教程(新手必备)--第8页:.
AutoLISP从入门到精通初级教程(新手必备)--第9页
此时您可键入:
指令:(load"c:\lsptools\tt")或
指令:(load"c:"/lsptools/tt)
不可键入:(load"c:\lsptools\tt")
因为『\』在AutoLISP结构语法中已经用于『跳脱码控制』了
规则10:AutoLISP程序中,在『分号;』后的内容均为批注,程序不处理,适时的增加批
注,将使程序更具可看性、学****性及完整性
范例:内容如下:
;本程序功能可快速画门、窗
;设计者:QQ博士
;版权所有,欢迎使用
(defunc:pp()
::
;以下为画门子程序
::
;以下为画窗子程序,
::
::
)
规则11:AutoLISP最常用的变量型态是『整数』、『实数』、『字符串』、『点串
行』四种,变量的型态依据设定值而自动定义,变量会一直储存该值,直到被重新设定值
或绘图结束自动消失
规则12:以setq功能函数设定变量值(setq变量名称设定值)
范例:
(setqa100);变量a值设定成整数100
(setqb;变量b值设定成实数
(setqc"Goodmorning!!!");变量c值设定成字符串
(setqpt1(getpoint"EnterPOINT:"));变量pt1值设定成点串行
(setqpt2(listab))
;此时,a值是100,b值是变量pt2值设定成点串行(100
(setqpt3'(297210));变量pt3值设定成点串行(297210)
注意:直接设定成点串行时,不能省略单引号『'』否则会被误认(297210)又是一个表
达式,297是操作数而出错!
规则13:欲在AutoCAD的环境中,查看一变量值,指令:下键入『!变量名』即可
范例:
指令:(setqaa(+10075))传回:175
指令:!aa传回:175
指令:(setqpp(list9050))传回:(9050)
指令:!pp传回:(9050)
指令:!ww传回:nil空值无设定
规则14:以(defunC:函式名(自变量/变数)........)程序中,程序中的变量若在『/』右边
变量内,则称为『区域变量』,否则为『整体变量』(注:在AutoLISP中,未赋予值的变量,
其值皆响应nil)
『区域变量』于此程序执行完毕后,其值自动消失
9
AutoLISP从入门到精通初级教程(新手必备)--第9页:.
AutoLISP从入门到精通初级教程(新手必备)--第10页
『整体变量』于此程序执行完毕后,其值仍然存在
范例:内容如下
(defunc:tt(/sasbsc)
(setqsa100)
(setqsb20)
(setqsc10)
(setqsd(+sasbsc))
)
回到:指令:键入(load"tt")传回:c:tt
指令:tt传回:130
指令:!sa传回:nil(属区域变量)
指令:!sb传回:nil(属区域变量)
指令:!sc传回:nil(属区域变量)
指令:!sd传回:130(属整体变量)
10
AutoLISP从入门到精通初级教程(新手必备)--第10页:.
AutoLISP从入门到精通初级教程(新手必备)--第11页
单元三:快速分类浏览AutoLISP功能函数(一)
一、看到以下那么多的AutoLISP功能函数,洋洋洒洒17大类:
1、您第一个念头,一定惊讶怎么会那么多,您可能快吓坏了!
2、您第二个念头,一定会想『那么多,怎么记得下来』,您可能快放弃了!
二、其实,您应该要『很兴奋』而『充满信心』的,怎么说呢
1、您有那么多的『大将』协助您撰写AutoLISP程序,当然左右又逢源,不但轻松,而且
要快乐的不得了!!!
2、这些函数只要您先浏览有印象,要用时,再翻查该函数,了解用途语法再加入到您的
程序中就可以了!!!
11
AutoLISP从入门到精通初级教程(新手必备)--第11页:.
AutoLISP从入门到精通初级教程(新手必备)--第12页
3、常用的函数,写久、用久后,自然会深深牢记脑海,想忘都很难,不常用的函数,若硬
要您记下来,相信连高手都很困难,更何况是初学的您!!!
4、您不用再摸不着头绪了,因为您幸运的拥有了本书,就是您成功的开始!!!
第一类数学运算功能函数
项目
函数语法传回
(+数值数值...)累计实数或整数数值
(-数值数值...)减去数值
(*数值数值...)所有数值乘积
(/数值数值...)第一个数值除以第二个以后数值的商
(1+数值)数值+1
(1-数值)数值-1
(abs数值)数值的绝对值
(atan数值)反正切值
(cos角度)角度的余弦值,角度值为弧度。
(exp数值)数值的指数
(expt基数指数)基数的指数值
(fix数值)将数值转换为整数值(取整)
(float数值)将数值转换为实数值
(gcd数值1数值2)二数值的最大公因子(greatestcommondivisor)
(log数值)数值的自然对数值(相当于ln,e=……)
(max数值数值...)数值中的最大值
(min数值数值...)数值中的最小值
pi常数p,其值约为
(rem数值1数值2)二数值的相除的余数(remainder)
(sin角度)角度的正旋值,角度值为弪度
(sqrt数值)数值的平方根
第二类检验&逻辑运算功能函数
项目函数语法传回
(=表示式1表示式2)比较表示式1是否等于表示式2适用数值及字符串
(/=表示式1表示式2)比较表示式1是否不等于表示式2
(<表示式1表示式2)比较表示式1是否<小于表示式2
(<=表示式1表示式2)比较表示式1是否<=小于等于表示式2
(>表示式1表示式2)比较表示式1是否>大于表示式2
(>=表示式1表示式2)比较表示式1是否大于等于表示式2
(~数值)传回:数值的位not值,(1的补码)
(and表示式1表示式2…)逻辑and的结果
(boole函数整数整数…)位式布尔运算
(eq表示式1表示式2)比较表示式1与表示式2是否相同,适用串行比较(实际相同)
(equal表示式1表示式2[差量])比较表示式1与表示式2是否相同,差量可省略(内
容相同)
第三类转换运算功能函数
项目函数语法传回
(angtof字符串[模式])角度值(单位为度)的字符串转成实数
12
AutoLISP从入门到精通初级教程(新手必备)--第12页:.
AutoLISP从入门到精通初级教程(新手必备)--第13页
(angtos角度[模式[精度]])角度(单位为弧度)转成的字符串值
(atof字符串)字符串转成实数值
(atoi字符串)字符串转成整数值
(cvunit数值原始单位转换单位)数值转换单位后的值转换根据档案
(distof字符串[模式])依模式将字符串转成实数值
(itoa整数)整数转成字符串
(rtos数值模式[精度])实数转成字符串
(trans点原位置新位置[位移])转换坐标系统值
第四类串行处理功能函数
项目函数语法传回
(append串行串行...)结合所有串行成一个串行
(assoc关键元素联合串行)依关键元素找寻联合串行中关系数据
(car串行)串行中的第一个元素通常用来求x坐标
(cadr串行)串行中的第二个元素通常用来求y坐标
(caddr串行)串行中的第三个元素通常用来求z坐标
(cdr串行)除去第一个元素后的串行
(cons新元素串行)将新元素结合到串行
(foreach名称串行表示式)将串行的每一元素对应至名称再依表示式执行响应
(length串行)串行内的元素数量
(list元素元素…)将所有元素结合成一串行
(listp元素)判断元素是否为一串
(mapcar函数串行1串行2..