为什么我在使用IExternalEventHandler时无法在DockablePane中选择元素

问题描述 投票:0回答:1

我想在单击按钮时选择元素。我使用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);
        }
revit-api revit
1个回答
0
投票

显然,外部事件处理程序没有为您提供有效的用户界面上下文。为了获得这样的上下文,您可能想要订阅Idling事件。当Revit无事可做时可以调用该事件,因此可以自由地与用户进行交互。

© www.soinside.com 2019 - 2024. All rights reserved.