diff --git a/pronsole.py b/pronsole.py index 9b8951c..1cc5165 100755 --- a/pronsole.py +++ b/pronsole.py @@ -94,7 +94,8 @@ def estimate_duration(g): feedrate = 0 X_last_position = 0 Y_last_position = 0 - for i.split(";")[0] in g: + for i in g: + i=i.split(";")[0] if "G1" in i and ("X" in i or "Y" in i or "F" in i or "E" in i): parts = i.split(" ") X = get_coordinate_value("X", parts[1:]) diff --git a/pronterface.py b/pronterface.py index c78bb1a..b9affe6 100755 --- a/pronterface.py +++ b/pronterface.py @@ -1115,7 +1115,15 @@ class PronterWindow(wx.Frame,pronsole.pronsole): if self.sdprinting: string+= _(" SD printing:%04.2f %%") % (self.percentdone,) if self.p.printing: + secondselapsed = int(time.time()-self.starttime) + fractioncomplete = float(self.p.queueindex)/len(self.p.mainqueue) + secondsestimate = secondselapsed/fractioncomplete + secondsremain = secondsestimate - secondselapsed string+= _(" Printing:%04.2f %%") % (100*float(self.p.queueindex)/len(self.p.mainqueue),) + string+= _(" Estimated:%02.0f") % (int(secondsremain/60),) + string+= _(":%02.0f") % (int(secondsremain%60),) + string+= _(" of %02.0f") % (int(secondsestimate/60),) + string+= _(":%02.0f Remaining") % (int(secondsestimate%60),) wx.CallAfter(self.status.SetStatusText,string) wx.CallAfter(self.gviz.Refresh) if(self.monitor and self.p.online): diff --git a/stlview.py b/stlview.py index 3b976d4..d6cd912 100644 --- a/stlview.py +++ b/stlview.py @@ -240,45 +240,10 @@ class gcview(object): ('v3f/static', layertemp[lasth][0]), ('n3f/static', layertemp[lasth][1])) lasth=i[0][2] - S=i[0][:3] - E=i[1][:3] - v=map(lambda x,y:x-y,E,S) - vlen=math.sqrt(float(sum(map(lambda a:a*a, v[:3])))) - - if vlen==0: - vlen=0.01 - sq2=math.sqrt(2.0)/2.0 - htw=float(h)/w - d=w/2.0 - if i[1][3]==i[0][3]: - d=0.05 - points=[[d,0,0], - [sq2*d,sq2*d,0], - [0,d,0], - [-sq2*d,sq2*d,0], - [-d,0,0], - [-sq2*d,-sq2*d,0], - [0,-d,0], - [sq2*d,-sq2*d,0] - ] - axis=stltool.cross([0,0,1],v) - alen=math.sqrt(float(sum(map(lambda a:a*a, v[:3])))) - if alen>0: - axis=map(lambda m:m/alen,axis) - angle=math.acos(v[2]/vlen) - def vrot(v,axis,angle): - kxv=stltool.cross(axis,v) - kdv=sum(map(lambda x,y:x*y,axis,v)) - return map(lambda x,y,z:x*math.cos(angle)+y*math.sin(angle)+z*kdv*(1.0-math.cos(angle)),v,kxv,axis) - points=map(lambda x:vrot(x,axis,angle),points) - points=map(lambda x:[x[0],x[1],htw*x[2]],points) - - def vadd(v,o): - return map(lambda x,y:x+y,v,o) def vdiff(v,o): return map(lambda x,y:x-y,v,o) - spoints=map(lambda x:vadd(S,x),points) - epoints=map(lambda x:vadd(E,x),points) + + spoints,epoints,S,E=self.genline(i,h,w) for j in xrange(8): layertemp[i[0][2]][0].extend(spoints[(j+1)%8]) @@ -326,6 +291,46 @@ class gcview(object): ('n3f/static', layertemp[lasth][1])) + def genline(self,i,h,w): + S=i[0][:3] + E=i[1][:3] + v=map(lambda x,y:x-y,E,S) + vlen=math.sqrt(float(sum(map(lambda a:a*a, v[:3])))) + + if vlen==0: + vlen=0.01 + sq2=math.sqrt(2.0)/2.0 + htw=float(h)/w + d=w/2.0 + if i[1][3]==i[0][3]: + d=0.05 + points=[[d,0,0], + [sq2*d,sq2*d,0], + [0,d,0], + [-sq2*d,sq2*d,0], + [-d,0,0], + [-sq2*d,-sq2*d,0], + [0,-d,0], + [sq2*d,-sq2*d,0] + ] + axis=stltool.cross([0,0,1],v) + alen=math.sqrt(float(sum(map(lambda a:a*a, v[:3])))) + if alen>0: + axis=map(lambda m:m/alen,axis) + angle=math.acos(v[2]/vlen) + def vrot(v,axis,angle): + kxv=stltool.cross(axis,v) + kdv=sum(map(lambda x,y:x*y,axis,v)) + return map(lambda x,y,z:x*math.cos(angle)+y*math.sin(angle)+z*kdv*(1.0-math.cos(angle)),v,kxv,axis) + points=map(lambda x:vrot(x,axis,angle),points) + points=map(lambda x:[x[0],x[1],htw*x[2]],points) + + def vadd(v,o): + return map(lambda x,y:x+y,v,o) + spoints=map(lambda x:vadd(S,x),points) + epoints=map(lambda x:vadd(E,x),points) + return spoints,epoints,S,E + def transform(self,line): line=line.split(";")[0] cur=self.prev[:] @@ -697,8 +702,19 @@ class TestGlPanel(GLPanel): glTranslatef(*(i.offsets)) glRotatef(i.rot,0.0,0.0,1.0) glScalef(*i.scale) - i.batch.draw() - glPopMatrix() + + try: + if i.curlayer in i.gc.layers: + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, vec(0.23, 0.57, 0.35, 1)) + [i.gc.layers[j].draw() for j in i.gc.layers.keys() if j