【发布时间】:2020-01-14 04:02:06
【问题描述】:
我正在努力监控 Revit 中的元素选择更改。
窗口选择没有问题;监视元素选择随着用户“控制选择”而发生变化,这是我正在研究解决方案的主要问题。回溯 Revit 显然有一个“元素选择已更改”方法,但它已被隐藏/弃用,令我们社区中的许多人感到沮丧。
因为我们社区中有这么多人想出了一些好主意来解决这个看似基本的问题。
具体来说,Jeremy Tammicks 很棒的网站 The Building Coder 上详细介绍了 this post,其中列出了三个最可行的解决方法。
- 使用 OnIdling 事件检查当前选择
- 使用计时器以指定的时间间隔引发事件。
- 使用 Revit 的 Modify Tab PropertyChanged 事件返回选定元素的列表。
我尝试实现的是#3,它最初是由我们社区的一位名叫 Vilo here 的成员提出的。 Jeremy Tammick 已将此代码提供给我们在 SDK 示例中使用。这是我实现的当前“工作状态”的repository。
Jeremy Tammick 像往常一样提出了很好的建议,但以下问题仍然存在。
- “PropertyChanged”事件在取消订阅事件后继续触发。
- 根据订阅/取消订阅事件的次数多次报告元素 ID。请参阅屏幕截图 #1(可能与项目 #1 事件仍然触发。我的另一个想法是“PropertyChanged”是否由于初始“PropertyChanged”事件产生的 PropertyChange 而再次被触发?
- 并非所有 ElementId 在选择时都会报告。预感是在某些时候没有财产变化。一旦选择了不同的元素导致属性更改,事件就会触发并显示所有元素 ID。 如果您找到了“元素选择更改监控”的主要问题的解决方案或 Vilo 建议订阅修改选项卡属性更改事件 i 的解决方案,并且我怀疑还有许多其他问题,将不胜感激一些反馈。
【问题讨论】: