|
@@ -7601,40 +7601,23 @@ inline void gcode_M503() {
|
7601
|
7601
|
*/
|
7602
|
7602
|
inline void gcode_M905() {
|
7603
|
7603
|
stepper.synchronize();
|
7604
|
|
-
|
7605
|
|
- float newD = -1;
|
7606
|
|
- float newW = -1;
|
7607
|
|
- float newH = -1;
|
7608
|
|
-
|
7609
|
|
- if (code_seen('K')) {
|
7610
|
|
- float newK = code_value_float();
|
7611
|
|
- if (newK >= 0.0)
|
7612
|
|
- planner.set_extruder_advance_k(newK);
|
7613
|
|
- }
|
|
7604
|
+
|
|
7605
|
+ const float newK = code_seen('K') ? code_value_float() : -1,
|
|
7606
|
+ newD = code_seen('D') ? code_value_float() : -1,
|
|
7607
|
+ newW = code_seen('W') ? code_value_float() : -1,
|
|
7608
|
+ newH = code_seen('H') ? code_value_float() : -1;
|
|
7609
|
+
|
|
7610
|
+ if (newK >= 0.0) planner.set_extruder_advance_k(newK);
|
7614
|
7611
|
|
7615
|
7612
|
SERIAL_ECHO_START;
|
7616
|
|
- SERIAL_ECHOPAIR("Advance factor: ", planner.get_extruder_advance_k());
|
7617
|
|
- SERIAL_EOL;
|
7618
|
|
-
|
7619
|
|
- if (code_seen('D'))
|
7620
|
|
- newD = code_value_float();
|
7621
|
|
- if (code_seen('W'))
|
7622
|
|
- newW = code_value_float();
|
7623
|
|
- if (code_seen('H'))
|
7624
|
|
- newH = code_value_float();
|
7625
|
|
-
|
7626
|
|
- if (newD > 0 && newW > 0 && newH > 0) {
|
7627
|
|
- float E_D_ratio = newW * newH / (sq(newD / 2) * M_PI);
|
7628
|
|
- planner.set_E_D_ratio(E_D_ratio);
|
7629
|
|
- SERIAL_ECHO_START;
|
7630
|
|
- SERIAL_ECHOPAIR("E/D ratio: ", E_D_ratio);
|
7631
|
|
- SERIAL_EOL;
|
7632
|
|
- }
|
7633
|
|
- else if (newD != -1 || newW != -1 || newH != -1) {
|
7634
|
|
- planner.set_E_D_ratio(0);
|
|
7613
|
+ SERIAL_ECHOLNPAIR("Advance factor: ", planner.get_extruder_advance_k());
|
|
7614
|
+
|
|
7615
|
+ if (newD >= 0 || newW >= 0 || newH >= 0) {
|
|
7616
|
+ const float ratio = (!newD || !newW || !newH) ? 0 : (newW * newH) / (sq(newD * 0.5) * M_PI);
|
|
7617
|
+ planner.set_advance_ed_ratio(ratio);
|
7635
|
7618
|
SERIAL_ECHO_START;
|
7636
|
|
- SERIAL_ECHOPGM("E/D ratio: Automatic");
|
7637
|
|
- SERIAL_EOL;
|
|
7619
|
+ SERIAL_ECHOPGM("E/D ratio: ");
|
|
7620
|
+ if (ratio) SERIAL_ECHOLN(ratio); else SERIAL_ECHOLNPGM("Automatic");
|
7638
|
7621
|
}
|
7639
|
7622
|
}
|
7640
|
7623
|
#endif
|