【问题标题】:Revit 2016 API "Selection Watcher Using Idling Event"Revit 2016 API“使用空闲事件的选择观察器”
【发布时间】:2016-04-22 16:27:30
【问题描述】:

我是 Revit Api 的新手,正在寻找另一种方法来获取选定元素,而不是使用 idling 事件。我所做的所有阅读,主要是关于buidingcoder 说这似乎是唯一的方法。还有其他方法吗?

【问题讨论】:

    标签: revit-api


    【解决方案1】:

    这绝对不是唯一的方法。选择一个元素与 Idling 事件没有任何关系。什么彻头彻尾的废话!

    您可以使用 Selection.PickObject 方法以交互方式选择元素。

    您还可以在从 Selection.GetElementIds 方法启动命令之前检索预先选择的元素。

    如果您不熟悉 Revit API,您应该首先阅读入门资料,尤其是 DevTV 和 My First Revit Plugin 教程。

    这立即回答了您的这个问题,除此之外还有更多:

    http://thebuildingcoder.typepad.com/blog/about-the-author.html#2

    【讨论】:

    • 确实如此。我可以看到三种方式,每种方式都有自己的缺点。1-) 使用空闲事件。效率不高 2-) 使用外部命令。这似乎是获得 Selection.PickObject 的唯一方法,这意味着用户必须首先从功能区栏中选择一个命令。 3-) 使用功能区栏工作,它只会给我前三个元素。我正在寻找一种无需用户首先单击按钮即可获得选择的直接方式。
    【解决方案2】:

    如果您在选择更改时尝试执行某些操作,您可能需要查看 Jeremy Tammik 的以下博客文章:Element Selection Changed Event

    基本思想是订阅事件而不是轮询(您提到的IdleEvent 方法或使用计时器)。由于 Revit API 实际上并没有这样的事件,一个聪明的家伙 - 我们称他为 Vilo - 想出了订阅 Modify 面板的PanelEvent 的想法。这很巧妙!阅读博客文章以获取有关如何执行此操作的更多信息(和示例代码!)!

    【讨论】:

    • 感谢达伦。那篇文章让我开始了。我不热衷于解决这个问题,因为它只会给我前 3 个选择(根据帖子),但它可能是在我获得选择之前不让用户先点击按钮的唯一选择。
    猜你喜欢
    • 2016-12-31
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多