chiark / gitweb /
Add working scale up to machine size.
authordaid303 <daid303@gmail.com>
Fri, 12 Apr 2013 08:01:13 +0000 (10:01 +0200)
committerdaid303 <daid303@gmail.com>
Fri, 12 Apr 2013 08:01:13 +0000 (10:01 +0200)
Cura/gui/sceneView.py
Cura/util/mesh.py

index f75221bdb9d52441816b91ccbdf53c35e30787f7..e17491f6985ee5c7b0803e422bf4466c8c66b6b0 100644 (file)
@@ -194,7 +194,7 @@ class SceneView(openglGui.glGuiPanel):
        def OnScaleMax(self, button):
                if self._selectedObj is None:
                        return
-               self._selectedObj.scaleUpTo(self._machineSize)
+               self._selectedObj.scaleUpTo(self._machineSize - numpy.array(profile.calculateObjectSizeOffsets() + [0.0], numpy.float32) * 2)
 
        def OnMirror(self, axis):
                if self._selectedObj is None:
@@ -610,10 +610,10 @@ void main(void)
                        glEnable(GL_CULL_FACE)
                        glColor4f(0,0,0,0.12)
                        glBegin(GL_QUADS)
-                       glVertex3f(-size[0],  size[1], 0)
-                       glVertex3f(-size[0], -size[1], 0)
-                       glVertex3f( size[0], -size[1], 0)
-                       glVertex3f( size[0],  size[1], 0)
+                       glVertex3f(-size[0],  size[1], 0.1)
+                       glVertex3f(-size[0], -size[1], 0.1)
+                       glVertex3f( size[0], -size[1], 0.1)
+                       glVertex3f( size[0],  size[1], 0.1)
                        glEnd()
                        glDisable(GL_CULL_FACE)
                        glPopMatrix()
index ce75c803a978964700cf53a8ca74006a53175593..4aacc30fbdda80f824639e5cfeed5f6281b7e647 100644 (file)
@@ -140,7 +140,18 @@ class printableObject(object):
                pass
 
        def scaleUpTo(self, size):
-               pass
+               vMin = self._transformedMin
+               vMax = self._transformedMax
+
+               scaleX1 = (size[0] / 2 - self._position[0]) / ((vMax[0] - vMin[0]) / 2)
+               scaleY1 = (size[1] / 2 - self._position[1]) / ((vMax[1] - vMin[1]) / 2)
+               scaleX2 = (self._position[0] + size[0] / 2) / ((vMax[0] - vMin[0]) / 2)
+               scaleY2 = (self._position[1] + size[1] / 2) / ((vMax[1] - vMin[1]) / 2)
+               scaleZ = size[2] / (vMax[2] - vMin[2])
+               print scaleX1, scaleY1, scaleX2, scaleY2, scaleZ
+               scale = min(scaleX1, scaleY1, scaleX2, scaleY2, scaleZ)
+               if scale > 0:
+                       self.applyMatrix(numpy.matrix([[scale,0,0],[0,scale,0],[0,0,scale]], numpy.float64))
 
 class mesh(object):
        def __init__(self):