0

我在这里学习...

我对“无”的值感到困惑。在下面的代码片段中,我试图找到名为“View Owner”的视图参数为 None 或 != None 的所有视图。

下面的代码片段告诉我,我的视图列表长度为 3548 个项目,!= None 的项目数为 316。如果我将 != 更改为 ==,结果为 0。我不明白这是怎么回事。 ..薄薄的不是None或Not None吗?我认为两次运行的总和应该 - 3548。

from Autodesk.Revit.DB import FilteredElementCollector, BuiltInCategory, View

    uidoc = __revit__.ActiveUIDocument
    doc = __revit__.ActiveUIDocument.Document


        selection = [ doc.GetElement( elId ) for elId in __revit__.ActiveUIDocument.Selection.GetElementIds() ]

        views = []

        if len(selection) == 0:
            cl_views = FilteredElementCollector(doc)
            views = cl_views.OfCategory( BuiltInCategory.OST_Views ).WhereElementIsNotElementType().ToElements()
        else:
            for sel in selection:
                if isinstance(sel, View):
                    views.append(sel)

        count = 0
        for v in views:
            if v.LookupParameter("View Owner")!=None:
                snumber = v.LookupParameter("View Owner").AsString()
                if snumber != None:
                    count= count+1
                    vowner = v.LookupParameter('View Owner').AsString()
                    if v.LookupParameter('View Name')!=None:
                        vname = v.LookupParameter('View Name').AsString()
                        vowner = vowner+vname
                    print(vowner)

        print len(views)
        print count
4

2 回答 2

2

利用:

is None

is not None

相反==!=

于 2016-06-24T19:45:17.390 回答
0

在示例代码片段中应该避免一些事情,恕我直言:

  • 如果可能,应始终避免按名称进行比较。它依赖于语言并且比比较数字效率低。在这种情况下,可能可以用元素 id 替换字符串比较。

  • 使用 LookupParameter 的效率远低于使用固定的内置参数枚举值来检索您感兴趣的参数。

于 2016-06-25T15:58:23.310 回答