Проблема: не объединяются объекты (Warning: Active object is not a selected mesh)
Имеется большая карта с огромным кол-вом объектов на ней.
Нужно было объединить объекты, у которых совпадает начало названия
{"name", "name 1", (...),"name N"} -> "name"
Руками это делать довольно долго и муторно, поэтому решил воспользоваться возможностью написания для блендера скриптов на питоне.
Путём проб и ошибок были созданы два метода:
import collections, time
def selector(): # выделяет объекты, названия которых начинаются одинаково
c = collections.Counter([x.name.split()[0] for x in C.scene.objects])
_nr = [x for x in dict(c) if dict(c)[x] > 1]
del c
for nr in _nr:
bpy.ops.object.select_all(action='DESELECT')
print("Selecting all", nr)
for obj in C.scene.objects:
if not obj.name.startswith(nr): continue
bpy.data.objects[obj.name].select = True
print("Selected", obj.name)
joiner()
def joiner(): # должен объединять объекты
bpy.ops.object.join()
time.sleep(.5)
bpy.ops.object.select_all(action='DESELECT')
При вызове метода selector() кучи объектов с одинаковыми началами названий должны объединиться, но нет:
Мною было замечено, что когда selector() выделяет объекты, то все они подсвечиваются оранжевым:
При этом, если самостоятельно вызвать joiner(), то в консоли пишет:
Объединение через Ctrl+J вызывает ту же ошибку(но она отображается в тулбаре).
Если же выделять вручную, то всегда остаётся один элемент, подсвеченный жёлтым:
В этом случае вызов joiner(), как и объединение через Ctrl+J, работают на ура. Все объекты сливаются именно в тот, который был подсвечен жёлтым.
Может кто сталкивался?