一键开关视图过滤器可见性

    继上次探讨了视图间引用过滤器,这次来写一个关于过滤器的小众需求:一键开关视图过滤器可见性。

在视图可见性中,Revit为模型类别、注释类别、分析模型类别、导入的类别、Revit链接都设置了全选的按钮,却唯独完美的避开了过滤器,不知道Revit开发团队这点是作何考虑。但在工作过程中,尤其是机电项目需要大量的使用过滤器时,却有要全开(全关)过滤器可见性的需求。手动一个个勾选太过麻烦,那么就来借助Python来实现这一需求。

一键开关视图过滤器可见性插图

一键开关视图过滤器可见性插图1

用到的是View类下的SetFilterVisibility()方法,先获取到当前视图的过滤器,在设置过滤器的可见性。

一键开关视图过滤器可见性插图2

完整代码:

#  一键开关视图过滤器可见性#  By I am the oneimport clrclr.AddReference('RevitAPI')from Autodesk.Revit.DB import *
clr.AddReference("RevitNodes")import Revitclr.ImportExtensions(Revit.Elements)clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")import RevitServicesfrom RevitServices.Persistence import DocumentManagerfrom 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

完整节点:

一键开关视图过滤器可见性插图3

演示效果:

欢迎阅读,分享,交流,批评指正。

如转载请注明出处,否则追究法律责任(说说而已,全靠自觉)。

一键开关视图过滤器可见性插图4

0

评论0

请先

没有账号? 注册  忘记密码?

社交账号快速登录

微信扫一扫关注
扫码关注后会自动登录网站
普人特福的博客cnzz&51la for wordpress,cnzz for wordpress,51la for wordpress