如何取得镜像图元的ElementID


问题:

用函数ElementTransformUtils.MirrorElement(doc, wall.Id, plane)创建一个墙的镜像,我想对镜像出来的墙做一些处理,可惜这个函数没有返回值,得不到镜像墙的句柄。
我现在的做法是做镜像之前取一遍墙的List,镜像之后在取一遍,看多出哪个,有没有更有效率的办法?


答:

不知道你是否想在同一个命令中来获知镜像后新生成的墙?

如果想在同一个Revit二次开发命令中获知新生成的墙,只能采用你说的方法。 但是有一个窍门:Revit 通过过滤FilteredElementCollector 获知的ElementId.IntegerValue 是按照升序排列的。(我是我发现的规律,尚未发现违背这个规律的)。 对比MirrorElement命令前后的最大Wall的ElementId.IntegerValue 值,你只需从后到前的方式获取几个墙的ElementId,看看是否是新生成的。这应该可以减少


如果你想在另一个命令中获知新产生了哪些墙,你可以用DocumentChanged 事件。 这个事件处理函数的参数会带有哪些对象时新生成的,哪些对象被删除了。


下面是DocumentChanged 事件处理函数的参数类提供的方法来获取Document里面对象发生的具体变化。


Public method GetAddedElementIds()()()()
Returns set of elements newly added to the document.
Public method GetAddedElementIds(ElementFilter)
Returns set of newly added elements that pass the filter.
Public method GetDeletedElementIds
Returns set of elements that were deleted from the document.  

转载请复制以下信息:

原文链接: http://blog.csdn.net/joexiongjin/article/details/17349247

作者:  叶雄进



你可能感兴趣的:(如何取得镜像图元的ElementID)