zzz8662 发表于 2004-7-12 10:06:00

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

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

雪山飞狐_lzh 发表于 2004-7-12 11:23:00

把VBA文件加入启动组
或者在AutoCad200?Doc.lsp文件中加载,
或者引用时给全,以"路径名!模块名.过程名"的形式调用

zzz8662 发表于 2004-7-12 14:48:00

详细一点,好吗?

雪山飞狐_lzh 发表于 2004-7-12 16:14:00

用 自动加载 搜索一下就一大堆

zzz8662 发表于 2004-7-12 17:26:00

解释一下这个程序的使用方法:
“你把函数复制到acad2000doc.lsp文件中,以后每写一个VBA程序,就可以通过写入一行: (AutoVBALoad   )
来自动调用
每写一个VBA程序,把”(AutoVBALoad   ) “写到什么地方?我看不懂,谢谢!
http://www.mjtd.com/a2/list.asp?id=285

雪山飞狐_lzh 发表于 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 发表于 2004-7-12 19:41:00

我的看法不用那么复杂,在ACAD.DVB的ThisDriwing模块里的ACADStartup过程里加上如下一句
AcadApplication.LoadDVB "d:\acad2000\support\User.dvb"
即可

雪山飞狐_lzh 发表于 2004-7-12 21:57:00

不做成命令总是很复杂的,:)下面的代码可以把工程的所有Sub注册为命令,前提是工程未加密,:)Lisp代码
(defun C:Sub2Cmd( / subname cmdname)
(setq subname (getstring T "\n输入宏名:")
             cmdname (getstring T "\n输入命令名:"))
   (eval
       (list 'defun
       (read (strcat "C:" cmdname))
       nil
       '(setvar "cmdecho" 0)
       (list 'vl-vbarun subname)
       '(setvar "cmdecho" 1)
       (princ)
   ))
)
(vlax-add-cmd "Sub2Cmd" 'C:Sub2Cmd)Vba代码
Public Sub RegAllSub()
On Error Resume Next
Dim pVbe As Object, pCode As Object
Dim i, j, k
Set pVbe = Application.VBE
For Each i In pVbe.VBProjects
       For Each j In i.VBComponents
               If j.Type = 1 Or j.Type = 100 Then
                     Set pCode = j.CodeModule
                     For k = 1 To pCode.CountOfLines
                               pCodeLine = pCode.Lines(k, 1)
                               If (InStr(Trim(pCodeLine), "Public Sub ") = 1 Or InStr(Trim(pCodeLine), "Sub ") = 1) And InStr(pCodeLine, ")") = InStr(pCodeLine, "(") + 1 Then
                                       pSubName = Trim(RightStr(LeftStr(pCodeLine, "()"), "Sub "))
                                       ThisDrawing.SendCommand "Sub2Cmd" & vbCr & i.FileName & "!" & j.Name & "." & pSubName & vbCr & pSubName & vbCr
                               End If
                     Next k
               End If
       Next j
Next i
End Sub
页: [1]
查看完整版本: 怎样在一打开AUTOCAD就可以自动加载VBA?