文档介绍:AUTOLISP编程
基本指南:两数求和
在命令行输入:(+ 2 3) (- 2 3) (* 2 3) (/ 2 3)
如果直接输入(/ 2 3)则会显示0 因为2和3是整型所以AutoLisp把这些数字译为整型(AutoLisp进行了四舍五入)所以输入(setq x (/ 3))
在命令行输入:!p则会显示p这个变量的值
SETQ和变量
Setq是来保存计算的结果的,相当于给一个变量赋值例:
(setq x (/ 3))
Setq能完成多项“设置相等”例如:
(setq x y z ) 就是分别赋给x y z 赋值
AutoLISP函数
数学函数
(min 7 3 5 11) 就是取7 3 5 11这四个数的最小值
(setq minbr (min 7 3 5 11))
(sin minbr)
数学函数
功能
+
加
-
减
*
乘
/
除
1+
自增1
1-
自减1
FLX
截取实数的整数部分
FLOAT
整数变为实数
REM
返回除法的余数
EXPT
指数
SIN
求弧度角的正弦
COS
求弧度角的余弦
ATAN
求两个数字的反正切
注意:AutoLISP的角是弧度值而不是角度值。例如:45度的角的正弦值
(setq rad (*(/ 45 )pi))
(setq p1 '( )) ‘表示指定2个(3个)的坐标值,这样AutoLISP就不会计算这些值了
(setq p2 '( ))
(setq p3 '(9 4))
(setq p4 '( ))
(distance p1 p2)
(angle p1 p2)
(inters p1 p2 p3 p4)
(osnap p1 "mid")
TEXTBOX(查找一行文字的矩形外框) POLAR(指定距离和角度返回一个3D点)
几何函数
功能
Angle
X轴和由2个点定义的直线间的(弧度)夹角
Distance
2点之间的3D距离
Polar
在某一个(弧度)角度上的3D点
Osnap
对某一个点应用对象捕捉模式后的3D点
Inters
4个点定义的3D交叉点
例:在一个绘制楼梯间的AutoLISP例程中,一部分程序检查层高是否大于8英寸:如果大于,就绘制出14级台阶,如果小于就绘制13级台阶。
(if (>height 96) (setq steps 14) (setq steps 13))
条件函数
注释
=
等于
/=
不等于
<
小于
<=
小于或等于
>
大于
>=
大于或等于
If
如果——那么——否则
Cond
查找真的表达式
Repeat
重复n次表达式
While
重复验证表达式直到假命题出现
ForEach
计算表达式中所有数值的表达式值
(strlen “Using AutoCAD”)
STRLEN函数将报告Using AutoCAD为13个字符,计算空格。可以看到Using AutoCAD被引号括起来表明它是字符串。如果输入(strlen Using AutoCAD),AutoLISP会试图查询变量Using和AutoCAD所包含字符串的长度。
(strlen autocad “A software package”)
(strlen using “the Earth”)
(strlen using autocad) 返回34
STRCAT函数通过混合变量和文字将字符串连接在一起并创建返回信息。
(strcat autocad “used all over” using) 返回“A software package used all over the Earth ”
字符串函数
功能
StrCase
把所有的文字转换成大写或小写
StrCat
连接所有的字符串
StrLen
返回字符串中的字符数
SubStr
返回字符串的一部分
WcMatch
在字符串中匹配通配符
如何把45度37分11秒即AutoCAD表示的45d37’11’’呢?这就要用到一个名称为ANGTOF的转换函数。它把包含格式化的角度的字符串转换为弧度(实数),如下例:
(angtof “45d37’11\’’”1) d表示度‘表示分\’’表示秒之所以这样用是为了不至于与后引号(”)混淆,后引号表示字符串的结束。