Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-04-10 16:17:02 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-04-10 16:17:02 +0400
commit4c8bfbe850a67d8b99f090950bd3af54e1eae42e (patch)
treeb78f194e8f477f129809f8a341d5696abc48d94d /object_print3d_utils
parent4d24e706b1d1796f6631960360df58ba81214485 (diff)
add option to copy textures on export.
Diffstat (limited to 'object_print3d_utils')
-rw-r--r--object_print3d_utils/__init__.py5
-rw-r--r--object_print3d_utils/export.py34
-rw-r--r--object_print3d_utils/ui.py6
3 files changed, 43 insertions, 2 deletions
diff --git a/object_print3d_utils/__init__.py b/object_print3d_utils/__init__.py
index f638d598..ad080d1e 100644
--- a/object_print3d_utils/__init__.py
+++ b/object_print3d_utils/__init__.py
@@ -66,6 +66,11 @@ class Print3DSettings(PropertyGroup):
('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",
diff --git a/object_print3d_utils/export.py b/object_print3d_utils/export.py
index 3a2b6677..4c582f8a 100644
--- a/object_print3d_utils/export.py
+++ b/object_print3d_utils/export.py
@@ -24,6 +24,31 @@ import bpy
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 @@ def write_mesh(context, info, report_cb):
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 @@ def write_mesh(context, info, report_cb):
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 @@ def write_mesh(context, info, report_cb):
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 @@ def write_mesh(context, info, report_cb):
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
diff --git a/object_print3d_utils/ui.py b/object_print3d_utils/ui.py
index d8da9663..25a72c93 100644
--- a/object_print3d_utils/ui.py
+++ b/object_print3d_utils/ui.py
@@ -110,11 +110,13 @@ class Print3DToolBar:
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)