For the bed, typical PLA temperature is 60, PETG 80, ABS 100, and TPU 5 (effectively off).
Part Cooling Fan
-
PLA typically has the part cooling fan come on from layer 2. Alter this default behaviour here:
+
PLA typically has the part cooling fan come on from layer 2. Alter this default behaviour here.
+
Regardless of which part cooling fan behaviour you select here, the five bridge sections at the top of each segment will always print with 100% part cooling. Once the bridge is printed, the fan will then return to the speed set in the dropdown.
Auto Bed Levelling
@@ -865,8 +878,12 @@
Auto Bed Levelling
diff --git a/js/acceleration.js b/js/acceleration.js
index 82b3055..94ff143 100644
--- a/js/acceleration.js
+++ b/js/acceleration.js
@@ -482,7 +482,7 @@ G1 X25.710 Y94.135 E3.8264
G92 E0.0000
G1 E-5.0000 F2400
; layer 2, Z = 0.400
-M106 S255
+;fan2
; feature inner perimeter
; tool H0.200 W0.480
G1 Z0.600 F1200
@@ -514,6 +514,7 @@ G1 X24.740 Y96.950 E11.5223
G92 E0.0000
G1 E-5.0000 F2400
; layer 3, Z = 0.600
+;fan3
; feature inner perimeter
G1 Z0.800 F1200
G1 X25.220 Y95.847 F6000
@@ -632,6 +633,7 @@ G1 X8.097 Y22.663 E0.0130 F3720
G92 E0.0000
G1 E-5.0000 F2400
; layer 5, Z = 1.000
+;fan5
; feature inner perimeter
G1 Z1.200 F1200
G1 X8.120 Y22.951 F6000
diff --git a/js/baseline.js b/js/baseline.js
index bba9ac5..f31b6d0 100644
--- a/js/baseline.js
+++ b/js/baseline.js
@@ -159,7 +159,7 @@ G1 X41.923 Y58.214 E21.6099
G92 E0.0000
G1 E-5.0000 F2400
; layer 2, Z = 0.400
-M106 S255
+;fan2
; feature inner perimeter
; tool H0.200 W0.480
G1 Z0.600 F1200
@@ -291,6 +291,7 @@ G1 X58.512 Y58.459 E22.9102
G92 E0.0000
G1 E-5.0000 F2400
; layer 3, Z = 0.600
+;fan3
; feature inner perimeter
G1 Z0.800 F1200
G1 X58.800 Y58.800 F6000
@@ -456,6 +457,7 @@ G1 X41.548 Y49.967 E2.9046
G92 E0.0000
G1 E-5.0000 F2400
; layer 5, Z = 1.000
+;fan5
; feature inner perimeter
; tool H0.200 W0.480
G1 Z1.200 F1200
diff --git a/js/gcodeprocessing.js b/js/gcodeprocessing.js
index fff5e48..aded0da 100644
--- a/js/gcodeprocessing.js
+++ b/js/gcodeprocessing.js
@@ -90,13 +90,35 @@ function processBaseline(){
var retSpeed = document.baselineForm.retspeed.value*60;
var abl = document.baselineForm.abl.value;
var pc = document.baselineForm.pc.value;
+ var pcResume = 255;
var customStart = document.baselineForm.startgcode.value;
var baseline = originalBaseline;
- if(pc == 1){
- baseline = baseline.replace(/M106 S255/, "M106 S130 ; custom fan 50%");
- }
- if(pc == 2){
- baseline = baseline.replace(/M106 S255/, ";M106 S255 ; custom fan off");
+ switch(pc){
+ case '0':
+ baseline = baseline.replace(/;fan2/, "M106 S255 ; custom fan 100% from layer 2");
+ break;
+ case '1':
+ baseline = baseline.replace(/;fan3/, "M106 S255 ; custom fan 100% from layer 3");
+ break;
+ case '2':
+ baseline = baseline.replace(/;fan5/, "M106 S255 ; custom fan 100% from layer 5");
+ break;
+ case '3':
+ baseline = baseline.replace(/;fan2/, "M106 S130 ; custom fan 50% from layer 2");
+ pcResume = 130;
+ break;
+ case '4':
+ baseline = baseline.replace(/;fan3/, "M106 S130 ; custom fan 50% from layer 3");
+ pcResume = 130;
+ break;
+ case '5':
+ baseline = baseline.replace(/;fan5/, "M106 S130 ; custom fan 50% from layer 5");
+ pcResume = 130;
+ break;
+ case '6':
+ baseline = baseline.replace(/;fan2/, "; custom fan off");
+ pcResume = 0;
+ break;
}
baseline = baseline.replace(/M140 S60/g, "M140 S"+bedTemp+" ; custom bed temp");
baseline = baseline.replace(/M190 S60/g, "M190 S"+bedTemp+" ; custom bed temp");
@@ -183,6 +205,7 @@ function processRetraction(){
var bedY = Math.round((document.retractionForm.bedy.value-100)/2);
var abl = document.retractionForm.abl.value;
var pc = document.retractionForm.pc.value;
+ var pcResume = 255;
var a1 = document.retractionForm.ret_a1.value;
var a2 = document.retractionForm.ret_a2.value*60;
var a3 = document.retractionForm.ret_a3.value;
@@ -215,11 +238,32 @@ function processRetraction(){
var f5 = document.retractionForm.ret_f5.value;
var customStart = document.retractionForm.startgcode.value;
var retraction = originalRetraction;
- if(pc == 1){
- retraction = retraction.replace(/M106 S255/, "M106 S130 ; custom fan 50%");
- }
- if(pc == 2){
- retraction = retraction.replace(/M106 S255/, ";M106 S255 ; custom fan off");
+ switch(pc){
+ case '0':
+ retraction = retraction.replace(/;fan2/, "M106 S255 ; custom fan 100% from layer 2");
+ break;
+ case '1':
+ retraction = retraction.replace(/;fan3/, "M106 S255 ; custom fan 100% from layer 3");
+ break;
+ case '2':
+ retraction = retraction.replace(/;fan5/, "M106 S255 ; custom fan 100% from layer 5");
+ break;
+ case '3':
+ retraction = retraction.replace(/;fan2/, "M106 S130 ; custom fan 50% from layer 2");
+ pcResume = 130;
+ break;
+ case '4':
+ retraction = retraction.replace(/;fan3/, "M106 S130 ; custom fan 50% from layer 3");
+ pcResume = 130;
+ break;
+ case '5':
+ retraction = retraction.replace(/;fan5/, "M106 S130 ; custom fan 50% from layer 5");
+ pcResume = 130;
+ break;
+ case '6':
+ retraction = retraction.replace(/;fan2/, "; custom fan off");
+ pcResume = 0;
+ break;
}
retraction = retraction.replace(/M140 S60/g, "M140 S"+bedTemp+" ; custom bed temp");
retraction = retraction.replace(/M190 S60/g, "M190 S"+bedTemp+" ; custom bed temp");
@@ -323,7 +367,7 @@ function processRetraction(){
// F section
retraction = retraction.replace(/;retractionF/g, "G1 E-"+f1+" F"+f2+" ; custom retraction - F");
retraction = retraction.replace(/;unretractionF/g, "G1 E"+f3+" F"+f4+" ; custom un-retraction/prime - F");
-
+
if(document.retractionForm.start.checked == true) {
retraction = retraction.replace(/;customstart/, "; custom start gcode\n"+customStart);
if(f5 > 0){
@@ -342,6 +386,7 @@ function processTemperature(){
var retSpeed = document.temperatureForm.retspeed.value*60;
var abl = document.temperatureForm.abl.value;
var pc = document.temperatureForm.pc.value;
+ var pcResume = 255;
var a0 = document.temperatureForm.temp_a0.value;
var a1 = document.temperatureForm.temp_a1.value;
var b1 = document.temperatureForm.temp_b1.value;
@@ -350,12 +395,34 @@ function processTemperature(){
var e1 = document.temperatureForm.temp_e1.value;
var customStart = document.temperatureForm.startgcode.value;
var temperature = originalTemperature;
- if(pc == 1){
- temperature = temperature.replace(/M106 S255/, "M106 S130 ; custom fan 50%");
- }
- if(pc == 2){
- temperature = temperature.replace(/M106 S255/, ";M106 S255 ; custom fan off");
+ switch(pc){
+ case '0':
+ temperature = temperature.replace(/;fan2/, "M106 S255 ; custom fan 100% from layer 2");
+ break;
+ case '1':
+ temperature = temperature.replace(/;fan3/, "M106 S255 ; custom fan 100% from layer 3");
+ break;
+ case '2':
+ temperature = temperature.replace(/;fan5/, "M106 S255 ; custom fan 100% from layer 5");
+ break;
+ case '3':
+ temperature = temperature.replace(/;fan2/, "M106 S130 ; custom fan 50% from layer 2");
+ pcResume = 130;
+ break;
+ case '4':
+ temperature = temperature.replace(/;fan3/, "M106 S130 ; custom fan 50% from layer 3");
+ pcResume = 130;
+ break;
+ case '5':
+ temperature = temperature.replace(/;fan5/, "M106 S130 ; custom fan 50% from layer 5");
+ pcResume = 130;
+ break;
+ case '6':
+ temperature = temperature.replace(/;fan2/, "; custom fan off");
+ pcResume = 0;
+ break;
}
+ temperature = temperature.replace(/;fanrestore/g, "M106 S"+pcResume+" ; restore previous fan speed");
if(abl == 1){
temperature = temperature.replace(/;G29 ; probe ABL/, "G29 ; probe ABL");
}
@@ -449,6 +516,7 @@ function processAcceleration(){
var retSpeed = document.accelerationForm.retspeed.value*60;
var abl = document.accelerationForm.abl.value;
var pc = document.accelerationForm.pc.value;
+ var pcResume = 255;
var feed = document.accelerationForm.feedrate.value*60;
var jerk_or_jd = document.accelerationForm.jerk_or_jd.value;
var a1 = document.accelerationForm.accel_a1.value;
@@ -477,11 +545,32 @@ function processAcceleration(){
var f4 = document.accelerationForm.accel_f4.value;
var customStart = document.accelerationForm.startgcode.value;
var acceleration = originalAcceleration;
- if(pc == 1){
- acceleration = acceleration.replace(/M106 S255/, "M106 S130 ; custom fan 50%");
- }
- if(pc == 2){
- acceleration = acceleration.replace(/M106 S255/, ";M106 S255 ; custom fan off");
+ switch(pc){
+ case '0':
+ acceleration = acceleration.replace(/;fan2/, "M106 S255 ; custom fan 100% from layer 2");
+ break;
+ case '1':
+ acceleration = acceleration.replace(/;fan3/, "M106 S255 ; custom fan 100% from layer 3");
+ break;
+ case '2':
+ acceleration = acceleration.replace(/;fan5/, "M106 S255 ; custom fan 100% from layer 5");
+ break;
+ case '3':
+ acceleration = acceleration.replace(/;fan2/, "M106 S130 ; custom fan 50% from layer 2");
+ pcResume = 130;
+ break;
+ case '4':
+ acceleration = acceleration.replace(/;fan3/, "M106 S130 ; custom fan 50% from layer 3");
+ pcResume = 130;
+ break;
+ case '5':
+ acceleration = acceleration.replace(/;fan5/, "M106 S130 ; custom fan 50% from layer 5");
+ pcResume = 130;
+ break;
+ case '6':
+ acceleration = acceleration.replace(/;fan2/, "; custom fan off");
+ pcResume = 0;
+ break;
}
acceleration = acceleration.replace(/M140 S60/g, "M140 S"+bedTemp+" ; custom bed temp");
acceleration = acceleration.replace(/M190 S60/g, "M190 S"+bedTemp+" ; custom bed temp");
diff --git a/js/retraction.js b/js/retraction.js
index 267cdeb..105ad41 100644
--- a/js/retraction.js
+++ b/js/retraction.js
@@ -693,7 +693,7 @@ G1 X77.965 Y42.938 E67.5571
G92 E0.0000
;retractionA
; layer 2, Z = 0.400
-M106 S255
+;fan2
; feature inner perimeter
; tool H0.200 W0.480
;zhopupA
@@ -1132,6 +1132,7 @@ G1 X19.616 Y45.085 E70.2497
G92 E0.0000
;retractionA
; layer 3, Z = 0.600
+;fan3
; feature inner perimeter
;zhopupA
G1 X19.388 Y44.826 F6000
@@ -1828,6 +1829,7 @@ G1 X19.549 Y46.510 E9.7252
G92 E0.0000
;retractionA
; layer 5, Z = 1.000
+;fan5
; feature inner perimeter
; tool H0.200 W0.480
;zhopupA
diff --git a/js/temperature.js b/js/temperature.js
index 8bc2165..52106c1 100644
--- a/js/temperature.js
+++ b/js/temperature.js
@@ -668,7 +668,7 @@ G92 E0.0000
G1 E-5.0000 F2400
; layer 2, Z = 0.400
temp1
-M106 S255
+;fan2
; feature inner perimeter
; tool H0.200 W0.480
G1 Z0.600 F1200
@@ -1076,6 +1076,7 @@ G1 X26.716 Y44.773 E54.0817
G92 E0.0000
G1 E-5.0000 F2400
; layer 3, Z = 0.600
+;fan3
; feature inner perimeter
G1 Z0.800 F1200
G1 X26.388 Y44.826 F6000
@@ -1717,6 +1718,7 @@ G1 X26.548 Y47.996 E7.4212
G92 E0.0000
G1 E-5.0000 F2400
; layer 5, Z = 1.000
+;fan5
; feature inner perimeter
; tool H0.200 W0.480
G1 Z1.200 F1200
@@ -8006,6 +8008,7 @@ G1 X63.513 Y46.542 F6000
G92 E0.0000
G1 X68.417 Y51.446 E0.3114 F3600
; feature bridge
+M106 S255 ; full fan for bridge
; tool H0.200 W0.480
G1 X55.660 Y51.440 F6000
G92 E0.0000
@@ -8031,6 +8034,7 @@ G1 X55.660 Y47.120 E4.2212
G1 X55.660 Y46.640 E4.2385
G1 X44.340 Y46.640 E4.6451
G92 E0.0000
+;fanrestore
G1 E-5.0000 F2400
; layer 50, Z = 10.000
; feature inner perimeter
@@ -12000,6 +12004,7 @@ G1 X63.513 Y46.542 F6000
G92 E0.0000
G1 X68.417 Y51.446 E0.3114 F3600
; feature bridge
+M106 S255 ; full fan for bridge
; tool H0.200 W0.480
G1 X55.660 Y51.440 F6000
G92 E0.0000
@@ -12025,6 +12030,7 @@ G1 X55.660 Y47.120 E4.2212
G1 X55.660 Y46.640 E4.2385
G1 X44.340 Y46.640 E4.6451
G92 E0.0000
+;fanrestore
G1 E-5.0000 F2400
; layer 90, Z = 18.000
; feature inner perimeter
@@ -15994,6 +16000,7 @@ G1 X63.513 Y46.542 F6000
G92 E0.0000
G1 X68.417 Y51.446 E0.3114 F3600
; feature bridge
+M106 S255 ; full fan for bridge
; tool H0.200 W0.480
G1 X55.660 Y51.440 F6000
G92 E0.0000
@@ -16019,6 +16026,7 @@ G1 X55.660 Y47.120 E4.2212
G1 X55.660 Y46.640 E4.2385
G1 X44.340 Y46.640 E4.6451
G92 E0.0000
+;fanrestore
G1 E-5.0000 F2400
; layer 130, Z = 26.000
; feature inner perimeter
@@ -19988,6 +19996,7 @@ G1 X63.513 Y46.542 F6000
G92 E0.0000
G1 X68.417 Y51.446 E0.3114 F3600
; feature bridge
+M106 S255 ; full fan for bridge
; tool H0.200 W0.480
G1 X55.660 Y51.440 F6000
G92 E0.0000
@@ -20013,6 +20022,7 @@ G1 X55.660 Y47.120 E4.2212
G1 X55.660 Y46.640 E4.2385
G1 X44.340 Y46.640 E4.6451
G92 E0.0000
+;fanrestore
G1 E-5.0000 F2400
; layer 170, Z = 34.000
; feature inner perimeter
@@ -24071,6 +24081,7 @@ G1 X68.512 Y47.468 E5.2240
G1 X68.512 Y46.790 E5.2484
G1 X68.205 Y46.482 E5.2640
; feature bridge
+M106 S255 ; full fan for bridge
G1 X55.660 Y51.440 F6000
G92 E0.0000
G1 X44.340 Y51.440 E0.4066 F3600
@@ -24095,6 +24106,7 @@ G1 X55.660 Y47.120 E4.2212
G1 X55.660 Y46.640 E4.2385
G1 X44.340 Y46.640 E4.6451
G92 E0.0000
+;fanrestore
G1 E-5.0000 F2400
; layer 210, Z = 42.000
; feature inner perimeter