QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
1天前
查看: 1605|回复: 4
收起左侧

[分享] 巧妙运用AutoCAD中的cal函数

[复制链接]
发表于 2007-5-6 21:16:03 | 显示全部楼层 |阅读模式 来自: 中国河南焦作

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
巧妙运用AutoCAD中的cal函数+ R7 M/ o1 b% x! m# ^
AutoCAD作为一个专业绘图软件在机械、电子、建筑及航空等领域得到了广泛的应用,但是大多数AutoCAD的使用者只知道AutoCAD具有强大的绘图功能,却很少有人注意到AutoCAD中的一个非常有用的命令:几何计算器cal。和普通的计算器一样,cal几何计算器可以完成加、减、乘、除运算以及三角函数的运算。这使得用户在使用AutoCAD绘图过程中,可以在不中断命令的情况下用计算机进行算术运算,AutoCAD则将运算的结果直接作为命令的参数使用。 * s0 F' r& W1 U# W) V8 I/ |
但重要的是,与一般的计算器不同,AutoCAD几何计算器可以作几何运算。它可以作坐标点和坐标点之间的加减运算,可以使用AutoCAD的OSNAP模式捕捉屏幕上的坐标点参与运算,还可以自动计算几何坐标点。如计算两条相交直线的交点,计算直线上的等分点等。此外,AutoCAD几何计算器还具有计算矢量和法线的功能。 - }0 X1 T' X4 M, G( T7 H
一、Cal函数的408.0342运用 ! `, X6 V7 n" n% S
在AutoCAD中,cal命令类似于一个普通的计算器,可以用来计算与加、减、乘、除等有关的标准数学表达式,并遵从运算表达式的标准数学运算次序。而且,cal命令还是一个透明名令,可以用来提供一个点或一个数。当我们透明执行该命令时,其计算结果被解释为AutoCAD命令的一个输入值。下面是透明执行计算器功能的一个实例。
0 d) H) R/ r# A. V5 I4 ^0 m以(200,200)为圆心绘制半径为[(425-260)*(1/3)+sin(45)]的圆。
8 C9 F% v4 W3 }(1)在命令行输入:C,并按ENTER键; + C5 }* o( @) b% A6 F0 l! }, o
(2)命令行提示: “指定圆的圆心或[三点(3P)/两点(2P)/相切、相切、半径(T)]:”,输入(100,100)并按ENTER键;
* `. ?/ `$ e1 i  X(3)命令行提示:“指定圆的半径或直径:”,此时输入:“cal”,并按ENTER键,然后输入表达式:(425-260)*(1/3)+sin(45)并按ENTER键;
) z' p4 N& ?6 d(4)命令行显示:41.9571。即AutoCAD以表达式的值41.9571为圆的半径绘制了一个圆。
/ [8 O$ C* B: l  f二、Cal函数在找点中的运用
, ^9 \9 u1 p7 D在使用AutoCAD绘图中,常常需要确定一些无法直接给出坐标的点。例如,任意两点间的中点,和任意方向直线相切的圆的圆心,以及直线上任意等分点等。这里可以充分利用AutoCAD的cal函数的几何运算功能,在AutoCAD绘图中实现这些点的快速定位。 9 C* c" k  ]. ?& `( N8 [8 P
下面是利用AutoCAD的cal函数的几何运算功能实现在AutoCAD绘图中经常遇到的一个快速定位的实例。 # d1 t; X5 N6 S
例如,要从一个圆心距一直线的端点之间的2/3处为起点画一直线。操作过程如下:
3 a( k3 l" {4 H9 ?- _; y  [1 iCommand: line From point: 'cal (起动几何计算器) ' b  x& f# u" Y7 F! ~% y6 i9 B7 [, T
Expression: plt(cen,end,2/3)(输入表达式,这里计算器把OSNAP的cen和end模式当作点坐标的临时存储单元)
6 _# ]' r+ S5 I7 M, ZSelect entity for CEN sanp用光标捕捉圆心)
% g/ I8 t# x; D2 V" H' wSelect entity for END snap:(用光标捕捉直线的端点)
  S. G! u0 f2 w. E  STo point: 2 x! K; L1 y8 H
其他的目标捕捉模式,如int、ins及tan等均可在几何计算表达式中使用。
. I: a0 {' O4 }- L三、Cal函数在AutoLISP中的运用 6 [9 Q: s1 \: ]" s% y0 ?; ~8 g  c! w
一些AutoCAD的高级用户经常运用AutoLISP对AutoCAD进行二次开发,但是AutoLISP所自带的函数运算式的表达方法与我们通用的函数运算式的表达方法不一样,这就给开发过程带来了一定的麻烦。大家都知道,AutoCAD R12及以上版本均内含了一个功能强大的几何计算器cal,它提供了各种常用的函数功能。
9 a1 e7 j" O" `% t但是很少有资料提及的是:几何计算器cal可以作为一个函数直接在AutoLISP中调用,除此之外,它还能接受AutoLISP变量进行运算。 2 ?& G# F# I& f
这里以绘制一个y=2x-100sin(x)的函数曲线为例,给出cal函数在AutoLISP中的应用。函数曲线绘制程序如下: 6 E0 M& r$ i, ^" F
(defun Psin(d) ;其中d是函数的步长 0 H0 A; e8 }' H6 K+ i! u( M, l7 M
(setq i 0) ; u. B& g1 ?4 D8 v/ n
(setq e 360) , I8 Y) N, F0 U# U  Y! W
(setq x i) + J& e* r! k% S/ H- x9 ~% j
(setq y (cal "2*x-100*sin(x)")
* T8 P2 a! {( D, A: Y(setq p1 (list x y)) & `, \$ t) i7 G2 J, ~
(while (< i e) ! n' @5 R. c' _7 k) c- |  {
(setq i (+ i d))
3 K5 F0 m- S' {2 W* ](setq x i) - }- K. B: M0 x% J, ]) t
(setq y (cal "2*x-100*sin(x)")) , u. s( T) [/ |3 Z5 s' x
(setq p2 (list x y))
) `, b; h# s/ s0 o8 |(command "_line" p1 p2 "") - F3 t  s& T$ T) j$ U0 M
(setq p1 p2) ! ^: c1 Z, Y' {1 E/ M
) 6 a) Q: X& y0 P$ L( e. V& @- j
)
9 q1 B4 V. H" C9 h/ p从上面的例子可以看出,由于使用了cal函数,AutoLISP程序中的函数表达式变得方便简捷,尤其是可以采用这个方法编制通用函数曲线输入绘制程序,以弥补AutoCAD没有函数曲线绘制命令的缺陷。但是在使用过程中要注意这两种函数的表达方法所使用的单位并不完全一致,在AutoLISP中角度使用的是弧度,而利用cal函数时使用的角度单位与AutoCAD中的默认单位一致。
. J' o; Z9 I. f+ d. ~四、小结 . ], ~) m+ f" N0 X( `. z3 R
灵活运用AutoCAD自带的功能强大的cal几何计算器,不但可以执行标准数学功能,而且可以计算点、矢量表达式以及实数和整数表达式,还可将AutoLISP变量插入算术表达式并返回表达式的值,以给AutoLISP变量赋值。无论是初级使用者还是运用AutoLISP进行二次开发的高级用户,在AutoCAD的使用中巧妙地运用cal函数都可以收到事半功倍的效果。
& H5 ^& ?1 a8 ]. s  E0 x! v5 X8 W9 V  V, Y& C$ s5 Z
我给大家做个示例:沿路径拉伸圆。大R60 、小R40 # L( }5 z8 C7 L2 g0 k# x
示例.JPG

示例.rar

363.68 KB, 下载次数: 31

 楼主| 发表于 2007-5-6 21:19:51 | 显示全部楼层 来自: 中国河南焦作
不好意思,刚题目有误。应该是大圆直径60,小圆直径40。
发表于 2007-5-9 14:25:16 | 显示全部楼层 来自: 中国黑龙江齐齐哈尔
我们刚刚开始CAD,想不到还能这么画,真奇妙^^
发表于 2007-5-9 14:56:58 | 显示全部楼层 来自: 中国四川成都

楼主说得好,这就是个例子

http://www.3dportal.cn/discuz/viewthread.php?tid=250487
! W- h6 s' w7 n/ L以上论题所用原理正如楼主所述
发表于 2007-5-15 08:47:48 | 显示全部楼层 来自: 中国天津
收下了,呵呵,善于发现问题,有一个好奇心还是很重要的
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表