Bladeren bron

Replace target with destination in M600

Scott Lahteine 10 jaren geleden
bovenliggende
commit
97ec224d72
1 gewijzigde bestanden met toevoegingen van 30 en 23 verwijderingen
  1. 30
    23
      Marlin/Marlin_main.cpp

+ 30
- 23
Marlin/Marlin_main.cpp Bestand weergeven

4890
    * M600: Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]
4890
    * M600: Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]
4891
    */
4891
    */
4892
   inline void gcode_M600() {
4892
   inline void gcode_M600() {
4893
-    float target[NUM_AXIS], lastpos[NUM_AXIS], fr60 = feedrate / 60;
4893
+
4894
     if (degHotend(active_extruder) < extrude_min_temp) {
4894
     if (degHotend(active_extruder) < extrude_min_temp) {
4895
       SERIAL_ERROR_START;
4895
       SERIAL_ERROR_START;
4896
       SERIAL_ERRORLNPGM(MSG_TOO_COLD_FOR_M600);
4896
       SERIAL_ERRORLNPGM(MSG_TOO_COLD_FOR_M600);
4897
       return;
4897
       return;
4898
     }
4898
     }
4899
 
4899
 
4900
+    float lastpos[NUM_AXIS], fr60 = feedrate / 60;
4901
+
4900
     for (int i=0; i<NUM_AXIS; i++)
4902
     for (int i=0; i<NUM_AXIS; i++)
4901
-      target[i] = lastpos[i] = current_position[i];
4903
+      lastpos[i] = destination[i] = current_position[i];
4902
 
4904
 
4903
-    #define BASICPLAN plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], fr60, active_extruder);
4904
     #ifdef DELTA
4905
     #ifdef DELTA
4905
-      #define RUNPLAN calculate_delta(target); BASICPLAN
4906
+      #define RUNPLAN calculate_delta(destination); \
4907
+                      plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], destination[E_AXIS], fr60, active_extruder);
4906
     #else
4908
     #else
4907
-      #define RUNPLAN BASICPLAN
4909
+      #define RUNPLAN line_to_destination();
4908
     #endif
4910
     #endif
4909
 
4911
 
4910
     //retract by E
4912
     //retract by E
4911
-    if (code_seen('E')) target[E_AXIS] += code_value();
4913
+    if (code_seen('E')) destination[E_AXIS] += code_value();
4912
     #ifdef FILAMENTCHANGE_FIRSTRETRACT
4914
     #ifdef FILAMENTCHANGE_FIRSTRETRACT
4913
-      else target[E_AXIS] += FILAMENTCHANGE_FIRSTRETRACT;
4915
+      else destination[E_AXIS] += FILAMENTCHANGE_FIRSTRETRACT;
4914
     #endif
4916
     #endif
4915
 
4917
 
4916
     RUNPLAN;
4918
     RUNPLAN;
4917
 
4919
 
4918
     //lift Z
4920
     //lift Z
4919
-    if (code_seen('Z')) target[Z_AXIS] += code_value();
4921
+    if (code_seen('Z')) destination[Z_AXIS] += code_value();
4920
     #ifdef FILAMENTCHANGE_ZADD
4922
     #ifdef FILAMENTCHANGE_ZADD
4921
-      else target[Z_AXIS] += FILAMENTCHANGE_ZADD;
4923
+      else destination[Z_AXIS] += FILAMENTCHANGE_ZADD;
4922
     #endif
4924
     #endif
4923
 
4925
 
4924
     RUNPLAN;
4926
     RUNPLAN;
4925
 
4927
 
4926
     //move xy
4928
     //move xy
4927
-    if (code_seen('X')) target[X_AXIS] = code_value();
4929
+    if (code_seen('X')) destination[X_AXIS] = code_value();
4928
     #ifdef FILAMENTCHANGE_XPOS
4930
     #ifdef FILAMENTCHANGE_XPOS
4929
-      else target[X_AXIS] = FILAMENTCHANGE_XPOS;
4931
+      else destination[X_AXIS] = FILAMENTCHANGE_XPOS;
4930
     #endif
4932
     #endif
4931
 
4933
 
4932
-    if (code_seen('Y')) target[Y_AXIS] = code_value();
4934
+    if (code_seen('Y')) destination[Y_AXIS] = code_value();
4933
     #ifdef FILAMENTCHANGE_YPOS
4935
     #ifdef FILAMENTCHANGE_YPOS
4934
-      else target[Y_AXIS] = FILAMENTCHANGE_YPOS;
4936
+      else destination[Y_AXIS] = FILAMENTCHANGE_YPOS;
4935
     #endif
4937
     #endif
4936
 
4938
 
4937
     RUNPLAN;
4939
     RUNPLAN;
4938
 
4940
 
4939
-    if (code_seen('L')) target[E_AXIS] += code_value();
4941
+    if (code_seen('L')) destination[E_AXIS] += code_value();
4940
     #ifdef FILAMENTCHANGE_FINALRETRACT
4942
     #ifdef FILAMENTCHANGE_FINALRETRACT
4941
-      else target[E_AXIS] += FILAMENTCHANGE_FINALRETRACT;
4943
+      else destination[E_AXIS] += FILAMENTCHANGE_FINALRETRACT;
4942
     #endif
4944
     #endif
4943
 
4945
 
4944
     RUNPLAN;
4946
     RUNPLAN;
4972
     #endif
4974
     #endif
4973
           
4975
           
4974
     //return to normal
4976
     //return to normal
4975
-    if (code_seen('L')) target[E_AXIS] -= code_value();
4977
+    if (code_seen('L')) destination[E_AXIS] -= code_value();
4976
     #ifdef FILAMENTCHANGE_FINALRETRACT
4978
     #ifdef FILAMENTCHANGE_FINALRETRACT
4977
-      else target[E_AXIS] -= FILAMENTCHANGE_FINALRETRACT;
4979
+      else destination[E_AXIS] -= FILAMENTCHANGE_FINALRETRACT;
4978
     #endif
4980
     #endif
4979
 
4981
 
4980
-    current_position[E_AXIS] = target[E_AXIS]; //the long retract of L is compensated by manual filament feeding
4982
+    current_position[E_AXIS] = destination[E_AXIS]; //the long retract of L is compensated by manual filament feeding
4981
     plan_set_e_position(current_position[E_AXIS]);
4983
     plan_set_e_position(current_position[E_AXIS]);
4982
 
4984
 
4983
     RUNPLAN; //should do nothing
4985
     RUNPLAN; //should do nothing
4986
 
4988
 
4987
     #ifdef DELTA
4989
     #ifdef DELTA
4988
       calculate_delta(lastpos);
4990
       calculate_delta(lastpos);
4989
-      plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], target[E_AXIS], fr60, active_extruder); //move xyz back
4990
-      plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], lastpos[E_AXIS], fr60, active_extruder); //final untretract
4991
+      plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], destination[E_AXIS], fr60, active_extruder);
4992
+      plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], lastpos[E_AXIS], fr60, active_extruder);
4991
     #else
4993
     #else
4992
-      plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], target[Z_AXIS], target[E_AXIS], fr60, active_extruder); //move xy back
4993
-      plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], target[E_AXIS], fr60, active_extruder); //move z back
4994
-      plan_buffer_line(lastpos[X_AXIS], lastpos[Y_AXIS], lastpos[Z_AXIS], lastpos[E_AXIS], fr60, active_extruder); //final untretract
4994
+      // Move XY to starting position, then Z, then E
4995
+      destination[X_AXIS] = lastpos[X_AXIS];
4996
+      destination[Y_AXIS] = lastpos[Y_AXIS];
4997
+      line_to_destination();
4998
+      destination[Z_AXIS] = lastpos[Z_AXIS];
4999
+      line_to_destination();
5000
+      destination[E_AXIS] = lastpos[E_AXIS];
5001
+      line_to_destination();
4995
     #endif        
5002
     #endif        
4996
 
5003
 
4997
     #ifdef FILAMENT_RUNOUT_SENSOR
5004
     #ifdef FILAMENT_RUNOUT_SENSOR

Laden…
Annuleren
Opslaan