- modified BKE_get_image_export_path so that it writes relative path if src file = dest file returning 2 in this case
- modified unit tests for ^ firstly - incorporated Image.get_export_path into FBX exporter script
This commit is contained in:
@@ -39,6 +39,7 @@ http://wiki.blender.org/index.php/Scripts/Manual/Export/autodesk_fbx
|
||||
import os
|
||||
import time
|
||||
import math # math.pi
|
||||
import shutil # for file copying
|
||||
|
||||
# try:
|
||||
# import time
|
||||
@@ -1324,8 +1325,6 @@ def write(filename, batch_objects = None, \
|
||||
|
||||
# tex is an Image (Arystan)
|
||||
def write_video(texname, tex):
|
||||
if not EXP_IMAGE_COPY: return
|
||||
|
||||
# Same as texture really!
|
||||
file.write('\n\tVideo: "Video::%s", "Clip" {' % texname)
|
||||
|
||||
@@ -1337,9 +1336,15 @@ def write(filename, batch_objects = None, \
|
||||
Property: "Width", "int", "",0
|
||||
Property: "Height", "int", "",0''')
|
||||
if tex:
|
||||
abspath = tex.export(basepath)
|
||||
fname_rel = os.path.relpath(abspath, basepath)
|
||||
fname_strip = os.path.basename(abspath)
|
||||
src = bpy.sys.expandpath(tex.filename)
|
||||
fname_rel = tex.get_export_path(basepath, True)
|
||||
fname_abs = tex.get_export_path(basepath, False)
|
||||
fname_strip = os.path.basename(fname_rel)
|
||||
|
||||
if EXP_IMAGE_COPY:
|
||||
if !os.path.exists(fname_abs):
|
||||
shutil.copy(src, fname_abs)
|
||||
|
||||
# fname, fname_strip, fname_rel = derived_paths(tex.filename, basepath, EXP_IMAGE_COPY)
|
||||
else:
|
||||
fname = fname_strip = fname_rel = ''
|
||||
@@ -1404,11 +1409,14 @@ def write(filename, batch_objects = None, \
|
||||
file.write('\n\t\tMedia: "Video::%s"' % texname)
|
||||
|
||||
if tex:
|
||||
fname_rel = tex.get_export_path(relpath, True)
|
||||
src = bpy.sys.expandpath(tex.filename)
|
||||
fname_rel = tex.get_export_path(basepath, True)
|
||||
fname_abs = tex.get_export_path(basepath, False)
|
||||
fname_strip = os.path.basename(fname_rel)
|
||||
|
||||
if EXP_IMAGE_COPY:
|
||||
|
||||
if !os.path.exists(fname_abs):
|
||||
shutil.copy(src, fname_abs)
|
||||
|
||||
# fname, fname_strip, fname_rel = derived_paths(tex.filename, basepath, EXP_IMAGE_COPY)
|
||||
else:
|
||||
|
||||
@@ -2206,12 +2206,6 @@ int BKE_get_image_export_path(struct Image *im, const char *dest_dir, char *abs,
|
||||
BLI_join_dirfile(dest_path, dest_dir, base);
|
||||
}
|
||||
|
||||
/* only return 1 if paths differ */
|
||||
if (!strcmp(path, dest_path)) {
|
||||
if (G.f & G_DEBUG) printf("%s and %s are the same file\n", path, dest_path);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (abs)
|
||||
BLI_strncpy(abs, dest_path, abs_size);
|
||||
|
||||
@@ -2220,5 +2214,11 @@ int BKE_get_image_export_path(struct Image *im, const char *dest_dir, char *abs,
|
||||
strncat(rel, base, rel_size);
|
||||
}
|
||||
|
||||
/* return 2 if src=dest */
|
||||
if (!strcmp(path, dest_path)) {
|
||||
if (G.f & G_DEBUG) printf("%s and %s are the same file\n", path, dest_path);
|
||||
return 2;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -41,6 +41,11 @@
|
||||
#include "BKE_utildefines.h"
|
||||
#include "BKE_image.h"
|
||||
|
||||
/*
|
||||
User should check if returned path exists before copying a file there.
|
||||
|
||||
TODO: it would be better to return a (abs, rel) tuple.
|
||||
*/
|
||||
static char *rna_Image_get_export_path(Image *image, char *dest_dir, int rel)
|
||||
{
|
||||
int length = FILE_MAX;
|
||||
|
||||
@@ -60,19 +60,19 @@ START_TEST(test_copy_images)
|
||||
{"//image.png", {{"/home/user/image.png", "image.png", 1},
|
||||
{"/home/user/image.png", "image.png", 1},
|
||||
{"/home/user/export/image.png", "image.png", 1},
|
||||
{"", "", 0},}},
|
||||
{"/home/user/foo/image.png", "image.png", 2},}},
|
||||
|
||||
/* relative, 1 level deep */
|
||||
{"//bar/image.png", {{"/home/user/bar/image.png", "bar/image.png", 1},
|
||||
{"/home/user/bar/image.png", "bar/image.png", 1},
|
||||
{"/home/user/export/bar/image.png", "bar/image.png", 1},
|
||||
{"", "", 0},}},
|
||||
{"/home/user/foo/bar/image.png", "bar/image.png", 2},}},
|
||||
|
||||
/* relative, 2 level deep */
|
||||
{"//bar/foo/image.png", {{"/home/user/bar/foo/image.png", "bar/foo/image.png", 1},
|
||||
{"/home/user/bar/foo/image.png", "bar/foo/image.png", 1},
|
||||
{"/home/user/export/bar/foo/image.png", "bar/foo/image.png", 1},
|
||||
{"", "", 0},}},
|
||||
{"/home/user/foo/bar/foo/image.png", "bar/foo/image.png", 2},}},
|
||||
|
||||
/* absolute, not under .blend dir */
|
||||
{"/home/user/bar/image.png", {{"/home/user/image.png", "image.png", 1},
|
||||
@@ -84,19 +84,19 @@ START_TEST(test_copy_images)
|
||||
{"/home/user/foo/image.png", {{"/home/user/image.png", "image.png", 1},
|
||||
{"/home/user/image.png", "image.png", 1},
|
||||
{"/home/user/export/image.png", "image.png", 1},
|
||||
{"", "", 0},}},
|
||||
{"/home/user/foo/image.png", "image.png", 2},}},
|
||||
|
||||
/* absolute, under .blend dir, 1 level deep */
|
||||
{"/home/user/foo/bar/image.png", {{"/home/user/bar/image.png", "bar/image.png", 1},
|
||||
{"/home/user/bar/image.png", "bar/image.png", 1},
|
||||
{"/home/user/export/bar/image.png", "bar/image.png", 1},
|
||||
{"", "", 0},}},
|
||||
{"/home/user/foo/bar/image.png", "bar/image.png", 2},}},
|
||||
|
||||
/* absolute, under .blend dir, 2 level deep */
|
||||
{"/home/user/foo/bar/foo/image.png", {{"/home/user/bar/foo/image.png", "bar/foo/image.png", 1},
|
||||
{"/home/user/bar/foo/image.png", "bar/foo/image.png", 1},
|
||||
{"/home/user/export/bar/foo/image.png", "bar/foo/image.png", 1},
|
||||
{"", "", 0},}},
|
||||
{"/home/user/foo/bar/foo/image.png", "bar/foo/image.png", 2},}},
|
||||
|
||||
/* empty image path, don't let these pass! */
|
||||
{"", {{"", 0},
|
||||
|
||||
Reference in New Issue
Block a user