无值

时间:2016-06-24 19:43:40

标签: python revitpythonshell

我在这里学习......

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

波纹管片段告诉我,我有一个3548项目的视图列表长度和项目数!=无是316.如果我改变!= ==,结果是0.我不明白这是怎么回事可以...不是无或无无?我认为两次运行的总和应该是 - 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

2 个答案:

答案 0 :(得分:2)

使用:

is None

is not None

代替==!=

答案 1 :(得分:0)

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

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

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