From 5009787d61ec9fb6e056f86deedca6844bbb3d6a Mon Sep 17 00:00:00 2001
From: Campbell Barton <ideasman42@gmail.com>
Date: Mon, 6 May 2013 07:16:27 +0000
Subject: [PATCH] minor tweak to printing tools, report which axis is clamped.

---
 object_print3d_utils/operators.py | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/object_print3d_utils/operators.py b/object_print3d_utils/operators.py
index 6e5a380ac..8db7f429d 100644
--- a/object_print3d_utils/operators.py
+++ b/object_print3d_utils/operators.py
@@ -489,14 +489,14 @@ class Print3DSelectReport(Operator):
 # -----------
 # Scale to...
 
-def _scale(scale, report=None):
+def _scale(scale, report=None, report_suffix=""):
     if scale != 1.0:
         bpy.ops.transform.resize(value=(scale,) * 3,
                                  mirror=False, proportional='DISABLED',
                                  snap=False,
                                  texture_space=False)
     if report is not None:
-        report({'INFO'}, "Scaled by %s" % clean_float("%.6f" % scale))
+        report({'INFO'}, "Scaled by %s%s" % (clean_float("%.6f" % scale), report_suffix))
 
 
 class Print3DScaleToVolume(Operator):
@@ -550,6 +550,9 @@ class Print3DScaleToBounds(Operator):
     length_init = FloatProperty(
             options={'HIDDEN'},
             )
+    axis_init = IntProperty(
+            options={'HIDDEN'},
+            )
     length = FloatProperty(
             name="Length Limit",
             unit='LENGTH',
@@ -558,24 +561,27 @@ class Print3DScaleToBounds(Operator):
 
     def execute(self, context):
         scale = self.length / self.length_init
-        _scale(scale, self.report)
+        _scale(scale,
+               report=self.report,
+               report_suffix=", Clamping %s-Axis" % "XYZ"[self.axis_init])
         return {'FINISHED'}
 
     def invoke(self, context, event):
         from mathutils import Vector
 
         def calc_length(vecs):
-            return max((max(v[i] for v in vecs) - min(v[i] for v in vecs)) for i in range(3))
+            return max(((max(v[i] for v in vecs) - min(v[i] for v in vecs)), i) for i in range(3))
 
         if context.mode == 'EDIT_MESH':
-            length = calc_length([Vector(v) * obj.matrix_world
-                                  for v in context.edit_object.bound_box])
+            length, axis = calc_length([Vector(v) * obj.matrix_world
+                                        for v in context.edit_object.bound_box])
         else:
-            length = calc_length([Vector(v) * obj.matrix_world
-                                  for obj in context.selected_editable_objects
-                                  if obj.type == 'MESH' for v in obj.bound_box])
+            length, axis = calc_length([Vector(v) * obj.matrix_world
+                                        for obj in context.selected_editable_objects
+                                        if obj.type == 'MESH' for v in obj.bound_box])
 
         self.length_init = self.length = length
+        self.axis_init = axis
 
         wm = context.window_manager
         return wm.invoke_props_dialog(self)
-- 
GitLab