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).
This commit is contained in:
parent
2e9f1abbe7
commit
9448cef00d
|
@ -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",
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue