我在 Solidworks 2017 Visual Studio Tools for Applications 中使用以下代码。它是运行 Microsoft Visual Basic 2005 和 Microsoft .NET Framework 版本 2.0.50727 SP2 的 Microsoft Visual Studio 2005 版本 8.0.50727.42。
Public Sub Reference_GetCurrentPartorAssembly(ByRef CurrentFile As SolidWorks.Interop.sldworks.ModelDoc2)
CurrentFile = swApp.ActiveDoc
If IsNothing(CurrentFile) Then Throw New Exception("Could not get reference to current part or assembly.")
End Sub
一般来说,代码工作正常。但是,有时会在 Windows 任务管理器的“后台进程”列表下列出正在运行的 Solidworks 的额外实例。发生这种情况时,我的代码会引发异常。为了让我的代码毫无例外地执行,我必须找到流浪的solidworks后台进程并使用任务管理器强制终止它。
(我不知道为什么会出现这些 Solidworks 的背景版本。)
我没有发现 Solidworks 关于 ActiveDoc 的文档很有帮助:http://help.solidworks.com/2017/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.isldworks~activedoc.html? verRedirect=1
我的问题是:如何在不必强制终止那些后台进程的情况下获得对当前文档的引用?我尝试寻找其他方法来获取对活动文档的引用,但我发现的大多数代码示例都使用 ActiveDoc。