我在这里学习......
我对“无”的价值感到困惑。在下面的代码片段中,我试图找到名为“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
答案 0 :(得分:2)
使用:
is None
和
is not None
代替==
和!=
答案 1 :(得分:0)
示例代码段中应该避免一些事情,恕我直言:
如果可能,应始终避免按名称进行比较。它与语言相关,效率低于比较数字。在这种情况下,可能可以用元素id替换字符串比较。
使用LookupParameter比使用固定的内置参数枚举值来检索您感兴趣的参数效率低得多。