设置变量的最佳方法是什么
好吧,我认为这是一个好主意,但它锁定我的机器,然后致命和关闭。那么,确保这个变量总是被设置的最好方法是什么呢?Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
If UCase(CommandName) = "OPEN" Then
ThisDrawing.SetVariable "INSUNITS", 1
End If
End Sub
**** Hidden Message ***** 我查找了该事件,但未列出。 这是未记录的功能之一吗?
您的崩溃可能是由于命令在一个"this绘图"中启动然后在另一个"this绘图"中结束的时间问题造成的,下面是我发现的在第一次打开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文件(但这只是我)。
这是使用"ThisDrawing"类所固有的问题之一。"ThisDrawing"通常等同于"Application.ActiveDocument",并且由于OPEN将最后打开的文档设置为ActiveDocument,因此问题将持续存在。
为了在操作中说明这一点,请使用以下代码:
它将在已经打开的绘图中将INSUNS设置为1,而不是新打开的绘图。
最好的解决方案是使用Matt发布的代码,使用Activate事件。 我没有看到的一件事是阉羊还是不把这段代码放在ThisDrawing模块中? 我在thisdrawng模式下试过,但它从来没有运行过,所以我想它不会去那里 很高兴你让它工作了! 好的,我已经阅读了许多关于这方面的不同文章,但仍然无法解决如何在Autocad上完成它的启动。
一旦Autocad运行并打开另一个绘图等,我就可以让EndOpen工作。
但是
如果最终用户2x单击来自Windows资源管理器的绘图,我无法让EndOpen事件触发,任何想法都将是有帮助的?:kewl: 现在启动autocad还为时过早,所以你要么等到我打开孔口,要么把我的假代码变成实际工作的东西。我在drawring打开时触发代码的最好运气是使用end lisp。因为acad.lsp在autocad启动时运行,所以就这样了。
'not even too very close to actual code
Private Sub AcadDocument_EndLisp(LispyFileName as String)
If LispyFileName = "acad.lsp" then
'crap you want to do here
end if
end sub
页:
[1]
2