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

24/02/2015

Как программно извлечь список горячих клавиш

Вопрос: Подскажите как можно получить список горячих клавиш с помощью Revit API.

Ответ: В пользовательском интерфейсе есть команда, с помощью которой можно экспортировать список горячих клавиш в XML-файл.

По идее эту команду можно выполнить программно, используя PostCommand.

Правда придется извратиться, чтобы проделать это просграммно. Можно испльзовать как Revit API PostCommand, так и библиотеку .NET UI Automation и выполнить следующую последовательность:

Вид > Окна > Пользовательский интерфейс > Горячие клавиши > Импорт > Ввести имя файла > Сохранить > Отмена

При использовании PostCommand нужно будет обработать все всплывающие диалоги с помощью Revit API.

Revitalizer предлагает другой способ: Просто прочитайте этот файл:

  • C:\Users\[Имя пользователя]\AppData\Roaming\Autodesk\Revit\Autodesk Revit 2015\KeyboardShortcuts.xml

Как видите, файл хранится в профиле пользователя. Поэтому на одном компьютере их может быть несколько.

Вопрос: Этот файл всегда генерируется автоматически, или нужно запустить какую-то команду в Revit, чтобы он появился?

Revit всегда его содержит в актуальном состоянии и обновляет каждый раз, когда я меняю горячие клавиши?

Ответ: Да, Revit обновляет этот файл сразу же, как я поменял клавиши в пользовательском интерфейсе.

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

Хотя дальнейшее тестирование показало, что XML-файл отсутствует, если пользователь не изменял и не задавал свои горячие клавиши.

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

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

Атрибуты CommandId и Shortcuts не зависят от языка. И если вам нужна только эта информация, то одно файла будет достаточно.

Источник: http://thebuildingcoder.typepad.com/blog/2015/02/keyboard-shortcuts-and-other-news.html#4

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

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