ADN Open CIS
Сообщество программистов Autodesk в СНГ

18/08/2014

Каждая кнопа на ленте привязана только к одной команде

Вопрос: Я бы хотел реализовать только одну внешнюю команду и вызывать ее при нажатии любой из кнопок, которые я создал в своем приложении. Все дело в том, что я хочу уменьшить количество кнопок на ленте, так как некоторые из них должны быть активны только в определенный момент. Как в методе Execute я могу определить какая именно кнопка была нажата, чтобы выполнить соответствующие действия? Например, можно ли определить название кнопки, на которую нажал пользователь?

Ответ: Revit API не поддерживает подобного механизма. Я вам тоже не подскажу такого способа.

Все же наилучший вариант – создать отдельную команду для каждой кнопки.

Однако, если же вам так хочется сделать именно так, как вы описываете, то можно создать один обработчик для всех ваших команд и назначить его на несколько кнопок с передачей дополнительного параметра, определяющего какая кнопка была нажата.

Для более подробного описания реализации смотрите пост реализация одной команды для нескольких кнопок.

Примечание. В посте говорится о необходимости использования UIElementActivated для определения какая кнопка была нажата.

Дополнение от Guy Robinson.  Почему бы просто сделать кнопку неактивной или вообще ее прятать? Такое поведение можно реализовать с помощью Revit API.

Источник: http://thebuildingcoder.typepad.com/blog/2014/07/upgrading-family-files-silently-part-2.html#3

Обсуждение: http://adn-cis.org/forum/index.php?topic=922

Опубликовано 18.08.2014