[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1454] trunk/py/scripts/addons/ io_scene_3ds/export_3ds.py: unique name exporting was broken, needed to export bytes.

Campbell Barton ideasman42 at gmail.com
Thu Jan 20 10:32:59 CET 2011


Revision: 1454
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=1454
Author:   campbellbarton
Date:     2011-01-20 09:32:59 +0000 (Thu, 20 Jan 2011)
Log Message:
-----------
unique name exporting was broken, needed to export bytes.

Modified Paths:
--------------
    trunk/py/scripts/addons/io_scene_3ds/export_3ds.py

Modified: trunk/py/scripts/addons/io_scene_3ds/export_3ds.py
===================================================================
--- trunk/py/scripts/addons/io_scene_3ds/export_3ds.py	2011-01-20 09:04:36 UTC (rev 1453)
+++ trunk/py/scripts/addons/io_scene_3ds/export_3ds.py	2011-01-20 09:32:59 UTC (rev 1454)
@@ -89,23 +89,24 @@
 
 # So 3ds max can open files, limit names to 12 in length
 # this is verry annoying for filenames!
-name_unique = []
-name_mapping = {}
+name_unique = []  # stores str, ascii only
+name_mapping = {}  # stores {orig: byte} mapping
 def sane_name(name):
     name_fixed = name_mapping.get(name)
     if name_fixed is not None:
         return name_fixed
 
-    new_name = name[:12]
-
+    # strip non ascii chars
+    new_name_clean = new_name = name.encode("ASCII", "replace").decode("ASCII")[:12]
     i = 0
 
     while new_name in name_unique:
-        new_name = new_name[:-4] + '.%.3d' % i
+        new_name = new_name_clean + ".%.3d" % i
         i+=1
 
+    # note, appending the 'str' version.
     name_unique.append(new_name)
-    name_mapping[name] = new_name
+    name_mapping[name] = new_name = new_name.encode("ASCII", "replace")
     return new_name
 
 def uv_key(uv):
@@ -167,7 +168,8 @@
     '''Class representing a zero-terminated string for a 3ds file.'''
     __slots__ = ('value', )
     def __init__(self, val):
-        self.value=val
+        assert(type(val) == bytes)
+        self.value = val
 
     def get_size(self):
         return (len(self.value)+1)



More information about the Bf-extensions-cvs mailing list