Where is there an issue with my code? I want to merge the models under the empty object into one object and save it under each empty object, but after I run the code, it merges all the models into one model
import bpy
import time
class MergeTestModelsOperator(bpy.types.Operator):
bl_idname = "object.merge_test_models_operator"
bl_label = "Merge Test Models"
bl_options = {'REGISTER', 'UNDO'}
def mergemodel(self, mergeobj):
# Merge other models into new objects
for obj in mergeobj.children:
if obj.type == 'MESH' and obj:
obj.select_set(True)
bpy.ops.object.join()
bpy.context.view_layer.objects.active.name = mergeobj.name.replace("_MODEL", "")
bpy.ops.object.transform_apply(location=True, rotation=True, scale=True)
def execute(self, context):
# Obtain all models in the scene
objects = bpy.data.objects
start = time.perf_counter()
for obj in objects:
if obj.type == 'EMPTY' and obj.name.find("_MODEL")!=-1:
self.mergemodel(obj)
# self.report({'INFO'}, f"EMPTY: {obj.name}.")
continue
end = time.perf_counter()
runTime = end - start
runTime_ms = runTime * 1000
print(f"Time: {runTime}\n Time_ms: {runTime_ms}")
self.report({'INFO'}, f"Time: {runTime}\n Time_ms: {runTime_ms}")
# Display successful prompt information
self.report({'INFO'}, "Test models merged and deleted successfully.")
return{'FINISHED'}
class MergeTestModelsPanel(bpy.types.Panel):
bl_label = "Merge Test Models Panel"
bl_idname = "PT_MergeTestModelsPanel"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = 'Tools'
bl_context = "objectmode"
def draw(self, context):
layout = self.layout
# Add a button that will call the Merge Test Models Operator operator when clicked
layout.operator("object.merge_test_models_operator")
def register():
bpy.utils.register_class(MergeTestModelsOperator)
bpy.utils.register_class(MergeTestModelsPanel)
def unregister():
bpy.utils.unregister_class(MergeTestModelsOperator)
bpy.utils.unregister_class(MergeTestModelsPanel)
if name == "main":
register()


if obj.name.find("_MODEL")!=-1=>>if "_MODEL" in obj.name:) – Gorgious Dec 19 '23 at 06:59