Используйте python для получения информации о правилах фильтрации в Revit API

Я запустил скрипт на python, который извлекает информацию о правилах фильтрации, но не может найти способ получить информацию из "GetRuleParameters()"

Любая помощь с благодарностью. Я видел много информации о создании фильтров правил, но мало о том, как извлечь информацию о правилах.
Вот пример переопределений фильтров в представлении

Вот где я нахожусь:

pfes = list(FilteredElementCollector(doc).OfClass(ParameterFilterElement).ToElements()) for pfe in pfes:
    rps = pfe.GetRuleParameters()
    for rp in rps:
        print rp.ToString()
        el = doc.GetElement(rp)
        print el

2 ответа

Решение

В качестве отправной точки было бы более полезно напечатать имя классов, а не преобразовывать классы в строку. Это не даст вам всего, хотя. GetRuleParameters вернет elementID параметров, которые используются в правиле; однако идентификатор элемента встроенных параметров отрицателен. Функция GetElement не находит параметры, если они имеют отрицательный идентификатор элемента. Я не могу найти способ получить встроенный параметр из идентификатора.

for pfe in pfes:
    print(pfe.Name)
    rps = pfe.GetRuleParameters()


    for rp in rps:

        el = doc.GetElement(rp)

        # this will only work if the parameter used in the
        # filter is not built in
        try:
            print("\t" + el.Name)
        except:
            pass

Вы можете использовать RevitLookup для изучения свойств и значений параметров элементов параметров правила, возвращаемых через список идентификаторов элементов, или для более глубокого исследования с помощью интерактивной консоли RPS.

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