明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 无痕

[原创] !将vbscript移植到lisp!

    [复制链接]
 楼主| 发表于 2007-8-15 14:46:00 | 显示全部楼层

xxvbs升级到第二版.

版本: v2 完善数组返回值.完善对wscript. 的判断 . ret支持表,字符,符号格式.

请看第1,2楼更新内容.

xxjs v1版本(支持jscript已经出来了,还再调试一下)

js版本的改写比我想像中的要麻烦一点.主要是: js的数组和vbs的数组不一样.更像vl的安全数组.

 楼主| 发表于 2007-8-16 00:47:00 | 显示全部楼层

不好意思,v2版本的数组返回值处理函数对多维数组还是有点问题.v2.2版本解决了.

更新到v2.2版本

发表于 2007-8-16 07:09:00 | 显示全部楼层
本帖最后由 作者 于 2007-8-16 17:43:05 编辑
  1. 楼主讲解下如何取得返回值吧,参数传递是VBS Lisp 直接头痛的问题,谢谢
  2. 下面的返回String,多维数组如何处理?
  3.   (setq    *wsc (vla-GetInterfaceObject
  4.            (vlax-get-acad-object)
  5.            "ScriptControl"
  6.          )
  7.   )
  8.   (vlax-put-property *wsc "language" "vbs")
  9.   (vlax-invoke
  10.     *wsc
  11.     'ExecuteStatement
  12.     "Function   test() 
  13.        Dim ss, re, rv
  14.        ss = inputbox("将两个连续字符替换为一个,输入测试字符:")
  15.        Set re = New RegExp
  16.        re.Pattern = "(.+)\\1"
  17.        re.Global = True
  18.        re.IgnoreCase = True
  19.        re.MultiLine = True
  20.        rv = re.Replace(ss,"$1")
  21.        test = rv 
  22.   End   Function"
  23.   )
  24.   (vlax-invoke *wsc 'eval "test")
发表于 2007-8-17 08:05:00 | 显示全部楼层
(setq STR
       "
          Function   GetValue()  
          Dim   arrX(3 , 3 , 2)
          Dim   i,j,k,ans1
            For   i = 0 To 3  
               For j = 0 To 3
                  For k = 0 To 2
                     arrX (i , j , k) = i * j + k
                  Next
               Next
          Next  
          GetValue = arrX 
  End   Function
  For Each present In GetValue
  ans=ans & \" \" & present
 Next
"
)
(XXVBS STR "ans")
;;返回: " 0 0 0 0 0 1 2 3 0 2 4 6 0 3 6 9 1 1 1 1 1 2 3 4 1 3 5 7 1 4 7 10 2 2 2 2 2 3 4 5 2 4 6 8 2 5 8 11"
;|
有那麼複雜嗎?
" 0 0 0 0 0 1 2 3 0 2 4 6 0 3 6 9
  1 1 1 1 1 2 3 4 1 3 5 7 1 4 7 10
  2 2 2 2 2 3 4 5 2 4 6 8 2 5 8 11"
  |;
发表于 2007-8-17 12:45:00 | 显示全部楼层

为保持返回值的数据类型,我用了一个递归函数来处理。

分别取各数组项,如果子项是表,递归处理。

发表于 2007-8-17 16:38:00 | 显示全部楼层
函数形式唯一的不足就是 string 的长度受 AuotLisp 的限制,不能运行太长的 VBS,解决的方法是用读文件形式
发表于 2007-8-18 17:43:00 | 显示全部楼层
本帖最后由 作者 于 2007-8-18 17:43:53 编辑

VBS返回值是如何传递给LISP变量的?能否指点一二

 楼主| 发表于 2007-8-18 22:46:00 | 显示全部楼层

VBS返回值是如何传递给LISP变量的?能否指点一二

没有传递,不是vb->lisp. 直接用(vla-eval 就可以返回啊

 楼主| 发表于 2007-8-19 16:49:00 | 显示全部楼层
发表于 2007-8-21 11:57:00 | 显示全部楼层
版主什么时候发布源码.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 12:44 , Processed in 0.178260 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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