本帖最后由 作者 于 2007-8-12 18:20:24 编辑
第一代: 利用vbs进行字符串表达式求值 http://bbs.mjtd.com/forum.php?mod=viewthread&tid=62105 (xvbs a) = 函数方式执行vbs语句(第二代) by 梁雄啸.2007.8 函数:xvbs 格式:(xvbs 函数表达式) 参数:函数表达式,格式:表 或 字符串. vbs函数用'引导,如:(list 'msgbox "测试") 或 '(msgbox "测试"). 可多重嵌套. 支持lisp变量.变量不用'引导. 支持vbs的&,+等函数. 字符串格式,如: 测试: 1. (xvbs '(msgbox ("测试时间 : " & vbcr & now )1)) 2. 支持lisp变量: 例1): (setq path (getvar "acadver")) (xvbs (list 'msgbox (list "测试" '& 'vbcr '& path) 3)) 例2): (xvbs '(a = (inputbox "输入数字1:"))) (xvbs '(b = (inputbox "输入数字2:"))) (setq k (if (= 0 (xvbs '( a > b))) " < " " > ")) (xvbs (list 'msgbox (list 'a '& k '& 'b))) 3. 支持在函数表达式中使用lisp语句: (xvbs(list 'msgbox (list "测试" '& 'vbcr '& (strcat "cad版本号 = " (getvar "acadver"))) 3)) 4. 连续执行多个vbs语句,支持vbs中变量传递: (xvbs '(cs = "测试")) (xvbs '(msgbox (cs & "ok"))) ;; cs是在vbs中定义的变量. 5. 支持多个vbs函数嵌套. (xvbs '(msgbox("当前日期:" & vbcr & date))) ; 使用了msgbox(对话框函数),date(日期函数) 6. 支持字符串表达式(原有功能): (xvbs "msgbox(\"测试时间:\" & now)") (xvbs "(rnd)") 7. 支持&,+ 等函数,支持数字,字符混合运算. (xvbs '("测" & "试")) ;-> "测试" (xvbs '(3 + 6 + 5)) ;->14 (xvbs '(2 + (5 / 2) - "2")) ;->2.5 8. (setq a 0.5) ;-> a = 0.5 (xvbs '(b = 2.0)) ;-> b = 2 (xvbs '(c = "abc")) ;-> c = "abc" (xvbs '(d = (sin ((b + ((10. / (len c) / b) mod 2)) - "2.5")))) 步骤详解: (xvbs '(len c)) ->3 (xvbs '((10. / (len c) / b) mod 2)) -> (10/3/2 mod 2) = (1.6667 mod 2) = 0 ;mod,求余数并四舍五入. (xvbs '(sin ((b + 0) - "2.5"))) -> sin(2+0-2.5) = sin(-0.5) = -0.479426 (xvbs 'd) -> d=-0.479426 (xvbs (list a '* 'd)) ;->(0.5*(-0.47926))=-0.239713
下载地址(第一次传的文件有问题,现已经更新) |