[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4462] trunk/py/scripts/addons/ object_print3d_utils: add option to copy textures on export.

Campbell Barton ideasman42 at gmail.com
Wed Apr 10 14:17:02 CEST 2013


Revision: 4462
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4462
Author:   campbellbarton
Date:     2013-04-10 12:17:02 +0000 (Wed, 10 Apr 2013)
Log Message:
-----------
add option to copy textures on export.

Modified Paths:
--------------
    trunk/py/scripts/addons/object_print3d_utils/__init__.py
    trunk/py/scripts/addons/object_print3d_utils/export.py
    trunk/py/scripts/addons/object_print3d_utils/ui.py

Modified: trunk/py/scripts/addons/object_print3d_utils/__init__.py
===================================================================
--- trunk/py/scripts/addons/object_print3d_utils/__init__.py	2013-04-10 11:44:30 UTC (rev 4461)
+++ trunk/py/scripts/addons/object_print3d_utils/__init__.py	2013-04-10 12:17:02 UTC (rev 4462)
@@ -66,6 +66,11 @@
                    ('OBJ', "OBJ", "")),
             default='STL',
             )
+    use_export_texture = BoolProperty(
+            name="Copy Textures",
+            description="Copies textures on export to the output path",
+            default=False,
+            )
     export_path = StringProperty(
             name="Export Directory",
             description="Path to directory where the files are created",

Modified: trunk/py/scripts/addons/object_print3d_utils/export.py
===================================================================
--- trunk/py/scripts/addons/object_print3d_utils/export.py	2013-04-10 11:44:30 UTC (rev 4461)
+++ trunk/py/scripts/addons/object_print3d_utils/export.py	2013-04-10 12:17:02 UTC (rev 4462)
@@ -24,6 +24,31 @@
 import os
 
 
+def image_copy_guess(filepath, objects):
+    # 'filepath' is the path we are writing to.
+    import shutil
+    from bpy_extras import object_utils
+    image = None
+    for obj in objects:
+        image = object_utils.object_image_guess(obj)
+        if image is not None:
+            break
+
+    if image is not None:
+        imagepath = bpy.path.abspath(image.filepath, library=image.library)
+        if os.path.exists(imagepath):
+            filepath_noext = os.path.splitext(filepath)[0]
+            ext = os.path.splitext(imagepath)[1]
+
+            imagepath_dst = filepath_noext + ext
+            print("copying texture: %r -> %r" % (imagepath, imagepath_dst))
+            try:
+                shutil.copy(imagepath, imagepath_dst)
+            except:
+                import traceback
+                traceback.print_exc()
+
+
 def write_mesh(context, info, report_cb):
     scene = context.scene
     print_3d = scene.print_3d
@@ -32,6 +57,7 @@
     obj = obj_base.object
 
     export_format = print_3d.export_format
+    path_mode  = 'COPY' if print_3d.use_export_texture else 'AUTO'
 
     context_override = context.copy()
 
@@ -111,6 +137,7 @@
                 filepath=filepath,
                 use_mesh_modifiers=True,
                 use_selection=True,
+                path_mode=path_mode,
                 )
     elif export_format == 'WRL':
         addon_ensure("io_scene_vrml2")
@@ -120,6 +147,7 @@
                 filepath=filepath,
                 use_mesh_modifiers=True,
                 use_selection=True,
+                path_mode=path_mode,
                 )
     elif export_format == 'OBJ':
         addon_ensure("io_scene_obj")
@@ -129,10 +157,16 @@
                 filepath=filepath,
                 use_mesh_modifiers=True,
                 use_selection=True,
+                path_mode=path_mode,
                 )
     else:
         assert(0)
 
+    # for formats that don't support images
+    if export_format in {'STL', 'PLY'}:
+        if path_mode == 'COPY':
+            image_copy_guess(filepath, context_override["selected_objects"])
+
     if obj_base_tmp is not None:
         obj = obj_base_tmp.object
         mesh = obj.data

Modified: trunk/py/scripts/addons/object_print3d_utils/ui.py
===================================================================
--- trunk/py/scripts/addons/object_print3d_utils/ui.py	2013-04-10 11:44:30 UTC (rev 4461)
+++ trunk/py/scripts/addons/object_print3d_utils/ui.py	2013-04-10 12:17:02 UTC (rev 4462)
@@ -110,11 +110,13 @@
 
         col = layout.column()
         col.label("Export Directory:")
-        col.prop(print_3d, "export_path", text="")
+        rowsub = col.row()
+        rowsub.prop(print_3d, "export_path", text="")
+        rowsub.prop(print_3d, "use_export_texture", text="", icon='FILE_IMAGE')
 
         rowsub = col.row(align=True)
         rowsub.prop(print_3d, "export_format", text="")
-        rowsub.operator("mesh.print3d_export", text="", icon='EXPORT')
+        rowsub.operator("mesh.print3d_export", text="Export", icon='EXPORT')
 
         Print3DToolBar.draw_report(layout, context)
 



More information about the Bf-extensions-cvs mailing list