我在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
通常,代码工作正常。但是,有时会运行Solidworks的额外实例,这些实例列在"后台进程" Windows任务管理器中的列表。当发生这种情况时,我的代码抛出异常。为了让我的代码无异常地执行,我必须找到流浪的solidworks后台进程并使用任务管理器强行终止它。
(我不知道为什么会出现这些Solidworks的后台版本。)
我没有找到Solidworks'有关ActiveDoc的文档非常有用:http://help.solidworks.com/2017/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.isldworks~activedoc.html?verRedirect=1
我的问题是:如何在不必强行杀死这些后台进程的情况下获取对当前文档的引用?我试图寻找其他方法来获取对活动文档的引用,但我发现大多数代码示例都使用ActiveDoc。
答案 0 :(得分:0)
根据我的经验,solidworks的多个实例可以完美地运行,我不认为背景版本的solidwork会影响你的主要版本。 据我所知,您运行的是宏,而不是插件,因此请确保从前端版本的solidworks启动VSTS。也许某种程度上你的宏正在执行一个显然没有activedoc的后台版本。
另外我会看看背景实例,如果你没有启动它们 - 没有理由让它们执行,试着记下它们似乎试图确定原因的那一刻。