05cf520f380d3ce640643c593ce8ce30e9cd971f
2 #Info: Lower the temperature for the nozzle that is not printing
5 #Param: printTemperature(float:220.0) Print temperature (C)
6 #Param: coolTemperature(float:170.0) Cool nozzle temperature (C)
7 #Param: heatupTimeDelay(float:20.0) Heatup nozzle before use (sec)
9 __copyright__
= "Copyright (C) 2013 David Braam - Released under terms of the AGPLv3 License"
13 def getValue(line
, key
, default
= None):
14 if not key
in line
or (';' in line
and line
.find(key
) > line
.find(';')):
16 subPart
= line
[line
.find(key
) + 1:]
17 m
= re
.search('^[0-9]+\.?[0-9]*', subPart
)
21 return float(m
.group(0))
25 with
open(filename
, "r") as f
:
33 currentSectionType
= 'CUSTOM'
35 with
open(filename
, "w") as f
:
38 while idx
< len(lines
):
40 if getValue(line
, 'T', None) is not None and getValue(line
, 'M', None) is None:
41 nextExtruder
= getValue(line
, 'T', None)
46 for n
in xrange(startIdx
, idx
):
48 if line
.startswith(';'):
50 g
= getValue(line
, 'G', None)
52 nx
= getValue(line
, 'X', x
)
53 ny
= getValue(line
, 'Y', y
)
54 nz
= getValue(line
, 'Z', z
)
55 feedrate
= getValue(line
, 'F', feedrate
)
56 printTime
+= math
.sqrt((nx
-x
)*(nx
-x
)+(ny
-y
)*(ny
-y
)+(nz
-z
)*(nz
-z
)) / feedrate
* 60
60 heatupTime
= printTime
- heatupTimeDelay
65 f
.write("M104 T%d S%d\n" % (nextExtruder
, coolTemperature
))
66 f
.write("T%d\n" % (activeExtruder
))
70 for n
in xrange(startIdx
, idx
):
72 if line
.startswith(';'):
75 if heatupTime
is not None:
76 g
= getValue(line
, 'G', None)
78 nx
= getValue(line
, 'X', x
)
79 ny
= getValue(line
, 'Y', y
)
80 nz
= getValue(line
, 'Z', z
)
81 feedrate
= getValue(line
, 'F', feedrate
)
82 printTime
+= math
.sqrt((nx
-x
)*(nx
-x
)+(ny
-y
)*(ny
-y
)+(nz
-z
)*(nz
-z
)) / feedrate
* 60
83 if printTime
> heatupTime
:
84 f
.write("M104 T%d S%d\n" % (nextExtruder
, printTemperature
))
85 f
.write("T%d\n" % (activeExtruder
))
93 activeExtruder
= nextExtruder
95 for n
in xrange(startIdx
, idx
):