土木在线论坛 \ BIM技术 \ BIM专业软件 \ Dynamo读取Revit警告

Dynamo读取Revit警告

发布于:2022-08-25 08:43:25 来自:BIM技术/BIM专业软件 [复制转发]


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版本以上,也是内置了警告相关的节点,很容易上手,我这里就不再赘述了哈。






全部回复(0 )

只看楼主 我来说两句抢沙发

BIM专业软件

返回版块

9035 条内容 · 242 人订阅

猜你喜欢

阅读下一篇

每日一技 | 1808 浅谈项目打开后的门面—启动视图(文/肖飞)

END ▼

回帖成功

经验值 +10