明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1336|回复: 5

(x^ a n) = 求a的n次方

[复制链接]
发表于 2007-2-19 03:14 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-2-19 3:14:46 编辑

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2007-2-19 08:47 | 显示全部楼层
(EXP (* n (LOG a)))
发表于 2007-2-20 10:39 | 显示全部楼层
本帖最后由 作者 于 2007-2-20 11:51:10 编辑

呵呵,还能这么求呀!vla-eval函数真是强大呀!!!!!
由此可得扩展到对基本的算术表达式求值呀:
  1. (defun op (a)
  2.   (vla-eval (vlax-get-acad-object)
  3.         (strcat "ThisDrawing.SetVariable "users1",cstr("a")")
  4.   )
  5.   (read (getvar "users1"))
  6. )
算例:
  1. _$ (op "2+3-3*5")
  2. -10
  3. _$
复制代码
发表于 2007-2-20 12:58 | 显示全部楼层
本帖最后由 作者 于 2007-2-20 14:13:19 编辑

好思路,感谢无痕和NetBee又为我们提供了一种方法。
---这样的话cal函数(自己定义的cal函数)就可以计算弧度值了,而不是默认的角度值。
  1. (defun fun (a x / a)
  2.   (while (Wcmatch a "*x*")
  3.     (setq a (vl-string-subst (rtos x 2 20) "x" a))
  4.   )
  5.   (vla-eval
  6.     (vlax-get-acad-object)
  7.     (strcat "ThisDrawing.SetVariable "users1",cstr(" a ")"))
  8.   (read (getvar "users1"))
  9. )
例如fun(x^2-3*x+2  1)返回值为0;

发表于 2007-2-24 10:30 | 显示全部楼层
好帖子,顶。
发表于 2007-2-25 12:39 | 显示全部楼层

(read (getvar "users1"))

建议把这句改为 (atof (getvar "users1"))

因为这个程序是通过VBA来解释表达式的。请看下面的区别:

(read "-.123") 结果为:-

(read ".123")  结果为 .

这显然不是我们需要的,如果放到lisp程序中,就可能出错。

而改为:

(atof "-.123") 结果为:-0.123

(atof ".123") 结果为:0.123

显然这样做更合理。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-22 06:00 , Processed in 0.238229 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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