Крашится Navisworks при попытке запустить пользовательский плагин

Автор Тема: Крашится Navisworks при попытке запустить пользовательский плагин  (Прочитано 7733 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн GeorgАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 50
  • Карма: 1
  • //Я не программист
Добрый день!
Возникла проблема, что я не могу запустить созданный плагин под Navisworks Manage 2021 - выбивает фатальную ошибку. Стандартный отчет во вложении
Возможно, проблема в том, что плагин изначально писался как "Приложение Windows Forms", затем в свойствах для него было переопределено "Библиотека классов", а менял я (приводил к классическому виду плагина) именно главный файл Forms - "Programs.cs":
Код - C# [Выбрать]
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using System.Windows.Forms;
  6. using Autodesk.Navisworks.Api.Plugins;
  7. using Autodesk.Navisworks.Api;
  8.  
  9.  
  10. namespace IFC_AddGeolocation_Ver1
  11. {
  12.    [PluginAttribute("Plugin to add geolocation's property to IFC files",                   //Plugin name
  13.                "IFC_Geo",                                       //4 character Developer ID or GUID
  14.                ToolTip = "Изменение геопространственной привязки для IFC файла",//The tooltip for the item in the ribbon
  15.                DisplayName = "IFC GeoConvert")]          //Display name for the Plugin in the Ribbon
  16.  
  17.  
  18.    public class Program : AddInPlugin
  19.  
  20.    {
  21.      
  22.       /// <summary>
  23.       /// Главная точка входа для приложения.
  24.       /// </summary>
  25.       [STAThread]
  26.       public override int Execute(params string[] parameters)
  27.  
  28.       {
  29.          System.Windows.Forms.Application.EnableVisualStyles();
  30.          System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
  31.          System.Windows.Forms.Application.Run(new GeneralForm());
  32.          return 0;
  33.       }
  34.    }
  35. }
  36.  
Также прикладываю ссылку - https://github.com/GeorgGrebenyuk/IFC_GeoSupport на данное недо-приложение на github. Оно никакое в плане описания как принято на github (пока что). Первый опыт в WindowsForms  :(

Оффлайн GeorgАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 50
  • Карма: 1
  • //Я не программист
Пока придумал такой костыль - оставить приложение Windows Forms как было, скомпилировать его в exe; вместо этого создать простую библиотеку классов, которой прописать следующее:
Код - C# [Выбрать]
  1. using Autodesk.Navisworks.Api.Plugins;
  2.  
  3. namespace IFC_GS_startApp
  4. {
  5.     [PluginAttribute("IFC GeoConvert",                   //Plugin name
  6.                     "IFC_Geo",                                       //4 character Developer ID or GUID
  7.                     ToolTip = "Plagin to add geolocation to IFC file",//The tooltip for the item in the ribbon
  8.                     DisplayName = "Adding geolocation to file")]          //Display name for the Plugin in the Ribbon
  9.  
  10.     public class CallMyProgram : AddInPlugin
  11.     {
  12.         public override int Execute(params string[] parameters)
  13.         {
  14.             System.Diagnostics.Process.Start(@"C:\Work\Code\IFC_GeoSupport\bin\Debug\IFC_AddGeolocation_Ver1.exe");
  15.             return 0;
  16.         }
  17.     }
  18. }
Я хотел бы знать, есть ли возможность это сделать из-под "материнского" проекта?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Georg,
А почему было не добавить твои формы в библиотеку классов вместо такого извращения?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн GeorgАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 50
  • Карма: 1
  • //Я не программист
"Добавить" - как лучше - через Ссылки → Проекты или Решение →Добавить →Существующий проект?
Это приложение потом будет собрано в инсталлятор - для добавления в пользовательские папки Navisworks на других компьютерах - как тогда будет правильнее поступить?
P.S. Я делаю в первый раз такое, и возможно, задаю глупые вопросы

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Georg,
Ты меня не понял. Я имел в виду, что ты создаёшь с нуля новый проект "простую библиотеку классов", как нужно для плагина Navisworks, а затем через FormDesigner создаёшь и настраиваешь свою форму. Только не забудь к проекту добавить ссылки (Add References) на System.Windows.Form и System.Drawing:
https://stackoverflow.com/questions/24687959/is-it-possible-to-create-a-windows-form-in-a-c-sharp-class-library
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн GeorgАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 50
  • Карма: 1
  • //Я не программист
Хммм, а с точки зрения корректности - так [см. ниже] поступать неправильно?
Добавляя в качестве существующего элемента скомпилированное приложение EXE и библиотеку вспомогательную для него MathNumeric (которые копируются в каталог плагинов Невиса вместе с данной библиотекой классов)
Опция xcopy /Y "$(TargetDir)*.*" "C:\Program Files\Autodesk\Navisworks Manage 2021\Plugins\$(TargetName)\" - в "Событиях сборки".
В самом Navisworks все работает без сбоев (но это оттого что мой "плагин" вообще не содержит никаких API-функций от Невиса) - поэтому может быть все работает корректно?

Извините, вам запрещён просмотр содержимого спойлеров.

Отмечено как Решение Georg 25-10-2020, 15:51:09

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
В самом Navisworks все работает без сбоев (но это оттого что мой "плагин" вообще не содержит никаких API-функций от Невиса) - поэтому может быть все работает корректно?
Только поэтому оно и работает. Возможно у тебя оно первоначально не работало из плагина потому что не могло найти "библиотеку вспомогательную для него MathNumeric" и его нужно было бы грузить при помощи Assembly.LoadFrom("путь к библиотеке") до его использования. 
« Последнее редактирование: 25-10-2020, 18:07:40 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Кстати, если твоё приложение не использует NavisWorks API и ты его сделал вообще в виде exe-файла, то зачем его вообще засовывать в NavisWorks? Сделай для него отдельную иконку на рабочем столе...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн GeorgАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 50
  • Карма: 1
  • //Я не программист
Оно просто топологически близко относится к Navisworks (сборка моделей разных форматов), а соль файлов IFC - что в них зачастую нет поддержки "Общих координат", что данное приложение и решает. Позиционирование приложения как плагин, а не как самостоятельное - нужно для сглаживания факта, что приложение по большей части исправляет косяки конкретных программ от вендоров-конкурентов Autodesk. А так хоть можно прикрыться "расширением функционала Navisworks".  :-\

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Тогда оставляй "как есть". Если не запустится как плагин, то запустится как exe-файл.
« Последнее редактирование: 25-10-2020, 18:06:09 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение