2 AutoLISP 基本函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.1赋值与求值函数
▪ 1 赋值函数
(setq <变量1> <表达式1>[<变量2><表达式2> … ])
功能:赋值函数,把表达式的值赋给前一个变量 格式:<变量><表达式>必须成对出现 参数类型及求值:其奇数位上的参数<变量>不被求值,并
且必须是符号原子。偶数位上的参数<表达式>,可为整 数、实数、表、字符串、文件描述符、内部函数名等内 容,要被求值,并把求值结果赋给前一个变量 返回:最后一个表达式的求值结果
(equal 1.123456 1.123457 0.000001)
2.5 逻辑运算函数
(and <表达式1> <表达式2> …) 返回所有<表达式>的逻辑与:只要有一个<表达式>的
结果为nil,返回nil,否则返回T (or <表达式1> <表达式2> …)
返回所有<表达式>的逻辑或:如果所有<表达式>的结 果为nil,返回nil,有一个<表达式>为T,返回T (not <表达式>)
2.1赋值与求值函数
▪ 1 赋值函数
2.1 赋值与求值函数
▪ 2 再赋值函数
(set <变量> <表达式>)
功能:再赋值函数,给变量的值赋值的函数 格式:只能有两个参数,且对<变量><表达式>都要求值,
把各个参数均当成表达式来看待,对各个参数分别进行 求值运算后,再进行赋值运算 参数类型及求值: <表达式>的值赋给 <变量>的值,
<变量>的值也必须为变量
返回: <表达式>的值
2.1 赋值与求值函数
▪ 3 禁止求值函数
(quote <表达式>)
作用:禁止对紧跟其后的表达式求值
格式:只有一个<表达式>,还可以用’ <表达式>来表示
参数类型及求值:对 <表达式>禁止求值
返回: <表达式>
实例: (quote (+ 5 5)) ‘(+ 5 5)
(返回:8.36)
(distance ’(1.0 2.5) ‘(7.7 2.5))
(返回:6.70)
2.6 几何函数
▪ 3 求坐标点函数
(polar <中心点> <方位角> <距离> ) 功能:以<中心点>为参考点,指定<方位角>和 <距离>点 的坐标X、Y
(polar ‘(1.0 1.0 ) (/PI 4) (sqrt 2.0))
(+ cos(* 2.0 x) (* x sin(/ x 2)))
2.3 字符串处理函数
(strcat<字符串1> <字符串2>…)
将各个<字符串>顺序连接起来,组成一个新的字符串
(strlen <字符串> 求<字符串>长度 (substr <字符串> <开始><长度>)
返回<字符串>中的一个子串,从<开始>位置起,连续<长 度>个字符
2.1赋值与求值函数
▪ 1 赋值函数
(setq <变量1> <表达式1>[<变量2><表达式2> … ])
注意:
1、setq采用串行赋值,总是把偶数位的 <表达式>值赋给奇数位上的变量
2、表达式求值规则:①整型数、实型数 和字符串其本身的值就是求值结果;② 表根据第一个元素进行求值
3、最好不要给AutoLISP一些内置函数名 及符号赋值。虽然是有效的,但保留符 号和函数将被重新定义
(/ (* x y) (+ (/ sinx cosx) (* a sin(* 2 y)))
二、AutoLISP 基本函数
▪ 讨论与练习 写出x3 x2 x 1, x 4的AutoLISP表达式
(setq x 4) (1+ (expt x 3) (* x x) x )) ????
写出cos2x x sin x / 2的AutoLISP表达式
;返回0.5 ;返回0.707107 ;返回0.0
(sin 0)
;返回0.0
2.2 数值计算函数
▪ 2 三角函数
(cos <角> )
返回:<角>的余弦值,返回值总是实型数
参数类型:<角>的单位为弧度,PI为专用符号
(cos (* 30 (/ PI 180))) (cos (* 45 (/ PI 180))) (cos PI)
(< <表达式1> <表达式2>…) (> <表达式1> <表达式2>…) (>= <表达式1> <表达式2>…) (<= <表达式1> <表达式2>…)
第一个<表达式>值是否都小于、大于、大于等于或小于 等于右边的表达式的值,若是返回T,否则返回NIL
2.4 关系运算函数
▪ 等值函数
(equal <表达式1> <表达式2> [<误差值>])
▪ 1 求角度函数
(angle <点1> <点2>)
函数的参数:<点1><点2>的坐标 功能:求<点1>与<点2>之间连线的方位角 单位:为弧度
(angle ‘(1.0 1.0 ) ‘(1.0 5.0))
(setq a (/ (* 180 (angle '(1.0 1.0) '(1.0 5.0))) PI))
▪ 作用:<表达式1>与<表达式2>的值相等就返回T, 否则返回NIL。
▪ 注意: [<误差值>]指定两个表达式的最大误差,值 在误差范围内,也认为相等
Hale Waihona Puke Baidu
(setq q1 ‘(x y z))
(equal q1 q3)
(setq q2 ‘(x y z)) (setq q3 q2)
(equal q2 q3)
CAD 程序设计方法
教师:李敬敏 邮箱:hjljm@163.com
二AutoLISP 基本函数
▪ 引言
1 AutoLISP函数分为:系统内部函数和用户自定 义的外部函数
2 AutoLISP函数的调用:通过对标准表来实现, 一般格式: (函数名[参数1][参数2]…)
3 主要学习内容:
1)函数的功能和作用 2)函数的调用格式:函数名,参数个数及要求和类型 3)函数参数的求值情况 4)函数求值结果的返回类型
2.6 几何函数
▪ 2 求距离函数
(distance <点1> <点2>)
功能:求<点1>与<点2>之间距离 注意: <点>可以是二维,也可以是三维,但计算时
总忽略Z坐标______目前在AutoCAD2004,实际上 已经计算Z坐标了
(distance ‘(1.0 2.5 3.0 ) ‘(7.7 2.5 8.0))
(atan <数1> [ <数2>]) 该数值的反正切弧度值
2.2 数值计算函数
▪ 2 三角函数
(sin <角> )
返回:<角>的正弦值,返回值总是实型数
参数类型:<角>的单位为弧度,PI为专用符号
(sin (* 30 (/ PI 180))) (sin (* 45 (/ PI 180))) (sin PI)
2.2 数值计算函数
▪ 三角函数
(atan <数1> <数2> )
返回:计算<数1> 除以<数2>的反正切值,返回角以弧 度表示
注意:如果 <数2>为零,则根据<数1>的符号,返回+ (-)90度的弧度
(atan 2.0 3.0)
;返回0.588002
(atan 2.0 0) (atan -0.5 0)
(返回(2.0 2.0))
2.6 几何函数
▪ 3 求坐标点函数
(polar <中心点> <方位角> <距离> )
2.6 几何函数
▪ 4 求交点函数
(inters <点1> <点2> <点3> <点4> [方式])
功能:检查两条直线是否相交,如果相交,返回交点坐 标,如果不相交,返回NIL。
注意: 若[方式]存在,且值为NIL,认为直线是无 限长的,交点可以在延长线上;若[方式]不存在, 或值为非NIL,认为直线是不可延长的,交点只在 两线段上才能返回,否则为NIL
(* <数> <数>…) 返回所有<数>的乘积
(/ <数1> <数2> …)返回<数1>依次除以其他数后的商
(1+ <数>)
返回<数>加1后的值
(注意:1与+号之间不能有空格)
(1- <数>)
返回<数>减1后的值
(注意:1与-号之间不能有空格)
(abs <数>)
返回<数>的绝对值
2.2 数值计算函数
(eval x)
;返回 20.0
(eval ‘(command “line” ‘(1 1) ‘(3 3) “”))
2.2 数值计算函数
▪ 返回值类型规则
1、参数表中的所有参数都为整型数,结果返回整型数 (/ 25 3)返回 8
2、两参数中有一个为实型数,结果返回实型数 (/ 25 3.0)返回 8.333
;返回1.570796 ;返回-1.570796
二、AutoLISP 基本函数
▪ 讨论与练习 写出y x3 ax2 bx c的AutoLISP表达式
(Setq y (+ (expt x 3) (* a x x) (* b x) c))
写出x * y /(tgx a sin 2 y)的AutoLISP表达式
然对数值,其数据类型为实型数。
(gcd <数1> <数2>) 求两个数的最大公约数
(rem <数1> <数2> … ) 求<数1>除以<数2>的余数,若
多于两个,则余数依次除以下一个
2.2 数值计算函数
▪ 2 三角函数
(sin <弧度>)
该弧度角的SIN正弦值
(cos <弧度>)
该弧度角的COS余弦值
;返回0.866025 ;返回0.707107 ;返回-1.0
(cos 0)
;返回1.0
2.2 数值计算函数
▪ 2 三角函数
(atan <数> )
返回:计算<数>的反正切值,返回角度以弧度表示
(atan 1.0) (atan 0.5) (atan -1)
;返回0.785398 ;返回0.463648 ;返回-0.785398
(distance <点1> <点2>) 求两点间的距离
(polar <中心点> <方位角> <距离> ) 按极坐标法取得另一点坐标
(inters <点1> <点2> <点3> <点4> [<方式>] ) 取得两条线的交点
(osnap <点> <方式名>) 按捕捉模式取得另一坐标点
2.6 几何函数
目标1:希望能在输入左下角点后,只给直角三角形的底边与 斜边长后,自动绘出该直角三角形,并求出Pb,Pc的角度。
步骤一:定出程序名称:
B-1 r-a-triangle.lsp
2.6 几何函数
▪ 5 目标捕捉函数
(osnap <点> <方式名> )
功能:按<方式名>的方式,基于给定的<点>,捕捉图形 的特征点
注意: <方式名>可以是”nea”,”Mid”, “endp”,“cen” 等 (setq Pb (osnap Pa "Mid"))
二、AutoLISP 基本函数
引用表在使用时,必 须使用quote函数
(command “line” ‘(1 1) ‘(3 3) “”)
2.1赋值与求值函数
▪ 4 再求值函数eval
(eval <表达式>)
作用:将紧跟其后的参数或表达式进行二次求值 格式:只有一个<表达式>
实例: (setq x ‘(* 5.0 4)) ;返回 (* 5.0 4)
3、参数表中的参数多于两个,则从前至后按规则1,2 依次 运算,结果与下一个参数再进行运算
(/ 25 3.0 2)返回 4.1666 (/ 25 3 2) 返回 4
2.2 数值计算函数
▪ 1 算术运算函数
(+ <数1> <数2>…)返回所有<数>的和。其中,<数>可以
是整型数,实型数,表达式
(- <数1> <数2>…)返回第一个<数>与后面所有数的差
返回<表达式>的逻辑非:如果<表达式>的结果为nil, 返回T,否则返回nil
(and 5.0 (setq a 2) “X5”) (and 5.0 (setq a nil) “X5”)
(or nil ‘() “X5”) (not (setq a 10))
2.6 几何函数
(angle <点1> <点2>) 求两点的角度弧度值
▪ 1 算术运算函数
(sqrt <数>)
求<数>的平方根,返回值为实型数
(max <数1><数2>…)返回<数1><数2>…中的最大值
(min <数1><数2>…)返回<数1><数2>…中的最小值
(exp <数>) 返回e的<数>次方的值
(expt <底数> <幂>)返回<底数>的<幂>次方的值
(log <数> ) 是exp函数的反函数,返回<数>的自
(strcase<字符串> <表达式>)
根据<表达式>的值把<字符>串转换成小写或大写字符串
(read <字符串>)
返回<字符串>中第一个原子或表
2.4 关系运算函数
(= <表达式1> <表达式2>…)
如果所有<表达式>在数值上相等,返回T,否则返回nil
(/= <表达式1> <表达式2>…)
前两个<表达式>在数值上不相等,返回T,否则返回nil
相关文档
最新文档