Вопрос вроде бы простой но что то у меня не выходит.
Задача:
есть параметры дверей ширина и высота.
как мне в динамо взять ширину, потом высоту а потом отсортировать вначале по ширине а потом по высоте как в ведомости ревита.
Решено! Перейти к решению.
Решено: alexey.lobanov. Перейти к решению.
На самом деле не такой уж и простой)) Так как подходов к множественной сортировке сущствует много и ни один из них не реализован какими-то специальными нодами.
Самый простой способ, который тут сразу приходит а голову:
Тут смысл в том, что мы находим типоразмеры дверей. Находим их ширину и высоту. Все это раскладывается по отдельным спискам.
Далее мы можем подумать, какой способ сортировки реализовать. Он может быть многопроходным(сначала сортируем по первому, потом по второму итд) или однопроходной. Хотелось-бы кончно за один проход все сделать. Для этого нам необходимо сгенерировать еще одно свойство этомента, которое будет однозначно в себе "кодировать" приоритет, учитывая высоту и ширину. По этому свойству и будем сортировать список.
как вариант я сделал это свойство = высота в третьей степени (чтобы придать вес) + ширина. Таким образом будет сначала учитываться высота а потом, как менее приоритетно свойство - ширина.
как вариант вместо третьй степени можно просто сдлать что-то типа: высота*10000+ширина
Потом соединяется в один список все списки (или только типоразмеры и свойство приоритета) и сортируем этот список по свойству приоритета.
Alexey Lobanov / Алексей Лобанов
Revit Architecture Certified Professional | Autodesk Certified Instructor | Autodesk Expert Elite
PRORUBIM | YouTube channel | LinkedIn profile
Спасибо!
В динамо боюсь что нет.
в питоне функция сортировки универсальная и может сортировать помойму все что угодно.
По нескольким полям можно примерно следующим образом
l.sort(key=lambda x: (x[0], int(x[1])))
Alexey Lobanov / Алексей Лобанов
Revit Architecture Certified Professional | Autodesk Certified Instructor | Autodesk Expert Elite
PRORUBIM | YouTube channel | LinkedIn profile
Но я имел в виду что питон по идее сам способен сортировать по двум параметрам
http://stackoverflow.com/questions/4233476/sort-a-list-by-multiple-attributes
но как в динамо подгрузить operator.itemgetter я так и не понял
да. все отлично работает:
спасибо, Леша.
я неделю дня пробился так и не смог это решить а тут такое изящное решение )))
-
Ну хорошо.
это решение работает.
А как быть если один параметр текстовый?
Например если нужно отсортировать перемычки вначале по этажам а потом ширинам....
Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.