找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1165|回复: 7

[研讨] 关于数学表达式求值

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2017-5-1 21:34:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
字符串的表达式,比如:"1+2*3+sin(PI / 4.0)", 求值这个字符串,有什么好的写法?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 859个

财富等级: 财运亨通

发表于 2017-5-1 22:14:24 来自手机 | 显示全部楼层
c:cal               
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-5-2 08:49:53 | 显示全部楼层
下面代码可以做,但限制是只能做32位的CAD下

  1. (defun evalExpress ( expr / scr res )
  2.   (if (setq scr (vla-getinterfaceobject (vlax-get-acad-object) "ScriptControl"))
  3.       (progn
  4.           (vl-catch-all-apply 'vlax-put-property (list scr 'language "VBScript"))
  5.           (setq res (vl-catch-all-apply 'vlax-invoke (list scr 'eval expr)))
  6.           (vlax-release-object scr)
  7.           (if (not (vl-catch-all-error-p res)) res)
  8.       )
  9.   )
  10. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-5-2 10:15:05 | 显示全部楼层
下面代码 32位 ,64位都可以用

  1. (defun XD::Math:Calc (str / html ret)
  2.   (vl-catch-all-apply
  3.     (function
  4.       (lambda ()
  5.         (setq html (vlax-get-or-create-object "htmlfile"))
  6.         (vlax-invoke
  7.           html
  8.           'write
  9.           (strcat ".<script>document.body.innerHTML=eval('" str "')</script>")
  10.         )
  11.         (setq ret (read (vlax-get (vlax-get html 'body) 'innerhtml)))
  12.       )
  13.     )
  14.   )
  15.   (if html (vlax-release-object html))
  16.   (if (numberp ret) ret)
  17. )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2017-5-2 10:30:04 | 显示全部楼层
实用的话,还是使用cal简单一些,其它代码也是借用其它语言,受系统环境影响,不如使用acad自带的geomcal更保险。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2017-5-2 10:35:26 | 显示全部楼层

C:CAL 要加载什么才有吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

 楼主| 发表于 2017-5-2 10:36:25 | 显示全部楼层

测试了,普通的加减乘除没问题,sin不支持?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2017-5-2 11:40:22 | 显示全部楼层

角度的默认单位是十进制度数。请按以下格式输入角度:
<度>d<分>'<秒>
当输入的角度小于 1 度时(只有分和秒),必须输入 0d。可以省略零分和零秒。
要按弧度输入角度,请在输入的数字后面加上 r。要按百分度输入角度,请在输入的数字后面加上 g
以下是各种角度输入法的样例:
5d10'20"
0d10'20"
124.6r
14g
以任何格式输入的角度都会转换成十进制角度。
Pi 弧度等于 180 度,100g 等于 90 度。

命令: (c:cal "sin(30d)")
0.5
命令: (c:cal "sin(1.0r)")
0.841471


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-19 04:44 , Processed in 0.320505 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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