明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: fjmnch

求各路高手帮小弟学一个计算式程序

  [复制链接]
发表于 2007-7-26 13:41:00 | 显示全部楼层
本帖最后由 作者 于 2007-7-26 13:59:31 编辑

没注意看你的test的计数器.你的结果没错,我的结果也没错.是我看错了

我是从1开始算.你是从0开始.

计算机计数是从0开始---没有这个规定. 只是lisp的函数大多从0开始计数.但是也不是绝对.

比如 sslength ,strlen就是从1开始算的. nth 是从0开始算.

至于

自定义函数套用到字符串表达式里面,及其它和cad或lisp的交互不是vb or c 的优势,前面已经说过,vb c 只管计算就好了.

特点就是两个:

1.可以不必转换格式

2.可以直接套用vb的数学函数,比lisp提供的丰富.

至于计算方程式,vb只能比lisp更强. 曾有个笑话.说比尔windows系统核心都是用vb写的,虽然我也不信,但至少说明vb能做不少的事.

比如解n元方程,网上都有不少的vb实例,但是用lisp写,恐怕很困难(我没试过,也不说绝对不行).

最后,我的观点:

1. .按1楼楼主的要求,用vb(或lisp调用vb)很容易实现.

2. vb或其它语言比lisp在大量运算上有优势,就看你怎么利用.

3. 条条大路通罗马,并不是说lisp就不行.(其实我lisp倒是写过不少,而vb不过是门外汉).lisp有它的优势,vb也有它的优势.合理地利用才能有利于提高工作效率.

这次我也是提供了另外一种思路而已.大家讨论讨论,没别的意思,不要搞的太紧张.hehe

发表于 2007-7-26 14:07:00 | 显示全部楼层
本帖最后由 作者 于 2007-7-26 14:13:46 编辑

另外,对1楼楼主的要求,再提供一种方法.用vbs.不知道算不算简单明了.大家一起探讨.

(setq wcs (vla-GetInterfaceObject (vlax-get-acad-object) "ScriptControl"))
(vlax-put-property wcs "language" "vbs")
(vla-eval wcs "1+4+5*2+(5+5)/2+((6+6)/2+(5+5)/2)")  ;返回 ->31.0

发表于 2007-7-30 11:39:00 | 显示全部楼层
13楼的代码 ,在测试中发现有误:
  1.     _$ (TRANS_FORMAT "-7*(-1-4+8)")
  2.     (- nil (* 7.0 (+ (- -1.0 4.0) 8.0)))
  3.     _$ (TRANS_FORMAT "-7*(-1-4+8)")
  4.     (- nil (* 7.0 (+ (- -1.0 4.0) 8.0)))
  5.     _$ (TRANS_FORMAT "-7-(-1-4+8)")
  6.     (- (- nil 7.0) (+ (- -1.0 4.0) 8.0))
  7.     _$
复制代码
发表于 2007-7-31 04:19:00 | 显示全部楼层
  1. (defun tt (str)
  2.   (setq wcs (vla-GetInterfaceObject (vlax-get-acad-object)
  3.         "ScriptControl"
  4.      )
  5.   )
  6.   (vlax-put-property wcs "language" "vbs")
  7.   (vla-eval wcs str)
  8. )
(tt "-7*(-1-4+8)") ;返回: -21

发表于 2008-8-7 12:27:00 | 显示全部楼层

回23楼zml84

呵呵以前忘了看这个贴子,现在看到了~的确是这样的呢~

解决方法为:在第一个子函数format1前加上一行代码:(setq lastfun "(")

结果如下:

(defun format1 (str / char funs lastfun lst tmp lastchar)
  (setq lastfun "(") ....

后面的都不动...

现在可以测试:
(trans_format "-7*(-1-4+8)")=>(* -7.0 (+ (- -1.0 4.0) 8.0))
(eval (trans_format "-7*(-1-4+8)"))=>-21.0

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

本版积分规则

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

GMT+8, 2025-5-20 00:04 , Processed in 0.160396 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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