Всем привет. Перечитал уже кучу всего и запутался совсем. Прошу меня распутать)
Итак, если сделать команду по статье
Hello World, то все нормально. Делаем проект, собираем его, создаем файл манифеста и моя команда появляется на вкладке Add-ins
Однако, в моем случае вариант не подходит. Я начал было делать по аналогии с автокадом. Т.е. у меня есть приложение, которое при загрузке в ревит грузит dll-ки команд. Примерно так:
public class ModPlus : IExternalApplication
{
public Result OnStartup(UIControlledApplication application)
{
try
{
// Принудительная загрузка сборок
LoadAssms();
InitConfigFile();
MpVars.ReadVarsFromSettingsfile();
LoadFunctions();
// Load ribbon
if (MpVars.MpRibbon)
ModPlus_Revit.App.RibbonBuilder.BuildRibbon();
else
ModPlus_Revit.App.RibbonBuilder.RemoveRibbon();
// Загрузка основного меню (с проверкой значения из файла настроек)
MpMenuFunction.LoadMainMenu();
return Result.Succeeded;
}
catch (Exception exception)
{
// Тут отображение ошибки должно быть в обычном окне, т.к. сборки могли еще не загрузилится
TaskDialog.Show("ModPlus", exception.Message + Environment.NewLine + exception.StackTrace,
TaskDialogCommonButtons.Ok);
return Result.Failed;
}
}
В методе LoadFunctions() происходит загрузка dll-ок с помощью Assembly.LoadFrom(). Все работает, все грузится
Дальше, я хочу, чтобы создавалась моя собственная вкладка на ленте. Тут в общем проблем особо нет - все аналогично работе с автокадом. И вот почти на финале реализации я столкнулся с проблемой. Если в случае автокада я создаю на ленте кнопку, то при нажатии на нее вызов команды происходит с использованием простого Application.DocumentManager.MdiActiveDocument.SendStringToExecute()
А вот в Ревите таких "возможностей" нет
Вопрос - как можно "запустить" команду, которую я загрузил через Assembly.LoadFrom()?