明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2084|回复: 1

关于vba程序自动加载问题

[复制链接]
发表于 2003-3-15 14:01:00 | 显示全部楼层 |阅读模式
大家好,我想问一下,我们做的vba程序是否可以做成安装程序安装,安装后可否运行cad后直接加载呢,就是说可以直接加载菜单包括meu文件和mnl文件,并自动加载dvb文件。还有我有个想法不知道可不可以。就是能不能在做安装程序的时候,先在acad.lisp里加上一段自动加载菜单文件和dvb文件的命令行,然后安装时让安装程序把acad.lisp程序安装到support目录里,这样也可以在cad启动时就可以自动启动acad.lisp程序了,并运行下面的语句,但我刚接触lisp,并不知道这个功能能不能实现,请不要见笑,要是可以的话,还是麻烦斑竹写出来好吗?
发表于 2003-3-16 19:21:00 | 显示全部楼层

关于自动加载的问题

你可以把你所要加载的内容全部写到一个LSP文件中,如果你使用了菜单,那就可以用象以下程序一样来加载你的菜单:
(defun acc()
  (setvar "cmdecho" 0)
  (if (not(menugroup "ac_bonus"))
    (if  (findfile "ac_bonus.mnu")
      (progn
        (setvar "filedia" 0)
        (command "menuload" "ac_bonus")
        (setvar "filedia" 1)
      )
      (progn
        (princ "由于你的AutoCAD不是完全安装,可能在附加菜单中有部分功能没有!")
        (setq a (findfile "acad.exe"))                 ; Build the standard path to the bonus files.
        (setq          a (substr a 1 (- (strlen a) 8))
            bonus_path (strcat a "bonus\\cadtools")         
        );setq
        (findfile bonus_path)                          ; see if the standard bonus directory exists
        (add_path bonus_path)                          ; attempt to put it on the AutoCAD search path
        (if (findfile "ac_bonus.mnu")
          (progn
            (setvar "filedia" 0)
            (command "menuload" "ac_bonus")
            (setvar "filedia" 1)
          )
        )
      )
    )
  )
;;注意这个程序是AutoCAD R14所使用的程序,你可以自己修改一下用于自己的菜单。
这段程序可以写到acad2004.lsp文件中。如果使用菜单的话,则所有要加载的程序都可以写到 菜单名.mnl文件中。

菜单名.mnl文件可以分为以下几段:
;;显示菜单段,把自定义菜单显示在倒数第三项位置:
(defun acet-init-placemenu (/ CNT)
  (setq CNT 1)
  (while (< CNT 24)
    (if (menucmd (strcat "" (itoa CNT) ".1=?"))
      (setq CNT (1+ CNT))
      (progn
        (if (> CNT 2)
          (setq CNT (- CNT 2))
          (setq CNT 2)
        )
        (menucmd (strcat "p" (itoa CNT) "=+MCCAD.pop1"))
        (setq CNT 25)
      )
    )
  )
)

;;自动加载LSP程序段:

(autoload "ddtl" '("ddtyl" "ddbtl" "ddfjl" "ddqmb" "ddggb" "ddmxl"))
;;自动加载VBA程序段:
;;自动加载VBA程序的函数
(defun AutoVBALoad (cmdname project macro)
  (eval
    (list 'defun
          (read (strcat "C:" cmdname))
          nil
          (list
            'vl-vbarun
            (strcat
              project
              "!"
              (if macro
                macro
                cmdname
              )
            )
          )
          (princ)
    )
  )
)
;;自动加载VBA程序
如:
(AutoVBALoad "DG" "UnNameGroup.dvb" "DelUnNameGroup")
(AutoVBALoad "AG" "UnNameGroup.dvb" "AddUnNameGroup")

;;;一些非常实用的快捷方式程序

;;圆角为0
(defun c:f0 () (command "fillet" "r" "0" "fillet"))
;;水平辅助线
(defun c:xh () (command "xline" "hor"))
;;垂直辅助线
(defun c:XV () (command "xline" "ver"))

;;一些VBA程序的触发程序
(defun c:ag()(princ))
(defun c:dg()(princ))

还有其它东西你就自己想吧,大概就这些吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 06:44 , Processed in 0.169033 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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