设置变量的最佳方法是什么
好的,我认为这是个好主意,但它锁定了我的机器,然后致命并关闭 ;那么,确保始终设置此变量的最佳方法是什么Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
If UCase(CommandName) = "OPEN" Then
ThisDrawing.SetVariable "INSUNITS", 1
End If
End Sub
您是否在EndOpen事件而不是EndCommand事件中尝试了它 ; 我寻找那个事件,它不是#039;t列出 ;这是未记录的功能之一吗? 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
刚试过这个,效果很好
Private Sub AcadDocument_Activate()
ThisDrawing.SetVariable "insunits", 1
End Sub 但我更喜欢使用ACAD设置它们。LSP文件(但那&35;039;只属于我)
这是使用;本图纸;类&引用;本图纸;通常相当于;应用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事件。 请小心使用AcadDocument\u Activate()方法
如果您只希望每个dwg执行一次。这有点可疑,因为对于2个图形,打开ctrl+tab将同时激活第二个dwg并再次运行子图形
不过,对于这个应用程序来说,它看起来确实不错。 我唯一没有做的事';我不知道是否要将此代码放入ThisDrawing模块? 我在thisdrawng mod中试用过,但它从未运行过,所以我想它不会';不要去那里 好的,我想我需要关闭Autocad ;突然间,我打开的所有东西都引发了这场活动 ;谢谢大家
页:
[1]
2