找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 923|回复: 1

[他山之石] 自动加载VBA程序的函数

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-7-13 20:11:14 | 显示全部楼层 |阅读模式

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

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

×
  1. (vl-load-com)
  2. ;;自动加载VBA程序的函数
  3. (defun AutoVBALoad (app cmdliste flag / qapp strcmd)
  4.   (setq qapp (strcat "\"" app "\""))
  5.   (mapcar
  6.     '(lambda (cmd / nom_cmd dot nodotcmd)
  7.        (progn
  8.          (setq dot (vl-string-search "." cmd))
  9.          (if dot
  10.            (setq nodotcmd (substr cmd (+ dot 2)))
  11.            (setq nodotcmd cmd)
  12.          )
  13.          (setq nom_cmd (strcat "C:" nodotcmd))
  14.          (if (member stat '(0 1 2 3 4 5 6 7))
  15.            (setq strcmd
  16.                  (strcat"(vlax-add-cmd \"" nodotcmd "\" \'"
  17.                         nom_cmd "\"" nodotcmd "\"" (itoa flag) " ))"))
  18.          )
  19.          (eval
  20.            (read (strcat
  21.                    "(defun " nom_cmd "(/ app)"
  22.                      "(if (setq app(fdvbfile " qapp "))"
  23.                        "(progn(vla-runmacro (vlax-get-acad-object) (strcat app \"!" cmd "\"))"
  24.                        strcmd
  25.                        "(nodvbfile " qapp "))"
  26.                    "(princ ))"
  27.        )))))
  28.     cmdliste
  29.   )
  30.   (princ)
  31. )
  32. (defun fdvbfile (app)
  33.   (if (not (findfile app))
  34.     (if (not (findfile (strcat app ".dvb"))) nil  (strcat app ".dvb")) app)
  35. )
  36. (defun nodvbfile (filename)
  37.   (princ (strcat "\n文件 " filename "(.dvb) 在搜索路径文件夹中未找到。" ))
  38.   (princ "\n请检查支持文件的安装,然后重试。")
  39.   (princ)
  40. )
  41. ;;自动加载VBA程序
  42. (AutoVBALoad "ChangColor" '("CC") 3)
  43. (AutoVBALoad "Zoom" '("ZP" "ZA" "ZE" "ZW") 1)

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2013-7-14 05:40:37 | 显示全部楼层
本帖最后由 GTJ116600 于 2013-7-14 05:42 编辑

为方便理解程序,搜了一下VBA自动安装方法 供参考

mikenjohn
大约有如下几种方法:
1、vba自己加载法。将你的vba工程文件改名为acad.dvb,放在cad的安装目录下,vba初始化后自动加载。
2、startup加载法。将你的vba文件放到cad的安装目下。cad安装目录下和suport目录下搜索acad.lsp文件,如果不存在,用windows记事本在安装目录下新建一个acad.lsp文件(如果已经存在,用记事本打开它),在该文件中添加如下内容:
(defun S::STARTUP()
(command "_VBALOAD" "myproj.dvb")
)
保存后退出,以后启动cad会自动加载,其中myproj.dvb是你的vba工程文件名。
以上是autodesk推荐的两种方法,其实还有第三种方法。


3、lisp加载法。用记事本打开support目录下的acad200x.lsp,其中200x与acad的版本对应(如acad2000对应acad2000.lsp,acad2002对应acad2002.lsp等等),在文件的最后添加如下语句:
(vl-vbaload "myproj.dvb")
0.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 16:57 , Processed in 0.211424 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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