Надо написать плагин для Renga.
Его суть заключается в том, что при нажатии на кнопку появляется выбор помещения и в нем надо будет расположить розетки и выключатели по следующему алгоритму:
Блок-схема алгоритма (Логика работы)
Алгоритм можно разбить на 5 последовательных этапов.
Этап 1: Инициализация и сбор данных
- Подключение к текущему проекту Renga (renga.app).
- Получение списка всех помещений (Category.Rooms).
- Фильтрация помещений: исключение технических шахт, улиц и т.д.
- Для каждого помещения получение связанных стен (Walls) и дверей (Doors).
Этап 2: Классификация помещений (Функциональное зонирование)
Скрипт анализирует параметр Name или Function у помещения:
- Если содержит «Кухня» → Режим KITCHEN.
- Если содержит «Ванная»/«Санузел» → Режим BATH (ограничения).
- Если «Комната»/«Спальня»/«Гостиная» → Режим LIVING.
- Если «Коридор» → Режим HALL.
Этап 3: Расстановка выключателей (Switches)
Для каждого помещения:
- Найти входную дверь (дверь, ведущая из коридора или снаружи).
- Определить стену, в которой находится дверь.
- Определить сторону открывания (если параметр доступен) или выбрать сторону ближайшего простенка.
- Создать экземпляр семейства «Выключатель» на высоте 0.9 м.
- Смещение от края дверного проема: 150 мм.
Этап 4: Расстановка розеток (Sockets)
Для каждой стены помещения:
- Получить длину стены (Wall.Length).
- Вычесть ширины оконных и дверных проемов (розетки не ставим в проемах).
- Логика шага:
- Если длина чистого участка > 3 метров → Разделить участок на сегменты по 3 метра.
- В центре каждого сегмента создать экземпляр «Розетка».
- Высота:
- Для режима KITCHEN: Если стена является «фартуком» (можно определить по параметру стены или высоте), ставить на 1.1 м. Иначе на 0.3 м.
- Для режима LIVING/HALL: На 0.3 м.
Этап 5: Валидация и отчет
- Проверка на коллизии (не попала ли розетка в угол или на окно).
- Запись в лог файла: сколько элементов создано, в каких помещениях ошибки.
- Вывод сообщения пользователю в Renga.