明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2506|回复: 8

[源码] 利用VBS分离字符串以及计算公式

[复制链接]
发表于 2013-8-12 22:30:40 | 显示全部楼层 |阅读模式
我是在晓东CAD家园看到的一篇帖子,下面两个函数第一个算是照搬别人的,稍微改了一点;第二个是自己琢磨的。
我还是附上网址,不是做广告,只是尊重他人成果,我认识明经比晓东CAD时间长。。。
http://bbs.xdcad.net/thread-670090-1-1.html(8楼)
1、分离字符串
  1. ;;;string 要分离的字符串
  2. ;;;str 分隔符
  3. ;;;测试:(str-split "明经,CAD" ",")->("明经" "CAD") (str-split "明经 CAD " " ")->("明经" "CAD")
  4. ;;;(str-split "明经123CAD123测试" "123")->("明经" "CAD" "测试")
  5. (defun str-split (string str / vbs ret **ScriptControl**)
  6.   (setq **ScriptControl** (vlax-create-object "ScriptControl"))
  7.   (vlax-put **ScriptControl** "Language" "VBS")
  8.   (setq  vbs
  9.    (strcat "Dim ret\n"      "s = ""
  10.      string        ""\nsn = ""
  11.      str        ""\nret = Split(s,sn)"
  12.     )
  13.   )
  14.   (vlax-invoke **ScriptControl** 'ExecuteStatement vbs)
  15.   (setq ret (vlax-invoke **ScriptControl** 'eval "ret"))
  16.   (if (not (vlax-object-released-p **ScriptControl**))
  17.     (vlax-release-object **ScriptControl**)
  18.   )
  19.   (vl-remove "" ret)
  20. )
2、计算公式
  1. ;;;arguments 包含参数的表
  2. ;;;expression 表达式,以字符串形式表达
  3. ;;;测试:(gruel:calculate '("x=2" "y=3" "z=100") "(x+y)*2/z")->0.1
  4. ;;;(gruel:calculate '("x=2" "y=3" "z=3") "(x+y)^z")->125.0
  5. (defun gruel:calculate
  6.        (arguments expression / str **ScriptControl** ret)
  7.   (setq str "dim ret\n")
  8.   (foreach x arguments
  9.     (setq str (strcat str x "\n"))
  10.   )
  11.   (setq str (strcat str "ret=" expression))
  12.   (setq **ScriptControl** (vlax-create-object "ScriptControl"))
  13.   (vlax-put **ScriptControl** "Language" "VBS")
  14.   (vlax-invoke **ScriptControl** 'ExecuteStatement str)
  15.   (setq ret (vlax-invoke **ScriptControl** 'eval "ret"))
  16.   (if (not (vlax-object-released-p **ScriptControl**))
  17.     (vlax-release-object **ScriptControl**)
  18.   )
  19.   ret
  20. )

点评

太好了,但建议改为(gruel:calculate '("2" "3" "3") "(x+y)^z")->125.0,省去X=之类的字就更精简了哈  发表于 2014-3-18 13:00

评分

参与人数 2明经币 +2 收起 理由
自贡黄明儒 + 1 赞一个!
tryhi + 1

查看全部评分

发表于 2013-8-13 08:14:07 | 显示全部楼层
谢谢楼主的分享!很有用啊。
发表于 2013-8-13 09:05:13 | 显示全部楼层
你效率很高嘛,st788796才贴出来,你就写出了gruel:calculate
好程序,顶
发表于 2013-8-13 09:08:05 | 显示全部楼层
一个字

很好
发表于 2013-8-13 09:47:35 | 显示全部楼层
很想知道你是从哪儿看到ScriptControl应用的,能否把这本书提供给大家.
 楼主| 发表于 2013-8-13 14:08:39 | 显示全部楼层
自贡黄明儒 发表于 2013-8-13 09:47
很想知道你是从哪儿看到ScriptControl应用的,能否把这本书提供给大家.

我也只是看到别人用,觉得有点意思,自己百度搜索一些资料看了看
发表于 2014-3-18 08:18:43 | 显示全部楼层
用这个适合改写加密程序,
发表于 2014-3-18 13:32:59 | 显示全部楼层
  太好了,但建议改为(gruel:calculate '("2" "3" "3") "(x+y)^z")->125.0,省去X=之类的字就更精简了哈
发表于 2014-8-25 22:35:26 | 显示全部楼层
支持!!!!高版本cad会报错的问题需要解决一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-24 07:49 , Processed in 0.201478 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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