明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 384|回复: 2

帮忙看看为什么打开样板无法继续运行?

[复制链接]
发表于 2018-6-28 10:22 | 显示全部楼层 |阅读模式
下面是我写的一段代码,当是VBA调试时可以直接运行通过,但是在打开的一个DWg文件 通过工具栏按钮运行时,会打开样板文件,并为当前文件,但代码只会运行到msgbox "dd"这句之前,后面的就运行不了.我这段代码的主要作用是加载块和加载图层设置到模板里.
Public Sub AddBlockAndLayer()
Dim BLin As String
Dim KeyWords As String
On Error Resume Next
   KeyWords = "Y N"
   ThisDrawing.Utility.InitializeUserInput 1, KeyWords              '设置关键词
   BLin = ThisDrawing.Utility.GetKeyword("是否加载到样板:[加载(Y)/ 当前(N)]<N>:")

If BLin = "Y" Then
      Dim preferences As AcadPreferences
      Dim currTemplateDWGPath As String
      Dim newTemplateDWGPath As String
      Set preferences = ThisDrawing.Application.preferences
' 打开目前的 TemplateDWGPath值
      currTemplateDWGPath = preferences.Files.QNewTemplateFile

       Dim Doc As AcadDocument
       Dim drawing As AcadDocument
       Dim HasFind As Boolean
       Dim DrawingPath As String
       HasFind = flase
       For Each drawing In ThisDrawing.Application.Documents
           DrawingPath = drawing.Path & "\" & drawing.Name
           If StrComp(currTemplateDWGPath, DrawingPath, vbTextCompare) = 0 Then
              HasFind = True
              Doc = drawing
              Exit For
           End If
       Next drawing

       If HasFind = False Then
          Set Doc = ThisDrawing.Application.Documents.Open(currTemplateDWGPath)
     End If
     ThisDrawing.Application.ActiveDocument = Doc

    MsgBox "dd"                          "从这样开始
     Call AddBlocks
     Call AddLayers
     Exit Sub
     Doc.Save
     Doc.Close

Else
    If BLin = "N" Then
       Call AddBlocks
       Call AddLayers
    End If

End If
End Sub

 楼主| 发表于 2018-6-29 09:26 | 显示全部楼层
在运行Set Doc = ThisDrawing.Application.Documents.Open(currTemplateDWGPath)这个后,打开了模板后,模板的会被转到后台,原来的DWG文件变为当前文件,运行到Thisdrawing.Application.Documents.Open(currTemplateDWGPath)时,就无法运行,要关了模板文件才会继续运行
 楼主| 发表于 2018-6-30 11:54 | 显示全部楼层
问题找到,是原来在设置工具栏按钮时,用了自定义的VBA 运行函数.当时是因为要先选择后操作按教程写了这个LSP.
(defun C:VBARUNX ()
    (vl-load-com)
    (vla-runmacro
         (vlax-get-acad-object)
         (getstring "\n宏名称: ")
    )
    (princ)
)

在设置运行命令时用了^C-C_VbarunX....
改回^C-C -Vbarun...就无问题.
有没有论友可以改改上面的LSP,可以让上面所问的程序正常运行.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-28 17:45 , Processed in 0.280570 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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