Dynamo读取Revit警告
奔跑的饮水机
2022年08月25日 08:43:40
只看楼主

Hello大家好!我是九哥~         之前看到群里小伙伴经常会问如何去掉Revit重复的图元,有推荐各种插件的,其实的,Revit本身就会提示你有哪些图元是重复的,就在管理选项卡下面的警告里,即查阅警告信息。         点击警告后,Revit右下角就会弹出Revit警告窗口,这里显示了不同的警告信息,例如下面的提示:


Hello大家好!我是九哥~

        之前看到群里小伙伴经常会问如何去掉Revit重复的图元,有推荐各种插件的,其实的,Revit本身就会提示你有哪些图元是重复的,就在管理选项卡下面的警告里,即查阅警告信息。

        点击警告后,Revit右下角就会弹出Revit警告窗口,这里显示了不同的警告信息,例如下面的提示:


        Revit会根据不同的问题,分类显示,然后我们可以手动一个一个的删除,而且通常情况下,这种警告都会有成百上千条,这对于实际操作者来说,就太麻烦了,这个时候,我们就可以寄希望于Dynamo了。

        我们到Revit API手册里搜一下,很容易就能在Document下找到GetWarnings的方法:

        基于此呢,很容易就能获取所有的Revit警告信息:


 warnings = doc.GetWarnings()

        然后,我们就可以根据所有的警告,逐条筛选出我们需要的即可。可是拿到警告信息以后,我们又不知道该如何上手了,这里需要了解一点,这些的警告消息,在Revit中被称为 FailureMessage ,我们需要搜一下:

        这里方法还挺多的,我们要关注的就是与警告相关的图元和中文描述,如上图中红框所示,然后我们就可以根据图元ID进行操作了。

        接下来以删除重复图元实例为例,进行代码展示:






















import clrclr.AddReference('RevitServices')from RevitServices.Persistence import DocumentManagerdoc = 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版本以上,也是内置了警告相关的节点,很容易上手,我这里就不再赘述了哈。






相关推荐

APP内打开