巧妙运用AutoCAD中的cal函数
8 H3 X! [) q) U! w0 v8 l" Y' { O0 A7 e& G7 Y/ k$ [ g- m
9 _, r) ]% d$ r. d
3 e# Y# Z$ x% _* T4 f+ f AutoCAD作为一个专业绘图软件在机械、电子、建筑及航空等领域得到了广泛的应用,但是大多数AutoCAD的使用者只知道AutoCAD具有强大的 绘图功能,却很少有人注意到AutoCAD中的一个非常有用的命令:几何计算器cal。和普通的计算器一样,cal几何计算器可以完成加、减、乘、除运算 以及三角函数的运算。这使得用户在使用AutoCAD绘图过程中,可以在不中断命令的情况下用计算机进行算术运算,AutoCAD则将运算的结果直接作为 命令的参数使用。$ x1 ~* N. K/ J8 i: d7 f
: ~) a6 }+ l X 但重要的是,与一般的计算器不同,AutoCAD几何计算器可以作几何运算。它可以作坐标点和坐标点之间的加减运算,可以使用AutoCAD的OSNAP 模式捕捉屏幕上的坐标点参与运算,还可以自动计算几何坐标点。如计算两条相交直线的交点,计算直线上的等分点等。此外,AutoCAD几何计算器还具有计 算矢量和法线的功能。( }& @+ m2 w; j, h2 z
7 s w" @4 h# k, p# k! J- K
一、Cal函数的计算功能运用
8 X. Q; G! v/ p: F8 `4 O/ l
0 g: x" Q2 q" H+ c$ j/ ] 在AutoCAD中,cal命令类似于一个普通的计算器,可以用来计算与加、减、乘、除等有关的标准数学表达式,并遵从运算表达式的标准数学运算次序。而 且,cal命令还是一个透明名令,可以用来提供一个点或一个数。当我们透明执行该命令时,其计算结果被解释为AutoCAD命令的一个输入值。下面是透明 执行计算器功能的一个实例。7 [' {$ ]" H! M. h
! M6 n* i, A& q X* D& S
以(200,200)为圆心绘制半径为[(425-260)*(1/3)+sin(45)]的圆。9 _4 u: O% E+ B: b7 ]
. l$ y# `; i; _9 w+ ~
(1)在命令行输入:C,并按ENTER键;
/ a1 j$ ~) d: [4 B# n, ^8 m# l d! I* E% ~
(2)命令行提示: “指定圆的圆心或[三点(3P)/两点(2P)/相切、相切、半径(T)]:”,输入(100,100)并按ENTER键;
9 r7 ?+ o. c9 u
9 s. G k4 ~3 ?& O(3)命令行提示:“指定圆的半径或直径:”,此时输入:“cal”,并按ENTER键,然后输入表达式:( B+ q" s+ m. l. g
(425-260)*(1/3)+sin(45)并按ENTER键;! }. J1 N+ x/ d' v
! m4 J# a- a3 w
(4)命令行显示:41.9571。即AutoCAD以表达式的值41.9571为圆的半径绘制了一个圆。& |! `8 |! q3 w% T, i4 p+ Q l3 I
) y8 Y& d" Y! u' J# a) W
二、Cal函数在找点中的运用
* j3 k4 c2 A* ?; K
4 [' x W& [. a 在使用AutoCAD绘图中,常常需要确定一些无法直接给出坐标的点。例如,任意两点间的中点,和任意方向直线相切的圆的圆心,以及直线上任意等分点等。这里可以充分利用AutoCAD的cal函数的几何运算功能,在AutoCAD绘图中实现这些点的快速定位。% t5 l, N& ]' K9 c3 r9 X
5 w$ C2 a# `. R) g/ i; l7 `下面是利用AutoCAD的cal函数的几何运算功能实现在AutoCAD绘图中经常遇到的一个快速定位的实例。
3 m) F6 [/ v; l/ z
0 c ~& B, _& g6 f- R' j& w例如,要从一个圆心距一直线的端点之间的2/3处为起点画一直线。操作过程如下:0 D4 E: H) [6 S( F
' ~( g$ B- ~/ ^/ ]; {2 r
Command: line From point: 'cal (起动几何计算器)+ N% I2 E- h& u) w& y( ~
Expression: plt(cen,end,2/3)(输入表达式,这里计算器把OSNAP的cen和end模式当作点坐标的临时存储单元)
# c7 @- T# m( d+ }7 \+ ASelect entity for CEN sanp 用光标捕捉圆心)& Y$ ?6 b3 h% k( L# R5 _; ^4 U/ Y
Select entity for END snap 用光标捕捉直线的端点)
- ], N" k4 F$ U U, v1 Y3 i# [8 b- C3 eTo point:5 O! H& x+ g9 q. V% W; B% i; K2 N
+ b. Y- [* @' ?5 l5 t. w其他的目标捕捉模式,如int、ins及tan等均可在几何计算表达式中使用。9 ?: N% [" E5 R9 r$ L" `
, e: l9 o3 a. r/ B+ ?/ S% x5 T三、Cal函数在AutoLISP中的运用5 }5 n# E( P3 r8 O( j
- K, E! h) j* e7 _, a
一些AutoCAD的高级用户经常运用AutoLISP对AutoCAD进行二次开发,但是AutoLISP所自带的函数运算式的表达方法与我们通用的函数运算式的表达方法不一样,这就给开发过程带来了一定的麻烦。大家都知道,AutoCAD R12及以上版本均内含了一个功能强大的几何计算器cal,它提供了各种常用的函数功能。
' [5 T1 f! }7 K3 ^( V
K9 x5 ~ E4 k但是很少有资料提及的是:几何计算器cal可以作为一个函数直接在AutoLISP中调用,除此之外,它还能接受AutoLISP变量进行运算。! H# M( P. \: Z/ q: U) Q% A! a
0 G& ?6 T2 a4 I& h3 u4 |" S) |( }
这里以绘制一个y=2x-100sin(x)的函数曲线为例,给出cal函数在AutoLISP中的应用。函数曲线绘制程序如下:
+ J7 i( F7 n, G; r# Y- P% C2 O
0 t- j6 n2 S& p/ t5 Q(defun Psin(d) ;其中d是函数的步长
) ^: U. t& O1 H ?1 k8 r(setq i 0)) |( a8 o; t" v, q, C
(setq e 360)
. p) Z2 T% L) u/ Z(setq x i): j3 [. T s$ M' ?
(setq y (cal "2*x-100*sin(x)"))
4 @2 U/ l5 K8 W1 c) h(setq p1 (list x y))
% |* k6 m, W* {3 [( M4 S7 N(while (< i e)
" U* f5 B: j$ n' ]! N, b5 w* ^8 n(setq i (+ i d))
% N- n4 X( L( P; N8 w(setq x i)
* n2 T/ ~) `+ f3 S/ e* O(setq y (cal "2*x-100*sin(x)")) W9 t3 y5 d q8 W0 I' P' d5 H
(setq p2 (list x y))
; a* D" N- G: A6 m1 E2 D* o' w(command "_line" p1 p2 "")* W! r2 `' Q5 H0 q$ q
(setq p1 p2)! w3 i4 W, ]* N- a0 M' K
)) O! Z3 Z- h/ h; o
)
0 a, z, r' q2 X
7 [& A* j( p# J从上面的例子可以看出,由于使用了cal函数,AutoLISP程序中的函数表达式变得方便简捷,尤其是可以采用这个方法编制通用函数曲线输入绘制程序, 以弥补AutoCAD没有函数曲线绘制命令的缺陷。但是在使用过程中要注意这两种函数的表达方法所使用的单位并不完全一致,在AutoLISP中角度使用 的是弧度,而利用cal函数时使用的角度单位与AutoCAD中的默认单位一致。8 k0 v7 B9 n$ S3 N/ v# O0 s& E
( ?' `1 ?2 y& E2 {# _7 A4 v5 n- l3 n四、小结
& w/ p0 N0 l- {5 W) L, ?* g* e/ I# T: J. Y, z Z! N
灵活运用AutoCAD自带的功能强大的cal几何计算器,不但可以执行标准数学功能,而且可以计算点、矢量表达式以及实数和整数表达式,还可将 AutoLISP变量插入算术表达式并返回表达式的值,以给AutoLISP变量赋值。无论是初级使用者还是运用AutoLISP进行二次开发的高级用 户,在AutoCAD的使用中巧妙地运用cal函数都可以收到事半功倍的效果 |