Hello大家好!我是九哥~ 之前看到群里小伙伴经常会问如何去掉Revit重复的图元,有推荐各种插件的,其实的,Revit本身就会提示你有哪些图元是重复的,就在管理选项卡下面的警告里,即查阅警告信息。 点击警告后,Revit右下角就会弹出Revit警告窗口,这里显示了不同的警告信息,例如下面的提示:
Hello大家好!我是九哥~
之前看到群里小伙伴经常会问如何去掉Revit重复的图元,有推荐各种插件的,其实的,Revit本身就会提示你有哪些图元是重复的,就在管理选项卡下面的警告里,即查阅警告信息。
点击警告后,Revit右下角就会弹出Revit警告窗口,这里显示了不同的警告信息,例如下面的提示:
Revit会根据不同的问题,分类显示,然后我们可以手动一个一个的删除,而且通常情况下,这种警告都会有成百上千条,这对于实际操作者来说,就太麻烦了,这个时候,我们就可以寄希望于Dynamo了。
我们到Revit API手册里搜一下,很容易就能在Document下找到GetWarnings的方法:
基于此呢,很容易就能获取所有的Revit警告信息:
warnings = doc.GetWarnings()
然后,我们就可以根据所有的警告,逐条筛选出我们需要的即可。可是拿到警告信息以后,我们又不知道该如何上手了,这里需要了解一点,这些的警告消息,在Revit中被称为 FailureMessage ,我们需要搜一下:
这里方法还挺多的,我们要关注的就是与警告相关的图元和中文描述,如上图中红框所示,然后我们就可以根据图元ID进行操作了。
接下来以删除重复图元实例为例,进行代码展示:
import clr
clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager
DocumentManager.Instance.CurrentDBDocument =
warnings = doc.GetWarnings()
descriptions = []
elements = []
for warning in warnings:
descriptions.append(warning.GetDescriptionText())
ids_temp = warning.GetFailingElements()
elements_temp = []
for id in ids_temp:
elements_temp.append(doc.GetElement(id))
aids_temp=warning.GetAdditionalElements()
for id in aids_temp:
elements_temp.append(doc.GetElement(id))
elements.append(elements_temp)
OUT = descriptions, elements
完整截图如下,过滤出【相同位置处具有相同实例】项,将图元删掉即可:
另外还可以处理很多其他警告信息,小伙伴们自行尝试即可~
当然了,如果你是用的Revit2021,只需要将Dynamo升级到2.6版本以上,也是内置了警告相关的节点,很容易上手,我这里就不再赘述了哈。