Почему я не могу выбрать элемент в DockablePane, когда я использую IExternalEventHandler - PullRequest
0 голосов
/ 27 апреля 2020

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

метод: pickobject / pickobjects , я меняю метод на pickPoint успешный запуск.

событие

public class ExecuteEvent : IExternalEventHandler
    {
        public string  ElementId { get; set; }
        public void Execute(UIApplication app)
        {
            UIDocument uidoc = app.ActiveUIDocument;
            Autodesk.Revit.DB.Document doc = uidoc.Document;
            Autodesk.Revit.UI.Selection.Selection sel = uidoc.Selection;
            Autodesk.Revit.DB.Reference re = sel.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element);
            Autodesk.Revit.DB.XYZ point = sel.PickPoint("select");
            ElementId = re.GetType().Name;




        }

        public string GetName()
        {
            return "ExecuteEvent";
        }
    }


hander

 Exc = new ExecuteEvent();
            ExternalHander = ExternalEvent.Create(Exc);

нажатие кнопки

private void Button_Click(object sender, RoutedEventArgs e)
        {
            ExternalHander.Raise();
            SetLabelText(Exc.ElementId);
        }

1 Ответ

0 голосов
/ 27 апреля 2020

Очевидно, что внешний обработчик событий не предоставляет вам действительный контекст пользовательского интерфейса. Чтобы получить такой контекст, вы можете подписаться на событие Idling. Это событие вызывается, когда Revit больше ничего не делает и, следовательно, может свободно взаимодействовать с пользователем.

...