ADN Club > Navisworks API
Крашится Navisworks при попытке запустить пользовательский плагин
Georg:
Добрый день!
Возникла проблема, что я не могу запустить созданный плагин под Navisworks Manage 2021 - выбивает фатальную ошибку. Стандартный отчет во вложении
Возможно, проблема в том, что плагин изначально писался как "Приложение Windows Forms", затем в свойствах для него было переопределено "Библиотека классов", а менял я (приводил к классическому виду плагина) именно главный файл Forms - "Programs.cs":
--- Код - C# [Выбрать] ---using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;using Autodesk.Navisworks.Api.Plugins;using Autodesk.Navisworks.Api; namespace IFC_AddGeolocation_Ver1{ [PluginAttribute("Plugin to add geolocation's property to IFC files", //Plugin name "IFC_Geo", //4 character Developer ID or GUID ToolTip = "Изменение геопространственной привязки для IFC файла",//The tooltip for the item in the ribbon DisplayName = "IFC GeoConvert")] //Display name for the Plugin in the Ribbon public class Program : AddInPlugin { /// <summary> /// Главная точка входа для приложения. /// </summary> [STAThread] public override int Execute(params string[] parameters) { System.Windows.Forms.Application.EnableVisualStyles(); System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false); System.Windows.Forms.Application.Run(new GeneralForm()); return 0; } }} Также прикладываю ссылку - https://github.com/GeorgGrebenyuk/IFC_GeoSupport на данное недо-приложение на github. Оно никакое в плане описания как принято на github (пока что). Первый опыт в WindowsForms :(
Georg:
Пока придумал такой костыль - оставить приложение Windows Forms как было, скомпилировать его в exe; вместо этого создать простую библиотеку классов, которой прописать следующее:
--- Код - C# [Выбрать] ---using Autodesk.Navisworks.Api.Plugins; namespace IFC_GS_startApp{ [PluginAttribute("IFC GeoConvert", //Plugin name "IFC_Geo", //4 character Developer ID or GUID ToolTip = "Plagin to add geolocation to IFC file",//The tooltip for the item in the ribbon DisplayName = "Adding geolocation to file")] //Display name for the Plugin in the Ribbon public class CallMyProgram : AddInPlugin { public override int Execute(params string[] parameters) { System.Diagnostics.Process.Start(@"C:\Work\Code\IFC_GeoSupport\bin\Debug\IFC_AddGeolocation_Ver1.exe"); return 0; } }}Я хотел бы знать, есть ли возможность это сделать из-под "материнского" проекта?
Александр Ривилис:
Georg,
А почему было не добавить твои формы в библиотеку классов вместо такого извращения?
Georg:
"Добавить" - как лучше - через Ссылки → Проекты или Решение →Добавить →Существующий проект?
Это приложение потом будет собрано в инсталлятор - для добавления в пользовательские папки Navisworks на других компьютерах - как тогда будет правильнее поступить?
P.S. Я делаю в первый раз такое, и возможно, задаю глупые вопросы
Александр Ривилис:
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
Навигация
Перейти к полной версии