Skip to content
Snippets Groups Projects
Commit 9448cef0 authored by Bastien Montagne's avatar Bastien Montagne
Browse files

Fix first part of T60381: OBJ import broken in case of multiple OBJ objects named the same.

Ensure we use a different key for each OBJ object (usung similar naming
increment as Blender one).
parent 2e9f1abb
No related branches found
No related tags found
No related merge requests found
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
bl_info = { bl_info = {
"name": "Wavefront OBJ format", "name": "Wavefront OBJ format",
"author": "Campbell Barton, Bastien Montagne", "author": "Campbell Barton, Bastien Montagne",
"version": (3, 5, 3), "version": (3, 5, 4),
"blender": (2, 80, 0), "blender": (2, 80, 0),
"location": "File > Import-Export", "location": "File > Import-Export",
"description": "Import-Export OBJ, Import OBJ mesh, UV's, materials and textures", "description": "Import-Export OBJ, Import OBJ mesh, UV's, materials and textures",
......
...@@ -856,6 +856,14 @@ def load(context, ...@@ -856,6 +856,14 @@ def load(context,
This function passes the file and sends the data off This function passes the file and sends the data off
to be split into objects and then converted into mesh objects 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): 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'' ret_context_multi_line = tag if strip_slash(line_split) else b''
...@@ -908,6 +916,8 @@ def load(context, ...@@ -908,6 +916,8 @@ def load(context,
context_object = None context_object = None
context_vgroup = None context_vgroup = None
objects_names = set()
# Nurbs # Nurbs
context_nurbs = {} context_nurbs = {}
nurbs = [] nurbs = []
...@@ -1086,12 +1096,12 @@ def load(context, ...@@ -1086,12 +1096,12 @@ def load(context,
elif line_start == b'o': elif line_start == b'o':
if use_split_objects: 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 # unique_obects[context_object]= None
elif line_start == b'g': elif line_start == b'g':
if use_split_groups: 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 # print 'context_object', context_object
# unique_obects[context_object]= None # unique_obects[context_object]= None
elif use_groups_as_vgroups: elif use_groups_as_vgroups:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment