From 013c9f0becb7de572534d763a960aa9162f9cea6 Mon Sep 17 00:00:00 2001 From: Kliment Date: Sat, 6 Aug 2011 14:48:10 +0200 Subject: [PATCH] Add estimated filament length used. Print elapsed time at end of print. --- pronsole.py | 14 ++++++++++++++ pronterface.py | 19 +++++++++++-------- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/pronsole.py b/pronsole.py index 117ceb8..4fbb32f 100755 --- a/pronsole.py +++ b/pronsole.py @@ -19,6 +19,20 @@ except: def dosify(name): return os.path.split(name)[1].split(".")[0][:8]+".g" +def totalelength(g): + tot=0 + cur=0 + for i in g: + if "E" in i and ("G1" in i or "G0" in i): + try: + cur=float(i.split("E")[1].split(" ")[0]) + except: + pass + elif "G92" in i and "E0" in i: + tot+=cur + return tot + + class Settings: #def _temperature_alias(self): return {"pla":210,"abs":230,"off":0} #def _temperature_validate(self,v): diff --git a/pronterface.py b/pronterface.py index 7d85105..fe26d09 100755 --- a/pronterface.py +++ b/pronterface.py @@ -121,7 +121,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.mini=False self.p.sendcb=self.sentcb self.p.startcb=self.startcb - #self.p.endcb=self.endcb + self.p.endcb=self.endcb self.starttime=0 self.curlayer=0 self.cur_button=None @@ -130,9 +130,11 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.starttime=time.time() def endcb(self): - print "Print took "+str(int(time.time()-self.starttime)/60)+" minutes." - wx.CallAfter(self.pausebtn.Hide) - wx.CallAfter(self.printbtn.SetLabel,"Print") + if(self.p.queueindex==0): + print "Print took "+str(int(time.time()-self.starttime)/60)+" minutes "+str(int(time.time()-self.starttime)%60)+" seconds" + wx.CallAfter(self.pausebtn.Disable) + wx.CallAfter(self.printbtn.SetLabel,"Print") + def online(self): @@ -524,7 +526,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.topsizer.Fit(self) # disable all printer controls until we connect to a printer - self.pausebtn.Hide() + self.pausebtn.Disable() for i in self.printerControls: i.Disable() @@ -934,7 +936,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): wx.CallAfter(self.printbtn.Enable) wx.CallAfter(self.status.SetStatusText,"Loaded "+self.filename+", %d lines"%(len(self.f),)) - wx.CallAfter(self.pausebtn.Hide) + wx.CallAfter(self.pausebtn.Disable) wx.CallAfter(self.printbtn.SetLabel,"Print") threading.Thread(target=self.loadviz).start() @@ -981,12 +983,13 @@ class PronterWindow(wx.Frame,pronsole.pronsole): self.status.SetStatusText("Loaded "+name+", %d lines"%(len(self.f),)) wx.CallAfter(self.printbtn.SetLabel, "Print") wx.CallAfter(self.pausebtn.SetLabel, "Pause") - wx.CallAfter(self.pausebtn.Hide) + wx.CallAfter(self.pausebtn.Disable) if self.p.online: wx.CallAfter(self.printbtn.Enable) threading.Thread(target=self.loadviz).start() def loadviz(self): + print pronsole.totalelength(self.f),"mm of filament used in this print" self.gviz.clear() self.gwindow.p.clear() for i in self.f: @@ -1107,7 +1110,7 @@ class PronterWindow(wx.Frame,pronsole.pronsole): wx.CallAfter(self.connectbtn.Enable); wx.CallAfter(self.printbtn.Disable); - wx.CallAfter(self.pausebtn.Hide); + wx.CallAfter(self.pausebtn.Disable); for i in self.printerControls: wx.CallAfter(i.Disable)