Как оптимизировать [CommandMethod("commanda")]

Автор Тема: Как оптимизировать [CommandMethod("commanda")]  (Прочитано 8459 раз)

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

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

  • ADN OPEN
  • Сообщений: 14
  • Карма: 3
Добрый день!
Как сделать так, чтобы не прописывать в коде все мои команды, т.е. каждую команду мы прописываем так:

[CommandMethod("комманд1")]
public static void комманд1() { воид_комманд1(); }
[CommandMethod("комманд2")]
public static void комманд2() { воид_комманд2(); }
...........
[CommandMethod("коммандN")]
public static void коммандN() { воид_коммандN(); }

Вопрос в чем, как загрузить динамически, например из файла, все мои команды, а не прописывать все в коде?

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Re: Как оптимизировать [CommandMethod("commanda")]
« Ответ #1 : 27-03-2022, 05:29:43 »
Посмотрите в сторону Utils.AddCommand. Возможно это то, что вам нужно.

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

  • ADN OPEN
  • Сообщений: 14
  • Карма: 3
Re: Как оптимизировать [CommandMethod("commanda")]
« Ответ #2 : 27-03-2022, 12:57:07 »
Посмотрите в сторону Utils.AddCommand. Возможно это то, что вам нужно.

Благодарю.
В этом случае все равно нужно прописывать каждую команду в коде, но на одну строчку меньше  :D.
Нашел такое:
Код - C# [Выбрать]
  1. Utils.AddCommand("RIVILIS", "TEST1", "ТЕСТ1", CommandFlags.Modal, my_function);

my_function - это функция выполнения команды автокада и нельзя использовать с аргументами.
А так, если можно было использовать аргументы, то было бы в самый раз.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как оптимизировать [CommandMethod("commanda")]
« Ответ #3 : 27-03-2022, 14:02:58 »
alvimo,
Есть еще и lisp-функции, которые можно определять в AutoCAD .NET API - там и аргументы можно передавать.
Код - C# [Выбрать]
  1. Utils.AddCommand("RIVILIS", "TEST1", "ТЕСТ1", CommandFlags.Defun, my_function);
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Как оптимизировать [CommandMethod("commanda")]
« Ответ #4 : 27-03-2022, 16:13:35 »
Как сделать так, чтобы не прописывать в коде все мои команды
Можете использовать кодогенерацию, которая появилась в net 5. На первый взгляд выглядит страшно и непонятно, но штука очень мощная и перспективная.

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

  • ADN OPEN
  • Сообщений: 14
  • Карма: 3
Re: Как оптимизировать [CommandMethod("commanda")]
« Ответ #5 : 28-03-2022, 16:34:38 »
alvimo,
Есть еще и lisp-функции, которые можно определять в AutoCAD .NET API - там и аргументы можно передавать.
Код - C# [Выбрать]
  1. Utils.AddCommand("RIVILIS", "TEST1", "ТЕСТ1", CommandFlags.Defun, my_function);

Вообще скудная информация в инете по теме CommandFlags.Defun. Может пример какой есть?

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

  • ADN OPEN
  • Сообщений: 14
  • Карма: 3
Re: Как оптимизировать [CommandMethod("commanda")]
« Ответ #6 : 28-03-2022, 16:36:51 »
Как сделать так, чтобы не прописывать в коде все мои команды
Можете использовать кодогенерацию, которая появилась в net 5. На первый взгляд выглядит страшно и непонятно, но штука очень мощная и перспективная.

У меня нет 4.5 и автокад 15.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как оптимизировать [CommandMethod("commanda")]
« Ответ #7 : 28-03-2022, 16:52:00 »
alvimo,
Есть еще и lisp-функции, которые можно определять в AutoCAD .NET API - там и аргументы можно передавать.
Код - C# [Выбрать]
  1. Utils.AddCommand("RIVILIS", "TEST1", "ТЕСТ1", CommandFlags.Defun, my_function);

Вообще скудная информация в инете по теме CommandFlags.Defun. Может пример какой есть?
Примера нет. Погугли атрибут [LispFunction]
http://docs.autodesk.com/ACD/2011/ENU/filesMDG/WS1a9193826455f5ff-e569a0121d1945c08-17c3.htm
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Как оптимизировать [CommandMethod("commanda")]
« Ответ #8 : 28-03-2022, 16:58:38 »
У меня нет 4.5
Тогда да, увы:
Цитировать
Проект "..\CommandGenerator\CommandGenerator.csproj" предназначен для целевой платформы "netstandard2.0". На него не следует ссылаться в проекте, предназначенном для целевой платформы ".NETFramework,Version=v4.5".
Нужна минимум 4.6.1 версия: https://github.com/dotnet/standard/blob/v2.1.0/docs/versions/netstandard2.0.md