From ddaca56c89431a82d0b8a380561287bf6e3cdf4e Mon Sep 17 00:00:00 2001 From: daid Date: Tue, 17 Apr 2012 12:08:19 +0200 Subject: [PATCH] Added "scale up to max size" button, we really need those icons... --- Cura/gui/preview3d.py | 22 +++++++++++++++++++++- Cura/util/util3d.py | 1 + 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/Cura/gui/preview3d.py b/Cura/gui/preview3d.py index 92ce6db9..58180ed9 100644 --- a/Cura/gui/preview3d.py +++ b/Cura/gui/preview3d.py @@ -118,7 +118,11 @@ class previewPanel(wx.Panel): self.rotate.SetRange(0, 360) self.toolbar2.AddControl(self.rotate) self.Bind(wx.EVT_SPINCTRL, self.OnRotate, self.rotate) - + + self.scaleMax = wx.Button(self.toolbar, -1, 'Max size', size=(21*3.5,21)) + self.toolbar.AddControl(self.scaleMax) + self.Bind(wx.EVT_BUTTON, self.OnScaleMax, self.scaleMax) + self.toolbar2.Realize() self.updateToolbar() @@ -168,6 +172,22 @@ class previewPanel(wx.Panel): profile.putProfileSetting('model_scale', self.scale.GetValue()) self.updateModelTransform() + def OnScaleMax(self, e): + if self.triangleMesh == None: + return + scale = float(self.scale.GetValue()) + vMin = self.triangleMesh.getMinimum() / scale + vMax = self.triangleMesh.getMaximum() / scale + scaleX1 = (self.machineSize.x - self.machineCenter.x) / ((vMax.x - vMin.x) / 2) + scaleY1 = (self.machineSize.y - self.machineCenter.y) / ((vMax.y - vMin.y) / 2) + scaleX2 = (self.machineCenter.x) / ((vMax.x - vMin.x) / 2) + scaleY2 = (self.machineCenter.y) / ((vMax.y - vMin.y) / 2) + scaleZ = self.machineSize.z / (vMax.z - vMin.z) + scale = min(scaleX1, scaleY1, scaleX2, scaleY2, scaleZ) + self.scale.SetValue(str(scale)) + profile.putProfileSetting('model_scale', self.scale.GetValue()) + self.updateModelTransform() + def OnRotate(self, e): profile.putProfileSetting('model_rotate_base', self.rotate.GetValue()) self.updateModelTransform() diff --git a/Cura/util/util3d.py b/Cura/util/util3d.py index d9f53e52..146906a7 100644 --- a/Cura/util/util3d.py +++ b/Cura/util/util3d.py @@ -27,6 +27,7 @@ class Vector3(): def __div__(self, v): return Vector3( self.x / v, self.y / v, self.z / v ) + __truediv__ = __div__ def __neg__(self): return Vector3( - self.x, - self.y, - self.z ) -- 2.30.2