Cathy 发表于 2007-9-12 16:56:52

设置变量的最佳方法是什么

好的,我认为这是个好主意,但它锁定了我的机器,然后致命并关闭 那么,确保始终设置此变量的最佳方法是什么
Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
If UCase(CommandName) = "OPEN" Then
ThisDrawing.SetVariable "INSUNITS", 1
End If
End Sub

Bryco 发表于 2007-9-12 17:14:27

您是否在EndOpen事件而不是EndCommand事件中尝试了它 

Keith™ 发表于 2007-9-12 17:22:07

我寻找那个事件,它不是#039;t列出 这是未记录的功能之一吗?

Bryco 发表于 2007-9-13 00:57:46

It#039;因为它是应用程序级事件,所以只有在您设置应用程序后,它才可用
您的崩溃可能是由一次启动命令的时间问题引起的;本图纸;然后以另一个“结束”;本图纸;,下面是我最好的方式'我发现,在首次打开cad后,应用程序级事件可以正常工作
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
Private Sub AutoCAD_EndOpen(ByVal FileName As String)
    ThisDrawing.SetVariable "INSUNITS", 1
    MsgBox "ins"
End Sub

Bryco 发表于 2007-9-13 08:27:38

刚试过这个,效果很好
Private Sub AcadDocument_Activate()
    ThisDrawing.SetVariable "insunits", 1
End Sub 但我更喜欢使用ACAD设置它们。LSP文件(但那&35;039;只属于我)

Bryco 发表于 2007-9-13 10:31:15


这是使用;本图纸;类&引用;本图纸;通常相当于;应用ActiveDocument;,由于打开,将最后打开的文档设置为ActiveDocument,问题将持续存在
要实际说明这一点,请使用以下代码:
Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
If UCase(CommandName) = "OPEN" Then
Dim NewDoc As AcadDocument
Set NewDoc = Application.ActiveDocument
NewDoc.SetVariable "INSUNITS", 1
End If
End Sub
在已经打开的图形中,而不是在新打开的图形中将INSUNITS设置为1
最好的解决方案是使用Matt发布的代码,使用Activate事件。

Bryco 发表于 2007-9-13 21:25:58

请小心使用AcadDocument\u Activate()方法
如果您只希望每个dwg执行一次。这有点可疑,因为对于2个图形,打开ctrl+tab将同时激活第二个dwg并再次运行子图形
不过,对于这个应用程序来说,它看起来确实不错。

Bryco 发表于 2007-9-14 09:59:20

我唯一没有做的事'我不知道是否要将此代码放入ThisDrawing模块?

Bryco 发表于 2007-9-14 10:43:38

我在thisdrawng mod中试用过,但它从未运行过,所以我想它不会'不要去那里

Bryco 发表于 2007-9-14 11:32:56

好的,我想我需要关闭Autocad 突然间,我打开的所有东西都引发了这场活动 谢谢大家
页: [1] 2
查看完整版本: 设置变量的最佳方法是什么