Поиск нужных параметров в Dynamo

Главная Форумы Dynamo Ноды Поиск нужных параметров в Dynamo

В этой теме 8 ответов, 4 участника, последнее обновление  артём 3 мес., 2 нед. назад.

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Автор
    Сообщения
  • #7820 Score: 0

    K.Nikolay
    Участник

    Подскажите, как решить вопрос с поиском и переносом необходимых параметров.

    Пришло здание от проектировщиков здание в формате IFC, причем, конструкции разбиты на части по уровням, например, отдельными файлами стены на уровнях -3,0м; +0,0м; +3,0м и т.д. И таким образом пришли все элементы.

    При объединении файлов в Revit пришедшие параметры дублируются, например, вставляю 1-й файл “стены этажа -3,0м” параметры приходят нормально (без дублирования). Вставляю 2-й файл “стены этажа 0,0м” параметры стен дублируются. Вставляю 3-й файл “стены этажа 3,0м” параметр дублируется еще раз. Т.е. в едином файле Revit параметр “ifcName” встречается три раза, по количеству вставленных файлов со стенами. То же самое дублирование параметров элементов при вставке других конструкций.

    Необходимо через Dynamo найти значение параметра, например, “ifcName” и вставить в мой параметр “Имя_элемента”. Проблема задачи заключается в том, что для стен 1-го этажа это значение параметра нормально приходит, а для последующих этажей значение приходит “0”, т.е. он находит первый параметр “ifcName”, а в нем пустое значение, и вставляет “0” в мой параметр.

    Подскажите, как можно сделать перебор параметров по имени, найти поле где заполнено значение этого параметра и вставить значение параметра в мое поле???

    #7822 Score: 0

    Шпилька
    Участник
    3 pts

    Если я правильно поняла, вы хотите отсортировать элементы с заполненным значением, и это значение перекинуть в другой параметр? Если так, то, по-моему, это вот так будет работать:

    #7826 Score: 0

    K.Nikolay
    Участник

    Спасибо. Но не совсем работает как мне надо. Действительно, скрипт перекидывает значение из параметра в параметр, но в моем случае он определяет, что в первом параметре “IfcName” пустое значение, то и вставляет в мой параметр “A06_Family_Name” пустое значение.

    Ссылка на файл: https://yadi.sk/d/DJYNJ7yM3U5rrs

    Немного переработанный скрипт: https://yadi.sk/d/X6fMHgkU3U5s23

    По возможности, я бы хотел видеть, но пока не получается, некий перебор параметров с одним именем и если в в параметре есть значение, то значение должно быть вставлено в мой параметр.

    Спасибо за помощь!

     

     

    #7827 Score: 0

    K.Nikolay
    Участник

    и скрин скрипта:

    #7828 Score: 0

    ИваСерж
    Модератор
    96 pts

    По-моему пришло время подключать Питон.
    Очевидно, методы Динамо видят первый попавшийся параметр из списка параметров с одним и тем же именем.
    Методы АПИ позволяют получать списки одноименных параметров:
    нужно использовать метод:
    parameters = element.GetParameters(name)
    далее обычным циклом выбрать заполненный параметр

    for param in parameters:
    if param:
    outparam = param

    К сожалению, нужен питон!

    #7830 Score: 0

    K.Nikolay
    Участник

    Увы, я в питоне совсем никакой. Не могли бы написать более подробно, при наличии времени? Спасибо большое!!!

    #7832 Score: 0

    ИваСерж
    Модератор
    96 pts

    https://pastebin.com/14PrLGh5
    Лично у меня работает. Возможно, под специфические параметры не будет работать.
    Подразумевается, что все параметры текстовые.

    заполнить
    парамИФЦ = [“IfcName”,”IfcDescription”,”IfcMaterial”]
    парамРВТ = [“Имя1”, “Имя2”, “Имя3”]

    #7833 Score: 0

    K.Nikolay
    Участник

    Спасибо! попробую

    #8180 Score: 0

    артём
    Участник

    Подскажите, а каким образом можно перенести комментарий из стены, вдоль которой располагается стенка отделки? Хочу сделать это с той целью, что часто в зависимости материала стены меняется материал отделки. Тогда можно было бы обойтись параметром в стене и значение из него перенести в стенку отделки. спасибо!

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)

Для ответа в этой теме необходимо авторизоваться.