From 6ebaa3551837b5680d78706f65bb6b143bcf2c10 Mon Sep 17 00:00:00 2001 From: daid303 Date: Thu, 4 Oct 2012 15:01:54 +0200 Subject: [PATCH] Update how the printing time remaining estimate is calculated. This gives better accurate results as the first part of the print is not added in the estimate, removing the heating and startup-code from the equasion. --- Cura/gui/printWindow.py | 5 ++--- Cura/gui/simpleMode.py | 4 ++-- Cura/util/machineCom.py | 14 +++++++++++++- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Cura/gui/printWindow.py b/Cura/gui/printWindow.py index a648dccc..b95b2004 100644 --- a/Cura/gui/printWindow.py +++ b/Cura/gui/printWindow.py @@ -352,13 +352,12 @@ class printWindow(wx.Frame): status += 'Line: -/%d\n' % (len(self.gcodeList)) else: printTime = self.machineCom.getPrintTime() / 60 - printTimeTotal = printTime * len(self.gcodeList) / self.machineCom.getPrintPos() - printTimeLeft = printTimeTotal - printTime + printTimeLeft = self.machineCom.getPrintTimeRemainingEstimate() status += 'Line: %d/%d %d%%\n' % (self.machineCom.getPrintPos(), len(self.gcodeList), self.machineCom.getPrintPos() * 100 / len(self.gcodeList)) if self.currentZ > 0: status += 'Height: %0.1f\n' % (self.currentZ) status += 'Print time: %02d:%02d\n' % (int(printTime / 60), int(printTime % 60)) - if printTime < 1: + if printTimeLeft == None: status += 'Print time left: Unknown\n' else: status += 'Print time left: %02d:%02d\n' % (int(printTimeLeft / 60), int(printTimeLeft % 60)) diff --git a/Cura/gui/simpleMode.py b/Cura/gui/simpleMode.py index 71eace9e..3e77ada1 100644 --- a/Cura/gui/simpleMode.py +++ b/Cura/gui/simpleMode.py @@ -180,9 +180,9 @@ class simpleModeWindow(configBase.configWindowBase): put('support', 'None') #put('machine_center_x', '100') #put('machine_center_y', '100') - put('retraction_enable', 'True') + put('retraction_enable', 'False') put('retraction_min_travel', '5.0') - put('retraction_speed', '13.5') + put('retraction_speed', '40.0') put('retraction_amount', '4.5') put('retraction_extra', '0.0') put('travel_speed', '150') diff --git a/Cura/util/machineCom.py b/Cura/util/machineCom.py index 1c0e60ee..c32e39c3 100644 --- a/Cura/util/machineCom.py +++ b/Cura/util/machineCom.py @@ -161,6 +161,7 @@ class MachineCom(object): self._currentZ = -1 self._heatupWaitStartTime = 0 self._heatupWaitTimeLost = 0.0 + self._printStartTime100 = None self.thread = threading.Thread(target=self._monitor) self.thread.daemon = True @@ -226,7 +227,15 @@ class MachineCom(object): return self._gcodePos def getPrintTime(self): - return time.time() - self._printStartTime - self._heatupWaitTimeLost + return time.time() - self._printStartTime + + def getPrintTimeRemainingEstimate(self): + if self._printStartTime100 == None or self.getPrintPos() < 200: + return None + printTime = (time.time() - self._printStartTime100) / 60 + printTimeTotal = printTime * (len(self._gcodeList) - 100) / (self.getPrintPos() - 100) + printTimeLeft = printTimeTotal - printTime + return printTimeLeft def getTemp(self): return self._temp @@ -464,6 +473,8 @@ class MachineCom(object): if self._gcodePos >= len(self._gcodeList): self._changeState(self.STATE_OPERATIONAL) return + if self._gcodePos == 100: + self._printStartTime100 = time.time() line = self._gcodeList[self._gcodePos] if type(line) is tuple: self._printSection = line[1] @@ -498,6 +509,7 @@ class MachineCom(object): return self._gcodeList = gcodeList self._gcodePos = 0 + self._printStartTime100 = None self._printSection = 'CUSTOM' self._changeState(self.STATE_PRINTING) self._printStartTime = time.time() -- 2.30.2