Скрипт з циклом

Доброго дня усім. Є карта з 3D-моделями будинків. Кожен будинок складається з декількох елементів. Потрібно згрупувати елементи кожного будинку (щоб кожен з будинків був одним об’єктом, а не набором окремих елементів). Можна написати скрипт, яким потрібно “опрацювати” кожен об’єкт карти:

Пометить | Все смежные
Пометить | Связанные
[ Операции с объектами.Соединить ]

Як написати скрипт з циклом, який “перебирав” би всі об’єкти карти та виконував би над ними вищеописані операції?

Файл з прикладом прикріплюю. Буду дуже вдячний за допомогу.
example.dmf (34.8 KB)

Есть готовая команда скрипта @Map.Merge3DObjects, которая объединяет смежные 3D объекты в один объект. Подробнее здесь

на жаль команда @Map.Merge3DObjects видаляє деякі грані будинків, що є недопустимим у нашому випадку.
В когось ще є варіанти?

Тогда экспортируйте карту в Google Earth KMZ формат и включите в окне настроек экспорта Группировать примыкающие 3D объекты. Если KMZ не является конечным форматом, импортируйте полученный KMZ назад. Смежные объекты будут объединены.

Команда @Map.Merge3DObjects должна удалять только невидимые внутренние грани. Так и происходит или пропадают также внешние грани объектов?

суміжні об’єкти об’єднуються, але не всі.

При використанні команди @Map.Merge3DObjects видаляються також зовнішні грані, що видно з рисунку нижче.


Если @Map.Merge3DObjects удаляет внешние грани, значит эти грани имет неправильное направление нормалей. Нормали таких граней направлены внутрь и мы видим внутренюю сторону граней снаружи. Эти грани будут выглядеть темнее соседних. Поменяйте направление обхода таких граней.