python for revit - 在活动视图中收集视图
python for revit - collect views in active view
我正在尝试在我的 pyRevit 脚本中使用 FilteredElementCollector 来收集活动视图中的所有视图(剖面、立面、平面标注等)。
from pyrevit.framework import clr
from pyrevit import revit, DB
clr.AddReference('RevitAPI')
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.DB import *
from pyrevit import forms
doc = __revit__.ActiveUIDocument.Document
view = doc.ActiveView
AllStuff = FilteredElementCollector(doc,doc.ActiveView.Id).WhereElementIsNotElementType().ToElements()
AllViews = []
try:
for x in AllStuff:
if "View" in x.Category.Name:
AllViews.append(x)
这将 return 一些但不是全部的视图。例如,某些部分包含在内但其他部分不包含,我不知道为什么。
如果我添加“.OfCategory(BuiltInCategory.OST_Views)”,我什么也得不到。我需要把它分解成几个更具体的类别吗?感谢您的帮助。
FilteredElementCollector(doc, doc.ActiveView.Id) 中没有视图,您可以通过以下操作查看:
for el in FilteredElementCollector(doc, doc.ActiveView.Id):
print(el)
有一个元素不属于 OST_Views 类别并且不是视图,即使它与您的视图同名。要查看此内容,您可以使用 RevitLookUp。
我通过查看 VIEW_FIXED_SKETCH_PLANE BuiltInParameter 找到了一种检索实际视图的方法(目前我不知道任何其他方法),它指的是 SketchPlane,它引用实际视图作为 Element.OwnerViewId.然后你可以确保元素是 class View :
for el in FilteredElementCollector(doc,doc.ActiveView.Id):
sketch_parameter = el.get_Parameter(BuiltInParameter.VIEW_FIXED_SKETCH_PLANE)
# If parameter do not exist skip the element
if not sketch_parameter:
continue
view_id = doc.GetElement(sketch_parameter.AsElementId()).OwnerViewId
view = doc.GetElement(view_id)
if isinstance(view, View):
print(view)
我正在尝试在我的 pyRevit 脚本中使用 FilteredElementCollector 来收集活动视图中的所有视图(剖面、立面、平面标注等)。
from pyrevit.framework import clr
from pyrevit import revit, DB
clr.AddReference('RevitAPI')
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.DB import *
from pyrevit import forms
doc = __revit__.ActiveUIDocument.Document
view = doc.ActiveView
AllStuff = FilteredElementCollector(doc,doc.ActiveView.Id).WhereElementIsNotElementType().ToElements()
AllViews = []
try:
for x in AllStuff:
if "View" in x.Category.Name:
AllViews.append(x)
这将 return 一些但不是全部的视图。例如,某些部分包含在内但其他部分不包含,我不知道为什么。
如果我添加“.OfCategory(BuiltInCategory.OST_Views)”,我什么也得不到。我需要把它分解成几个更具体的类别吗?感谢您的帮助。
FilteredElementCollector(doc, doc.ActiveView.Id) 中没有视图,您可以通过以下操作查看:
for el in FilteredElementCollector(doc, doc.ActiveView.Id):
print(el)
有一个元素不属于 OST_Views 类别并且不是视图,即使它与您的视图同名。要查看此内容,您可以使用 RevitLookUp。
我通过查看 VIEW_FIXED_SKETCH_PLANE BuiltInParameter 找到了一种检索实际视图的方法(目前我不知道任何其他方法),它指的是 SketchPlane,它引用实际视图作为 Element.OwnerViewId.然后你可以确保元素是 class View :
for el in FilteredElementCollector(doc,doc.ActiveView.Id):
sketch_parameter = el.get_Parameter(BuiltInParameter.VIEW_FIXED_SKETCH_PLANE)
# If parameter do not exist skip the element
if not sketch_parameter:
continue
view_id = doc.GetElement(sketch_parameter.AsElementId()).OwnerViewId
view = doc.GetElement(view_id)
if isinstance(view, View):
print(view)