蟒蛇的Revit中 - 收集活动视图意见

问题描述 投票:0回答:1

我试图用我的FilteredElementCollector脚本pyRevit里面收集活动视图所有视图(剖面图,立面图,平面图标注等)。

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)

这将返回一些,但不是所有的意见。例如,一些部分被包括在内,但其他人都没有,我不知道为什么。

如果我添加“.OfCategory(BuiltInCategory.OST_Views)”我什么都得不到。我需要把它分解为几个更具体的类别?谢谢你的帮助。

python revit-api revit pyrevit
1个回答
1
投票

有一个在FilteredElementCollector(DOC,doc.ActiveView.Id)没有意见,你可以通过做看看吧:

for el in FilteredElementCollector(doc, doc.ActiveView.Id):
    print(el)

有一个元素是类OST_Views不,不,即使它具有相同的名称作为您的视图中的视图。要看到这一点,你可以使用RevitLookUpLookup

我找到了一种方法来检索实际视图(我不知道此刻任何其他方式)通过观察VIEW_FIXED_SKETCH_PLANE BuiltInParameter其中提到whiche引用实际视图Element.OwnerViewId的SketchPlane。然后你就可以确保该元素的类查看:

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)
© www.soinside.com 2019 - 2024. All rights reserved.