首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python for revit -在活动视图中收集视图

python for revit -在活动视图中收集视图
EN

Stack Overflow用户
提问于 2019-02-05 01:12:21
回答 1查看 527关注 0票数 0

我正在尝试在pyRevit脚本中使用FilteredElementCollector来收集所有视图(剖面、立面、平面标注等)。在活动视图中。

代码语言:javascript
复制
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)“,我什么也得不到。我需要把它分成几个更具体的类别吗?谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-05 04:05:55

FilteredElementCollector(文档,doc.ActiveView.Id)中没有视图,您可以通过执行以下操作来查看:

代码语言:javascript
复制
for el in FilteredElementCollector(doc, doc.ActiveView.Id):
    print(el)

有一个不属于OST_Views类别的元素,即使它与您的视图同名,也不是视图。要查看这一点,您可以使用RevitLookUp

通过查看引用SketchPlane的VIEW_FIXED_SKETCH_PLANE BuiltInParameter,我找到了一种检索实际视图的方法(目前我不知道其他方法),它将实际视图引用为Element.OwnerViewId。然后,您可以确保元素属于View类:

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54521098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档