From 2c9bacef5323acac97f1d1ae2003ddfb56e71930 Mon Sep 17 00:00:00 2001
From: Kalle-Samuli Riihikoski <haikalle@gmail.com>
Date: Tue, 13 Oct 2020 17:49:39 +0300
Subject: [PATCH] io_coat3D: parent scale included better when exporting

---
 io_coat3D/__init__.py | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/io_coat3D/__init__.py b/io_coat3D/__init__.py
index 1fe5a6f97..5d3e05d33 100644
--- a/io_coat3D/__init__.py
+++ b/io_coat3D/__init__.py
@@ -304,6 +304,27 @@ class SCENE_OT_opencoat(bpy.types.Operator):
 
         return {'FINISHED'}
 
+def scaleParents():
+    save = []
+    names =[]
+    
+    for objekti in bpy.context.selected_objects:
+        temp = objekti
+        while (temp.parent is not None and temp.parent.name not in names):
+            save.append([temp.parent,(temp.parent.scale[0],temp.parent.scale[1],temp.parent.scale[2])])
+            names.append(temp.parent)
+            temp = temp.parent
+
+    for name in names:
+        name.scale = (1,1,1)
+
+    return save
+
+def scaleBackParents(save):
+
+    for data in save:
+        data[0].scale = data[1]
+
 def deleteNodes(type):
 
     deletelist = []
@@ -511,6 +532,8 @@ class SCENE_OT_export(bpy.types.Operator):
             if (export_ok == False):
                 return {'FINISHED'}
 
+        scaled_objects = scaleParents()
+
         activeobj = bpy.context.active_object.name
         checkname = ''
         coa = bpy.context.active_object.coat3D
@@ -742,7 +765,8 @@ class SCENE_OT_export(bpy.types.Operator):
                     if(mat_list == '__' + objekti.name):
                         for ind, mat in enumerate(mod_mat_list[mat_list]):
                             objekti.material_slots[mod_mat_list[mat_list][ind][0]].material = mod_mat_list[mat_list][ind][1]
-            
+
+        scaleBackParents(scaled_objects)
         bpy.context.scene.render.engine = active_render
         return {'FINISHED'}
 
-- 
GitLab