diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index c1c9a3536b3..cb243e66e29 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -364,34 +364,37 @@ class JoinUVs(bpy.types.Operator): if is_editmode: bpy.ops.object.mode_set(mode='OBJECT', toggle=False) - len_faces = len(mesh.faces) + if not mesh.active_uv_texture: + self.report({'WARNING'}, "Object: %s, Mesh: '%s' has no UVs\n" % (obj.name, mesh.name)) + else: + len_faces = len(mesh.faces) - uv_array = array.array('f', [0.0] * 8) * len_faces # seems to be the fastest way to create an array - mesh.active_uv_texture.data.foreach_get("uv_raw", uv_array) + uv_array = array.array('f', [0.0] * 8) * len_faces # seems to be the fastest way to create an array + mesh.active_uv_texture.data.foreach_get("uv_raw", uv_array) - objects = context.selected_editable_objects[:] + objects = context.selected_editable_objects[:] - for obj_other in objects: - if obj_other.type == 'MESH': - obj_other.data.tag = False + for obj_other in objects: + if obj_other.type == 'MESH': + obj_other.data.tag = False - for obj_other in objects: - if obj_other != obj and obj_other.type == 'MESH': - mesh_other = obj_other.data - if mesh_other != mesh: - if mesh_other.tag == False: - mesh_other.tag = True + for obj_other in objects: + if obj_other != obj and obj_other.type == 'MESH': + mesh_other = obj_other.data + if mesh_other != mesh: + if mesh_other.tag == False: + mesh_other.tag = True - if len(mesh_other.faces) != len_faces: - self.report({'WARNING'}, "Object: %s, Mesh: '%s' has %d faces, expected %d\n" % (obj_other.name, mesh_other.name, len(mesh_other.faces), len_faces)) - else: - uv_other = mesh_other.active_uv_texture - if not uv_other: - mesh_other.uv_texture_add() # should return the texture it adds + if len(mesh_other.faces) != len_faces: + self.report({'WARNING'}, "Object: %s, Mesh: '%s' has %d faces, expected %d\n" % (obj_other.name, mesh_other.name, len(mesh_other.faces), len_faces)) + else: uv_other = mesh_other.active_uv_texture + if not uv_other: + mesh_other.add_uv_texture() # should return the texture it adds + uv_other = mesh_other.active_uv_texture - # finally do the copy - uv_other.data.foreach_set("uv_raw", uv_array) + # finally do the copy + uv_other.data.foreach_set("uv_raw", uv_array) if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False)