Как я могу активировать (отобразить) вид с помощью Revit API?
Я пытаюсь активировать вид с помощью Revit API. Что именно я хочу сделать, так это попросить пользователя выбрать несколько стен, но когда его об этом попросят, он не может переключать виды, чтобы выбрать больше стен (в этот момент все отображается серым цветом). Таким образом, представление, которое я хочу активировать (я имею в виду, я хочу, чтобы это представление фактически отображалось на экране) уже существует, и я могу получить доступ к его идентификатору.
Я видел потоки о создании, просмотре, фильтрации представлений, но ничего об их активации... Это представление поэтажного плана.
До сих пор я могу получить доступ к связанному объекту ViewPlan и связанным параметрам (name, Id, ..).
Можно ли это сделать?
Большое спасибо!
Arnaud.
3 ответа
Я думаю, что наиболее предпочтительным способом является метод UIDocument.RequestViewChange(). Сложность этого заключается в том, что, если вы не разработали свое приложение, чтобы оно было немодальным с внешними событиями или на холостом ходу, на самом деле это может произойти лишь позже, когда управление вернется к Revit из вашего аддина. (Там также устанавливается свойство UIDocument.ActiveView - не положительно, если это имеет другие ограничения).
Другой способ, которым я делал это исторически, - это использование команды UIDocument.ShowElements(). Хитрость в том, что у вас нет контроля над точным представлением, но если вы можете определить элементы, которые появляются только в этом представлении, вы можете сделать это вообще (даже если вам нужно выполнить отдельный запрос, чтобы получить куча элементов, которые есть только в заданном плане этажа).
Удачи!
Думаю, решением вашей проблемы может быть:
commandData.Application.ActiveUIDocument.ActiveView = View;
В
ActiveView
является свойством и имеет параметры {получить и установить}.
ActiveView имеет только метод доступа get, то, что предлагает Мостафа, не сработает. Я использовал метод RequestViewChange() с модальным диалогом и до сих пор не имел проблем.