From 9253386b4096fff8a9c7c2d30d6d6fbf884b8fa5 Mon Sep 17 00:00:00 2001 From: daid303 Date: Thu, 16 May 2013 15:31:26 +0200 Subject: [PATCH] Draw the object sink. Fix the lay-flat function. --- Cura/gui/sceneView.py | 13 ++++++++----- Cura/util/mesh.py | 4 ++-- Cura/util/sliceEngine.py | 8 ++++++-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/Cura/gui/sceneView.py b/Cura/gui/sceneView.py index 641187b6..e0f6357e 100644 --- a/Cura/gui/sceneView.py +++ b/Cura/gui/sceneView.py @@ -948,7 +948,7 @@ void main(void) if self._selectedObj is not None and len(self._scene.objects()) > 1: size = self._selectedObj.getSize()[0:2] / 2 + self._scene.getObjectExtend() glPushMatrix() - glTranslatef(self._selectedObj.getPosition()[0], self._selectedObj.getPosition()[1], 0.0) + glTranslatef(self._selectedObj.getPosition()[0], self._selectedObj.getPosition()[1], 0) glEnable(GL_BLEND) glEnable(GL_CULL_FACE) glColor4f(0,0,0,0.12) @@ -987,9 +987,12 @@ void main(void) self.tool.OnDraw() glPopMatrix() - def _renderObject(self, obj, brightness = False): + def _renderObject(self, obj, brightness = False, addSink = True): glPushMatrix() - glTranslate(obj.getPosition()[0], obj.getPosition()[1], obj.getSize()[2] / 2) + if addSink: + glTranslate(obj.getPosition()[0], obj.getPosition()[1], obj.getSize()[2] / 2 - profile.getProfileSettingFloat('object_sink')) + else: + glTranslate(obj.getPosition()[0], obj.getPosition()[1], obj.getSize()[2] / 2) if self.tempMatrix is not None and obj == self._selectedObj: tempMatrix = opengl.convert3x3MatrixTo4x4(self.tempMatrix) @@ -1018,7 +1021,7 @@ void main(void) if profile.getPreference('machine_type') == 'ultimaker': glColor4f(1,1,1,0.5) self._objectShader.bind() - self._renderObject(self._platformMesh) + self._renderObject(self._platformMesh, False, False) self._objectShader.unbind() size = [profile.getPreferenceFloat('machine_width'), profile.getPreferenceFloat('machine_depth'), profile.getPreferenceFloat('machine_height')] @@ -1134,7 +1137,7 @@ void main(void) return [0.0, 0.0, 0.0] pos = self._selectedObj.getPosition() size = self._selectedObj.getSize() - return [pos[0], pos[1], size[2]/2] + return [pos[0], pos[1], size[2]/2 - profile.getProfileSettingFloat('object_sink')] def getObjectBoundaryCircle(self): if self._selectedObj is None: diff --git a/Cura/util/mesh.py b/Cura/util/mesh.py index a5fd0f03..4a8b412c 100644 --- a/Cura/util/mesh.py +++ b/Cura/util/mesh.py @@ -139,7 +139,7 @@ class printableObject(object): self.processMatrix() def layFlat(self): - transformedVertexes = self.getTransformedVertexes() + transformedVertexes = self._meshList[0].getTransformedVertexes() minZvertex = transformedVertexes[transformedVertexes.argmin(0)[2]] dotMin = 1.0 dotV = None @@ -160,7 +160,7 @@ class printableObject(object): self._matrix *= numpy.matrix([[math.cos(rad), 0, math.sin(rad)], [0,1,0], [-math.sin(rad), 0, math.cos(rad)]], numpy.float64) - transformedVertexes = self.getTransformedVertexes() + transformedVertexes = self._meshList[0].getTransformedVertexes() minZvertex = transformedVertexes[transformedVertexes.argmin(0)[2]] dotMin = 1.0 dotV = None diff --git a/Cura/util/sliceEngine.py b/Cura/util/sliceEngine.py index 13d5536e..717ae80b 100644 --- a/Cura/util/sliceEngine.py +++ b/Cura/util/sliceEngine.py @@ -82,10 +82,14 @@ class Slicer(object): return None def getPrintTime(self): - return '%02d:%02d' % (int(self._printTimeSeconds / 60 / 60), int(self._printTimeSeconds / 60) % 60) + if int(self._printTimeSeconds / 60 / 60) < 1: + return '%d minutes' % (int(self._printTimeSeconds / 60) % 60) + if int(self._printTimeSeconds / 60 / 60) == 1: + return '%d hour %d minutes' % (int(self._printTimeSeconds / 60 / 60), int(self._printTimeSeconds / 60) % 60) + return '%d hours %d minutes' % (int(self._printTimeSeconds / 60 / 60), int(self._printTimeSeconds / 60) % 60) def getFilamentAmount(self): - return '%0.2fm %0.0fgram' % (float(self._filamentMM) / 1000.0, self.getFilamentWeight() * 1000.0) + return '%0.2f meter %0.0f gram' % (float(self._filamentMM) / 1000.0, self.getFilamentWeight() * 1000.0) def runSlicer(self, scene): self.abortSlicer() -- 2.30.2