Сообщество программистов Autodesk в СНГ

ADN Club => Inventor API => Тема начата: USSR_Nic от 11-01-2022, 14:16:27

Название: exe шник не подключается к инвентору
Отправлено: USSR_Nic от 11-01-2022, 14:16:27
Здравствуйте. У меня такая проблема: из под Visual Studio все работает на моей машине на ура. Но при попытке запустить exe файл из bin/debug не подключается к инвентору. На других машинаx ехе файл запускается и подключается к инвентору. У всех все работает кроме моей машины. В чем может быть причина того, что из под визуалки все работает, а при запуске ехе нет?
Visual Studio 13
Инвентор 2020

Подключаюсь как внешняя программа так:

Код - vb.net [Выбрать]
  1.         Try 'Попытка получить существующий экземпляр Inventor
  2.             _invApp = CType(System.Runtime.InteropServices.Marshal.
  3.             GetActiveObject("Inventor.Application"), Inventor.Application)
  4.         Catch ex As Exception 'Загрузка Inventor
  5.             MsgBox("Нет возможности подключиться к инвентору.")
  6.             End
  7.             Exit Sub
  8.         End Try
  9.  
или так:

     
Код - vb.net [Выбрать]
  1.   Try
  2.             _invApp = Marshal.GetActiveObject("Inventor.Application")
  3.         Catch ex As Exception
  4.             MsgBox("Нет возможности подключиться к инвентору.")
  5.             End
  6.             Exit Sub
  7.         End Try
Название: Re: exe шник не подключается к инвентору
Отправлено: Александр Ривилис от 11-01-2022, 16:50:17
USSR_Nic,
Тут может быть множество причин. И проблемная установка Inventor, и не та версия используемой .NET Framework.
А какая вообще информация об ошибке?
Название: Re: exe шник не подключается к инвентору
Отправлено: USSR_Nic от 11-01-2022, 17:05:27
ошибок нет. в представленном выше коде исполняется блок Catch. Т.е. не происходит подключения к инвентору по COM... как будто инвентор не запущен. Если туда вставить запуск инвентора то все подвисает.

Компы у всех одинаковые. И по железу и по софту. Мой отличается тока лучшей видяхой и установленной студией. И много чего еще понаставлено в отличии от остальных... Все лицензионное.
Название: Re: exe шник не подключается к инвентору
Отправлено: Александр Ривилис от 11-01-2022, 17:13:54
в представленном выше коде исполняется блок Catch
Убери его, чтобы видеть конкретную ошибку.
Название: Re: exe шник не подключается к инвентору
Отправлено: USSR_Nic от 11-01-2022, 17:59:16
Убрал весь блок try catch ничего вообще не происходит. Процесс висит в фоновых. Снимаю его - пропадает, но файл ехе не удалить. запущен или нет инвентор вообще не влияет

А, нет. Разница есть. Если инвентор не запущен возникает ошибка
(https://i.postimg.cc/75vQChHJ/image.jpg) (https://postimg.cc/75vQChHJ)
Название: Re: exe шник не подключается к инвентору
Отправлено: Александр Ривилис от 11-01-2022, 18:25:52
USSR_Nic,
В свойствах проекта указано, что создаётся приложение x64?
Вообще-то при запуске приложения при незапущенном Inventor код должен быть не такой.
Название: Re: exe шник не подключается к инвентору
Отправлено: USSR_Nic от 11-01-2022, 18:26:21
да.
Название: Re: exe шник не подключается к инвентору
Отправлено: Александр Ривилис от 11-01-2022, 18:28:01
USSR_Nic,

Какая версия .NET Framework в свойствах проекта?
Название: Re: exe шник не подключается к инвентору
Отправлено: USSR_Nic от 11-01-2022, 18:28:45

(https://i.postimg.cc/3dPxfs7Q/image.jpg) (https://postimg.cc/3dPxfs7Q)
Название: Re: exe шник не подключается к инвентору
Отправлено: USSR_Nic от 11-01-2022, 18:29:38
.Net Framework 4.5
Название: Re: exe шник не подключается к инвентору
Отправлено: Александр Ривилис от 11-01-2022, 18:31:49
USSR_Nic,
В конфигурации Release тоже не работает?
Название: Re: exe шник не подключается к инвентору
Отправлено: USSR_Nic от 11-01-2022, 18:36:34
То же самое.
Название: Re: exe шник не подключается к инвентору
Отправлено: USSR_Nic от 11-01-2022, 19:00:40
USSR_Nic,
Вообще-то при запуске приложения при незапущенном Inventor код должен быть не такой.
мне не нужно запускать инвентор если его нет. Нужно просто закрыть программу. Мне кажется я правильно написал. По крайней мере из под студии и на других машинах все работает как мне нужно.
Название: Re: exe шник не подключается к инвентору
Отправлено: Александр Ривилис от 11-01-2022, 22:30:38
мне не нужно запускать инвентор если его нет.
Это я и так понял. Только код ошибки неправильный. Короче говоря это проблема или Windows или Inventor на этой конкретной машине. И я не уверен в возможность это исправить без переустановки Windows.
Название: Re: exe шник не подключается к инвентору
Отправлено: USSR_Nic от 12-01-2022, 15:37:29
Грусно... Но в принципе я ща в студии допишу и отлажу прогу, потом ея в AddIn закидывать буду. А там она работать будет прям из инвентора. Так, что может оно и фиг с ним. Но грусно.............
Название: Re: exe шник не подключается к инвентору
Отправлено: filat от 17-01-2022, 10:53:05
Попробуй такое обращение:
Код - vb.net [Выбрать]
  1. Dim m_inventorApp As Inventor.Application = Nothing
  2. Try ' попытка найти активный сеанс Inventor
  3. m_inventorApp = System.Runtime.InteropServices .Marshal.GetActiveObject("Inventor.Application")
  4. Catch ex As Exception
  5. End Try
  6. If m_inventorApp Is Nothing Then
  7. 'Сеанс не найден
  8. End If
  9.  
Название: Re: exe шник не подключается к инвентору
Отправлено: R.I.Chernov от 28-04-2022, 00:18:57
Всем привет. Не уверен, о той ли проблеме идет речь, так что извиняюсь, если выйдет оффтопик.
В общем бывает такая штука, когда используешь код, что приведу ниже: то работает нормально, а то бывает Marshal.GetActiveObject("Inventor.Application") перестает находить запущенное приложение, вылетает исключение внутри try - catch и создается новый экземпляр приложения.

Лечится тем, что надо запускать инвентор от имени администратора, "ПКМ на ярлык => Свойства => Вкладка 'Ярлык' => Дополнительно => Запуск от имени администратора".
По вашему описанию, что на всех машинах кроме вашей работает, вполне похоже.

Код - C# [Выбрать]
  1. using Inventor;
  2. using System;
  3.  
  4. namespace RIChernov.Launcher
  5. {
  6.     public class Launcher
  7.     {
  8.         public Application GetActiveApplicationOrLaunch()
  9.         {
  10.             Application app = GetActiveApplicationOrNull();
  11.             if (app == null)
  12.             {
  13.                 try
  14.                 {
  15.                     app = Activator.CreateInstance(Type.GetTypeFromProgID
  16.                         (_progID)) as Inventor.Application;
  17.                     app.Visible = true;
  18.                 }
  19.                 catch
  20.                 {
  21.                     throw new Exception("Error: couldn't create Inventor instance");
  22.                 }
  23.             }
  24.             return app;
  25.         }
  26.         public Application GetActiveApplicationOrNull()
  27.         {
  28.             Application app = null;
  29.             try
  30.             {
  31.                 /*
  32.                     чтобы тут работало нормально,
  33.                     надо запускать инвентор от имени администратора
  34.                 */
  35.                 app = System.Runtime.InteropServices.Marshal
  36.                         .GetActiveObject(_progID) as Inventor.Application;
  37.             }
  38.             catch { }
  39.             return app;
  40.         }
  41.         private string _progID = "Inventor.Application";
  42.     }
  43. }