Значение Нет
Я учусь здесь...
Я озадачен значением "Нет". В следующем фрагменте я пытаюсь найти все представления, в которых параметр представления "Владелец вида" имеет значение "Нет" или!= Нет.
Ниже приведен фрагмент, который говорит мне, что у меня длина списка просмотров 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 гораздо менее эффективно, чем использование фиксированного значения перечисления встроенного параметра для получения интересующего вас параметра.