跟踪Revit 2018/2019中的元素编辑或元素编辑事件

时间:2018-11-05 03:58:09

标签: c# visual-studio revit-api revit

我正在研究一个在Revit 2018和Revit 2019中对宿主元素进行钢筋加固的项目。在我的代码重新生成宿主元素的钢筋加固后,我不知道用户是否手动编辑了我的宿主或钢筋(已生成)根据我的代码,当然)。我只是想出了这两个想法:

  1. 在我的代码生成钢筋时,将所有钢筋和主机信息存储到主机的可扩展存储中(实际上是每个属性,id等)。当我再次调用代码在主机上工作时,我将所有当前信息与主机实体中保存的信息进行比较,以查找已更改的内容。 显然,这种方法会花费我很多钱,并且会对性能造成巨大的损失。

  2. 通过“元素-编辑-事件”捕获用户可能对我的钢筋和主机所做的所有更改。但是,我似乎找不到适合我需要的正确事件。我尝试了Element和Document事件以及ITransactionFinalizer类,但没有结果。

在哪里可以找到我想要的活动或如何实现我想要的?非常欢迎另一种更好的方法。谢谢大家。

2 个答案:

答案 0 :(得分:1)

恭喜您自己找到指向Tracking Element Modification的链接。我也会指出这一点。您可能还想查看该项目的GitHub存储库,以及后续项目的想法:

期待听到您的最终解决方案。如果它足够通用,也可以引起其他人的兴趣,我很乐意为您在博客上分享它。谢谢!

答案 1 :(得分:0)

我(以及杰里米·塔米克先生)提到的解决方案都提到了Tracking Element Modification

是我所需要的,但是它有点太通用了。

有关此特定问题的更详细解决方案,我筛选了钢筋主机(梁,柱,墙...),获取了所有托管钢筋,然后对其参数进行了快照。

不过,为像我这样的新手提供了一些小笔记:

  1. 某些参数将更改,具体取决于其他参数。如果您要进行用户修改,请过滤掉已更改的ReadOnly参数,以使列表的范围缩小很多。

  2. 如果从主机上删除所有钢筋,或将钢筋添加到空主机,则会相应地删除或添加一些参数。