mirror of
https://github.com/valentineus/kp3s-marlin.git
synced 2025-04-28 01:31:24 +03:00
Add files via upload
This commit is contained in:
parent
98482c76b2
commit
858039639e
67
CuraPlugin_AddPctComplete.py
Normal file
67
CuraPlugin_AddPctComplete.py
Normal file
@ -0,0 +1,67 @@
|
||||
#Name: Display Build Progress
|
||||
#Info: During printing, display the percentage of build complete
|
||||
#Depend: GCode
|
||||
#Type: postprocess
|
||||
|
||||
# Written by Peter Monaco, Dec 22, 2015
|
||||
# Drop in your <CuraInstallation>/plugins directory
|
||||
|
||||
import re
|
||||
|
||||
### Un-comment these lines to use as a standalone script:
|
||||
#import sys
|
||||
#inputFilename = sys.argv[1]
|
||||
#outputFilename = "tmpout"
|
||||
|
||||
### Comment-out these lines to make it a standalone script:
|
||||
inputFilename = filename
|
||||
outputFilename = filename
|
||||
|
||||
# returns a float, or -1 if no Extrusion value is present in that line
|
||||
def findEValueInLine(line):
|
||||
tokens = line.split()
|
||||
for token in tokens:
|
||||
if (token.startswith("E")):
|
||||
floatVal = token[1:(len(token))]
|
||||
try:
|
||||
v = float(floatVal);
|
||||
if (v > 0):
|
||||
return v
|
||||
except ValueError:
|
||||
continue
|
||||
return -1
|
||||
|
||||
def findLargestExtrusionValue(lines):
|
||||
for line in reversed(lines):
|
||||
eVal = findEValueInLine(line)
|
||||
#print "Found {} in {}".format(eVal, line)
|
||||
if (eVal > 0):
|
||||
return eVal
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
with open(inputFilename, "r") as f:
|
||||
lines = f.readlines()
|
||||
|
||||
# Find the largest extrusion value in the file, searching backward from the end
|
||||
# We will compute percent-complete as a fraction of total extrusion
|
||||
|
||||
maxExtrusion = findLargestExtrusionValue(lines)
|
||||
#print "Found max extrusion to be: {}".format(maxExtrusion)
|
||||
|
||||
|
||||
lastPct = 0
|
||||
with open(outputFilename, "w") as f:
|
||||
for line in lines:
|
||||
f.write(line)
|
||||
eValue = findEValueInLine(line)
|
||||
if (eValue > 0):
|
||||
# compute the %
|
||||
pct = int(100.0 * eValue / maxExtrusion)
|
||||
if (pct > lastPct and pct < 100):
|
||||
f.write("M73 P{}\n".format(pct))
|
||||
lastPct = pct
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user