1

我在 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。

4

1 回答 1

0

以我的经验,solidworks 的多个实例可以完美运行,我认为solidwork 的背景版本不会影响您的主要实例。据我了解,您正在运行一个宏,而不是插件,因此请确保您从您的 Solidworks 前台版本启动 VSTS。也许不知何故,您的宏正在针对显然没有 activedoc 的后台版本之一执行。

另外,我会查看后台实例,如果您没有启动它们 - 没有理由让它们执行,请尝试记下它们似乎试图确定原因的时刻。

于 2018-01-31T05:45:29.947 回答