From 7881cef5c3dcea8e6037101db2c3eeb2fd3ba5da Mon Sep 17 00:00:00 2001
From: 826220679@qq.com <826220679@qq.com>
Date: 星期六, 27 十二月 2025 23:42:36 +0800
Subject: [PATCH] 1211

---
 src/lujing/MowingPathGenerationPage.java |   97 +++++++++++++++++++++++++++++++-----------------
 1 files changed, 63 insertions(+), 34 deletions(-)

diff --git a/src/lujing/MowingPathGenerationPage.java b/src/lujing/MowingPathGenerationPage.java
index 675d83f..d30bc1f 100644
--- a/src/lujing/MowingPathGenerationPage.java
+++ b/src/lujing/MowingPathGenerationPage.java
@@ -736,18 +736,20 @@
             return "";
         }
         StringBuilder sb = new StringBuilder();
-        AoxinglujingNoObstacle.Point last = null;
-        for (AoxinglujingNoObstacle.PathSegment segment : segments) {
-            // 鍙坊鍔犲壊鑽夊伐浣滄锛岃烦杩囪繃娓℃
-            if (segment.isMowing) {
-                // 濡傛灉璧风偣涓庝笂涓�涓粓鐐逛笉鍚岋紝娣诲姞璧风偣
-                if (last == null || !equals2D(last, segment.start)) {
-                    appendPoint(sb, segment.start);
-                }
-                // 娣诲姞缁堢偣
-                appendPoint(sb, segment.end);
-                last = segment.end;
+        AoxinglujingNoObstacle.Point lastEnd = null;
+        boolean firstWritten = false;
+        for (AoxinglujingNoObstacle.PathSegment s : segments) {
+            if (!firstWritten) {
+                appendPoint(sb, s.start);
+                firstWritten = true;
+                lastEnd = s.start;
+            } else if (lastEnd == null || !equals2D(lastEnd, s.start)) {
+                // 闈炶繛缁锛屽紑濮嬫柊鐨勫瓙璺緞
+                appendPoint(sb, s.start);
+                lastEnd = s.start;
             }
+            appendPointWithType(sb, s.end, s.isMowing);
+            lastEnd = s.end;
         }
         return sb.toString();
     }
@@ -760,18 +762,20 @@
             return "";
         }
         StringBuilder sb = new StringBuilder();
-        YixinglujingNoObstacle.Point last = null;
-        for (YixinglujingNoObstacle.PathSegment segment : segments) {
-            // 鍙坊鍔犲壊鑽夊伐浣滄锛岃烦杩囪繃娓℃
-            if (segment.isMowing) {
-                // 濡傛灉璧风偣涓庝笂涓�涓粓鐐逛笉鍚岋紝娣诲姞璧风偣
-                if (last == null || !equalsYixingPoint(last, segment.start)) {
-                    appendYixingPoint(sb, segment.start);
-                }
-                // 娣诲姞缁堢偣
-                appendYixingPoint(sb, segment.end);
-                last = segment.end;
+        YixinglujingNoObstacle.Point lastEnd = null;
+        boolean firstWritten = false;
+        for (YixinglujingNoObstacle.PathSegment s : segments) {
+            if (!firstWritten) {
+                appendYixingPoint(sb, s.start);
+                firstWritten = true;
+                lastEnd = s.start;
+            } else if (lastEnd == null || !equalsYixingPoint(lastEnd, s.start)) {
+                // 闈炶繛缁锛屽紑濮嬫柊鐨勫瓙璺緞
+                appendYixingPoint(sb, s.start);
+                lastEnd = s.start;
             }
+            appendYixingPointWithType(sb, s.end, s.isMowing);
+            lastEnd = s.end;
         }
         return sb.toString();
     }
@@ -808,15 +812,19 @@
             return "";
         }
         StringBuilder sb = new StringBuilder();
-        YixinglujingHaveObstacel.Point last = null;
-        for (YixinglujingHaveObstacel.PathSegment segment : segments) {
-            // 濡傛灉鏄涓�娈碉紝鎴栬�呭綋鍓嶆璧风偣涓庝笂涓�娈电粓鐐逛笉杩炵画锛屽垯娣诲姞璧风偣
-            if (last == null || !equalsYixingHaveObstaclePoint(last, segment.start)) {
-                appendYixingHaveObstaclePoint(sb, segment.start);
+        YixinglujingHaveObstacel.Point lastEnd = null;
+        boolean firstWritten = false;
+        for (YixinglujingHaveObstacel.PathSegment s : segments) {
+            if (!firstWritten) {
+                appendYixingHaveObstaclePoint(sb, s.start);
+                firstWritten = true;
+                lastEnd = s.start;
+            } else if (lastEnd == null || !equalsYixingHaveObstaclePoint(lastEnd, s.start)) {
+                appendYixingHaveObstaclePoint(sb, s.start);
+                lastEnd = s.start;
             }
-            // 娣诲姞缁堢偣
-            appendYixingHaveObstaclePoint(sb, segment.end);
-            last = segment.end;
+            appendYixingHaveObstaclePointWithType(sb, s.end, s.isMowing);
+            lastEnd = s.end;
         }
         return sb.toString();
     }
@@ -831,7 +839,14 @@
         if (sb.length() > 0) {
             sb.append(";");
         }
-        sb.append(String.format(Locale.US, "%.6f,%.6f", point.x, point.y));
+        sb.append(String.format(Locale.US, "%.2f,%.2f", point.x, point.y));
+    }
+
+    private void appendYixingHaveObstaclePointWithType(StringBuilder sb, YixinglujingHaveObstacel.Point point, boolean isMowing) {
+        if (sb.length() > 0) {
+            sb.append(";");
+        }
+        sb.append(String.format(Locale.US, "%.2f,%.2f,%s", point.x, point.y, isMowing ? "M" : "T"));
     }
 
     /**
@@ -852,7 +867,14 @@
         if (sb.length() > 0) {
             sb.append(";");
         }
-        sb.append(String.format(Locale.US, "%.6f,%.6f", point.x, point.y));
+        sb.append(String.format(Locale.US, "%.2f,%.2f", point.x, point.y));
+    }
+
+    private void appendPointWithType(StringBuilder sb, AoxinglujingNoObstacle.Point point, boolean isMowing) {
+        if (sb.length() > 0) {
+            sb.append(";");
+        }
+        sb.append(String.format(Locale.US, "%.2f,%.2f,%s", point.x, point.y, isMowing ? "M" : "T"));
     }
     
     /**
@@ -873,7 +895,14 @@
         if (sb.length() > 0) {
             sb.append(";");
         }
-        sb.append(String.format(Locale.US, "%.6f,%.6f", point.x, point.y));
+        sb.append(String.format(Locale.US, "%.2f,%.2f", point.x, point.y));
+    }
+
+    private void appendYixingPointWithType(StringBuilder sb, YixinglujingNoObstacle.Point point, boolean isMowing) {
+        if (sb.length() > 0) {
+            sb.append(";");
+        }
+        sb.append(String.format(Locale.US, "%.2f,%.2f,%s", point.x, point.y, isMowing ? "M" : "T"));
     }
 
     /**
@@ -894,7 +923,7 @@
         if (sb.length() > 0) {
             sb.append(";");
         }
-        sb.append(String.format(Locale.US, "%.6f,%.6f", point.x, point.y));
+        sb.append(String.format(Locale.US, "%.2f,%.2f", point.x, point.y));
     }
     
     // ========== UI杈呭姪鏂规硶 ==========

--
Gitblit v1.10.0