一键开关视图过滤器可见性
继上次探讨了视图间引用过滤器,这次来写一个关于过滤器的小众需求:一键开关视图过滤器可见性。
在视图可见性中,Revit为模型类别、注释类别、分析模型类别、导入的类别、Revit链接都设置了全选的按钮,却唯独完美的避开了过滤器,不知道Revit开发团队这点是作何考虑。但在工作过程中,尤其是机电项目需要大量的使用过滤器时,却有要全开(全关)过滤器可见性的需求。手动一个个勾选太过麻烦,那么就来借助Python来实现这一需求。
用到的是View类下的SetFilterVisibility()方法,先获取到当前视图的过滤器,在设置过滤器的可见性。
完整代码:
# 一键开关视图过滤器可见性
# By I am the one
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
view = UnwrapElement(IN[0])
TransactionManager.Instance.EnsureInTransaction(doc)
filters_ids = view.GetFilters()
filters = []
for f in filters_ids:
view.SetFilterVisibility(f,IN[1])
filters.append(doc.GetElement(f))
TransactionManager.Instance.TransactionTaskDone()
OUT = filters
完整节点:
演示效果:
欢迎阅读,分享,交流,批评指正。
如转载请注明出处,否则追究法律责任(说说而已,全靠自觉)。