[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