乐筑天下

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

怎样在一打开AUTOCAD就可以自动加载VBA?

[复制链接]

39

主题

89

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
245
发表于 2004-7-12 10:06:00 | 显示全部楼层 |阅读模式
怎样在一打开就可以自动加载VBA?
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-7-12 11:23:00 | 显示全部楼层
把VBA文件加入启动组
或者在AutoCad200?Doc.lsp文件中加载,
或者引用时给全,以"路径名!模块名.过程名"的形式调用
回复

使用道具 举报

39

主题

89

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
245
发表于 2004-7-12 14:48:00 | 显示全部楼层
详细一点,好吗?
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-7-12 16:14:00 | 显示全部楼层
用 自动加载 搜索一下就一大堆
回复

使用道具 举报

39

主题

89

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
245
发表于 2004-7-12 17:26:00 | 显示全部楼层
解释一下这个程序的使用方法:
[U]“你把函数复制到acad2000doc.lsp文件中,以后每写一个VBA程序,就可以通过写入一行: (AutoVBALoad   )
来自动调用[/U]
每写一个VBA程序,把”(AutoVBALoad   ) “写到什么地方?我看不懂,谢谢!
[WEB]http://www.mjtd.com/a2/list.asp?id=285[/WEB]
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-7-12 17:50:00 | 显示全部楼层
写到Acad200?Doc。lsp文件里 改进一下,做成命令,:)
(defun C:Sub2Cmd( / subname cmdname)
        (setq subname (getstring "\n输入宏名:")
                                                 cmdname (getstring "\n输入命令名:"))
         (eval
                         (list 'defun
                         (read (strcat "C:" cmdname))
                         nil
                         (list 'vl-vbarun subname)
                         (princ)
         ))
)
(vlax-add-cmd "Sub2Cmd" 'C:Sub2Cmd)
回复

使用道具 举报

wmz

50

主题

247

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
447
发表于 2004-7-12 19:41:00 | 显示全部楼层
我的看法不用那么复杂,在ACAD.DVB的ThisDriwing模块里的ACADStartup过程里加上如下一句
AcadApplication.LoadDVB "d:\acad2000\support\User.dvb"
即可
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-7-12 21:57:00 | 显示全部楼层
不做成命令总是很复杂的,:)下面的代码可以把工程的所有Sub注册为命令,前提是工程未加密,:)Lisp代码
  1. (defun C:Sub2Cmd( / subname cmdname)
  2.   (setq subname (getstring T "\n输入宏名:")
  3.              cmdname (getstring T "\n输入命令名:"))
  4.    (eval
  5.        (list 'defun
  6.        (read (strcat "C:" cmdname))
  7.        nil
  8.        '(setvar "cmdecho" 0)
  9.        (list 'vl-vbarun subname)
  10.        '(setvar "cmdecho" 1)
  11.        (princ)
  12.    ))
  13. )
  14. (vlax-add-cmd "Sub2Cmd" 'C:Sub2Cmd)
Vba代码
  1. Public Sub RegAllSub()
  2. On Error Resume Next
  3. Dim pVbe As Object, pCode As Object
  4. Dim i, j, k
  5. Set pVbe = Application.VBE
  6. For Each i In pVbe.VBProjects
  7.        For Each j In i.VBComponents
  8.                If j.Type = 1 Or j.Type = 100 Then
  9.                        Set pCode = j.CodeModule
  10.                        For k = 1 To pCode.CountOfLines
  11.                                pCodeLine = pCode.Lines(k, 1)
  12.                                If (InStr(Trim(pCodeLine), "Public Sub ") = 1 Or InStr(Trim(pCodeLine), "Sub ") = 1) And InStr(pCodeLine, ")") = InStr(pCodeLine, "(") + 1 Then
  13.                                        pSubName = Trim(RightStr(LeftStr(pCodeLine, "()"), "Sub "))
  14.                                        ThisDrawing.SendCommand "Sub2Cmd" & vbCr & i.FileName & "!" & j.Name & "." & pSubName & vbCr & pSubName & vbCr
  15.                                End If
  16.                        Next k
  17.                End If
  18.        Next j
  19. Next i
  20. End Sub
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 21:08 , Processed in 0.369248 second(s), 68 queries .

© 2020-2025 乐筑天下

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