Загрузка сборки

Автор Тема: Загрузка сборки  (Прочитано 2409 раз)

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

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

  • ADN OPEN
  • ****
  • Сообщений: 379
  • Карма: 21
Загрузка сборки
« : 10-12-2020, 13:55:48 »
Всех приветствую.
Возможно как-то отменить загрузку сборки или сделать так, чтобы "CommandMethod(команды)" не распознавался, если не выполняются определённые условия?

Оффлайн Вильдар

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Re: Загрузка сборки
« Ответ #1 : 10-12-2020, 14:02:51 »
Отменить загрузку нельзя.
Можно отменить регистрацию команд.
А лучше, сделать свой загрузчик. Который будет загружаться в автокад, а потом сам решать какие свои сборки дальше грузить.

Отмечено как Решение Lemieux 10-12-2020, 14:16:19

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Загрузка сборки
« Ответ #2 : 10-12-2020, 14:05:11 »
Ха. Ты будешь смеяться, но только вчера я отвечал на этот вопрос на форуме Autodesk.
Для этой цели нужно регистрировать команды не при помощи атрибута [CommandMethod(...)], а при помощи метода AddCommand. Вот пример:
Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.Runtime;
  2. using Autodesk.AutoCAD.ApplicationServices;
  3. using Autodesk.AutoCAD.EditorInput;
  4. using Autodesk.AutoCAD.Internal;
  5.  
  6. // This line is not mandatory, but improves loading performances
  7. [assembly: ExtensionApplication(typeof(CommandUtils.MyPlugin))]
  8.  
  9. namespace CommandUtils
  10. {
  11.   public class MyPlugin : IExtensionApplication
  12.   {
  13.     static bool condition = false;
  14.     void IExtensionApplication.Initialize()
  15.     {
  16.      
  17.       if (condition)
  18.       {
  19.          Utils.AddCommand("RIVILIS", "TEST1", "ТЕСТ1", CommandFlags.Modal, CommandHandler1);
  20.          Utils.AddCommand("RIVILIS", "TEST2", "ТЕСТ2", CommandFlags.Modal, CommandHandler2);
  21.       }
  22.     }
  23.  
  24.     void IExtensionApplication.Terminate()
  25.     {
  26.       if (condition)
  27.       {
  28.          Utils.RemoveCommand("RIVILIS", "TEST1");
  29.          Utils.RemoveCommand("RIVILIS", "TEST2");
  30.       }
  31.     }
  32.     public void CommandHandler1()
  33.     {
  34.       Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
  35.       ed.WriteMessage("\nCommand Test1");
  36.     }
  37.     public void CommandHandler2()
  38.     {
  39.       Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
  40.       ed.WriteMessage("\nCommand Test2");
  41.     }
  42.   }
  43. }
Только если condition != false команды зарегистрируются и будут опознаваться AutoCAD'ом.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ****
  • Сообщений: 379
  • Карма: 21
Re: Загрузка сборки
« Ответ #3 : 10-12-2020, 14:16:39 »
Круто! Всем спасибо  :)