Результаты поиска для 'list'

Главная Форумы Поиск Результаты поиска для 'list'

Просмотр 15 результатов — с 226 по 240 (из 325)
  • Автор
    Результаты поиска
  • Anton
    Участник

    У кого-нибудь есть идеи, как реализовать маркировку элементов через спецификацию как на видео от «АПЕКС» из AUR2016 (~19 мин. https://www.youtube.com/watch?v=FQOE-50TSTw&index=87&list=PLO7KUCpJ1y1dX8JgmGshyXnkf3s0qL_L6)?

    API говорит, что напрямую изменять поля спецификации нельзя. Т.е., как я понимаю, нужно вытащить параметры сортировки спецификации, реализовать их в Dynamo к выделенным элементам и замаркировать. Путь не самый простой, может кто-то видит его проще? К тому же не могу понять, как вытащить параметр сортировки.

    #4969

    В ответ на: Объединение строк

    Аноним
    Неактивированный
    10 pts

    Самым простым способом в вашем случае мне видится такой

    Legantmar
    Хранитель
    475 pts

    ИваСерж ты не совсем прав.

    Clear List удаляет null значения (этот нод входит в пакет Archi-Lab Grimshaw)

    Стандартный нод UniqItems – удаляет дублирующие значения (аналог set(list) в python), но они оба не работают с геометрией (точки, линии и пр.), тут нужны другие подходы.

    Nikita
    Участник

    Спасибо, а Clear List я так понимаю в стандартном динамо нет, а какому данный нод пакету относится?

    ИваСерж
    Хранитель
    134 pts

    Нод Clear List этим и занимается. Вычищает повторы и пустые значения в списке.

    В питоне это можно сделать преобразовав список в множество:
    list = IN[0]
    OUT = set(list)

    #4868
    Legantmar
    Хранитель
    475 pts

    zip и unzip списков (листов) (не путать с zip файлами )))

    # объединение элементов из каждого списка
    a = [1,2]
    b= [3,4]
    c= [5,6]
    L= zip(a, b, c)
    OUT = L # результат [(1, 3, 5), (2, 4, 6)]

    # разъединение zip листа  (например, после сортировки sorted(L, key = lambda lists: lists[0]))
    a = zip(*L)[0]   # [1,2]
    b = zip(*L)[1]   # [3,4]
    c = zip(*L)[2]   # [5,6]

    #4846
    Khasan Mamaev
    Модератор
    187 pts

    а вот так map(lambda x: x[0], list) ?

    #4845
    Dmitry_dronov
    Модератор
    50 pts

    Сплющивание из второго порядка без флаттена в питоне:

    out_ = [i for sublist in list_of_lists for i in sublist]

    #4843
    ИваСерж
    Хранитель
    134 pts

    Вот прямо сегодня столкнулся с такой проблемой. Подробней рассказал Лобанов в своих уроках

    https://youtu.be/XIGpuP23k9k?list=PLVCDzVIlOckHsZcqkq3DmzdGcq2503l1G&t=1175

    Решение: создавать элементы не средствами Динамо, с через питон.
    Я использовал команду doc.Create.NewFamilyinstance. Тогда семейства создаются без привязки к Динамо. Если нужно, могу подсказать как работать с NewFamilyinstance.

    p.s.

    import Revit
    clr.ImportExtensions(Revit.Elements)

    Element.ToDSType(False) – если мы создали элемент в Dynamo (и его не было в Revit) – Dynamo будет отслеживать. Т.е. при очередном запуске старый элемент будет удаляться и создаваться новый!

    Element.ToDSType(True) – Dynamo не будет отслеживать и при каждом запуске будут создаваться новые элементы, старые удаляться не будут.

     

    #4782

    В ответ на: Count

    Khasan Mamaev
    Модератор
    187 pts

    OUT = [[i,inList.count(i)] for i in set(inList)]

    Legantmar
    Хранитель
    475 pts

    Хасан, отлично!
    немного доработал

    внутри скрипта есть комбинация типа list[:-1] – это чтобы избавится от какого то скрытого Solid

    скачать скрипт

    #4705
    Legantmar
    Хранитель
    475 pts

    Хасан уже выше написал, но все же повторюсь для закрепления

    Вот эту конструкцию кода

    Можно записать короче и несколькими способами:

    sposob1 = [i for i in numbers if i<4]
    sposob2 = list(i for i in numbers if i<4) # или (i for i in numbers if i<4)
    sposob3 = filter(lambda x: x<4, numbers)

    где, к примеру,  numbers = [1,2,3,4,5,6,7,8,9]

    #4701
    Legantmar
    Хранитель
    475 pts

    for i, k in list1:

    #4688
    kisli
    Участник
    16 pts

    В общем если кому то интересно, то такая возможность имеется, и размерный текст можно двигать програмно. Если кому интересно то вот код макроса… Он на C# но думаю все всем понятно, и при желании его можно к питону в легкую запилить, и наверное в динамо)

    
    public void DimText()
    {
    Document doc = this.ActiveUIDocument.Document;
    //Application app = this.Application;
    UIDocument uidoc = new UIDocument(doc);
    //Выбираес размеры
    IList elementList = uidoc.Selection.PickElementsByRectangle();
    
    using (Transaction t = new Transaction(doc,"Move dim text"))
    {
    t.Start();
    //проходимся по каждому размеру
    foreach (Dimension element in elementList)
    {
    //если количество сегментов больше 1 то работаем с каждым сегментом по отдельности
    if (element.NumberOfSegments>1)
    {
    foreach (DimensionSegment S in element.Segments)
    {
    data+=S.ValueString+Environment.NewLine;
    S.TextPosition=new XYZ(S.TextPosition.X+1,S.TextPosition.Y + 1, 0);
    }
    }
    //Если 1 то с самим размером
    else
    element.TextPosition=new XYZ(element.TextPosition.X+1,element.TextPosition.Y + 1, 0);
    }
    t.Commit();
    }
    }
    
    

    Надо бы еще допилить фильтры, чтоб он не редактировал размеры больше определенного значения, и настроить правила разноса и можно сделать не хуже чем в в Allplan )

     

    #4681
    Legantmar
    Хранитель
    475 pts

    начинающим пригодится.

    для упрощения, можно задавать через запятую:

    import clr, sys, System, math      # импорт библиотек

    list1, list2, list3 = [], [], []      # создание пустых списков

    a, b, c, d = 1, 2, 3, 4    # что то же самое если записывать a=1 b=2 c=3 в каждую строчку

Просмотр 15 результатов — с 226 по 240 (из 325)