Добрый день!
В Revit есть 3 известных мне способа уведомлений о изменении выбранных на экране элементов, как описано в статье у Джереми
https://thebuildingcoder.typepad.com/blog/2015/03/element-selection-changed-event.html.
- Idling
- Timer - таймер, который проверяет выборку
- Событие, которое кидает Ribbon tab "Modify"
У каждого способа есть свои недостатки, у первых 2-х, связанные с производительностью, у последнего с точностью. Событие в Ribbon панели не возникает если пользователь щелкает последовательно на элементы той же категории, что и выбранный перед этим элемент.
Есть также панель свойств, в которой отображаются свойства всех элементов. Она реагирует на любое изменение выборки. Вопрос в том, что не понятно, как получить доступ, если это вообще возможно, к этой панели.
Так можно подписаться на событие PropertyChanged Ribbon панели:
private bool _subscribed = false;
public void SubscribeToSelectionEvent()
{
foreach (Autodesk.Windows.RibbonTab tab in Autodesk.Windows.ComponentManager.Ribbon.Tabs)
{
if (tab.Id == "Modify")
{
if (_subscribed)
{
tab.PropertyChanged -= SelectionEventHandler;
_subscribed = false;
}
else
{
tab.PropertyChanged += SelectionEventHandler;
_subscribed = true;
}
break;
}
}
}
Autodesk.Windows.ComponentManager.Ribbon.Tabs
это все Ribbon вкладки в интерфейсе Revit. Как можно добраться до панели свойств?