[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [2764] trunk/py/scripts/addons/ io_scene_x3d/export_x3d.py: fix [#29262] X3D exporter does not export ok for obj_type != 'MESH'

Campbell Barton ideasman42 at gmail.com
Sun Dec 11 17:26:47 CET 2011


Revision: 2764
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=2764
Author:   campbellbarton
Date:     2011-12-11 16:26:36 +0000 (Sun, 11 Dec 2011)
Log Message:
-----------
fix [#29262] X3D exporter does not export ok for obj_type != 'MESH'

this is a patch submission but fix in a different way

Modified Paths:
--------------
    trunk/py/scripts/addons/io_scene_x3d/export_x3d.py

Modified: trunk/py/scripts/addons/io_scene_x3d/export_x3d.py
===================================================================
--- trunk/py/scripts/addons/io_scene_x3d/export_x3d.py	2011-12-11 00:36:39 UTC (rev 2763)
+++ trunk/py/scripts/addons/io_scene_x3d/export_x3d.py	2011-12-11 16:26:36 UTC (rev 2764)
@@ -266,6 +266,9 @@
     # store files to copy
     copy_set = set()
 
+    # store names of newly cerated meshes, so we dont overlap
+    mesh_name_set = set()
+
     fw = file.write
     base_src = os.path.dirname(bpy.data.filepath)
     base_dst = os.path.dirname(file.name)
@@ -1377,14 +1380,30 @@
                         me = obj.to_mesh(scene, use_apply_modifiers, 'PREVIEW')
                     except:
                         me = None
+                    do_remove = True
                 else:
                     me = obj.data
+                    do_remove = False
 
                 if me is not None:
+                    # ensure unique name, we could also do this by
+                    # postponing mesh removal, but clearing data - TODO
+                    if do_remove:
+                        me.name = obj.name.rstrip("1234567890").rstrip(".")
+                        me_name_new = me_name_org = me.name
+                        count = 0
+                        while me_name_new in mesh_name_set:
+                            me.name = "%.17s.%03d" % (me_name_org, count)
+                            me_name_new = me.name
+                            count += 1
+                        mesh_name_set.add(me_name_new)
+                        del me_name_new, me_name_org, count
+                    # done
+
                     writeIndexedFaceSet(ident, obj, me, obj_matrix, world)
 
                     # free mesh created with create_mesh()
-                    if me != obj.data:
+                    if do_remove:
                         bpy.data.meshes.remove(me)
 
             elif obj_type == 'LAMP':
@@ -1466,7 +1485,7 @@
         bpy.data.materials.remove(gpu_shader_dummy_mat)
 
     # copy all collected files.
-    print(copy_set)
+    # print(copy_set)
     bpy_extras.io_utils.path_reference_copy(copy_set)
 
     print('Info: finished X3D export to %r' % file.name)



More information about the Bf-extensions-cvs mailing list