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

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

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

    Добрый вечер Товарищи! Только что наткнулся на такую вещь:

    Куда делся 4й список в правом красном кружочке? На ноде “BoundingBox.Intersects” лайсинг(переплетение) по “Самый длинный список”;

    в “0 List”(правый красный кружочек) по идее должно быть 4 писка как на левом красном кружочке, или я не прав?

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

    псевдо chop в python
    (работает с текстом, поэтому вначале нужен str(inn))

    inn = str(11223234)
    chop = 2
    listChop = [int(inn[i*chop:i*chop+chop]) for i in range(len(inn)/chop)]

    Вывод будет таким: [11, 22, 32, 34]

    или такой вариант:

    lst = [1,2,3,4,5,6]
    chop = 2
    print  [lst[x:chop+x] for x in range(0,len(lst),chop)]

    вывод будет таким:[[1,2],[3,4],[5,6]]

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

    для chop в pyhon используйте это (работает с текстом, поэтому вначале нужен str(inn)):
    inn = str(11223234)
    chop = 2
    listChop = [int(inn[i*chop:i*chop+chop]) for i in range(len(inn)/chop)]
    Вывод будет таким: [11, 22, 32, 34]

    По теме вопроса можно так:

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

    можно конечно и таким топориком:

    сделать вначале сплошной список, затем разделить на равные отрезки, как метод chop в ноде – однако у меня его не получилось запустить (т.е. в питоне использовать DS.Core.List.Chop(t1,t2) – библиотеки RevitNodes, DS Core подключал -чет пишет ошибку)

    но ,несомненно, есть способ проще, как сделать циклами и append или чего то в этом духе… буду искать способы…

    #6307

    В ответ на: создание Parts в Python

    Oleg
    Участник
    28 pts

    У вас теперь транзакция в цикле, вытащите её оттуда)

    Ids=List[ElementId]()

    for ip in IN[0]:
    Ids.Add(ElementId(ip.Id))

    TransactionManager.Instance.EnsureInTransaction(doc)
    elemMpatr = PartUtils.CreateMergedPart(doc, Ids)
    TransactionManager.Instance.TransactionTaskDone()

    <iframe src=”https://pastebin.com/embed_iframe/es0maCy6&#8243; style=”border:none;width:100%”></iframe>

    #6297

    В ответ на: создание Parts в Python

    Oleg
    Участник
    28 pts

    Вам нужно строчку ” ids=List[ElementId]()” вытащить из цикла, т.е попробуйте так:

     

    
    ids=List[ElementId]()
    for ip in IN[0]:
    ids.Add(ElementId(ip.Id))
    
    #6279

    В ответ на: создание Parts в Python

    Ром
    Участник

    Товарищи помогите разобраться почему Dynamo пишет это?:

    Предупреждение:IronPythonEvaluator.EvaluateIronPythonScript операция не выполнена.
    Traceback (most recent call last):
    File “<string>”, line 32, in <module>
    Exception: One or more element ids was not suitable for merging with the others. Specified elements should all be Parts, report the same material, creation and demolition phases, and have contiguous geometry.
    Parameter name: partIds

     

    вот скрипт:

    import clr

    clr.AddReference(‘RevitAPI’)
    from Autodesk.Revit.DB import *

    clr.AddReference(‘ProtoGeometry’)
    from Autodesk.DesignScript.Geometry import *

    clr.AddReference(‘RevitNodes’)
    import Revit
    clr.ImportExtensions(Revit.GeometryConversion)

    clr.AddReference(“RevitServices”)
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    from RevitServices.Transactions import TransactionManager

    import System
    from System import Array
    from System.Collections.Generic import *

    doc = DocumentManager.Instance.CurrentDBDocument

    #OUT = dir(List)

    for ip in IN[0]:
    Ids=List[ElementId]()
    Ids.Add(ElementId(ip.Id))

    TransactionManager.Instance.EnsureInTransaction(doc)
    elemMpatr = PartUtils.CreateMergedPart(doc, Ids)
    TransactionManager.Instance.TransactionTaskDone()

    это стены в плане:

    как видим у Parts – параметры одинаковы. По условиям всё соблюдено (Specified elements should all be Parts, report the same material, creation and demolition phases, and have contiguous geometry).

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

    Друзья,
    может кто нибудь подсказать как сделать в нашем динамовском питоне интерполяцию (т.е. может есть специальная встроенная библиотека):
    Конкретно нужна линейная интерполяция :
    допустим есть списки ,самый простой случай:
    List_x=[1,2,3,4]
    List_y=[1,2,3,4]
    то есть если вводим x=1,5 , то скриптом находятся ближайшие значения из обоих списков – в нашем случае – это  [1, 2] потом по формуле интерполяции выдается значение y=1,5

    #6159

    В ответ на: создание Parts в Python

    Ром
    Участник

    спасибо за ответ.

    <hr />

    import clr

    clr.AddReference(‘RevitAPI’)
    from Autodesk.Revit.DB import *

    clr.AddReference(‘ProtoGeometry’)
    from Autodesk.DesignScript.Geometry import *

    clr.AddReference(‘RevitNodes’)
    import Revit
    clr.ImportExtensions(Revit.GeometryConversion)

    clr.AddReference(“RevitServices”)
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    from RevitServices.Transactions import TransactionManager

    import System
    from System import Array
    from System.Collections.Generic import *

    doc = DocumentManager.Instance.CurrentDBDocument

    Ids=List[ElementId]()
    Ids.Add(ElementId(IN[0].Id))

    TransactionManager.Instance.EnsureInTransaction(doc)
    elemPatr = PartUtils.CreateParts(doc, Ids)
    TransactionManager.Instance.TransactionTaskDone()

    ——————————————————————–

    “Что такое parts на стенах ?” имеется ввиду вот что: “Parts can be generated from elements with layered structures, such as: Walls (excluding stacked walls and curtain walls)”.

    Не работает((( вот что пишет нод: “Предупреждение:IronPythonEvaluator.EvaluateIronPythonScript операция не выполнена.
    Traceback (most recent call last):
    File “<string>”, line 25, in <module>
    AttributeError: ‘list’ object has no attribute ‘Id'”

    #6158

    В ответ на: создание Parts в Python

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

    Где ты нашел скрипт?
    Что такое parts на стенах ?

    если нижнюю чать (после doc =.. ) заменить вот на это:

    import System
    from System import Array
    from System.Collections.Generic import *
    Ids=List[ElementId]() 
    Ids.Add(ElementId(IN[0].Id))
    TransactionManager.Instance.EnsureInTransaction(doc)
    elemPatr = PartUtils.CreateParts(doc, Ids)
    TransactionManager.Instance.TransactionTaskDone()

    то ошибок не выдает.
    Кстати метод PartUtils.CreateParts(doc, Ids) ничего не возвращает, так что elemPatr от этой команды можно и не ждать

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

    Не знаю есть ли какой нить кастум-нод для программного выделения элементов в Ревит, я для себя писал код

    # ©2016, Khasan Mamaev
    # www.dynamobim.ru

    import clr
    clr.AddReference('RevitServices')
    clr.AddReference('RevitAPI')
    from Autodesk.Revit.DB import *
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    from Autodesk.Revit.ApplicationServices import Application
    clr.AddReference('RevitNodes')
    import Revit
    clr.ImportExtensions(Revit.Elements)
    from Revit.Elements import *
    clr.AddReference('System')
    from System.Collections.Generic import List

    reset = IN[0]

    elems = IN[1]

    doc = DocumentManager.Instance.CurrentDBDocument
    uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument

    ids = List[ElementId]()

    for i in elems:
    ids.Add(UnwrapElement(i).Id)

    uidoc.Selection.SetElementIds(ids)

    Динар
    Участник

    Добрый день, помогите пожалуйста с кодом. По задумке должно выполнятся взаимодействие 1 элем в списке 1 с 1м элем в списке 2, 2й элем в списке 1 со 2м элем в списке 2 и тд

    Но у меня выходит что у меня просто все элементы взаимодействуют со всеми.

    doc = DocumentManager.Instance.CurrentDBDocument
    TransactionManager.Instance.EnsureInTransaction(doc)

    elementlistA= UnwrapElement(IN[0])
    elementlistB= UnwrapElement(IN[1])

    results = []

    for elementA in elementlistA:
    for elementB in elementlistB:
    try:
    result = Autodesk.Revit.DB.JoinGeometryUtils.SwitchJoinOrder(doc,elementA,elementB)
    results.append(result)
    except:
    pass
    TransactionManager.Instance.TransactionTaskDone()

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

    И друзья, обратите внимание на эту конструкцию list(iter(digs(i))) это получение удобоваримого списка из любого итерируемого объекта. Зачастую при работе с объектами Ревит(импорт геометрии, импорт параметров) приходят интересные объекты, которые вроде являются списками, но не всегда обрабатываются обычными методами списков, бывает что обрабатываются нестабильно – вчера скрипт работал, а с утра перестал. Возможно вы уже сталкивались с такой проблемой. В данном случае я с помощью этого приема преобразовал (a,b) – tuple в [a,b] – list

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

    не знал, что sorted может сразу по 2 параметрам сортировать..
    тогда поправил свой код (уложился в 1 строку, не считая import):

    from operator import itemgetter
    OUT = zip(*sorted(zip([int(i.split(".")[0][1:]) for i in list1], [int(i.split(".")[1]) for i in list1], list1), key=itemgetter(0,1)))[2]

    p.s. Если префикс (в данном примере буква “В”) будет состоять из нескольких букв, то нужно заменить [1:] на нужное количество букв

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

    в Python в 1 строчку и без регулярных выражений )) (но для читаемости лучше этот код записывать в несколько строк)

    OUT = zip(*sorted(zip([int(i.split(".")[1]) for i in IN[0]], IN[0]), key = lambda lists: lists[0]))[1]

    для тех, кто изучает python несколько слов про код:
    – split разделяю по точке “.” и создаю новый список цифр (int переводит текст в цифры) (в нашем примере 10, 3, 2, 1, 11)
    – zip соединяю 2 списка – наши цифры и исходный
    – sorted key lambda – сортирую наш объединенный список, но по цифрам (lists[0])
    – zip(*list)[1] – разъединяю объединенный список и получаю исходный отсортированный по цифрам
    еще пример здесь
    p.s. код не сортирует по цифрам до точки, т.е. не работает с В1.1, В2.1 ..

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