revitapi ironpython ToRoom возвращает «indexer # object»

in revit api Я пытаюсь получить доступ к дверям ToRoom / fc = FilteredElementCollector (doc) = fc.OfCategory (BuiltInCategory.OST_Doors) .WhereElementIsNotElementType (). ToElements () для двери в дверях: froom = door.FromRoom свойства для дверей. упрощенный фрагмент кода в ironpython:

FromRoom

мой результат - «объект indexer # на 0x0000000000035», как я могу получить доступ к объекту комнаты здесь?

ironpython,revit-api,

2

Ответов: 2


2

Это проблема IronPython / funky Revit API. В принципе, путь FromRoomопределен, он может быть либо свойством, либо индексированным свойством. См. Документацию API для Phase .

«Индексатор», который вы получаете, является второй версией phase = list(doc.Phases)[0] room = door.FromRoom[phase] - он принимает в FromRoomкачестве аргумента. Поэтому вы можете в основном сделать это:

phase = list(doc.Phases)[-1]  # retrieve the last phase of the project
room = door.FromRoom[phase]

Поскольку документация для FromRoomнее вернулась

«Из комнаты» установлен для двери или окна на последнем этапе проекта.

Вероятно, вы действительно хотите это сделать:

FromRoom

Я не мог понять, как овладеть другой версией FromRoom...


0

Дарен, спасибо за ваш вклад! после ответа Джереми я рассмотрел тот же подход. вот фрагмент кода

fc = FilteredElementCollector(doc)
doors = fc.OfCategory( BuiltInCategory.OST_Doors ).WhereElementIsNotElementType()

phases = doc.Phases

phase = phases[phases.Size - 1]

for door in doors:
    try:
        froom = door.FromRoom[phase].Id
    except:
        froom = -1
    try:
        troom = door.ToRoom[phase].Id
    except:
        troom = -1

    TaskDialog.Show("Revit","%s, %s" %(froom, troom))`
IronPython, Revit-апи,
Похожие вопросы