Fixed up naming new objects/meshes when that name alredy existed - faster and better...
authorCampbell Barton <ideasman42@gmail.com>
Wed, 18 Jan 2006 22:57:55 +0000 (22:57 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 18 Jan 2006 22:57:55 +0000 (22:57 +0000)
release/scripts/obj_import.py

index ed0c0f3411010024dc36b98697cb22b5b81ce9db..f2bcaf853e75780b7ab09fff12626310a4c39deb 100644 (file)
@@ -408,20 +408,14 @@ def load_mtl(dir, mtl_file, meshDict, materialDict):
 # Returns unique name of object/mesh (preserve overwriting existing meshes) #
 #===========================================================================#
 def getUniqueName(name):
 # Returns unique name of object/mesh (preserve overwriting existing meshes) #
 #===========================================================================#
 def getUniqueName(name):
-       newName = name
+       newName = name[:19] # 19 chars is the longest name.
        uniqueInt = 0
        uniqueInt = 0
-       while 1:
-               try:
-                       ob = Object.Get(newName)
-                       # Okay, this is working, so lets make a new name
-                       newName = '%s.%.3d' % (name, uniqueInt)
-                       uniqueInt +=1
-               except ValueError:
-                       if newName not in NMesh.GetNames():
-                               return newName
-                       else:
-                               newName = '%s.%3d' % (name, uniqueInt)
-                               uniqueInt +=1
+       while newName in getUniqueName.uniqueNames:
+               newName = '%s.%.3i' % (name[:15], uniqueInt)
+               uniqueInt +=1
+       getUniqueName.uniqueNames.append(newName)
+       return newName
+getUniqueName.uniqueNames = []
 
 #==================================================================================#
 # This loads data from .obj file                                                   #
 
 #==================================================================================#
 # This loads data from .obj file                                                   #
@@ -432,6 +426,9 @@ def load_obj(file, IMPORT_MTL=1, IMPORT_EDGES=1, IMPORT_SMOOTH_ALL=0):
        
        time1 = sys.time()
        
        
        time1 = sys.time()
        
+       getUniqueName.uniqueNames.extend( [ob.name for ob in Object.Get()] )
+       getUniqueName.uniqueNames.extend( NMesh.GetNames() )
+       
        # Deselect all objects in the scene.
        # do this first so we dont have to bother, with objects we import
        for ob in Scene.GetCurrent().getChildren():
        # Deselect all objects in the scene.
        # do this first so we dont have to bother, with objects we import
        for ob in Scene.GetCurrent().getChildren():