Объект «List [Element]» не имеет атрибута «Name» - PullRequest
0 голосов
/ 17 апреля 2019

У меня две проблемы

  1. список уровней не содержит имени или другого параметра, почему эта ошибка передается на каждый элемент, который я собираю enter image description here
  2. Urinals.Symbol.FamilyName("Type Comments").AsString() == "Urinal"): не работает
from pyrevit.output import charts
from pyrevit import script
from pyrevit import revit, DB
from Autodesk.Revit.DB import FilteredElementCollector, BuiltInCategory
__context__ = 'zerodoc'

from System.Collections.Generic import List
doc = __revit__.ActiveUIDocument.Document
uidoc = __revit__.ActiveUIDocument

from rpw import db, ui, doc
from pyrevit.framework import List
from pyrevit import revit, DB
room_filter = "WORK"


import rpw
from rpw import doc, uidoc, DB

# GET ALL ROOMS IN MODEL
rooms = DB.FilteredElementCollector(doc).OfCategory(DB.BuiltInCategory.OST_Rooms)
Urinals = DB.FilteredElementCollector(doc).OfCategory(DB.BuiltInCategory.OST_PlumbingFixtures).WhereElementIsNotElementType().ToElements()
ub_count = 0
MRest_rooms = []
WRest_rooms = []
ADARest_rooms = []
Urinal_count = 0

#for u in Urinals:
#   if (Urinals.Symbol.FamilyName("Type Comments").AsString() == "Urinal"):
#    Urinal_count +=1
for r in rooms:
    if (r.Level.Name != 'CONTAINER LEVEL') and (r.LookupParameter("Name").AsString() == "M RESTROOM"):
        MRest_rooms.append(r)
    if (r.Level.Name != 'CONTAINER LEVEL') and (r.LookupParameter("Name").AsString() == "W RESTROOM"):
        WRest_rooms.append(r)

print "Number of Male Rest Room =",len(MRest_rooms)
print "Number of Female Rest Room =", len(WRest_rooms)

Level = DB.FilteredElementCollector(doc).OfCategory(DB.BuiltInCategory.OST_Levels).WhereElementIsNotElementType().ToElements()
print "Number of Level =",len(Level)
for i in Level:
 a = Level.Name
 print a

Ответы [ 2 ]

0 голосов
/ 05 мая 2019

Ваша ошибка в этой строке:

Level = DB.FilteredElementCollector(doc).OfCategory(DB.BuiltInCategory.OST_Levels).WhereElementIsNotElementType().ToElements()
print "Number of Level =",len(Level)
for i in Level:
 a = Level.Name
 print a

Это должно быть:

Level = DB.FilteredElementCollector(doc).OfCategory(DB.BuiltInCategory.OST_Levels).WhereElementIsNotElementType().ToElements()
print "Number of Level =",len(Level)
for i in Level:
 a = i.Name
 print a

Внутри цикла for, который вы назвали Level.Name, где Level на самом деле являетсясписок уровней.Отсюда и исключение.

Та же проблема с закомментированным кодом:

for u in Urinals:
   if (Urinals.Symbol.FamilyName("Type Comments").AsString() == "Urinal"):
    Urinal_count +=1

Заменить на:

for u in Urinals:
   if (u.Symbol.FamilyName("Type Comments").AsString() == "Urinal"):
    Urinal_count +=1
0 голосов
/ 17 апреля 2019

Посмотрите на это в отладчике, и вы сами увидите.

...