欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第二讲AutoLISP语言基础课件.ppt

    • 资源ID:1855336       资源大小:790KB        全文页数:70页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第二讲AutoLISP语言基础课件.ppt

    AutoLISP语言基础,第 2 讲,2.1 AutoLISP程序语言,LISP语言: (list processing language)是人工智能学科领域中广泛采用的一种程序设计语言,是一种计算机的表处理语言。AutoLISP语言:是一种嵌入在AutoCAD内部的LISP编程语言,是LISP语言和AutoCAD有机结合的产物。本节主要介绍AutoLISP的数据类型、程序结构、内部函数以及AutoLISP的编程方法。,2.2 AutoLISP数据类型,整数 -21474836472147483648实型数 2.45, -0.38, -4.56E8符号原子 x, y1, ax2, abc, 除(). ,“ ;5个字符以外的任何可打印字符。 Setq是一个赋值函数,如( Setq X 25 )查看某个符号的当前约束值(将一个值赋给符号)方法:Command:!X 注意:程序中定义的符号或变量名称不能与系统定义的函数和符号名相同,否则后面的定义将取代已有的定义,从而引起混乱。,2.2数据类型,字符串 “fx” “AutoCAD” “2.36” 是由双引号括起来的字符序列组成的,字母的大小写和空格字符都是有意义的。表 (COS phai) (2 5 8) AutoLISP中广泛使用,表提供了在一个符号中存储大量相关数值的有效方法。 如:(setq a 10) (setq a( + b ( d 2) 表有标准表和引用表2种基本类型。标准表括号中首元素必须是合法的已存在的AutoLISP的函数;引用表是在左括号前加一撇号,如 (x y),表示对此表不做求值处理,而是供其它函数引用。,2.2数据类型,文件描述符 (setq f (open “d:myfile.dat” “r”) 其返回值就是AutoLISP赋予被打开文件的标识号。实体名 (setq e1 (entlast) 其返回值就是赋予图形实体的标识号。选择集 (setq s1 (ssget “x” (0 . “circle”)其返回值就是由当前图形数据库中所有圆构成的集合。,2.2数据类型,2.3 AutoLISP程序结构,前缀表示法 将运算符号放在操作数之前,如X=(A+B)*C,若用AutoLISP表示则为: (setq X (* (+ A B) C)程序结构组成 一个完整的AutoLISP程序是由一系列按顺序排列的表达式组成的,最里面的表先被求值。程序注释 以一个分号“;”开始,并在一行的末尾结束。,2.3程序结构,在程序中使用内部函数的规则:,1)内部函数必须放在表中第一个元素的位置,且所有括号都必须左右配对;2)函数与参数之间至少用一个空格来分开,多个空格和一个空格作用相同;3)一个表可分成多行书写,一行也可以书写多个表;4)字符不分大小写,分号后的字符为注释。,2.3程序结构,函数的定义: (defun () )说明: 1). Defun是AutoLISP的一个特殊函数,由它定义的函数是构成程序的主体,在程序中定义的函数可以用函数名来调用;,2.3程序结构,2). 必须为符号原子,在程序调入内存产生了一个 函数定义之后,将被放到原子表ATOMLIST中。3). 有如下几种格式:( / )( )(/ )() ;即不带任何参数的空表。(注:形参在函数调用时必须用实参取代,“/”前后须有空格。)4). 是任意的表达式,它们可以是所定义函数的的调用,以形成函数的递归定义。这些表达式是函数的定义体,它们在函数调用时将依次求值,用于完成所需的功能。,2.3程序结构,AutoLISP程序结构实例:,;*;* 这个程序计算 a 和 b 平方和的平方根 *;* 用法:交互输入两个实型数 a ,b的值 *;* 该程序计算并输出结果在屏幕上。 *;*(defun sqtab (/ a b) ;定义函数(setq a (getreal “n a=:”) ;等待输入a的值(setq b (getreal “n b=:”) ;等待输入b的值(setq c (sqrt (+ (* a a) (* b b) ;计算平方根(print “c=“) (princ c)(princ) );end,2.3程序结构,2.4 AutoLISP基本函数(六类)(一)数学运算函数(17种)+、-、*、/、1-、1+、abs、sin、cos、atan、sqrt、min、max、expt、log、gcd、rem1) (+ 数数 )功能 : 求表中所有整数或实数的和。例如 :Command:(+ 1.2 3.1 3.8) 返回:8.12)(- 数数 )功能 :求表中第1个数减去后面所有数的差 ,例如 :Command:(- 8.1 5) 返回:3.1,2.4基本函数,3)( *数数 )功能 : 求表中所有数的积 , 例如 :Command:( * 2 5) 返回:10 4)(/ 数数 )功能 : 求表中第1个数除以后面所有数的商。例如 :cmnmand:(/ 10 5 2.0) 返回值:1.0注意:(/ 10 5 5) 返回值:05)(1+ 数 )功能 : 求一个整数或实数加 1 的和。例如 :Command:(1+ 2.7) 返回值:3.76)(1- 数 )功能 : 求一个整数或实数减 1 的差。例如 :Command:(1- 2.7) 返回值:1.7,2.4 基本函数,7)(abs 数 )功能 : 求一个整数或实数的绝对值。例如 :Command:(abs -3.14) 返回:3.148)(sin 弧度 )功能 : 求一个以弧度为参数的正弦值。例如 :Command:(sin (* 0.5 pi)) 返回:1.09)(cos 弧度 )功能 : 求一个以弧度为参数的余弦值。例如 : Command:(cos (* 0.0174533 30) 返回:0.866,2.4 基本函数,10)(atan 数 1 数 2 )功能 : 求数 1/ 数 2 或数 1 的反正切值。例如 : Commad:(atan 0.707 0.707) 返回: 0.7854注意:返回的为弧度值。Command:(atan 1.0) 返回: 0.785411)( sqrt 数 )功能 : 求一个整数或实数的平方根。例如 : Command: (sqrt 256) 返回:16.012)(min 数 1 数 2 )功能 : 求表中所有整数或实数的最小值。例如 : Command:(min 1.44 -2.1 -3.6) 返回:-3.6 13)(max数 1 数 2 )功能 : 求表中所有整数或实数的最大值。例如 : Command:(max -2.5 2.1 7.2 3.4 5.8) 返回:7.2,2.4 基本函数,14)(expt 底数幂 )功能 : 求底数的幂次方。例如 : Command:(expt 2.0 3) 返回:8.015) (log 数 )功能 : 求一个数的自然对数。例如 : Command:(log 2) 返回:0.693147 16) (gcd 数 1 数 2 )功能 : 求数 1 和数 2 两个整数的最大公约数。例如 : Command:(gcd 144 16) 返回:1617) (rem 数 1 数 2 )功能:求数1除以数2的余数。例如:Command:(rem 162 38) 返回:10,2.4 基本函数,例1.编程计算普通松联接螺栓的最小直径已知计算公式为 :,2.4 基本函数,编程如下: (defun bolt (F b) (setq d1min (sqrt (/ (* 4 f) (* pi b) (princ “n松螺栓最小直径d1=”) (princ d1min) (princ) );end Command:(bolt 5800 180) 返回:松螺栓最小直径d1=6.4052,(二) 赋值与求值函数,2.4 基本函数,赋值与求值函数举例:,(setq x1 2.5 y1 (+ x1 3.2) 返回:5.700(setq x 2 y 4.0 pt (list x y) 返回:(2 4.000)(setq d c) 返回:C 表明变量d的值为变量C(set d 2) 返回:2 表明变量C的值为2(eval d) 返回:2(eval “(+ 3 4)”) 返回:“(+ 3 4)”(eval (+ 3 4) 返回:7,2.4 基本函数,1)(type项)功能:判断所列的数据类型,其值为下列类型之一:INT(整型数),REAL(实型数),SYM(符号),STR(字符串),LIST(表),SUBR(内部函数),FILE(文件描述符)。例如:Command:(type (setq a 25) 返回:LISTCommand:(type *) 返回:SUBRCommand:(type(setq f (open jq.txt r)返回:FILE 2)(fix数)功能:将实型数去掉小数部分化为整型数。例如:Command:(fix 2.13) 返回:2,(三)数据类型转换函数( 10种),2.4 基本函数,3)(flaot数)功能:将整型数化为实型数。例如:Command:(flaot 2) 返回:2.0 4)(itoa整型数)功能:将整型数化为字符串。例如:Command:(itoa 28) 返回:28 5)(atoi字符串)功能:将字符串化为整型数。例如:Command:(atoi 415) 返回:4156)(atof字符串)功能:将字符串化为实型数。例如:Command:(atof 5) 返回:5.0,2.4 基本函数,7)(rtos数)功能:按AutoCAD系统变量LUNITS和LUPREC定义的 记数方式和精度将数转化为字符串。例如:设 LUNITS=2(十进制),LUPREC=4(精度)Command:(rtos 3.7) 或(rtos 3.7 2 4)返回:3.7000 8)(angtos角度)功能:按AutoCAD系统变量LUNITS和LUPREC定义的记数方式和精度将弧度数转化为字符串。例如:设LUNITS=0(度),LUPREC=4 Command:(angtos 3.14)返回:“180.0000,2.4 基本函数,9)(ascii字符串)功能:求出字符串第一个字符的ASCII值。例如:Command:(ascii Access)返回:65Command:(ascii “Bolt)返回:6610)(chr数)功能:求出整型数所代表的ASCII字符。例如:Comanand:(chr 65)返回:A,2.4 基本函数,1)(strcat字符串2字符串3)功能:将所列的字符串合并为一个字符串。例如:Command:(strcat C A D)返回:CAD2)(strlen字符串)功能:求出字符串的长度。例如:Command:(strlen AutoCAD)返回:73)(substr字符串起始位 (长度)功能:按要求求出字符串的一个子串。例如:Command:(substr “210311198111020013 7 8)返回:“19811102,(四)字符串处理函数(3种),2.4 基本函数,1)(list表达式)功能:用所列表达式组成一个表。例如:Command:(list C A D) 返回:(C A D)Command:(list 1.2 2.3) 返回:(1.20 2.30)2)(append表1表2)功能:将所列的(表)合并成一个新表。例如:Command:(append (C) (A) (D) 返回:(C A D),(五)表处理函数(13种),2.4 基本函数,3) (cons新元素表)功能:将新元素加到表的开头,形成一个新表。例如:Command:(cons C (A D)返回:(C A D)Command:(cons (A C) (A D)返回:(A C)A D) 4)(subst新元素旧元素表)功能:用新元素替换表中的旧元素。例如:Command:(subst M D (C A D)返回:(C A M),2.4 基本函数,5)(assoc 关键字关联表)功能:在关联表中求出指定关键字的子表。例如:Command:(setq alst (L 15)(W 12)(H 8)Command:(assoc W alst) 返回:(W 12)6)(last 表)功能:求出表的最后一个元素。例如:Command:(last (24 56 38) 返回:387)(car 表)功能:求出表的第一个元素。例如:Command:(car (24 56 38) 返回:248)(cadr 表)功能:求出表的第二个元素。例如:Command:(cadr (24 56 38) 返回:56,2.4 基本函数,9)(nthn表)功能:求出表中第n个元素(表的第1个元素的序号为0)。例如:Command:(nth 2 (12 16 25 28 32 40) 返回:2510)(reverse表)功能:求出表的倒置表。例如:Command:(reverse (A B C D) 返回:(D C B A)11)(length表)功能:求出表中元素的个数。例如:Command:(1ength (12 16 25 28 32 40) 返回:6,2.4 基本函数,12)(apply函数表)功能:按指定函数对表进行处理。例如:Command:(apply + (1 2 3)返回:613)(quote 表达式)或(表达式)功能:给出没有计算的表达式,也称为禁止求值函数。例如:Command:(quote a) 返回:a与a相同。Command: (setq a 1)返回:(setq a 1),2.4 基本函数,(六)逻辑运算函数(19种)1) (= 符号 符号)功能:判断是否相等,相等为T,否则为nil。例如: Command:(= 28 28.0) 返回:T 2) (=符号符号)功能:判断各符号是否不等,不等为T,否则为nil。例如:Command:(= Aprit May) 返回:TCommand:(= 20 20) 返回:nil,2.4 基本函数,3) ( 符号符号)功能:判断左边的符号是否依次大于右边的符号,大于则为T,否则为nil。例如:Command:( 7 2 1) 返回:TCommand:( 2 6 0) 返回:nil4) (符号符号)功能:判断左边的符号是否依次小于右边的符号,小于则为T,否则为nil。例如:Command:( 1 1 2) 返回:nilCommand:( 1 2 7) 返回:T5) (= 符号 符号)功能:判断左边的符号是否依次大于或等于右边的符号,大于或等于则为T,否则为nil。例如:Command:(= 2 1 1) 返回:TCommand:(= 2 1 3) 返回:nil,2.4 基本函数,6) (= 符号 符号)功能:判断左边的符号是否依次小于或等于右边的符号,小于或等于则为T,否则为例如:Command:(= 7 8 8) 返回:T7)(and表达式)功能:对所列的表达式进行逻辑“与”运算,有一个表达式结果为(nil)即为nil,否则为T。例如:Command:(and (/= 4 3) ( 6 2) 返回:T8)(or 表达式 )功能:对所列的表达式进行逻辑“或”运算,当所有表达式都为“nil”时为nil,否则为T。例如:Command:(or 2 nil (setq a 6.0) 返回:T9)(not 项)功能:对所列项求反,即返回的逻辑“非”,当该项值为nil时则为T,否则为nil。例如:Command:(not (+ 4 3) 返回:nil,2.4 基本函数,10)(atom 项)功能:判断所列项是否为符号,当该项为表时则为nil,否则为T。例如:Command:(atom c) 返回:T11)(boundp 符号)功能:判断所列的符号是否有非nil值,若有则为T,否则为nil。例如:Command:(boundp c) 返回:T12)(listp 项)功能:判断所列项是否为一个表,是则为T,否则为nil。例如:Command:(listp (a b c) 返回:T13)(minusp项)功能:判断所列项是否为负数,是则为T,否则为nil。例如:Command:(minusp -3.2) 返回:TCommand:(minusp 8.32) 返回:nil,2.4 基本函数,14)(numberp项)功能:判断所列项是否为整型或实型数,是则为T,否则为nil。例如:Command:(numberp -3.26) 返回:TCommand:(numberp Endpoint) 返回:nil 15)(null项)功能:判断所列项的值是否为nil,是则为T,否则为nil。例如:Command:(null ( 2 5) 返回:T16)(member表达式 表)功能:在表中求得从(表达式)出现位置开始的内容,若不含有(表达式)的内容,则为nil。例如:Command:(member a (d b a c e)返回:(a c e)Command:(member ac ( d b a c e)返回:nil,2.4 基本函数,17)(zerop项)功能:判断所列项的内容是否为零,是则为T,否则为nil。例如:Command:(zerop 0) 返回:TCommand:(setq a 1)Command:(zerop a) 返回:nil18)(eq 表达式1表达式2)功能:判断表达式1和表达式2是否完全相同,是则为T, 否则为nil。例如:Command:(setq c a)Command:(eq c a) 返回:TCommand:(eq (setq a (1 2) (setq b (1 2)返回:nil19)(equal 表达式1表达式2)功能:判断两表达式的值是否相等,是则为T,否则为nil。例如:Command:(equal (setq a (1 2) (setq b (1 2)返回:T,2.4 基本函数,1) If条件函数 (if 条件表达式 表达式1 表达式2) 或: (if 条件表达式 表达式 )功能:相当于ifthenelse 或 ifthen 条件结构。例1:已知函数关系为:当x3时,有 y=x+1 当x3时,有 y=0(if (:”)(if (not ang) (setq ang 0)例3:检查自定义函数box是否在内存中,若不在,则用load函数自动装入内存。(假设函数名与文件同名)(if (not box) (load “d: box”),(一)条件分支函数(2种),2.5 控制结构函数(三类),2.5 控制函数,2.cond条件函数(cond (条件1 表达式1) (条件2 表达式2) 。 (条件n 表达式n) )功能:自顶向下逐个检查每个条件分支,若符合条件,则执行相应的表达式并返回该表达式的求值结果。例如:(cond (and ( d 10) ( d 20) ( d 40) ( d 60) (= d 80) (setq b 8) ),2.5 控制函数,(二) 循环结构函数(4种),1) while 循环函数(while 条件 表达式 )功能:若条件不为NIL,则执行其后的表达式,再重复检查条件,直到条件为NIL,才退出循环并返回最后一个表达式的求值结果。例:若根据轮齿弯曲疲劳强度计算,模数mc3.6, 编程搜索其标准模数值。(setq ml (1 1.25 1.5 2 2.5 3 4 5 6 8 10)(setq m 0 n 0)(while ( m mc) (setq m (nth n ml) n (1+ n) ),2.5控制函数,2) repeat 循环函数(repeat 循环次数 表达式 )功能:按给定的循环次数,反复执行各表达式。例:编程在屏幕上打印整数110的平方表。(setq n 1)(repeat 10(princ (strcat (itoa n) “” (itoa n) “=“ (itoa (* n n) (terpri)(setq n (1+ n) ;repeat运算结果为: 11=1 22=4 .,2.5控制函数,3) Foreach循环函数(foreach 变量名 表 表达式)功能:将表中元素逐一赋给变量并求表达式的值。例如:Command:(foreach x (1.0 2.0 3.0) (print x)1.02.03.0 3.0例1:用foreach函数编程,依次给变量m、z、d、b赋值。(foreach var (m z d b ) (print var) (princ =) (set var (getreal) ) ;foreach,2.5控制函数,4) mapcar循环函数(mapcar 函数 表1表n)功能:将多个表中的各元素按函数的要求进行处理。例如:Command:(mapcar * (1 2 3) (2 3 4) 返回:(2 6 12) 说明:1)函数名可以是内部函数名,也可以是用户自定 义函数名;2)各个表中的数目必须与所要求的参数数目和参数 类型相匹配;3)表的长度决定了函数名的调用次数,也决定了 mapcar函数返回表的长度。,2.5控制函数,while循环函数应用实例:,;求解方程x3-x-1=0的根(defun ddai (x)(setq x1 0 x2 x e 1.0e-6 i 0)(while ( (abs (- x2 x1) e) (setq x1 x2) (setq x2 (expt (+ x1 1) (/ 1 3.0)(setq i (1+ i);while(princ “nx=) (princ x2)(princ “ni=) (princ i)(princ);end调用:(ddai 5) 返回:x= 1.32472 i= 10,(三)顺序控制函数progn,(progn 表达式1 表达式2)功能:相当于把多个表达式组合成了一个大的表达式。这在只要求执行一个表达式,而实际上又有多个表达式内容要执行时的情况下,用progn函数可达到这一目的。例如:(if (= x 1) (progn (setq x (+ x 2) (setq y (* x 4) (print (list x y) );prog );if,2.5控制函数,Repeat、Foreach函数应用举例: 编程绘制方程R=cos (9a/10)在0,2内的曲线。,(defun c:spr (/ cp lpt x)(setq cp (getpoint nCenter point:)(setq x 0 lpt nil)(repeat (fix (1+ (/ (* 20 pi) 0.2)(setq lpt (append lpt (list (polar cp x (cos (* 0.9 x)(setq x (+ x 0.2);repeat(setq lpt (append lpt (list (polar cp (* 20 pi) 1) )(command pline)(foreach pt lpt (command pt)(princ);end,程序运行结果:,2.6 AutoLISP与AutoCAD的通信,(一) command函数调用格式: (command “命令” 参数)说明:1).调用AutoCAD命令及其子命令和选择项都用字符串表示, 其中字符大小写均可。2). 数值变量可以写成数本身,也可以写成字符串的形式。3). 对于点常数有两种表示方法,即:(0.4 5)和 “0.4,5”;如果点的坐标x、y为变量,则必须表为: (list x y)。4). Command调用参数中的空串“”,等效于在键盘上按了一次回车键或空格键。5). 如果调用(command)时不带任何参数,则等效于Ctrl-C.6). Get族函数不能用作command函数的参数。,Command函数应用举例:1). 编程绘制任意倾斜的矩形,(defun boxa (l w ang)(setq bp (getpoint nEnter an base point:)(command ucs o bp ucs z ang)(command rectangle 0,0 (list l w)(command ucs w);end调用:(boxa 40 25 30)运行结果:,2).编程绘制给定图号的图幅,(defun tk (n / l w a c)(cond (= n 5) (setq l 210 w 148 a 25 c 5) (= n 4) (setq l 297 w 210 a 25 c 5) (= n 3) (setq l 420 w 297 a 25 c 5) (= n 2) (setq l 594 w 420 a 25 c 10) (= n 1) (setq l 841 w 594 a 25 c 10) (= n 0) (setq l 1189 w 841 a 25 c 10) );cond(command rectangle 0,0 (list l w)(command rectangle (list a c) (list (- l c) (- w c);end,3). 编程绘制五角星,(defun star_5 (r)(setq cp (getpoint nCenter point:)(setq pt1 (polar cp (* 0.017453 18) r) pt2 (polar cp (* 0.017453 54) r) p2 (polar cp (* 0.5 pi) r)(setq p1 (inters cp pt2 pt1 (polar pt1 pi r) p3 (polar cp (* 0.017453 126) (distance cp p1)(command color 1)(command pline cp p1 p2 p3 cp p2 )(command bhatch p s (polar cp (* 0.017453 70) 10) )(command color 2)(command bhatch p s (polar cp (* 0.017453 95) 10) )(command array all p cp 5 )(princ);end,程序运行结果:,应用command函数的注意事项,Command函数调用中的参数类型、个数与顺序必须与AutoCAD命令严格对应;在command函数中允许使用PAUSE,以暂停接受数据。如:(command “line” pause pause “”),除少数几个命令外几乎所有的AutoCAD命令均可用于command函数的调用;Command函数调用中的命令及其选项等字符串参数中不能包含有空格,因为字符串中空格也是有效的;需要回车才能结束AutoCAD命令时,可在command函数的最后一个参数位置设为空串,即:“”。为使AutoLISP编程定义的命令函数执行时其执行过程不显示出来,可把系统变量cmdecho的值设置为零。,(二)交互输入函数(get族函数),字符串输入函数,输入控制函数initget调用格式:(initget 位值 关键字)功能:为随后的get族函数(getstring除外)确立关键字,并控制输入值的范围。,举例:,Command:(setq a (getint “n Enter an integer:”)Enter an integer:25 返回: 25Command:(setq b (getreal “n Enter a number:”)Enter a number:25 返回:25.0000Command:(setq d (getdist “n How far?”)How far?25 返回:25.0000Command: (setq pt (getpoint “n Enter a point:”)Enter a point:6,8 返回:(6 8)Command: (setq ang (getangle “n Enter angle:”)Enter angle: 180 返回: 3.141592,例.输入数并统计结果,(setq s 0)(while (setq n (getint “n Enter an integer:/”)(setq s (+ s n) );while例2.输入控制函数的应用(initget 1 “Yes No”)(setq key (getkword “n Are you sure?(Yes/No):”);=initget 7 “Y Z A B C D E”)(setq dlxh (getkword “n选择V带型号(Y Z A B C D E):”),(三)其它输入函数,1). Read-char函数调用格式: (read-char)功能: 等待用户从键盘输入一个字符,并返回一个整型数(即该字符的ASCII码)。2). Read-line函数调用格式: (read-line)功能: 等待用户从键盘输入一行字符串,并返回该字符串。,例1:编程打印输入字符及其对应的ASCII码,(defun prch (/ ch)(while (/= (setq ch (read-char) 32)(print (chr ch)(princ “”)(princ ch);while(princ);end,程序运行及其结果Command: (prch)在键盘上按ABCD再按空格键,屏幕上显示如下:A65B66C67D68按空格键结束。,例2:编程打印read-line输入的字符串,(defun prlin (/ ch)(while (/= (setq ch (read-line) )(print ch)(princ);while(princ);end,程序运行及其结果Command: (prlin)AutoCAD“AutoCAD” AutoLISP“AutoLISP” VisualLISP“VisualLISP” OK“OK”按回车键结束。,(四)屏幕和文件的输出函数,例:编程在屏幕上打印整数1025的平方根,(defun c:psqrt ( x)(setq x 10)(while (= x 25)(print (list sqrt x)(princ “ =“)(princ (sqrt x)(setq x (+ x 5);end,运行结果:Command: psqrt(sqrt 10) =3.162278(sqrt 15) =3.872983(sqrt 20) =4.472136(sqrt 25) =5.000000,只用于屏幕输出的函数,a). Prompt函数调用格式: (prompt 字符串)功能:将字符串打印在文本屏幕上,返回值为NIL。如:(prompt “n正在计算,稍等”)b). Terpri函数调用格式: (terpri)功能: 用于控制换行,返回值为NIL。,(五)几何实用函数,1. 几何计算函数1) 求角度函数 调用格式: (angle 点1 点2)功能:获取UCS中两点连线的方位角。如:(angle (0 0) (10 10) 返回:0.7853982). 求距离函数 调用格式: (distance 点1 点2)功能:获取UCS中两点连线的距离。如:(distance (6 6) ( 26 6) ) 返回:20.0,3) 求交点函数 调用格式:(inters 点1 点2 点3 点4 【方式】)功能:求两直线的交点,并返回交点坐标如:(inters (6 6) ( 26 6) (10 0) (10 10) 返回:(10.0 6.0)4) 求极坐标点函数调用格式:(polar 基点 弧度 距离)功能:求由基点引出的点,并返回该点坐标如: (polar (0 0) (* 0.0174533 30) 45) 返回:(38.9711 22.5),几何实用函数应用实例1,(defun wjx (r)(setq cp (getpoint n指定中心点:)(setq p1 (polar cp (* 0.5 pi) r)p2 (polar cp (* 0.017453 162) r)p3 (polar cp (* 0.017453 234) r)p4 (polar cp (* 0.017453 306) r)p5 (polar cp (* 0.017453 18) r)(setq p12 (inters p1 p3 p2 p5)p23 (inters p1 p3 p2 p4)p34 (inters p2 p4 p3 p5)p45 (inters p1 p4 p3 p5)p15 (inters p1 p4 p2 p5)(command pline p1 p12 p2 p23 p3 p34 p4 p45 p5 p15 c)(command circle cp r);end,应用实例2:,(defun tzx (b l r)(setq bp (getpoint nEnter base point:)(command ucs o bp)(setq p2 (list (* 0.5 b) r) p1 (polar p2 pi b)p6 (list (* 0.5 l) (* 0.5 r) p5 (polar p6 pi l) p7 (inters p1 (list (car p1) 0) p5 (polar p5 (atan 1 10) l) p8 (polar p7 0 b) p4 (list (* 0.5 l) 0) p3 (polar p4 pi l) ;setq (command pline p1 p2 p8 p6 p4 p3 p5 p7 c)(command ucs w);end,2. 对象捕捉函数,调用格式:(osnap 基点 捕捉方式)功能:按捕捉方式要求,根据基点来捕捉相应的点,并返回该点坐标。如: (setq cp (30 40) p1 (120 80) p2 (30 60) (command “circle” cp 20) (command “line” p1 (osnap p2 “tan”) “”),说明: 对象捕捉函数与AutoCAD的osnap命令相似,用于准确捕捉图形上的特征点,如直线端点、圆心、相切点等。目标捕捉方式名:NEA、END、MID、CEN、NOD、QUA、INT、INS、PER、TAN、QUI、NON。1)如果在指定点处按照目标捕捉方式捕捉到了相应的目标特征点,则返回该特征点,否则返回NIL。2)当目标捕捉方式打开时,屏幕上将出现一个靶区符号,靶区大小可通过设置系统变量aperture来改变。3)目标捕捉方式为字符串参数,除quick和none外,其它目标捕捉方式可以任意组合使用。4)目标捕捉只辨认屏幕上可见图素,关闭层无效。,对象捕捉函数应用实例:编程绘制带传动机构运动简图,步骤:1)绘中心线;2)绘圆;3)绘圆切线(defun dljt (r1 r2)(setq a 0)(while ( a (+ r1 r2)(setq a (getdist nEnter center distance:);while(setq cp1 (getpoint nEnter base point:)(setq cp2 (polar cp1 0 a)(command layer m cen c 1 l center )(command line (polar cp1 pi (+ r1 5) (polar cp2 0 (+ r2 5) )(command line (polar cp1 (* 0.5 pi) (+ r1 5) (polar cp1 (* 1.5 pi) (+ r1 5) )(command line (polar cp2 (* 0.5 pi) (+ r2 5) (polar cp2 (* 1.5 pi) (+ r2 5) ),续前程序:,(command layer

    注意事项

    本文(第二讲AutoLISP语言基础课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开