diff --git a/io_scene_obj/__init__.py b/io_scene_obj/__init__.py index 166cc7fc3afe2eae72766453062cd1e1de0b4f17..7fcb0a97736b43cd77fff20c3adda76d3442a061 100644 --- a/io_scene_obj/__init__.py +++ b/io_scene_obj/__init__.py @@ -21,7 +21,7 @@ bl_info = { "name": "Wavefront OBJ format", "author": "Campbell Barton, Bastien Montagne", - "version": (3, 5, 3), + "version": (3, 5, 4), "blender": (2, 80, 0), "location": "File > Import-Export", "description": "Import-Export OBJ, Import OBJ mesh, UV's, materials and textures", diff --git a/io_scene_obj/import_obj.py b/io_scene_obj/import_obj.py index a065f7e1c1cc088d1130f5b06d57dfcc23bd41d3..8050b683d526d6291afc5b148eb4f7bf06a9d18b 100644 --- a/io_scene_obj/import_obj.py +++ b/io_scene_obj/import_obj.py @@ -856,6 +856,14 @@ def load(context, This function passes the file and sends the data off to be split into objects and then converted into mesh objects """ + def unique_name(existing_names, name_orig): + i = 0 + name = name_orig + while name in existing_names: + name = b"%s.%03d" % (name_orig, i) + i += 1 + existing_names.add(name) + return name def handle_vec(line_start, context_multi_line, line_split, tag, data, vec, vec_len): ret_context_multi_line = tag if strip_slash(line_split) else b'' @@ -908,6 +916,8 @@ def load(context, context_object = None context_vgroup = None + objects_names = set() + # Nurbs context_nurbs = {} nurbs = [] @@ -1086,12 +1096,12 @@ def load(context, elif line_start == b'o': if use_split_objects: - context_object = line_value(line_split) + context_object = unique_name(objects_names, line_value(line_split)) # unique_obects[context_object]= None elif line_start == b'g': if use_split_groups: - context_object = line_value(line.split()) + context_object = unique_name(objects_names, line_value(line_split)) # print 'context_object', context_object # unique_obects[context_object]= None elif use_groups_as_vgroups: