我在Solidworks 2017 Visual Studio Tools for Applications中使用以下代码。它是运行Microsoft Visual basic2005和Microsoft .NET Framework2.0.50727 SP2的Microsoft Visual Studio2005版本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。
发布于 2018-01-31 13:45:30
根据我的经验,solidworks的多个实例可以很好地工作,我不认为后台版本的solidworks会影响你的主实例。据我所知,您正在运行宏,而不是插件,所以请确保您是从solidworks的前台版本启动VSTS。也许你的宏是在一个明显没有活动文档的后台版本上执行的。
此外,我还会查看后台实例,如果您没有启动它们-没有理由让它们执行,请尝试在它们似乎试图确定原因的时刻记录下来。
https://stackoverflow.com/questions/48532440
复制相似问题