Поделиться:
Уведомления
Очистить все

Dynamo-Python_Сортировка элементов revit по параметру в ноде python

1 Записи
2 Пользователи
0 Reactions
108 Просмотры
0
Создатель темы

Всем привет!

Подскажите, пожалуйста, как исправить код.

Суть задачи:

  • В dynamo формируем список всех помещений квартир
  • Далее в ноде python создаем список помещений квартир сгруппированных по параметру "номер квартиры" (список с вложенными списками)
  • Далее стоит задача в данном списке отсортировать помещения в каждой квартире по определенному шаблону, согласно приоритету помещения:
    # функция сортировки помещений
    def rooms_sort(name):
        rooms_order = {
            "Мастер-спальня": 1,
            "Жилая комната": 2,
            "Кухня": 3,
            "Кухня-столовая": 4,
            "Кухня-ниша": 5,
            "Мастер С/У": 6,
            "С/У": 7,
            "Гардеробная": 8,
            "Постирочная": 9,
            "Коридор": 10,
            "Прихожая": 11,
            "Лоджия": 12,
            "Балкон": 13,
            "Терраса": 14,
        }
        return rooms_order[name] if name in rooms_order.keys() else len(rooms_order)

А вот тут затык, я не знаю как отсортировать помещения по параметру "Имя" на основе функции выше:

# сортировка помещений по приоритету
for i in range(len(lst2)):
    for j in range(len(lst2[i])):
        elm = UnwrapElement(lst2[i][j]) 
        name = elm.LookupParameter("Имя")

        lst2[i].sort(key=rooms_sort)
    
OUT = lst2

Буду благодарен за любую подсказку

 

Метки темы
1 Ответ
0

@inwork 

lst2[i].sort(key=rooms_sort)

Не сильно понятно что вы в этой строчке пытаетесь сделать внутри второго цикла. 

Приложите к вопросу файл для теста и полный ваш код, чтобы можно было более детально разобраться и понять в чем у вас проблема. 

Ну и в целом, мне кажется, что вашу задачу можно решить стандартными нодами, без использования Python

 

BIM-менеджер
Соавтор шаблонов ADSK КЖ/КМ 2021
Инженер-проектировщик КР, КЖ
Телеграм
Правила форума и некоторые нюансы по работе с текстовым редактором

Ответ