配色: 字号:
CAD之CAL命令
2017-06-15 | 阅:  转:  |  分享 
  
CAL命令

计算算术和几何表达式命令行:cal(或''cal,用于透明使用)

CAL是一种联机几何计算器,用于计算点(矢量)、实型或整型表达式的值。这些表达式可通过对象捕捉函数(例如:CEN、END和INS)获取现有的几何图形。可将AutoLISP?变量插入算术表达式并返回表达式的值,以给AutoLISP变量赋值。对于任何需要点、矢量或数字的AutoCAD?命令,均可使用这些算术或矢量表达式。

CAL

理解表达式语法 1

设置角度的格式 3

使用点和矢量 3

使用AutoLISP变量 4

使用AutoCAD系统变量 5

转换测量单位 5

使用标准数值函数 5

通过两点计算矢量 6

计算矢量长度 6

通过光标获取点 7

获取上一个指定点 7

在算术表达式中使用AutoCAD“捕捉”模式 7

在UCS和WCS之间转换点的坐标值 8

计算直线上的点 9

绕坐标轴旋转点 9

获取交点 10

计算距离 10

获取半径 11

获取角度 11

计算法向矢量 12

使用快捷函数 13



CAL遵照标准数学计算的优先级规则计算表达式的值:

括号中的表达式优先,最内层括号优先

运算符按标准顺序计算:指数优先,乘除次之,加减最后

优先级相同的运算符从左至右计算

数值表达式

数值表达式由实数、整数和函数用下表中的运算符连接组成。



数值运算符 运算符 操作 () 将表达式编组 ^ 指数计算 ,/ 乘、除 +,- 加、减 以下是数值表达式的样例:

3

3+0.6

(5.8^2)+PI

矢量表达式

矢量表达式由点集、矢量、数字和函数用下表中的运算符连接组成。

矢量运算符 运算符 操作 () 将表达式编组 & 计算矢量的矢量积(结果仍为矢量)

[a,b,c]&[x,y,z]=[(bz)-(cy),(cx)-(az),(ay)-(bx)] 计算矢量的标量积(结果为实数)

[a,b,c][x,y,z]=ax+by+cz ,/ 矢量与实数相乘除

a[x,y,z]=[ax,ay,az] +,- 矢量与矢量(点)相加减

[a,b,c]+[x,y,z]=[a+x,b+y,c+z] 以下是矢量表达式的样例:

A+[1,2,3]表示距离A点[1,2,3]个单位的点。

表达式

[2<45<45]+[2<45<0]-[1.02,3.5,2]

将两个点相加,减去第三个点。前两个点用球坐标表示。在命令行中输入公式,可以快速解决数学问题或定位图形中的点。CAL命令运行AutoCAD三维计算器实用程序以计算矢量表达式(点、矢量和数值的组合)、实数和整数表达式。计算器执行标准数学功能。计算器还包含一组特殊的函数以计算点、矢量和AutoCAD几何图形。CAL命令,可以:

计算两点确定的矢量、矢量长度、法向矢量(垂直于XY平面)及直线上的点。

计算距离、半径或角度。

用定点设备指定点。

指定最后一点或最后一个交点。

将对象捕捉作为表达式中的变量。

在UCS和WCS之间转换点。

过滤矢量中的X、Y和Z分量

绕轴旋转一点。

计算表达式

CAL遵照标准数学计算的优先级规则计算表达式的值。

运算符 操作 (??) 将表达式编组 ^ 指示数的指数 ,/ 对数值进行乘和除运算 +,- 对数值进行加和减运算 计算点

计算点的步骤

无论何时,都可以在AutoCAD命令行使用CAL命令以计算点或数值。

例如,输入(mid+cen)/2可以指定直线中点和圆心的连线的中点。

下例使用CAL命令作为构造工具。首先定位新圆的圆心,然后计算现有圆半径的五分之一,将其作为新圆的半径。

以下是命令行序列:

角度的默认单位是十进制度数。请按以下格式输入角度:

度d分''秒"

当输入的角度小于1度(只有分和秒)时,必须输入0和d(0d)。可以省略零分和零秒。

要按弧度输入角度,请在输入的数字后面加上r。要按百分度输入角度,请在输入的数字后面加上g。

以下是各种角度输入法的样例:

124.6r

14g

5d10''20"

0d10''20"

不论以何种格式输入角度,AutoCAD都会将其转换成十进制角度的格式。

Pi弧度等于180度,100g等于90度。点和矢量都是两个或三个实数的组合。点用于定义空间中的位置,而矢量用于定义空间中的方向或平移。

有些CAL函数,例如pld和plt,返回点。另一些函数,例如nor和vec,返回矢量。

设置点和矢量的格式

点或矢量是三个实型表达式的集合,括在方括号([])中:[r1,r2,r3]

标记法p1和p2等用来标明点。标记法v1和v2等用来标明矢量。在图形中,点显示为圆点,矢量显示为带箭头的直线。

CAL支持所有AutoCAD格式表示的点。

点的格式 坐标系 点的格式 极轴 [距离<角度] 柱坐标 [距离<角度,z] 球坐标 [距离<角度1<角度2] 相对坐标 使用前缀@[@x,y,z] 世界坐标系(而不是用户坐标系) 使用前缀[x,y,z] 可以省略点或矢量的下列部件:为零的坐标值和右方括号(])前面的逗号。

下列点都是有效的点:

[1,2]等同于[1,2,0]

[,,3]等同于[0,0,3]

[]等同于[0,0,0]

下例中的点是按相对球坐标系(相对于世界坐标系)输入的。距离是1+2=3,角度是10+20=30度和45度,20分。

[@1+2<10+20<45d20"]

下例中的点包含作为其部件的算术表达式,也是有效的:

[2(1.0+3.3),0.4-1.1,21.4]

下例使用端点对象捕捉和矢量[2,0,3]计算一个偏离选定端点一定位移的点。

end+[2,,3]

计算得到的点相对选定的端点在X方向偏移两个单位,在Z方向偏移三个单位。可在算术表达式中使用AutoLISP变量。变量必须是下列类型之一:实数、整数、二维或三维点(矢量)。

本例定义了距离AutoLISP变量中所存储的A点在X方向偏移5个单位,在Y方向偏移1单位的点。

A+[5,1]

如果在CAL命令中输入的AutoLISP变量名称包含具有特殊意思的字符(例如+、-、或/),请将变量名称括在单引号('')中,例如:

''number-of-holes''

给AutoLISP变量赋值

要给AutoLISP变量赋值,请在算术表达式前面加上变量名和等号(=)。变量赋值后,可将变量的值用于其他计算。

本例将两个表达式的值保存在AutoLISP变量P1和R1中。

命令:cal

>>表达式:P1=cen+[1,0]

>>选择图元用于CEN捕捉:选择圆或圆弧

命令:cal

>>表达式:R1=dist(end,end)/3

>>选择图元用于END捕捉:?选择对象的端点

本例用到了变量P1和R1的值:

命令:circle

指定圆的圆心或[三点(3P)/两点(2P)/相切、相切、半径(T)]:''cal

>>表达式:P1+[0,1]

指定圆的半径或[直径(D)]<上一个>:''cal

>>表达式:R1+0.5可使用AutoLISP函数getvar读取AutoCAD系统变量的值。

语法为:

(getvar"variable_name")

下例使用getvar获得当前视口中视图的中心点。

(setqc(getvar"viewctr"))AutoLISP函数cvunit将数字或点从一种测量单位转换为另一种测量单位。关于可转换的测量单位列表,请参见Support/acad.unt文件。语法为:

cvunit(value,from_unit,to_unit)

下例将值1从英尺转换为厘米:

cvunit(1,inch,cm)CAL支持下表中的标准数值函数。

数值函数 函数 说明 sin(角度) 角度的正弦 cos(角度) 角度的余弦 tang(角度) 角度的正切 asin(实数) 数值的反正弦,数值必须在-1到1之间 acos(实数) 数值的反余弦,数值必须在-1到1之间 atan(实数) 数值的反正切 ln(实数) 数值的自然对数 log(实数) 以10为底的对数 exp(实数) 数值的自然指数 exp10(实数) 以10为底的指数 sqr(实数) 数值的平方 sqrt(实数) 数值的平方根,必须为非负数 abs(实数) 数值的绝对值 round(实数) 数值舍入到最接近的整数 trunc(实数) 数值的整数部分 r2d(角度) 将角度从弧度转换成度,例如,r2d(pi)可将常量pi转换成180度 d2r(角度) 将角度从度转换成弧度,例如,d2r(180)可将180度转换成弧度,且返回值为常量pi pi 常量pi 函数vec和vec1用于通过两点计算矢量。

vec(p1,p2)

计算从点p1到点p2的矢量。

vec1(p1,p2)

计算从点p1到点p2的单位矢量。

下例使用CAL命令移动选定对象三个单位(沿一个选定圆的圆心到另一个选定圆的圆心的方向):

命令:move

选择对象

指定基点或位移:''cal

>>表达式:3vec1(cen,cen)

选择图元用于CEN捕捉:指定圆或圆弧

指定位移的第二点或<使用第一点作为位移>:指定点或按ENTER键

下例阐明了矢量和点计算的含义。

矢量和点计算的样例 表达式 含义 vec(a,b) 确定从点a到点b的矢量平移。 vec1(a,b) 确定从点a到点b的单位矢量方向。 Lvec1(a,b) 确定长度L在从点a到点b方向上的矢量。 a+v 确定从点a平移矢量v后得到的点b。 a+[5<20] 确定从点a以20度角偏移5个单位后得到的点b。注意,[5<20]是以极坐标表示的矢量。 函数abs用于计算矢量长度。

abs(v)

计算矢量v的长度,结果为非负实数。

在球坐标(距离<角度<角度)中,距离即为矢量长度。

下例计算矢量[1,2,3]的长度:

abs([1,2,3])要使用定点设备输入点,请使用cur函数。AutoCAD会提示用户指定点并在表达式中使用指定点的坐标值。此点的坐标值以当前的UCS坐标表示。cur函数设置AutoCAD变量LASTPOINT的值。

下例将矢量[3.6,2.4,0](1.2[3,2]的结果)添加到选定点。此表达式产生偏移选定点的一个点。

cur+1.2[3,2]

在表达式中使用@字符可获得上一个点的坐标,如下例所示:

命令:line

指定第一点:''cal

>>表达式:cen+[0,1]

>>选择图元用于CEN捕捉:?选择圆或圆弧

指定下一点或[闭合(C)/放弃(U)]:''cal

>>表达式:@+3vec1(cen,cen)

直线的第一点自第一个选定圆的圆心在Y轴方向上偏移一个单位。直线的第二点距第一点三个单位。直线的方向是从第一个选定圆的圆心指向第二个选定圆的圆心。

可以使用AutoCAD“捕捉”模式作为算术表达式的一部分。AutoCAD提示用户选择对象并返回相应捕捉点的坐标。在算术表达式中使用“捕捉”模式大大简化了相对其他对象的坐标输入。

使用“捕捉”模式时,只需输入它的三字符名称。例如,使用“圆心捕捉”模式时,输入cen。CAL“捕捉”模式设置LASTPOINT系统变量的值。

CAL捕捉模式 缩写 “捕捉”模式 END ENDPOINT 捕捉对象(如圆弧或直线等)的端点 INS INSERT 捕捉块、形、文字、属性或属性定义等对象的插入点 INT INTERSECTION 捕捉两个对象的交点 MID MIDPOINT 捕捉对象的中间点(等分点) CEN CENTER 捕捉圆或圆弧的圆心 NEA NEAREST 捕捉对象上距指定点最近的一点 NOD NODE 捕捉点对象 QUA QUADRANT 捕捉圆或圆弧上的象限点。象限点是圆上在0°、90°、180°和270°方向上的点。 PER PERPENDICULAR 捕捉某指定点到另一个对象的垂点 TAN TANGENT 捕捉对象之间相切的点

在命令行中输入相应对象捕捉选项的缩写

在命令提示要定位一个点坐标时,我们可以通过输入对象捕捉选项或参数称缩写来临时调用某个捕捉选项,其参数及缩写如下:

Endpoint(端点):缩写为“END”,用来捕捉对象(如圆弧或直线等)的端点。

Midpoint(中点):缩写为“MID”,用来捕捉对象的中间点(等分点)。

Intersection(交点):缩写为“INT”,用来捕捉两个对象的交点。

ApparentIntersect(外观交点):缩写为“APP”,用来捕捉两个对象延长或投影后的交点。即两个对象没有直接相交时,系统可自动计算其延长后的交点,或者空间异面直线在投影方向上的交点。

Extension(延伸):缩写为“EXT”,用来捕捉某个对象及其延长路径上的一点。在这种捕捉方式下,将光标移到某条直线或圆弧上时,将沿直线或圆弧路径方向上显示一条虚线,用户可在此虚线上选择一点。

Center(圆心):缩写为“CEN”,用于捕捉圆或圆弧的圆心。

Quadrant(象限点):缩写为“QUA”,用于捕捉圆或圆弧上的象限点。象限点是圆上在0°、90°、180°和270°方向上的点。

Tangent(切点):缩写为“TAN”,用于捕捉对象之间相切的点。

Perpendicular(垂足):缩写为“PER”,用于捕捉某指定点到另一个对象的垂点。

Parallel(平行):缩写为“PAR”,用于捕捉与指定直线平行方向上的一点。创建直线并确定第一个端点后,可在此捕捉方式下将光标移到一条已有的直线对象上,该对象上将显示平行捕捉标记,然后移动光标到指定位置,屏幕上将显示一条与原直线相平行的虚线,用户可在此虚线上选择一点。

Node(节点):缩写为“NOD”,用于捕捉点对象。

Insert(插入点):缩写为“INS”,捕捉到块、形、文字、属性或属性定义等对象的插入点。

Nearest(最近点):缩写为“NEA”,用于捕捉对象上距指定点最近的一点。

None(无):缩写为“NON”,不使用对象捕捉。

From(捕捉自):缩写为“FRO”,可与其他捕捉方式配合使用,用于指定捕捉的基点。

Temporarytrackpoint(临时追踪点):缩写为“TT”,可通过指定的基点进行极轴追踪。

两点的中点:缩写为“MTP”“M2P”,可以捕捉两个点的中点。

追踪(Tracking):缩写“TK”,可以捕捉一个基点,然后设置偏移的方向和距离,捕捉距离某一点特定距离的某个点。(这个选项是工具栏、右键菜单中没有的,只能通过输入参数来调用。)更多cad技巧、知识在经验下方的《AutoCAD视频教程全集》里。

下例的CAL表达式中使用了“圆心捕捉”和“端点捕捉”模式:

(cen+end)/2

CAL命令提示选择圆(或圆弧)和对象。然后确定圆或圆弧的中心到选定对象端点的中点。

在下例中,使用“中点捕捉”模式时,CAL命令提示选择一个对象,然后自选定对象的中点沿Y方向偏移一个单位处返回一个点。

mid+[,1]

下例中使用的是“端点捕捉”模式,计算三个端点定义的三角形的质心:

(end+end+end)/3

通常,AutoCAD假定所有坐标值都是相对于当前UCS的。可以使用下列函数在UCS和WCS之间转换点的坐标值。

w2u(p1)

将以WCS表示的点p1转换到当前UCS中。

u2w(p1)

将以当前UCS表示的点p1转换到WCS中。

可使用w2u查找用当前的UCS表示的WCS的原点:

w2u([0,0,0])

过滤点或矢量的X、Y、Z分量

下列函数用于过滤点或矢量的X、Y、Z分量:

点过滤函数 函数 说明 xyof(p1) 点的X和Y分量;Z分量设置为0.0 xyof(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分量 下例提供了一个以球坐标表示的点的Z分量:

zof([2<45<45])

下例提供了一点,其X和Y坐标值取自点a,而Z坐标值取自点b:

xyof(a)+zof(b)

plt和pld函数在给定的直线上返回一点。点在直线上的位置可以通过它与第一点之间的距离dist指定,也可以通过参数t参数化确定。

pld(p1,p2,dist)

计算通过点p1和p2的直线上的一个点。参数dist定义该点到点p1的距离。

plt(p1,p2,t)

计算通过点p1和p2的直线上的一个点。参数t定义该点在直线上的以参数表示的位置。

以下是参数t的样例:

如果t=0,则所求点为p1如果t=0.5,则所求点是p1和p2之间的中点如果t=1,则所求点为p2

p1、点p2在表达式中,是输入对象捕捉选项缩写,以便通过捕捉模式捕捉获取其坐标值。

绕坐标轴旋转点

rot函数绕坐标轴旋转点并返回旋转得到的点。

rot(p,origin,ang)

以经过点origin的Z轴为轴旋转点p,转角为ang,如下例所示:







rot(p,AxP1,AxP2,ang)

以经过点AxP1和点AxP2的直线为轴旋转点p,转角为ang,如下例所示。轴的方向为从第一个点到第二个点。

ill和ilp函数可以确定交点。

ill(p1,p2,p3,p4)

确定两条直线(p1、p2)和(p3、p4)的交点。AutoCAD将所有点都视为三维点。

ilp(p1,p2,p3,p4,p5)

确定直线(通过p1、p2)和平面(通过三点p3、p4、p5)的交点。

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(p1,p2)

确定点p1和p2之间的距离。此函数相当于矢量表达式abs(p1-p2)。下例返回两个选定对象的中心之间距离的一半:

dist(cen,cen)/2

下例确定了点[3,2,4]与由三个选定端点定义的平面之间的距离:

dpp([3,2,4],end,end,end)

rad函数可以确定选定对象的半径。

rad

确定选定对象的半径。对象可以是圆、圆弧或二维多段线的弧线段。

下例与CIRCLE命令一起使用rad函数。新圆半径是选定多段线圆弧段半径的三分之二:



命令:circle

指定圆的圆心或[三点(3P)/两点(2P)/相切、相切、半径(T)]:cen

选择该圆

指定圆的半径或[直径(D)]<上一个>:''cal

>>表达式:2/3rad

>>给函数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平面上。

ang(apex,p1,p2,p)

确定直线(apex,p1)和(apex,p2)的夹角。直线被认为是三维的。最后一个参数(点p)用来定义角度的方向。此角度以顶点到点p的直线为轴按逆时针方向测量。

下图示意了如何测量角度。

可以用ang函数确定三角形两边之间的夹角,如下例所示:

命令:’cal

>>表达式:ang(end,end,end)

选定角的顶点,然后选择另外两个端点。

nor函数用于计算单位法向矢量(即与直线或平面垂直的矢量),而不是某个点。矢量定义法线的方向而不是空间中的位置。可将法向矢量加到一个点上以获得另一个点。

nor

确定选定的圆、圆弧或多段线弧段的三维单位法向矢量。此法向矢量是选定对象的对象坐标系(OCS)的Z轴。

nor(v)

确定矢量v的二维单位法向矢量。这两个矢量都被认为是二维的,且投影在当前UCS的XY平面上。得出的法向矢量的方向指向原矢量v的左边。

nor(p1,p2)

确定直线p1,p2的二维单位法向矢量。该直线的方向为从p1指向p2。得出的法向矢量的方向为指向原直线(p1、p2)的左边。

nor(p1,p2,p3)

确定平面(由p1、p2和p3三点定义)的三维单位法向矢量。法向矢量的方向与给定三点的逆时针方向垂直。

下图示意了如何计算法向矢量:



下例设置的视图方向垂直于选定对象。AutoCAD在平面视图中显示对象,对象不会因平行投影而变形。

命令:??vpoint

当前视图方向:??VIEWDIR=当前

指定视点或[旋转(R)]<显示坐标球和三轴架>:?''cal

>>表达式:?nor

>>给函数NOR选择圆、圆弧或多段线:

下列函数是一些常用表达式的缩写形式。这些函数通过一些先前定义的函数与“端点捕捉”模式一起使用。







快捷函数 函数 说明 dee dist(end,end) 两端点之间的距离 ille ill(end,end,end,end) 四个端点确定的两条直线的交点 mee (end+end)/2 两端点的中点 nee nor(end,end) XY平面内的单位矢量,与两个端点连线垂直 vee vec(end,end) 两个端点所确定的矢量 vee1 vec1(end,end) 两个端点所确定的单位矢量





6











6









献花(0)
+1
(本文系森林草6首藏)