Задача на сортировку в Python + Grasshopper.

Условие: необходимо написать код, который выбирает в прямоугольнике, либо в многоугольнике самую длинную кривую.

Решение: для начала составим скрипт в Grasshopper, чтобы точно описать необходимые шаги выполнения задачи. Алгоритм решения будет выглядеть следующим образом:
И так, шаги решения задачи:
1) Привязать прямоугольник из Rhino в Grasshopper;
2) "Взорвать" прямоугольник, т.е. разделить его на отдельные линии;
3) Измерить длину всех линий;
4) Отсортировать линии на основе их длин;
5) Выбрать самую длинную линию, находящуюся в конце списка (индекс - 1);
6) Дать визуализацию выбранной линии в виде большей толщины и другого цвета (не обязательный шаг);

Код в Python, используя Rhinoscrpit syntax будет выглядеть следующим образом:
import rhinoscriptsyntax as rs
import ghpythonlib.components as gh

#1. Разделяем на отдельные кривые
exploded = rs.ExplodeCurves(curve)

#2. Сразу сортируем линии функцией Lambda
sortList = sorted(exploded, key=lambda x: rs.CurveLength(x))

#3. Выбираем самую длинную линию
longestLine = sortList[-1]
В данном примере используется сортировка при помощи анонимной функции lambda. Она позволяет в одну строку написать то, что могло бы размещаться на 4-5 строках. Как видно код можно реализовать всего лишь в 3 шага.

Оцените этот урок и помогите тем самым сделать его лучше.
Контакты
Время работы
  • Понедельник - пятница
  • с 10 до 19 часов
Подпишитесь на еженедельную рассылку
© 2022 SKY ARCH SCHOOL
ИП Аюпов АМ. Все права защищены