文档事件和计时
大家好——很大程度上感谢Keith的帮助,我让我的VB应用程序使用VBA存根工作,该存根设置我的类的实例并终止。我正在编程的事件在应该的时候触发,我很高兴。一个“粘性检票口”是我需要有条件地重置系统变量,具体取决于我正在捕获的命令。除了第一次之外,它每次都有效。我尝试在我的VB程序、VBA存根以及两个地方设置系统变量。两者都给出了相同的结果——除了第一次,每次都有效。
我创建了一个ACVBA.ARX的ACAD.RX,并将与存根DVB程序中相同的代码放入ACAD.DVB,以防程序加载的顺序会影响这一点,但没有乐趣。换句话说,我是在ACAD.DVB自动加载程序还是稍后手动加载程序似乎并不重要,ACVBA.ARX的存在与否(使用vanilla ACAD 2007)似乎也不重要。
我试图做的是使用ATTREQ来抑制DDATTE/ATTEDIT对话框。当我在VBA存根中执行代码时,重置系统变量的请求发生在DDATTE对话框弹出之前,但它仍然弹出。
另一个有趣的事实是,当整个事情在VBA中完成时,这从未发生过。
在我的DVB存根中设置变量时,它发生在VB程序加载之前很久(无论如何,用计算机术语来说),所以我不明白为什么重置ATTREQ不会影响DDATTE/ATTEDIT的显示——第一次。正如我所说,其余时间它按预期工作。
我错过了什么?
**** Hidden Message ***** 在vba中,计时足够复杂
对我来说,下面的工作很有效,而“VBAIDE”则不行
(我只在vba中讨论)
Public WithEvents AutoCAD As AcadApplication
Sub App_StartMacro()
Set AutoCAD = ThisDrawing.Application
End Sub
Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)
If CommandName = "COMMANDLINE" Then
Set AutoCAD = ThisDrawing.Application
End If
End Sub
我曾希望也许Start inCommand会为我争取到足够的额外时间来阻止讨厌的DDATTE/ATTEDIT对话框,但没有。我正在尝试在加载VB例程之前在VBA中处理这个问题。
现在,我只是将ATTREQ设置为0,看看这是否足够好。它在我的应用程序中有效,但我想确保其他块插入(带有属性)正常工作。如果插入的对象具有属性,我的应用程序会强制ATTEDIT出现,所以它可能是。
页:
[1]