首页 > 解决方案 > 元素选择更改事件 - 实施斗争

问题描述

我正在努力监控 Revit 的元素选择更改。

窗口选择没有问题;监视元素选择随着用户“控制选择”而发生变化,这是我正在研究解决方案的主要问题。回溯 Revit 显然有一个“元素选择已更改”方法,但它被隐藏/弃用,令我们社区中的许多人感到沮丧。

因此,我们社区中的许多人提出了一些好主意来解决这个看似基本的问题。

具体来说,Jeremy Tammicks 很棒的网站 The Building Coder 上详细介绍了这篇文章,其中列出了三种最可行的解决方法。

  1. 使用 OnIdling 事件检查当前选择
  2. 使用 Timer 在指定的时间间隔引发事件。
  3. 使用 Revit 的修改选项卡 PropertyChanged 事件返回选定元素的列表。

我尝试实现的是#3,它最初是由我们社区的一位名叫 Vilo 的成员在这里提出的。Jeremy Tammick 已将此代码提供给我们在 SDK 示例中使用。这是我的实现的当前“工作状态”的存储库。

Jeremy Tammick 像往常一样提出了很好的建议,但以下问题仍然存在。

  1. “PropertyChanged”事件在取消订阅事件后继续触发。
  2. 根据订阅/取消订阅事件的次数,多次报告元素 ID。请参阅屏幕截图 #1(可能与项目 #1 事件仍然触发。我的另一个想法是,由于初始“PropertyChanged”事件产生的 PropertyChange,“PropertyChanged”是否再次被触发?
  3. 并非所有 ElementId 在它们被选中时都会被报告。预感是在某些时候没有财产变化。一旦选择了不同的元素导致属性更改,事件就会触发并显示所有元素 ID。如果您找到了“元素选择更改监控”的主要问题的解决方案或 Vilo 建议订阅修改选项卡属性更改事件 i 的解决方案,并且我怀疑还有许多其他问题,将不胜感激一些反馈。

在此处输入图像描述

标签: revit-apirevit

解决方案


Autodesk Revit API 论坛上的 Fair69 提供了解决选择监控整体问题的最佳解决方案。请参阅答案:https ://forums.autodesk.com/t5/revit-api-forum/element-selection-changed-event-implementation-struggles/mp/9237464/highlight/true#M43721


推荐阅读