元素选择更改事件-实施过程中的挣扎

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

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

窗口选择没有问题;监视元素的选择随着用户“控制选择”的变化而改变,这是解决该问题的主要问题。 Revit显然具有“更改元素选择”的方法,但是它被隐藏/弃用,这使我们社区中的许多人感到沮丧。

因为我们社区中的许多人提出了一些很棒的想法来解决这个看似基本的问题。

[具体来说,在Jeremy Tammicks令人敬畏的站点The Building Coder上是this post,其中列出了三种最可行的解决方法。

  1. 使用OnIdling事件检查当前选择
  2. 使用计时器以指定的时间间隔引发事件。
  3. 使用Revit的Modify选项卡PropertyChanged事件返回所选元素的列表。

我尝试实现的一个是#3,它最初是由我们社区的一个名为Vilo here的成员提出的。 Jeremy Tammick已将此代码提供给我们在SDK样本中使用。这是我的实现当前“工作状态”的repository

Jeremy Tammick和往常一样有很好的建议,但下面的问题仍然存在。

  1. 取消订阅该事件后,“ PropertyChanged”事件将继续触发。
  2. 元素ID根据事件被订阅/取消订阅的次数被报告多次。请参阅屏幕快照#1(可能与项目#1相关联。事件仍在触发。我想到的另一个原因是,由于最初的“ PropertyChanged”事件导致了PropertyChange,因此再次触发了“ PropertyChanged”吗?
  3. 并非所有选择的ElementId都会报告。弯腰的是在某个时候没有财产变化。一旦选择了不相似的元素导致属性更改,就会触发该事件,并显示所有元素ID。如果您找到了解决“元素选择更改监视”的主要问题的解决方案,或者解决了Vilo建议订阅Modify Tabs属性更改事件i的建议的实现,并且我怀疑还有很多其他建议,我们将欢迎您提供一些反馈。

enter image description here

revit-api revit
1个回答
0
投票

Autodesk Revit API论坛上的Fair69具有解决选择监视整个问题的最佳方法。查看答案:https://forums.autodesk.com/t5/revit-api-forum/element-selection-changed-event-implementation-struggles/m-p/9237464/highlight/true#M43721

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