chiark / gitweb /
Added "scale up to max size" button, we really need those icons...
authordaid <daid303@gmail.com>
Tue, 17 Apr 2012 10:08:19 +0000 (12:08 +0200)
committerdaid <daid303@gmail.com>
Tue, 17 Apr 2012 10:08:19 +0000 (12:08 +0200)
Cura/gui/preview3d.py
Cura/util/util3d.py

index 92ce6db9fb7cd4e83bbc95a2ec180c4fdca7aae2..58180ed9b10658986cc4f3feb97bcad419abcb77 100644 (file)
@@ -118,7 +118,11 @@ class previewPanel(wx.Panel):
                self.rotate.SetRange(0, 360)\r
                self.toolbar2.AddControl(self.rotate)\r
                self.Bind(wx.EVT_SPINCTRL, self.OnRotate, self.rotate)\r
-               \r
+\r
+               self.scaleMax = wx.Button(self.toolbar, -1, 'Max size', size=(21*3.5,21))\r
+               self.toolbar.AddControl(self.scaleMax)\r
+               self.Bind(wx.EVT_BUTTON, self.OnScaleMax, self.scaleMax)\r
+\r
                self.toolbar2.Realize()\r
                self.updateToolbar()\r
                \r
@@ -168,6 +172,22 @@ class previewPanel(wx.Panel):
                profile.putProfileSetting('model_scale', self.scale.GetValue())\r
                self.updateModelTransform()\r
        \r
+       def OnScaleMax(self, e):\r
+               if self.triangleMesh == None:\r
+                       return\r
+               scale = float(self.scale.GetValue())\r
+               vMin = self.triangleMesh.getMinimum() / scale\r
+               vMax = self.triangleMesh.getMaximum() / scale\r
+               scaleX1 = (self.machineSize.x - self.machineCenter.x) / ((vMax.x - vMin.x) / 2)\r
+               scaleY1 = (self.machineSize.y - self.machineCenter.y) / ((vMax.y - vMin.y) / 2)\r
+               scaleX2 = (self.machineCenter.x) / ((vMax.x - vMin.x) / 2)\r
+               scaleY2 = (self.machineCenter.y) / ((vMax.y - vMin.y) / 2)\r
+               scaleZ = self.machineSize.z / (vMax.z - vMin.z)\r
+               scale = min(scaleX1, scaleY1, scaleX2, scaleY2, scaleZ)\r
+               self.scale.SetValue(str(scale))\r
+               profile.putProfileSetting('model_scale', self.scale.GetValue())\r
+               self.updateModelTransform()\r
+       \r
        def OnRotate(self, e):\r
                profile.putProfileSetting('model_rotate_base', self.rotate.GetValue())\r
                self.updateModelTransform()\r
index d9f53e5252190c6e008fa24f4ce53af51f357d72..146906a767081ad4123dc99d5c802381eed8d33b 100644 (file)
@@ -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 )