From: daid303 Date: Fri, 12 Apr 2013 08:01:13 +0000 (+0200) Subject: Add working scale up to machine size. X-Git-Tag: 13.05~108 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=1eed1468af9157356bd068bb40380c1f2ba0a0dd;p=cura.git Add working scale up to machine size. --- diff --git a/Cura/gui/sceneView.py b/Cura/gui/sceneView.py index f75221bd..e17491f6 100644 --- a/Cura/gui/sceneView.py +++ b/Cura/gui/sceneView.py @@ -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() diff --git a/Cura/util/mesh.py b/Cura/util/mesh.py index ce75c803..4aacc30f 100644 --- a/Cura/util/mesh.py +++ b/Cura/util/mesh.py @@ -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):