AutoLISP培训教程Word下载.docx

上传人:b****5 文档编号:20758935 上传时间:2023-01-25 格式:DOCX 页数:43 大小:49.98KB
下载 相关 举报
AutoLISP培训教程Word下载.docx_第1页
第1页 / 共43页
AutoLISP培训教程Word下载.docx_第2页
第2页 / 共43页
AutoLISP培训教程Word下载.docx_第3页
第3页 / 共43页
AutoLISP培训教程Word下载.docx_第4页
第4页 / 共43页
AutoLISP培训教程Word下载.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

AutoLISP培训教程Word下载.docx

《AutoLISP培训教程Word下载.docx》由会员分享,可在线阅读,更多相关《AutoLISP培训教程Word下载.docx(43页珍藏版)》请在冰豆网上搜索。

AutoLISP培训教程Word下载.docx

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"

),(xy)

E.像素名称代码如<

entityname:

6000f262>

F.档案代码如<

file:

#12438>

.....

G.选择群集代码如<

Selectionset:

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:

以(defunC:

函式名(自变量/变量)........)程序中,程序中的变量若在『/』右边变量内,则称为『区域变量』,否则为『整体变量』

二、学好AutoLISP的关键:

其时这个关键亦是学习其它程序语言的关键.

*『语法结构』AutoLISP的语法结构规定的并不多,变量不用事先定义及宣告,读者可熟记下一单元有关重要的AutoLISP基本语法结构,十四条设计上要求的『规则』

*『功能函数』AutoLISP之所以能功能如此强大,都有赖功能函数,其成员共约200个:

1、一般性函数170个

2、ADS定义特殊函数9个

3、配合DCL交谈框设计函数22个

各功能函数在使用上要求配合的运算子(自变量)型态,均有其规定,当然,您可不能乱给!

例如:

指令:

(+123"

ABC"

传回:

error:

badargumenttype(自变量型态错误)

因为『+』函数不接受字符串,而"

abc"

正是字符串

(rtos"

因为『rtos』函数只接受实数转字符串

详细内容可参考下一章『快速浏览AutoLISP功能函数』至于各功能函数详细的语法与实例应用,读者请参阅本书『第三篇AutoLISP功能函数详解』

三、重要的AutoLISP的基本语法结构:

以括号组成表达式,左右括号数一定要成双成对、相对称

请依序在『指令:

』列(或指令:

)后面直接键入以下表达式

(+12345)传回加总和15

(max14.58.935)传回最大值35

(menucmd"

p1=*"

)显示拉下POP1

(getint"

EnterReal:

"

)传回EnterReal:

要求输入一个实数

(setqa(*12.54))传回相乘值50,同时设定给『变量a』

a响应50(注:

号可用来查询变量值)

(min75a63)响应最小值50(因为变量值a代表50)

错误的范例:

(setqa(*12.54)

传回1>

表示少了一个括号

)此时,只要再补上一个)即可

(setqa(*12.54

2>

传回2>

表示少了二个括号

))此时,只要再补上二个)即可

 

表达式型态(操作数运算子运算子运算子...)或(函数(式)自变量自变量自变量...)

或(函数(式)元素元素元素...)

功能函数:

如上练习中的+、max、menucmd、getint、setq、*、min,详细内容可参考下一章『快速浏览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):

如"

7.5"

以双引号内夹『字符』为认定,字符数不受限制

D.串行(List):

如("

),(xy),(xyz),("

83.5),....

以左右括号内夹『元素』为认定,元素型态非常弹性

使用频率:

在AutoLISP程序设计中应用非常高

范例说明:

("

83.5kk(12))

表示此串行内有五个元素"

表示字符串a、8表示整数8、3.5表示实数3.5、kk表示变量kk、(12)表示串行(12)

2D点坐标(xy)表示法=>

以二实数形成串行

3D点坐标(xyz)表示法=>

以三实数形成串行

E.像素名称代码:

如<

...

使用范围:

AutoCAD会自动赋予像素指向代码,透过此代码可找到像素的数据库记录

范例说明:

(setqen(entlast))

传回<

60000062>

(entgeten)可找到像素的数据库串行

F.档案代码:

如<

开启(open)档案作读档(r)、写档(w)使用时,所产生的代码,如下:

(setqffr(open"

test.txt"

r"

))响应<

#24138>

(setqffw(open"

abc.txt"

w"

#34812>

G.选择群集代码:

、<

一个或数个像素所形成的选择集

(setqss(ssget))

选取对象:

(可选择物体)

(按[ENTER]键)

响应<

规则3:

表达式中的『运算子』,可以是另一『表达式』或『子程序』功能函数使用语法:

(strcat字符串1字符串2字符串3....)字符串结合功能函数

(getstring提示)要求键入一个字符串

(rtos实数)将实数转换成字符串

范例说明1:

(strcat"

LISP"

)传回:

abc123LISP"

范例说明2:

(getstring"

EnterString:

)(rtos123.45))

执行结果:

EnterString:

键入任一字符串,假设是键入*HELLO*

响应"

abc*HELLO*123.45"

本例中的strcat函数在语法中要求的『运算子』必须是『字符串』型态

『运算子1』="

是正常的字符串运算子

『运算子2』=表达式(getstring"

)传回结果是一字符串"

*HELLO*"

『运算子3』=表达式(rtos123.45)传回结果是一字符串"

123.45"

多重的括号表达式,运算的先后顺序是『由内而外、由左而右』

请将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.2517)(/13.27))

4:

转换完成:

(setqkk(-(+10.2517)(/13.27)))

解法技巧B:

(10.25+(17-(13.2/7)))

kk=(+10.25(17-(13.2/7)))

kk=(+10.25(-17(/13.27)))

(setqkk(+10.25(-17(/13.27))))

以档案型态存在的AutoLISP程序(ASCII档案),其扩展名必须是.LSP

撰写的环境,只要是一般的文书编辑软件,可编辑ASCII档案者都适用

如:

PE2、PE3、DW3、书中仙、汉书、EDIT、记事本....等

以defun功能函数定义新的指令或新的功能函式(注:

自变量及区域变量可省略)

程序结构型态:

(defun函式名称(自变量/区域变量)

:

:

程序内容

新定义的功能函式名称,若为『C:

函式名』,则此函式可为AutoCAD新指令

(注:

(defunC:

KK(自变量/区域变量)

程序内容

则加载此LISP程序后,可在指令:

后直接键入新定义的KK指令

加载AutoLISP程序的作法:

注:

load与字符串间的空格,可有可无

load与双引号间的空格,可有可无(load"

范例:

在c:

\lsptools目录下有一LISP程序tt.lsp,而您目前的工作目录在c:

\dwg下

若『环境设定』之『支持档案搜寻路径』有指定到c:

\lsptools目录,则欲使用加载tt.lspà

后键入(load"

tt"

)即可

若『环境设定』之『支持档案搜寻路径』无指定到c:

\lsptools目录,则键入(load"

)后,会出现错误讯息如下:

无法开启「tt.lsp」做输入错误:

加载失败(LOAD"

)*取消*

此时您可键入:

(load"

c:

\\lsptools\\tt"

)或

/lsptools/tt)

不可键入:

(load"

\lsptools\tt"

因为『\』在AutoLISP结构语法中已经用于『跳脱码控制』了

AutoLISP程序中,在『分号;

pp.lsp内容如下:

;

本程序功能可快速画门、窗

设计者:

QQ博士

版权所有,欢迎使用

(defunc:

pp()

以下为画门子程序

以下为画窗子程序,

AutoLISP最常用的变量型态是『整数』、『实数』、『字符串』、『点串行』四种,变量的型态依据设定值而自动定义,变量会一直储存该值,直到被重新设定值或绘图结束自动消失

(setqa100);

变量a值设定成整数100

(setqb123.56);

变量b值设定成实数123.56

(setqc"

Goodmorning!

);

变量c值设定成字符串

(setqpt1(getpoint"

EnterPOINT:

));

变量pt1值设定成点串行

(setqpt2(listab))

此时,a值是100,b值是123.56变量pt2值设定成点串行(100123.56)

(setqpt3'

(297210));

变量pt3值设定成点串行(297210)

注意:

直接设定成点串行时,不能省略单引号『'

』否则会被误认(297210)又是一个表达式,297是操作数而出错!

(setqaa(+10075))传回:

175

aa传回:

(setqpp(list9050))传回:

(9050)

pp传回:

(9050)

ww传回:

nil空值无设定

函式名(自变量/变量)........)程序中,程序中的变量若在『/』右边变量内,则称为『区域变量』,否则为『整体变量』(注:

在AutoLISP中,未赋予值的变量,其值皆响应nil)

『区域变量』于此程序执行完毕后,其值自动消失

『整体变量』于此程序执行完毕后,其值仍然存在

test.lsp内容如下

tt(/sasbsc)

(setqsa100)

(setqsb20)

(setqsc10)

(setqsd(+sasbsc))

回到:

键入(load"

tt

tt传回:

130

sa传回:

nil(属区域变量)

sb传回:

sc传回:

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.18pi常数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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1