Значение Нет

Я учусь здесь...

Я озадачен значением "Нет". В следующем фрагменте я пытаюсь найти все представления, в которых параметр представления "Владелец вида" имеет значение "Нет" или!= Нет.

Ниже приведен фрагмент, который говорит мне, что у меня длина списка просмотров 3548 элементов, а количество элементов!= Нет равно 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

2 ответа

Использование:

is None

А также

is not None

вместо == а также !=

Есть несколько вещей, которых следует избегать во фрагменте кода, IMHO:

  • По возможности всегда следует избегать сравнения по имени. Это зависит от языка и менее эффективно, чем сравнение чисел. В этом случае, вероятно, можно заменить сравнения строк идентификаторами элементов.

  • Использование LookupParameter гораздо менее эффективно, чем использование фиксированного значения перечисления встроенного параметра для получения интересующего вас параметра.

Другие вопросы по тегам