命令'CAL,右键菜单选择“快速计算器”或CTRL+8都可以打开计算器。
使用 CAL 命令,用户可以:
一.)获取点
1.使用光标获取点
用 cur 函数。程序会提示用户指定点并使用当前的 UCS 点的坐标值。cur 函数用于设置系统变量 lastpoint的值。
2.获取交点
ille↔ill(p1,p2,p3,p4) 确定两条直线 (p1、p2) 和 (p3、p4) 的交点。所有点都被认为是三维点。
ilp(p1,p2,p3,p4,p5) 确定直线(通过 p1、p2)和平面(通过三点 p3、p4、p5)的交点。
3.计算直线上的点
①. 在两实体间确定中点表达式(end+end)/2。也可用mtp成m2p,需捕捉中点所在的两个点来确定中点。
快捷函数mee↔(end,end)/2两端点的中点。
②.确定一条直线上的任意等分等距点
快捷函数pltee(t)↔plt(P1,P2,t)由两端点确定的直线上某一参数化位置的点。(divide定数等分确定多点。)
参数 t 定义点在直线上的参数化位置。
如果 t=0,则所求点为 p1
如果 t=0.5,则所求点是 p1 和 p2 的中点
如果 t=1,则所求点为 p2
快捷函数pldee(d)↔pld(P1,P2,dist)由两端点确定的直线上某一距离处的点。(measure定距等分确定多点)
参数 dist 定义该点到点 p1 的距离。
4.获取上一个指定点?
在表达式中使用“@+”字符可获得上一个点的坐标,如下例所示:
命令: line
指定第一个点: 'cal
>> 表达式: cen+[0,1]
>> 选择图元用于 CEN 捕捉: 选择圆或圆弧
指定下一点或 [闭合(C)/放弃(U)]: 'cal
>> 表达式:@ +3*vec1(cen,cen)
直线的第一点自第一个选定圆的圆心在 Y 轴方向上偏移一个单位。直线的第二点距第一点三个单位。直线的方向是从第一个选定圆的圆心指向第二个选定圆的圆心。
二.)变量variable
如果在 CAL 命令中输入的 AutoLISP 变量名称中包含具有特殊含义的字符(例如 +、-、* 或 /),请用单引号 (') 将变量名称括起来,例如:'number-of-holes'
1.将对象捕捉作为表达式中的变量
①.使用相对坐标来确定点
end+[2,3]作点和点的相加运算,在端点上加一个相对坐标偏移。
这样的点也可以用跟踪track(tk)的捕捉方式来获取。需确定第一追踪点,相当于上面的end。
2、给 AutoLISP 变量赋值
要给 AutoLISP 变量赋值,
变量名=表达式
3.在计算中使用系统变量
语法为:getvar( variable_name )
下例使用 getvar 获得当前视口中视图的圆心。getvar(viewctr)
使用这种方法还可以访问用户系统变量 USERI1-5 和 USERR1-5。例如,要检索存储在 USERR2 中的值,可输入以下内容: getvar(userr2)
三.)矢量vector
1.过滤矢量中的 X、Y 和 Z 分量
xyof(P1) 点的x和y分量;z分量设定为0.0
xzof(P1) 点的x和z分量;y分量设定为0.0
yzof(P1) 点的y和z分量;x分量设定为0.0
xof(P1) 点的x分量;y和z分量设定为0.0
yof(P1) 点的y分量;x和z分量设定为0.0
zof(P1) 点的z分量;x和y分量设定为0.0
rxof(P1) 点的x的分量
ryof(P1) 点的y的分量
rzof(P1) 点的z的分量
2.计算两点的矢量
快捷函数vee↔vec(p1,p2)计算从点 p1 到点 p2 的矢量平移。
快捷函数vee1↔vec1(p1,p2)计算从点 p1 到点 p2 的单位矢量方向。
L*vec1(P1,P2)确定长度L在从点P1到点P2方向上的矢量。
a+[5<20]确定从点a以20度角偏移5个单位后得到的点b。注意:[5<20]是以极坐标表示的矢量。
a+v确定从点a平移矢量v后得到的点b。
3.计算法向矢量:矢量定义法线的方向而不是空间中的位置。可将法向矢量加到一个点上以获得另一个点。(即与直线或平面垂直的矢量)
nor
确定选定的圆、圆弧或多段线圆弧段的三维单位法向矢量。此法向矢量是选定对象的对象坐标系 (OCS) 的 Z 轴。
nor(v)
确定矢量 v 的二维单位法向矢量。这两个矢量都被认为是二维的,且投影在当前 UCS 的 XY 平面上。得出的法向矢量的方向指向原矢量 v 的左边。
快捷函数nee↔nor(P1,P2)
确定直线 p1,p2 的二维单位(xy平面)法向矢量。该直线的方向为从 p1 指向 p2。得出的法向矢量的方向为指向原直线 (p1、p2) 的左边。
nor(p1,p2,p3)
确定平面(由 p1、p2 和 p3 三点定义)的三维单位法向矢量。法向矢量的方向与给定三点的逆时针方向垂直。
例①过一条斜线上的已知nod点作斜线的垂线,也可用递延垂足作垂线。
画线命令在斜线上确定垂线的第一个点即nod垂足,确定垂线第二点时输入'cal,输nod+5*nee (5是垂线的长度,根据提示捕捉垂点nod点和直线的两个端点获取垂直方向nee(改变光标捕捉直线端点的顺序,可在直线的另一侧画垂线。)
例②作和一斜线相切的圆;
cur+3*nee (cur表示用光标在屏幕上拾取一个点作为圆和直线的切点,nee函数用来计算斜线的两端点矢量的法线,也可以简单理解为方向,(改变光标捕捉斜线端点的顺序,也可在直线的另一侧画圆。)3是圆的半径,输入圆半径长度3则正相切)
例③.过圆和一直线的交点int作圆的切线
int+3*nor(cen,int)
画线命令点交点确定切线第一个点,确定第二个切线点时输入'cal,输入 int+3*nor(cen,int)(nor是计算圆心与交点两个点的法线(垂直)方向。(改变光标捕捉直线端点的顺序,也可在直线的另一侧画切线。)根据提示点交点,圆形,交点即可作出长度为3的切线。
4.计算矢量的长度
abs(v)计算矢量 v 的长度,结果为非负实数。在球坐标(距离
四.)其他
⑴设定英尺和英寸的格式:
英尺'-英寸"、英尺' 英寸" 或英尺'英寸"
可以用短划线或空格将英尺、英寸和分数部分的英寸隔开,也可以不隔开。
警告使用英制单位时,CAL 将减号或破折号 (-) 当作单位分隔符而不是减法运算符。要指定减法运算,应在减号前面或后面至少添加一个空格。例如,要从 5' 中减去 9”,输入 5' -9” 而不是 5'-9”。
⑵设定角度的格式:
角度的默认单位是十进制度数。请按以下格式输入角度: d ' ”
当输入的角度小于 1 度时(只有分和秒),必须输入 0d。可以省略零分和零秒。
要按弧度输入角度,请在输入的数字后面加上 r。
要按百分度输入角度,请在输入的数字后面加上 g。
以下是各种角度输入法的样例:
5d10'20"
0d10'20"
124.6r
14g
以任何格式输入的角度都会转换成十进制角度。
Pi 弧度等于 180 度,100g 等于 90 度。
⑶计算距离
dee↔dist(p1,p2)确定点 p1 和 p2 之间的距离。此函数相当于矢量表达式 abs( p1 - p2 )。
dpl(p,p1,p2)确定点 p 到直线(通过点 p1 和 p2)的最短距离。
dpp(p,p1,p2,p3)确定点 p 到平面(由三点 p1、p2、p3 定义)的距离。
下例返回两个选定对象的中心之间距离的一半:dist(cen,cen)/2
下例确定了点 [3,2,4] 与由三个选定端点定义的平面之间的距离:
dpp([3,2,4],end, end, end)
⑷获取半径
快捷函数rad 可以确定圆、圆弧或二维多段线圆弧对象的半径。
⑸获取角度
ang 函数可以确定两条直线之间的夹角。角度按逆时针方向测量,二维情况下相对于 X 轴测量,三 维情况下则相对于用户指定的轴测量。
ang(v)
确定 X 轴和矢量 v 之间的角度。矢量 v 被认为是二维的,且投影在当前 UCS的 XY 平面上。
ang(p1,p2)
确定 X 轴和直线(通过 p1、p2,方向为从 p1 到 p2)的夹角。该点被认为是二维的,且投影在当前 UCS 的 XY 平面上。
ang(apex,p1,p2)
确定直线 (apex,p1) 和 (apex,p2) 的夹角。该点被认为是二维的,且投影在当前 UCS 的 XY 平面上。apex是顶点。
ang(apex,p1,p2,p)
确定直线 (apex,p1) 和 (apex,p2) 的夹角。直线被认为是三维的。最后一个参数(点 p)用来定义角度的方向。此角度以顶点到点 p 的直线为轴按逆时针方向测量。
⑹绕坐标轴旋转点
rot 函数绕坐标轴旋转点并返回旋转得到的点。
rot(p,origin,ang)以经过原点的 Z 轴为轴,旋转点 p,旋转角度为 ang 。
rot(p,AxP1,AxP2,ang)以经过点 AxP1 和点 AxP2 的直线为轴旋转点 p,转角为 ang轴的方向为从第一个点到第二个点。
⑺在 UCS 和 WCS 之间转换点
通常程序假定所有坐标都是相对于当前 UCS 的。可以使用下列函数在 UCS 和 WCS 之间转换点的坐标值。
w2u(p1)
将以 WCS 表示的点 p1 转换到当前 UCS 中。
u2w(p1)
将以当前 UCS 表示的点 p1 转换到 WCS 中。
可使用 w2u 查找用当前的 UCS 表示的 WCS 的原点:w2u([0,0,0])
⑻转换测量单位。
关于可转换的单位列表,请参见 acad.unt 文件(适用于 AutoCAD)或 acadlt.unt 文件(适用于 AutoCAD LT)。
语法为:cvunit ( value, from_unit, to_unit )
下例将值 1 从英尺转换为厘米:
cvunit(1,inch,cm)