乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 34|回复: 1

关于vba程序自动加载问题

[复制链接]

11

主题

39

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 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 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))
还有其它东西你就自己想吧,大概就这些吧。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-5 04:47 , Processed in 1.698208 second(s), 56 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表