Примеры на все действия со списком в Dynamo

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

Помечено: , ,

В этой теме 28 ответов, 8 участников, последнее обновление  Анатолий 3 нед., 5 дн. назад.

Просмотр 14 сообщений - с 16 по 29 (из 29 всего)
  • Автор
    Сообщения
  • #9018 Score: 0

    Александр
    Участник
    12 pts

    Возможно в начальном списке перед : есть пробел,этот пробел и создаёт пустой список.
    От пустых списков можно избавиться List.Clea подать false на нижний слот.

    #9019 Score: 0

    Sche
    Участник
    30 pts

    List.Clean удаляет null. В этом варианте не cработает/

    #9032 Score: 0

    Илья
    Участник

    Sche, то есть строка нулевой длины это и не null и не Empty list?

    #9037 Score: 1

    Sche
    Участник
    30 pts

    Илья, всё верно. Вот тут на понятном английском наречии эту тему раскрыли

    https://forum.dynamobim.com/t/difference-between-null-empty/11758

    #9191 Score: 0

    Илья
    Участник

    Прошу помощи. Может я плохо искал, но ответ не могу найти и сам додуматься пока не могу..

    Есть список типа {1,4,5,6,10,11,13,15,16,77,78}..Как из него получить список с подписками типа {{1},{4,5,6},{10,11},{13},{15,16},{77,78}}. В итоге нужно это, чтобы получить значение “1, 4-6, 10-11, 13, 15-16, 77-78”. (это у меня номера свай, которые наращиваются, соответственно в спецификацию нужно внести).

    Спасибо.

    #9192 Score: 0

    Александр
    Участник
    12 pts

    Нужна логика составления-группирования списка. К примеру, если сваи наращиваются, то они как то в проекте должны иметь отличия от других свай.Возможно параметр пользовательский есть или надо сделать для ЭКЗЕМПЛЯРА!-наращивание(изменение и т.д.). После такой идентификации и сделать группировку по значению параметра уже любой список свай.

    Если сваи создаются в одной стадии, а наращиваются некоторые в другой, то по стадии можно идентифицировать.Это тоже как пример.

    #9198 Score: 0

    Илья
    Участник

    Александр, сваи у меня имеют отличительные признаки. Те, которые наращиваются в Параметр(создал) “Отметка наращивания” я пишу(с помощью dynamo или вручную) отметку до которой наращивается, если свая не наращивается, то туда записывается “не наращивается”. Аналогично со срубкой(Параметр “Отметка срубки”). Есть параметр(создал из Общих) Мрк.МаркаИзделия(Зуевский, но не суть)- туда записывается порядковый номер сваи(нумеруется свайное поле, например, сверху вниз и слева направо). В итоге все сваи у меня идентифицированы(отметки срубки, наращивания, порядковый номер), теперь только нужно, чтобы в спецификации они сгруппировались по типу как выше писал. На примере скриншота ниже должно в столбце “Порядковый номер на плане”(сейчас это столбик “Мрк.МаркаИзделия”, но нужно создать или расчётный параметр в спецификации или у самого элемента(сваи) в который записать) быть так: 97-101,102-103,104,105,106-107,108,109-122,123-127,128,129,130-132 ну и т.д.

    Только выше(в первой своей записи) я не учёл, что список нужно группировать по двум(Отметка наращивания и Отметка срубки) параметрам, а не по одному, то есть еще один уровень появится.. Надеюсь понятно объяснил)

     

    #9202 Score: 0

    Анатолий
    Участник
    35 pts

    Добрый день! Задачу с прописью номеров решил Саша Попов в скрипте по отделке помещений, немного изменил его наработки. Хотелось бы также попросит всех, кто нуждается в помощи по возможности выкладывать хоть какой-то файлик ревита чтобы не набирать все с “0”.

    Скрипт

    #9203 Score: 0

    Илья
    Участник

    Анатолий, спасибо!

    но у меня в моем проекте что-то не получается, с питоном, я, к сожалению, ещё совсем на Вы, прошу дальше помогите)

    Проект

    скрипт

    #9204 Score: 1

    Анатолий
    Участник
    35 pts

    Создал новый параметр в проекте “Номер свай по порядку” потому что существующий не вносится в спецификацию и недоступен в параметрах проекта. Также внес некоторые изменения в скрипт. Тестируйте. Прошу обратить внимание на питоновский нод “Фильтр”. Если в вашем проекте будут дополнительно какие-то элементы с категории Фундамент несущей конструкции, их необходимо выключать в коде, немного занотировал в коде скрипта подробности.

    Скрипт

    #9205 Score: 0

    Илья
    Участник

    Анатолий, спасибо, супер, работает!

    Последний вопрос(я всё таки конструктор, и в питоне ещё совсем ноль)), как в 11 строке отфильтровать в этом же параметре ещё элементы, которые, например, будут называться “Балка ххх”(Вы пишите через !=, но синтаксисом не владею пока что)

    #9206 Score: 1

    Анатолий
    Участник
    35 pts

    По поводу кода:

    fund = IN[0] # принимаем на вход все элементы относящиеся к категории “фундамента несущей конструкции”, имя может быть любое.
    fund1=fund.Where(lambda x: UnwrapElement(x).LookupParameter(“Наименование_Спецификация“).AsString()!=Плита ростверка монолитная железобетонная“) #  что здесь: смотрим по каким параметрам мы можем исключить ненужные элементы данной категории или оставить только необходимые. В своих задачах часто решаю проблемку заполняя параметр “Описание” для всех необходимых элементов, например для все свай – “Свая”, но у вас параметр занят, сваи по описанию бывают трех типов, потому идем другим путем. Посмотрел, в проекте были только фундаментные плиты не принадлежащие к разделу свай с категории “фундамент несущей конструкции”. У них есть параметр Наименование_Спецификация, который объединяет все такие плиты, мы исключаем их данным методом прописывая LookupParameter(“Наименование_Спецификация“).AsString() != (не равняется) Плита ростверка монолитная железобетонная“). Важно! Необходимо чтобы данный параметр был у всех элементов данной категории, иначе скрипт выдаст ошибку, потому анализируем проект и исключаем лишнее.

    fund2=fund1.Where(lambda x: UnwrapElement(x).Symbol.LookupParameter(“Имя семейства“).AsString()==(равняется)“Бетонная свая прямоугольного сечения“) #последний шаг. Если у фундаментых плит и других не нужных элементов данной категории присутствует параметр “Имя семейства“, можно предыдущий фильтр выключить.
    OUT = fund2 #подаем на выход одни сваи со всей данной категории.

    Еще важно. Для фильтра по остальным параметрам, на выходе могут быть нули, если сам параметр сохраняется не в строке AsString(), другие варианты могут быть (в конце нужно прописывать): AsValueString(), AsDouble(), AsInteger().

    И еще один важный момент. Возьмем пример fund2=fund1.Where(lambda x: UnwrapElement(x).Symbol.LookupParameter(“Имя семейства“).AsString()==“Бетонная свая прямоугольного сечения“) Присутствие Symbol необходимо для параметров типа, если параметр экземляра, слово Symbol удаляем.

    #9207 Score: 0

    Илья
    Участник

    Спасибо за пояснение. Немного доработал(фильтр первый удалил для своего проекта), добавил еще параметр Позиция в спецификации сваям, вроде получилось симпатично.

    а про фильтр дополнительный я не понял синтаксис как именно нужно добавлять ещё значения параметров(после !=) в строку 11: doors1=doors.Where(lambda x: UnwrapElement(x).LookupParameter(“Наименование_Спецификация“).(AsString()!=Плита ростверка монолитная железобетонная“, !=“Балка ростверка монолитная железобетонная)) -как-то так не получается, чувствую нужно питон изучать начинать плотно(только параллельно проектировать))

    #9208 Score: 1

    Анатолий
    Участник
    35 pts

    Рад, что почти все получается. Питон, конечно, поизучать стоит, особенно когда проекты больших объемов. В данном случае прописывать следующим образом:

    doors1=doors.Where(lambda x: UnwrapElement(x).Symbol(если параметр экземпляра, Symbol не пишем).LookupParameter(“Параметр объекта“).AsString() (AsValueString(), AsDouble(), AsInteger(), все на выбор, смотря в каком формате данные параметра заложены) == (если равняется или !=, если не равняется следующим данным параметра, который будем дальше прописывать) “Данные параметра“. Прописывать код необходимо строго в этом порядке. ничего не убирать и не добавлять. То есть, например

    name1=name.Where(lambda x: UnwrapElement(x).LookupParameter(“Параметр объекта“).AsValueString()==“Данные параметра“, при необходимости добавить фильтр еще по каким-то параметрам работаем уже с последними данными, например

    name2=name1.Where(lambda x: UnwrapElement(x).Symbol.LookupParameter(“Новый параметр объекта“).AsValueString()==“Соответствующие данные параметра“ , постарался объяснить немного доступней)

Просмотр 14 сообщений - с 16 по 29 (из 29 всего)

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