DYNAMO PYTHON работа со списками

Главная Форумы Задать вопрос DYNAMO PYTHON работа со списками

В этой теме 6 ответов, 4 участника, последнее обновление  Динар 1 год, 8 мес. назад.

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

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

    Добрый день, помогите пожалуйста с кодом. По задумке должно выполнятся взаимодействие 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()

    #5996 Score: 2

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

     

    results = []
    
    for i in range (0, IN[0].Count):
      results.append(Autodesk.Revit.DB.JoinGeometryUtils.SwitchJoinOrder(doc,IN[0][i],IN[1][i]))
    
    OUT = results

    списки должны быть одноуровневыми

    #5997 Score: 2

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

    в твоем случае i+k нужно заменить на Autodesk.Revit.DB.JoinGeometryUtils.SwitchJoinOrder(doc, i, k)

    #6000 Score: 0

    Khasan Mamaev
    Хранитель
    181 pts

    Для этого достаточно одного цикла, а можно и вовсе без цикла, вот так например:
    map(lambda x,y:[x,y],A,B)

    #6002 Score: 2

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

    Хасан имел ввиду вот такую форму записи для примера в этой теме:

    OUT = map(lambda x,y: JoinGeometryUtils.SwitchJoinOrder(doc, x, y),IN[0],IN[1])
    Но на мой взгляд для новичков более понятнее запись вида:
    OUT = [JoinGeometryUtils.SwitchJoinOrder(doc, x, y) for x, y in zip (IN[0], IN[1])]

    #6003 Score: 2

    Khasan Mamaev
    Хранитель
    181 pts

    новичкам будут малопонятны оба варианта) на то они и новички, посему пусть осваивают разные варианты решения задачи, можно добавить еще такой [IN[1][i] + k for k,i in enumerate(IN[0])]

    #6618 Score: 0

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

    Спасибо всем!

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

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