Получить список электрических систем щита

Главная Форумы Задать вопрос Получить список электрических систем щита

Просмотр 6 сообщений - с 1 по 6 (из 6 всего)
  • Автор
    Сообщения
  • #8847 Score: 0
    Алексей
    Участник
    5 pts

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

    #8848 Score: 1
    Анатолий
    Участник
    37 pts

    Добрый вечер! Пользуйтесь в процессе поиска методом dir().
    Пример: пишите в скрипте на выходе
    OUT = dir(S) потом посмотрели какие параметры имеются в составе
    вашего S (Щит22 в данном случае). Выбрали параметр ,прописали в скрипте например
    a = S.ElectricalSystem (если таковой имеется в dir, те методы или свойства, которых там нет выдадут ошибку, как скорее всего у вас и видно). Дальше посмотрели OUT = dir(a) что в списке дальше выпадает и продолжаете поиски. Также не забываем проверять что мы фактически получаем, комментируем #OUT = dir(a) и ниже пишем OUT = a. Иногда необходимо бывает добавить в конце свойства скобки, вот так a = S.ElectricalSystem(), смотря какие характеристики у данных свойств и методов. Успехов!

    #8849 Score: 1
    ИваСерж
    Хранитель
    134 pts

    Получать нужно точно также, как вы просматриваете элемент из Лукапа.

    Я электрические системы щита получаю так:
    https://pastebin.com/MtRUdNa7

    Если обратить внимние, то в этом списке на одну систему больше, чем подключено на щит. Т.е. в список входят все системы подключенные к щиту + система в которую входит сам щит. Отфильтровать эту систему можно, например, по имени щита, к которой система подключена.

    Например щит ЩС1 подключен к ГРЩ. Параметр “Имя панели” для систем ЩС1 – будет “ЩС1”, а для самого щита “ГРЩ”. Условие фильтра – нужны системы для которой “Имя панели” равно имени щита.

    #8850 Score: 0
    Алексей
    Участник
    5 pts

    Коллеги, большое спасибо за подсказки…Благодаря им я немного расширил область своей безграмотности)

    ИваСерж, твой код работает, но я все равно не понимаю как мне добраться до цепей (без фильтров на питающую и отходящие линии).

    По идее если смотреть на то,что ты написал строка для вывода всех цепей щита должна выглядеть так:

    elSys = board.MEPModel.ElectricalSystems.PanelName

    Но она не работает…

    #8851 Score: 1
    ИваСерж
    Хранитель
    134 pts

    Расшифровываю
    1. elSys = board.MEPModel.ElectricalSystems
    получаем сэт (это не совсем список), всех систем.
    На выход OUT для работы методами Динамо надо подать список.
    OUT = list(elSys)

    2. У каждой системы в сэте есть свойство PanelName. Чтобы получить имя щита, к которому подключены все системы, надо применить PanelName к каждой системе через цикл поочередно.
    Мне лень пользоваться циклами. Я сделал все то же самое через генератор списков.
    Например, для получения списка с PanelName я воспользуюсь таким генератором
    nameList = [sys.PanelName for sys in elSys]

    3. В генератор списков я могу записать условие такое, какое мне надо.
    Пример с условием я написал в своём предыдущем коде.

    #8852 Score: 0
    Алексей
    Участник
    5 pts

    Большое спасибо!

    идею понял. Что-то даже получилось=))

Просмотр 6 сообщений - с 1 по 6 (из 6 всего)
  • Для ответа в этой теме необходимо авторизоваться.