Add print time estimate

This commit is contained in:
daid 2012-03-16 15:41:39 +01:00
parent dd79a4c140
commit 982ad9d829

View file

@ -13,6 +13,7 @@ class gcode():
currentE = 0.0 currentE = 0.0
totalExtrusion = 0.0 totalExtrusion = 0.0
maxExtrusion = 0.0 maxExtrusion = 0.0
totalMoveTimeMinute = 0.0
pathList = [] pathList = []
scale = 1.0 scale = 1.0
posAbs = True posAbs = True
@ -34,6 +35,7 @@ class gcode():
z = self.getCodeFloat(line, 'Z') z = self.getCodeFloat(line, 'Z')
e = self.getCodeFloat(line, 'E') e = self.getCodeFloat(line, 'E')
f = self.getCodeFloat(line, 'F') f = self.getCodeFloat(line, 'F')
oldPos = pos.copy()
if x is not None: if x is not None:
if posAbs: if posAbs:
pos.x = x * scale pos.x = x * scale
@ -45,15 +47,16 @@ class gcode():
else: else:
pos.y += y * scale pos.y += y * scale
if z is not None: if z is not None:
oldZ = pos.z
if posAbs: if posAbs:
pos.z = z * scale pos.z = z * scale
else: else:
pos.z += z * scale pos.z += z * scale
if oldZ != pos.z and startCodeDone: if oldPos.z != pos.z and startCodeDone:
layerNr += 1 layerNr += 1
if f is not None: if f is not None:
feedRate = f feedRate = f
if x is not None or y is not None or z is not None:
totalMoveTimeMinute += (oldPos - pos).vsize() / feedRate
moveType = 'move' moveType = 'move'
if e is not None: if e is not None:
if posAbs: if posAbs:
@ -138,7 +141,9 @@ class gcode():
self.layerCount = layerNr self.layerCount = layerNr
self.pathList = pathList self.pathList = pathList
self.extrusionAmount = maxExtrusion self.extrusionAmount = maxExtrusion
self.totalMoveTimeMinute = totalMoveTimeMinute
print "Extruded a total of: %d mm of filament" % (self.extrusionAmount) print "Extruded a total of: %d mm of filament" % (self.extrusionAmount)
print "Estimated print duration: %.2f minutes" % (self.totalMoveTimeMinute)
def getCodeInt(self, str, id): def getCodeInt(self, str, id):
m = re.search(id + '([^\s]+)', str) m = re.search(id + '([^\s]+)', str)