From a501de8e34533de5c66b5db9973ca5ab6c8f0230 Mon Sep 17 00:00:00 2001
From: Mikhail Rachinskiy <mikhail.rachinskiy@gmail.com>
Date: Thu, 17 Oct 2019 17:25:55 +0400
Subject: [PATCH] 3D-Print: fix Copy Textures for STL and PLY export

---
 object_print3d_utils/export.py | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

diff --git a/object_print3d_utils/export.py b/object_print3d_utils/export.py
index 8c61400fe..2503c2f5d 100644
--- a/object_print3d_utils/export.py
+++ b/object_print3d_utils/export.py
@@ -24,19 +24,35 @@
 import bpy
 
 
+def image_get(mat):
+    from bpy_extras import node_shader_utils
+
+    if mat.use_nodes:
+        mat_wrap = node_shader_utils.PrincipledBSDFWrapper(mat)
+        base_color_tex = mat_wrap.base_color_texture
+        if base_color_tex and base_color_tex.image:
+            return base_color_tex.image
+
+
 def image_copy_guess(filepath, objects):
     # 'filepath' is the path we are writing to.
-    import os
-    import shutil
-    from bpy_extras import object_utils
-
     image = None
+    mats = set()
+
     for obj in objects:
-        image = object_utils.object_image_guess(obj)
+        for slot in obj.material_slots:
+            if slot.material:
+                mats.add(slot.material)
+
+    for mat in mats:
+        image = image_get(mat)
         if image is not None:
             break
 
     if image is not None:
+        import os
+        import shutil
+
         imagepath = bpy.path.abspath(image.filepath, library=image.library)
         if os.path.exists(imagepath):
             filepath_noext = os.path.splitext(filepath)[0]
-- 
GitLab