Revit如何创建选择集和搜索集?

如题所述

你知道revit怎么创建选择集和搜索集吗?好像大多数人都不知道,甚至对这个名称感到陌生,但如果你在学习使用revit,那你一定要会哦,这是我们比较常用的功能之一,话不多说,下面会详细介绍revit创建选择集和搜索集的方法教程。想了解和学习的,请继续往下看哦。

revit创建选择集和搜索集的方法教程

在Revit中,可以利用过滤器选择想要的族类别下的所有图元,同样Grasshopper也可以根据族类别,选择所有图元。但是我们选择以后,是否可以重复利用呢?答案是肯定的,在Revit中,当你过滤好一类图元以后,是可以在修改上下文选项卡里,最右侧找到保存按钮,保存当前的选择集。

但是Revit只能根据族类别对图元进行过滤,而Grasshopper可以更精确的按参数进行过滤,并且在过滤完成以后,直接创建选择集,在需要使用的时候,直接在Revit内重新载入选择集即可。

例如,要过滤所有注释参数为“房间”的墙体,可以先选择所有墙体,然后根据参数过滤:

同时再创建一个参数过滤器,过滤“注释”的参数值为“房间”,然后通过一个“LogicalAndFilter”节点来将两个过滤器合并:

这样就可以通过“QueryElements”节点,很容易的根据前面的两个过滤器,过滤出需要的墙体:

到这一步都很顺利,但是要创建选择集的时候,发现节点库里,并没有现成的创建选择集的节点,这时候,只能查询下API,看是不是可以通过代码解决了:

于是打开RevitAPI手册,搜索ionFilterElement的方法,我们可以看到:

很简单就找到了创建方法,基本语法也超级简单,直接套用即可:

selset=ionFilterElement.(doc,name)

但是实际写下来,发现还是有很多问题需要注意:

一个是,在创建选择集的时候,是要先判断项目中是否有同名选择集,因为有同名的是没法创建的,这里不需要删除该选择集,只需要将选择清空即可,之后可以向其添加选择的图元;

另一个就是,新创建的选择集是空的,需要向其添加选择的图元。用到的方法是:AddSet,语法如下:

将这两个问题想清楚了,就可以顺利的写代码了,完整代码如下:

#Copyright(c)2020,九哥BIMerimportclrclr.AddReference('System.Core')clr.AddReference('RhinoInside.Revit')clr.AddReference('RevitAPI')clr.AddReference('RevitAPIUI')fromSystemimportEnum,ActionimportrhinoscriptsyntaxasrsimportRhinoimportRhinoInsideimportGrasshopperfromGrasshopper.KernelimportGH_RuntimeMessageLevelasRMLfromRhinoInside.RevitimportRevit,Convert#还可以添加扩展方法#这允许在Revit对象上调用.ToXXX()转换器方法clr.ImportExtensions(Convert.Geometry)fromAutodesk.RevitimportDBfromAutodesk.Revit.DBimport*#访问活动文档对象doc=Revit.ActiveDBDocument#过滤要添加到选择集的图元ids=list()ifnotisinstance(E,list):E=[E]else:E=EforeinE:ids.append(e.Id)itemset=set(ids)#从模型中收集所有现有的过滤器names=list()collector=FilteredElementCollector(doc)filters=collector.OfClass(FilterElement).ToElements();selset=Falset=Transaction(doc,'创建选择集')t.Start()#如果已经存在该名称的选择集,则删除其内容forfilterinfilters:iffilter.Name==name:filter.Clear()selset=filter#创建一个新的选择集(如果不存在该选择集)ifselset==False:selset=ionFilterElement.(doc,name)#将选择的图元添加到选择集try:selset.AddSet(itemset)OUT=selset.ToDSType(False)except:OUT=Nonet.Commit()print(OUT)

这里分了几步编写代码:

1、收集要添加到选择集的图元,并获取ID列表;

2、获取模型中的选择集

3、判断模型中的选择集与要创建的选择集是否同名;

4、如果存在同名选择集,将其清空选择;

5、如果不存在同名选择集,新建选择集;

6、向选择集添加过滤的图元。

最后,放一张过滤墙体添加选择集的全图,供大家参考:

以上就是“Revit创建选择集和搜索集的方法教程”了,看完上述内容,你对创建选择集和搜索集有一定了解了么?关注,了解更多图文教程“文章”。

温馨提示:答案为网友推荐,仅供参考
相似回答