我想能够找到我的项目中没有使用的所有视图过滤器。在
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
# Import RevitAPI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
from System.Collections.Generic import *
# Import ToDSType(bool) extension method
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
#The inputs to this node will be stored as a list in the IN variable.
dataEnteringNode = IN
#collect all views in model
collector = FilteredElementCollector(doc)
views = collector.OfClass(View).ToElements()
areaPlans = []
#collect all views filters in the model
collector = FilteredElementCollector(doc)
filters = collector.OfClass(ParameterFilterElement).ToElements()
#viewFilters = []
#filter out view templates
for i in views:
if not i.IsTemplate:
if i.ViewType == ViewType.AreaPlan:
areaPlans.append(i.ToDSType(True))
else:
continue
bipViewFilter = filters
#Assign your output to the OUT variable.
OUT = bipViewFilter, areaPlans
这里有一种方法可以让你达到你所需要的:
我的理解是,您需要一种只提取应用于面积平面的视图过滤器的方法。这是一个两个步骤的过程,您可以获取区域平面,然后为每个视图提取所有视图过滤器。你会得到这样的结果:
为未使用的视图过滤器添加了一个附加步骤。收集了文档中的所有视图筛选器,并使用“SetDifference”节点获取当前未使用的筛选器。在
相关问题 更多 >
编程相关推荐