Я использую следующий код в инструментах Solidworks 2017 Visual Studio для приложений. Это Microsoft Visual Studio 2005 версии 8.0.50727.42 с Microsoft Visual Basic 2005 и Microsoft .NET Framework версии 2.0.50727 SP2.
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.