本帖最后由 作者 于 2007-8-12 1:09:37 编辑
fsxm 的 写一个会写vbs函数的lisp程序! 的想法很好.我进行了如下测试 (fsxm-vbs '(msgbox "测试")) (fsxm-vbs '(msgbox "测试" & "ok")) -> 丢失"ok" (fsxm-vbs '(msgbox (strcat "测试 " "&" " ok"))) -> #<%catch-all-apply-error%> (fsxm-vbs '(msgbox (strcat "测试 " & " ok"))) -> #<%catch-all-apply-error%> (fsxm-vbs '(msgbox ("测试 " & " ok"))) ->#<%catch-all-apply-error%> 也许我的方法不对.没有得出想要的结果.发现未能够很好支持 &,+等函数,vbs函数在表达式中未能嵌套. 于是自己对原来的xcal做了升级.借用了fsxm的将vbs函数写成lisp函数格式的 想法.并且作了功能上的增强.将函数方式进行到底!详细介绍如下: (xvbs a) = 函数方式执行vbs语句(第二代) by 梁雄啸.2007.8 函数:xvbs 格式:(xvbs 函数表达式) 参数:函数表达式,格式:表 或 字符串. vbs函数用'引导,如:(list 'msgbox "测试") 或 '(msgbox "测试"). 可多重嵌套. 支持lisp变量.变量不用'引导. 支持vbs的&,+等函数. 字符串格式,如: 测试: 1. (xvbs '(msgbox ("测试时间 : " & vbcr & now )1)) 2. 支持变量: (setq path (getvar "acadver")) (xvbs (list 'msgbox (list "测试" '& 'vbcr '& path) 3)) 3. 支持在函数表达式中使用lisp语句: (xvbs(list 'msgbox (list "测试" '& 'vbcr '& (strcat "cad版本号 = " (getvar "acadver"))) 3)) 4. 连续执行多个vbs语句,支持vbs中变量传递: (xvbs '(cs = "测试")) (xvbs '(msgbox (cs & "ok"))) ;; cs是在vbs中定义的变量. 5. 支持字符串表达式: (xvbs "msgbox(\"测试时间:\" & now)")
再对开始的实例进行测试: (xvbs '(msgbox ("测试 " & " ok"))) ->返回正确. 下载请点链接: http://bbs.mjtd.com/forum.php?mod=viewthread&tid=62199 |