[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1452] trunk/py/scripts/addons/ io_scene_x3d: fix for exception exporting empty curves.

Campbell Barton ideasman42 at gmail.com
Thu Jan 20 08:52:45 CET 2011


Revision: 1452
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=1452
Author:   campbellbarton
Date:     2011-01-20 07:52:45 +0000 (Thu, 20 Jan 2011)
Log Message:
-----------
fix for exception exporting empty curves. added use_selected option for the operator.

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

Modified: trunk/py/scripts/addons/io_scene_x3d/__init__.py
===================================================================
--- trunk/py/scripts/addons/io_scene_x3d/__init__.py	2011-01-20 07:51:19 UTC (rev 1451)
+++ trunk/py/scripts/addons/io_scene_x3d/__init__.py	2011-01-20 07:52:45 UTC (rev 1452)
@@ -63,6 +63,7 @@
     filename_ext = ".x3d"
     filter_glob = StringProperty(default="*.x3d", options={'HIDDEN'})
 
+    use_selection = BoolProperty(name="Selection Only", description="Export selected objects only", default=False)
     use_apply_modifiers = BoolProperty(name="Apply Modifiers", description="Use transformed mesh data from each object", default=True)
     use_triangulate = BoolProperty(name="Triangulate", description="Triangulate quads.", default=False)
     use_compress = BoolProperty(name="Compress", description="GZip the resulting file, requires a full python install", default=False)

Modified: trunk/py/scripts/addons/io_scene_x3d/export_x3d.py
===================================================================
--- trunk/py/scripts/addons/io_scene_x3d/export_x3d.py	2011-01-20 07:51:19 UTC (rev 1451)
+++ trunk/py/scripts/addons/io_scene_x3d/export_x3d.py	2011-01-20 07:52:45 UTC (rev 1452)
@@ -680,7 +680,8 @@
 ##########################################################
 
     def export(self, scene, world, alltextures,
-                EXPORT_APPLY_MODIFIERS=False,
+                use_apply_modifiers=False,
+                use_selection=True,
                 EXPORT_TRI=False,
                 ):
 
@@ -697,8 +698,13 @@
         self.writeFog(world)
         self.proto = 0
 
-        for ob_main in [o for o in scene.objects if o.is_visible(scene)]:
+        if use_selection:
+            objects = (o for o in scene.objects if o.is_visible(scene) and o.select)
+        else:
+            objects = (o for o in scene.objects if o.is_visible(scene))
 
+        for ob_main in objects:
+
             free, derived = create_derived_objects(scene, ob_main)
 
             if derived is None:
@@ -712,16 +718,20 @@
                 if objType == 'CAMERA':
                     self.writeViewpoint(ob, ob_mat, scene)
                 elif objType in ('MESH', 'CURVE', 'SURF', 'FONT'):
-                    if EXPORT_APPLY_MODIFIERS or objType != 'MESH':
-                        me = ob.create_mesh(scene, EXPORT_APPLY_MODIFIERS, 'PREVIEW')
+                    if use_apply_modifiers or objType != 'MESH':
+                        try:
+                            me = ob.create_mesh(scene, use_apply_modifiers, 'PREVIEW')
+                        except:
+                            me = None
                     else:
                         me = ob.data
 
-                    self.writeIndexedFaceSet(ob, me, ob_mat, world, EXPORT_TRI=EXPORT_TRI)
+                    if me is not None:
+                        self.writeIndexedFaceSet(ob, me, ob_mat, world, EXPORT_TRI=EXPORT_TRI)
 
-                    # free mesh created with create_mesh()
-                    if me != ob.data:
-                        bpy.data.meshes.remove(me)
+                        # free mesh created with create_mesh()
+                        if me != ob.data:
+                            bpy.data.meshes.remove(me)
 
                 elif objType == 'LAMP':
                     data = ob.data
@@ -743,7 +753,7 @@
 
         self.file.write("\n</Scene>\n</X3D>")
 
-        # if EXPORT_APPLY_MODIFIERS:
+        # if use_apply_modifiers:
         # 	if containerMesh:
         # 		containerMesh.vertices = None
 
@@ -827,6 +837,7 @@
 
 
 def save(operator, context, filepath="",
+          use_selection=True,
           use_apply_modifiers=False,
           use_triangulate=False,
           use_compress=False):
@@ -852,7 +863,8 @@
     wrlexport.export(scene,
                      world,
                      alltextures,
-                     EXPORT_APPLY_MODIFIERS=use_apply_modifiers,
+                     use_apply_modifiers=use_apply_modifiers,
+                     use_selection=use_selection,
                      EXPORT_TRI=use_triangulate,
                      )
 



More information about the Bf-extensions-cvs mailing list