找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2012|回复: 15

[求助] 关于vla-eval

[复制链接]

已领礼包: 924个

财富等级: 财运亨通

发表于 2014-10-9 09:21:13 来自手机 | 显示全部楼层 |阅读模式

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

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

×
哪位大神能告诉我怎么样才能把这个里面的表达式的结果传出来(vla-eval (vlax-get-acad-object) "s=9*8")比如说传给其他自变量a,让a的值等于S
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-10-9 12:04:25 | 显示全部楼层
txc6853234 发表于 2014-10-9 10:47
谢谢大神!我的问题的纠结点在于怎么样去求出字符串形式的数学运算的值!也就是说数学运算是以字符串形式 ...

用下面函数

  1. (defun XD::EvalVBExpression (expr / scr res)
  2.   (setq res (vl-catch-all-apply (function (lambda nil
  3.                                             (setq scr
  4.                                                   (vla-getinterfaceobject
  5.                                                                           (vlax-get-acad-object) "ScriptControl"
  6.                                                   )
  7.                                             )
  8.                                             (vlax-put-property scr 'language
  9.                                                                "VBScript"
  10.                                             )
  11.                                             (vlax-invoke scr 'eval expr)
  12.                                           )
  13.                                 )
  14.             )
  15.   )
  16.   (if scr
  17.     (vlax-release-object scr)
  18.   )
  19.   (if (not (vl-catch-all-error-p res))
  20.     res
  21.   )
  22. )



命令: (XD::EVALVBEXPRESSION "5*6-3")
27

点评

这个很高大上的,没有看懂  发表于 2014-10-30 17:46
大神厉害啊!谢谢不吝赐教!!!  详情 回复 发表于 2014-10-9 14:43

评分

参与人数 2D豆 +10 贡献 +1 收起 理由
czx663 + 5
xshrimp + 5 + 1 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-10-9 09:52:41 来自手机 | 显示全部楼层
走偏锋,用usexx1-5变量保存

c:cal 也可以计算
(setq a ( * 8 9))也可以

点评

谢谢大神!我的问题的纠结点在于怎么样去求出字符串形式的数学运算的值!也就是说数学运算是以字符串形式存在,而我要求出数学运算的值!例如(“8*9”)有什么办法能计算出来!  详情 回复 发表于 2014-10-9 10:47
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 924个

财富等级: 财运亨通

 楼主| 发表于 2014-10-9 10:47:45 来自手机 | 显示全部楼层
st788796 发表于 2014-10-9 09:52
走偏锋,用usexx1-5变量保存

c:cal 也可以计算

谢谢大神!我的问题的纠结点在于怎么样去求出字符串形式的数学运算的值!也就是说数学运算是以字符串形式存在,而我要求出数学运算的值!例如(“8*9”)有什么办法能计算出来!

点评

用下面函数 命令: (XD::EVALVBEXPRESSION "5*6-3") 27  详情 回复 发表于 2014-10-9 12:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5589个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 924个

财富等级: 财运亨通

 楼主| 发表于 2014-10-9 14:43:36 | 显示全部楼层

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

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-10-9 14:45:33 | 显示全部楼层
;;先定义一个公用函数,这个可能别的地方也用得上
;;[功能] 调用VBS的公用执行函数
(defun wscriptPublic (str)
  (or *wscript*
      (setq *wscript* (vlax-create-object "ScriptControl"))
  )
  (vlax-put *wscript* 'language "vbs")
  (vlax-invoke-method *wscript* 'ExecuteStatement str)
  (vlax-invoke-method *wscript* 'eval "ret")
)

;;85.33 [功能] 自定义计算器
;;05以上(cal "(2+3)*5")(c:cal "(2+3)*5")可以运行。04可以不加载(ARXLOAD "GEOMCAL")而自定义
;;示例(MyCal "(2+3)^2*5");返回125.0
(defun MyCal (express)  
  (wscriptPublic (strcat "dim ret \n ret=" express))  
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2014-10-9 15:04:32 | 显示全部楼层
;;vla-Eval用法 字符串关系
;;(Eval (list cal "(2+3)*5"))
(setq *wscript* (vlax-create-object "ScriptControl"))
(vlax-put *wscript* 'language "vbs")
(setq a (vla-Eval *wscript* "(2+3)*5"))

点评

大神果然是大神!不得不佩服呀!和大神之间的还是有很大差距的!我研究了好长时间,关键的ScriptControl这个不是太懂!!这个对象时怎么一回事哦?  详情 回复 发表于 2014-10-9 20:07
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 924个

财富等级: 财运亨通

 楼主| 发表于 2014-10-9 20:07:52 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2014-10-9 15:04
;;vla-Eval用法 字符串关系
;;(Eval (list cal "(2+3)*5"))
(setq *wscript* (vlax-create-object "Scrip ...

大神果然是大神!不得不佩服呀!和大神之间的还是有很大差距的!我研究了好长时间,关键的ScriptControl这个不是太懂!!这个对象时怎么一回事哦?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 11个

财富等级: 恭喜发财

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 21:57 , Processed in 0.177307 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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