Bryco 发表于 2008-1-18 13:35:06

ACADApp_Beginquirt事件

您好
当我关闭ACAD时,我正试图切换当前的活动工作区
但是,我收到一个错误“获取文档对象失败”
有人知道解决方法吗
谢谢
马克
Private Sub ACADApp_BeginQuit(Cancel As Boolean)
Dim CurrSysVarData As Variant
Dim SysVarName As String
Dim NewSysVarData As String

SysVarName = "WSCURRENT"
CurrSysVarData = ThisDrawing.GetVariable(SysVarName)
NewSysVarData = "Exit"

If CurrSysVarData"Exit" Then
    ThisDrawing.SetVariable SysVarName, NewSysVarData
    If MsgBox("Would you like to save this drawing?", vbYesNo) = vbYes Then
   ThisDrawing.Save
   Application.Quit
    Else
   Application.Quit
   Exit Sub
    End If
End If
End Sub

**** Hidden Message *****

樱吧招人堂 发表于 2008-1-18 14:19:03

问题在于,您可以在不关闭应用程序的情况下关闭所有图形,并且无法在打开文档的情况下进行更改。您需要做的是检查打开了多少文档,如果=1,则设置var,然后关闭。如果是医生。计数>1,什么也不做

桥人 发表于 2008-1-18 15:07:55


酷CM!
我不会想到这个,但它很有意义
是的,如果没有绘图(对象)可以处理,它怎么能对文档(绘图)做某事
谢谢!
Mark

黄骅百姓 发表于 2008-1-21 10:45:19

CM
此方法:
If Documents.Count > 0 Then
GoTo Continue
Else
Exit Sub
End If

Continue:
MsgBox "Do Something"

在自己的子例程中工作,但不与我的ACADAP_Beginquirt代码一起工作
标记

帖吧 发表于 2008-1-21 11:57:56

CM
当我将该代码放入应用程序事件时;它仍然说,无法获取文档对象。
我想知道这是否是因为我处于对象级事件中?
Mark

梦想-原 发表于 2008-1-21 15:17:54

好的
,我认为这里的问题是,在关闭之前的事件(即使它说在关闭之前),我认为它在运行事件之前关闭了所有图形;因此我得到了一个失败的文档错误。
这是一个有趣的问题。
可能是一个 Do While Application.documents > 0 将起作用。
我不知道。
马克

网友俱乐部 发表于 2008-1-21 16:45:51

很久以前我就遇到了这个问题,兰德尔给了一个解决方法。 不幸的是,就目前而言,他给我的程序已经不再使用它,因此代码不再存在。 当我有机会时,我会挖掘我的档案,看看我是否能找到它。
只是一个想法,如果你在不保存它的情况下关闭绘图,那么你所处的空间没有任何区别,对吗? 硬币的另一面是,你真正想做的是确保它在适当的空间里节省时间。 因此,您可以改用 BeginSave 事件。

生活驿站 发表于 2008-1-21 17:59:09


嘿Bob
这是一个非常好的主意,但我不能诚实地说我每次关闭时都会保存绘图。
现在我正在使用工作正常的ACADApp_SysVarChanged事件。
我切换工作区,它可以完成我需要的所有事情,只是我不经常记得这样做。
所以,我认为ACAD在关闭时为我切换会很好。
马克

大海 发表于 2008-1-21 18:08:37

这正是我的观点。 如果不保存图形,则当图形关闭时,它所在的空间无关紧要,因为,好吧,您没有保存。

心情在线 发表于 2008-1-21 18:22:24


哦,是的,对不起,我错过了。我不确定
(在这一点上)空间与它有什么关系,但答案是,不,这并不重要。
马克
页: [1] 2
查看完整版本: ACADApp_Beginquirt事件