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

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

Просмотр 15 результатов — с 166 по 180 (из 325)
  • Автор
    Результаты поиска
  • #6567

    В ответ на: DesignScript IF

    Valery
    Участник
    1 pt

    Я так пробовал, ничего не вышло, причём у меня он создаёт List автоматически

    #6541

    В ответ на: Справка РевитАпи

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

    каждое решение выстрадано (примеров на все случаи жизни нет)
    Тимур, я рад, что ты задал такой вопрос и дорос до этого уровня.

      1. в Dynamo используется IronPython который написан на C# и поддерживающий .Net (все, что не понятно, гуглишь или спрашиваешь в этой теме)
      2. Можно посмотреть скрипты (в разделе скачать) или кастом ноды, например от Конрада для изучения использования revitAPI команд в питоне
      3. Посмотри мою статью http://dynamobim.ru/forums/topic/название-паттерна-у-материала/
      4. Вверху в меню справочник есть кнопка RevitAPI для быстрого перехода на http://www.revitapidocs.com/
      5. Но я предпочитаю JetBrains dotPeek для просмотра необходимые dll
      6. Можно скачать и изучить SDK для ревита (но все примеры на C# и понадобится Visual Studio)

    Мой примерный порядок действия в новой ситуации:
    смотрю через RevitLookUp
    смотрю Revit.DB (через dotPeek), ищу нужный элемент или метод и пр.
    смотрю какие команды есть
    применяю, смотрю результат, экспериментирую
    иногда подходит dir(element), чтобы понять какие у него есть доступные команды

    #6539

    В ответ на: поиск как в экселе

    txt
    Модератор
    86 pts

    list_contain_true_false=[[True if IN[1][x].upper() in i.upper() else False for i in IN[0] ] for x in range(len(IN[1]))]
    OUT=list_contain_true_false

    #6532

    В ответ на: поиск как в экселе

    txt
    Модератор
    86 pts

    На выходе:

    красн
    красн
    банан

    list_contain_ignore=[x for x in IN[1] for i in IN[0] if x.upper() in i.upper()]
    OUT=list_contain_ignore

    #6530

    В ответ на: поиск как в экселе

    txt
    Модератор
    86 pts

    без учета регистра, попробуйте так

    list_contain_ignore=[i for x in IN[1] for i in IN[0] if x.upper() in i.upper()]
    OUT=list_contain_ignore

    #6526

    В ответ на: поиск как в экселе

    txt
    Модератор
    86 pts

    По регистру

    что конкретно требуется ? чтобы регистр букв либо игнорировался , либо нет ? или что ?

    По индексам …

    Вы задаете все что вам необходимо на выходе:

    list_contain=[i for x in IN[1] for i in IN[0] if x in i]
    list_not_contain=set(IN[0])-set(list_contain)

    index_contain=[IN[0].index(i) for x in IN[1] for i in IN[0] if x in i]

    а на выход OUT подаете все что вам нужно:

    например если так:
    OUT=list_contain, list_not_contain, index_contain

    то будет список из 3 подсписков на выходе (далее в код блоке вы можете выбрать нужный , записав индекс этого подсписка , например a[0] – выдаст после код-блока list_contain и т.д.)

    или же так:  

    OUT=index_contain

    тогда на выходе получите только лист с индексами

     

     

    #6524

    В ответ на: поиск как в экселе

    txt
    Модератор
    86 pts

    Подскажите , а зачем вам писать False  ?

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

    (на выходе получаем:  1 список- список содержит …                    2 список- не содержит…)

    Код в питоне:

    list_contain=[i for x in IN[1] for i in IN[0] if x in i]
    list_not_contain=set(IN[0])-set(list_contain)
    OUT=list_contain, list_not_contain

    p.s. бывает, что нужно получить не сами элементы с вхождениями , а их индексы:
    index_contain=[IN[0].index(i) for x in IN[1] for i in IN[0] if x in i]

    Ренат Я.
    Модератор
    79 pts

    вы помещение берёте не с того нода! Внимательно посмотрите сообщение #6498
    записывать надо в пространство полученное в ноде LIst.Deconstruct

    txt
    Модератор
    86 pts

    вроде все норм – в файле одно помещение с двумя окнами, в остальных помещениях окон нет, поэтому они и не попадают в список после нода GetSurraund, списки разные по длине ? но те помещения в которых окон нет они и не попадут в список. Вы же работаете только с элементами после нода List Deconstruct, так попробуйте (красным выделено подключение и не забудьте перед запуском удалить все площади из помещений)

    @zhukoven.com
    Участник
    16 pts

    @JON73, нужно отсеять элементы пространств из списка (например, через List.Deconstruct). Тогда Element.GetParameterValueByName не будет создавать пустых значений:

     

    Ссылка на исправленный dyn файл: https://goo.gl/ZAVdW2

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

    Перед нодом Math.Sum воткни “Clear List” из Archi-lab. Для частных случаев должно помочь

    #6435
    txt
    Модератор
    86 pts

    ок, а как в except прописать условие , чтобы при возникновении ошибки питон просто игнорировал ее и выполнял цикл дальше?
    Пример , я делаю так:
    list=[стол, ракета, книга] - у "ракеты" есть параметр "скорость", у стола и книги нет.
    my_list=[]
    list_errors=[]
    for i i in list:

      try:
        my_list.append(i)
        except:
          list_errors.append(i)

        OUT=my_list

        #6404
        Евгений
        Участник
        1 pt

        Дико извиняюсь, если я пишу не в тему. Видел функцию flatten для python.

        Мне нравиться больше такая

        import operator

        flattenlist=lambda s: reduce(operator.iadd, s, [])

        OUT = flattenlist(list)

        txt
        Модератор
        86 pts

        Я конечно могу ошибаться , но для того чтобы как бы не хранить в памяти список , т.е. не создавать заполнение списка lits=[] , потом list.append
        а хранить как бы виртуально этот список….
        именно хранить тут: sorted(rooms(), key=…)
        Поправьте , если не так…

        p.s. мне очень нравится как построен код в ответе #5583 и я хочу научиться делать также)

        #6386
        txt
        Модератор

        Недавно возникла задача:
        Найти трубы находящиеся рядом с определенной трубой (точнее трубами)
        Если рассматривать одну такую трубу , то задача решается определением ее BoundingBox и расширением ее границ , нашел такой метод:
        def bb(x):
        return x.BoundingBox
        for i in IN[0]: #определенные трубы
        outline = Outline(bb(i).MinPoint.ToXyz(), bb(i).MaxPoint.ToXyz())
        offset=IN[1] #задаем смещение BoundingBox в [мм]
        filter = BoundingBoxIntersectsFilter(outline, offset/304.8) #перевод единиц: [мм]=[футы]/304.8
        collector = FilteredElementCollector(doc, doc.ActiveView.Id).WherePasses(filter)
        to_els = [i.ToDSType(True) for i in collector]
        list_all.append(to_els)

        list_all – это список ВСЕХ элементов которые пересекает расширенный по габаритам BoundingBox (ну далее отфильтровать нужные элементы дело нехитрое);
        вместо BoundingBoxIntersectsFilter(outline) можно использовать метод: BoundingBoxIsInsideFilter(outline) я не пробовал, но МНЕ КАЖЕТСЯ что это все элементы попадающие ЦЕЛИКОМ в BoundingBox …
        Вместо труб конечно можно использовать другие элементы, так что может кому и пригодится ,
        Может еще кто чего дополнит по этой теме…

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