美文网首页BIM的乐趣
Dynamo一键清理Revit中未放置的房间和多余的房间

Dynamo一键清理Revit中未放置的房间和多余的房间

作者: 九哥BIMer | 来源:发表于2020-04-25 12:04 被阅读0次

今天我们来解决一个Revit中比较常见的小问题,就是清理未放置的房间和多余的房间。

首先,我们可以先做个测试样例,看看问题在哪里,如下图,我简单画了个模型,生成一个房间明细表,如下图

image

我的目的是,利用Dynamo一次清除所有的未放置房间和多余房间。

这个很容易实现,我这里就不摆各种节点了,直接用代码搞定这次。

首先我们要获取所有的房间,首先想到的方法,就是FilteredElementCollector,通过Category来过滤收集元素。我们打开API手册,来查一下这个的用法

image

如图,一下就能找到很多我们需要的信息。所以可以根据自己的需求,来收集所需的元素,那我我们这里收集房间的代码如下:

collector = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Rooms).GetElementIdIterator()

这里是分几个层级来获取房间元素的,首先是构造一个元素收集器,收集所有的元素FilteredElementCollector(doc),然后通过OfCategory方法来获取内置类别的元素,这里需要简单了解下BuiltInCategory Enumeration,API手册中列出了所有BuiltInCategory的枚举,根据需要选择就行。然后我们继续获取元素的ID可以,通过GetElementIdIterator方法。

到这里,我们可以运行一下,看可以得到什么,如下图

image

这里我们得到的是Autodesk.Revit.DB.FilteredElementIdIterator子类,还不是我们要的房间元素。

接下来,我们只需要用一个for循环,来获得所有的房间图元,代码如下:

rooms = []
for a in collector:
  rooms.append(doc.GetElement(a))

我们遍历了一下上一步过滤到的元素,得到了对应的Element。

这里也可以直接读取Element,从族类型降级到族实例,代码如下:

rooms = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Rooms).WhereElementIsNotElementType().ToElements()

接下来我们可以翻到顶部,看下之前的房间明细表,我们可以看出,面积栏未放置和多余的房间位置,是没有面积值得。

回到代码上,我们理论上,可以通过判断房间的面积是否等于“0”,来过滤出未放置的房间和多余的房间,于是就有了下面的代码:

for room in rooms:
  if room.Area == 0:
    doc.Delete(room.Id)

到这里,我们的核心代码就完成了,如果单纯的把这几行代码复制过去,发现还是运行不了,所以我们需要对代码进行完善,这里需要对前面添加各种引用,可以百度Dynamo万能模板,把前面代码补全。

同时,最后这个删除房间的循环,需要放在以下代码之间,对元素进行解封:

TransactionManager.Instance.EnsureInTransaction(doc)

TransactionManager.Instance.TransactionTaskDone()

这样基本就能实现删除未放置房间和多余房间的功能了。

好了,今天的分享就到这里了,主要是分享思路,小伙伴要多自己尝试才行哦~~

BIM的乐趣“群成员已经过百了,有希望入群的小伙伴,可以加我好友,备注来源,我来拉你入群哦~

相关文章

  • Dynamo一键清理Revit中未放置的房间和多余的房间

    今天我们来解决一个Revit中比较常见的小问题,就是清理未放置的房间和多余的房间。 首先,我们可以先做个测试样例,...

  • 清理房间

    扔掉不必要的东西,这是一种生活的智慧。扔掉不必要的包袱和累赘,才能把更多更有价值的事物请进来。 做生活的主人要学会...

  • 清理房间

    感恩肯定练习第九轮第二十天 感恩,商户客服耐心的解答服务,谢谢谢谢。 感恩,中午和先生一起把新洗衣机从屋里搬到洗衣...

  • 清理房间

    今天清理了一个房间,是杂物间。 一、先把所有物品都搬到别的房间,撒水,将地扫干净,把桌子抹干净。 ...

  • Dynamo For Revit: 简约楼梯 stair

    前言 如果谁有真实的 Dynamo For Revit 相关的项目,求沟通交流。思来想去,不知道 Dynamo 可...

  • Dynamo For Revit: 找到某个特定楼层特定房间里所

    版权所有,极客BIM工作室。 概述 通过Dynamo,找到某个特定的房间里面摆放的所有家具。 步骤 找到所有的家具...

  • 房间大清理

    一直觉得家里太乱了,东西太多了,今天终于下定决心进行大清理。 从自己开始,衣柜内的衣服都清理出来,两年没穿过的直接...

  • 清理厨房间

    今天的午饭有点迟,因为早饭迟,看来一顿迟顿顿迟不是不无道理的。 休息了会,睡觉的睡觉去了,复习的复习去了。干脆,把...

  • dynamo 1.3.1 for revit中文破解版软件免费下

    dynamo for revit 2017 2018是一个Revit参数化建模插件,它采用的一种节点的可视化编程方...

  • Revit元素类别——Dynamo Python系列教程(六)

    今天我们来聊聊Revit元素这点事,不仅仅是在Dynamo Python之中涉及,我们在日常使用Revit的时候,...

网友评论

    本文标题:Dynamo一键清理Revit中未放置的房间和多余的房间

    本文链接:https://www.haomeiwen.com/subject/sfghwhtx.html