Revit二次开发——套管位置随管道实时更新

2022-04-21 12:50:53 浏览数 (2)

2021年10月4日 天气晴,于福州。

最近很长时间没更新文章了,正好最近研究了一下套管随管道移动的动态更新功能,正好发上来大家参考。

要想实现这个功能,我认为有2种方法:

1.用DocumentChanged事件来实现。

2.利用revit提供的机制DMU功能(Dynamic Model Update)。

小编尝试使用DMU功能来实现这个过程,效果如下: http://mpvideo.qpic.cn/0bf23aaayaaa2uaitwc2krqvbwgdbtmaadaa.f10002.mp4?dis_k=46b033ba50bdc2bdc05615bcf4f4616d&dis_t=1650516618&vid=wxv_2075844648454897665&format_id=10002&support_redirect=0&mmversion=false

  1. 注册一个更新的RegisterUpdater UpdaterRegistry.RegisterUpdater(dmuUpdater);
  2. 添加一个监听接口AddTrigger UpdaterRegistry.AddTrigger(dmuUpdater.GetUpdaterId(), pipeCategoryfilter, geometryChange);

可以通过Element的以下方法来监听改变的事件:

1

GetChangeTypeAny

元素的任意改变

2

GetChangeTypeElementAddition

元素的添加

3

GetChangeTypeElementDeletion

元素的删除

4

GetChangeTypeGeometry

元素的图形的改变

5

GetChangeTypeParameter(ElementId)

指定元素的参数改变

6

GetChangeTypeParameter(Parameter)

参数的值改变

3.通过IUpdater接口注册更新元素

public class DMUUpdater : IUpdater

4. 更新的内容,都在Data里

public void Execute(UpdaterData data)

5.通过GetModifiedElementIds()来获得修改了的元素

ElementId elementId in data.GetModifiedElementIds()

6. 通过修改套管的Point 来实现跟随变化的动作

(el.Location as LocationPoint).Point = xyzNew;

基本上就是通过以上的方法来实现套管随管道变化而实时变化的。

0 人点赞