ソースを参照

SCARA support in position_is_reachable

Scott Lahteine 8年前
コミット
7194e4434f
1個のファイルの変更17行の追加7行の削除
  1. 17
    7
      Marlin/Marlin_main.cpp

+ 17
- 7
Marlin/Marlin_main.cpp ファイルの表示

2501
 
2501
 
2502
 bool position_is_reachable(float target[XYZ]) {
2502
 bool position_is_reachable(float target[XYZ]) {
2503
   float dx = RAW_X_POSITION(target[X_AXIS]),
2503
   float dx = RAW_X_POSITION(target[X_AXIS]),
2504
-        dy = RAW_Y_POSITION(target[Y_AXIS]);
2504
+        dy = RAW_Y_POSITION(target[Y_AXIS]),
2505
+        dz = RAW_Z_POSITION(target[Z_AXIS]);
2505
 
2506
 
2506
-  #if ENABLED(DELTA)
2507
-    return HYPOT2(dx, dy) <= sq(DELTA_PRINTABLE_RADIUS);
2507
+  bool good;
2508
+  #if IS_SCARA
2509
+    #if MIDDLE_DEAD_ZONE_R > 0
2510
+      const float R2 = HYPOT2(dx - SCARA_OFFSET_X, dy - SCARA_OFFSET_Y);
2511
+      good = (R2 >= sq(float(MIDDLE_DEAD_ZONE_R))) && (R2 <= sq(L1 + L2));
2512
+    #else
2513
+      good = HYPOT2(dx - SCARA_OFFSET_X, dy - SCARA_OFFSET_Y) <= sq(L1 + L2);
2514
+    #endif
2515
+  #elif ENABLED(DELTA)
2516
+    good = HYPOT2(dx, dy) <= sq(DELTA_PRINTABLE_RADIUS);
2508
   #else
2517
   #else
2509
-    float dz = RAW_Z_POSITION(target[Z_AXIS]);
2510
-    return  dx >= X_MIN_POS - 0.0001 && dx <= X_MAX_POS + 0.0001
2511
-         && dy >= Y_MIN_POS - 0.0001 && dy <= Y_MAX_POS + 0.0001
2512
-         && dz >= Z_MIN_POS - 0.0001 && dz <= Z_MAX_POS + 0.0001;
2518
+    good = true;
2513
   #endif
2519
   #endif
2520
+
2521
+  return good && dx >= X_MIN_POS - 0.0001 && dx <= X_MAX_POS + 0.0001
2522
+              && dy >= Y_MIN_POS - 0.0001 && dy <= Y_MAX_POS + 0.0001
2523
+              && dz >= Z_MIN_POS - 0.0001 && dz <= Z_MAX_POS + 0.0001;
2514
 }
2524
 }
2515
 
2525
 
2516
 /**************************************************
2526
 /**************************************************

読み込み中…
キャンセル
保存