826220679@qq.com
19 小时以前 f94b1436d7a28c8e28d010b2cb657ab7c064e353
src/zhangaiwu/AddDikuai.java
@@ -1516,18 +1516,19 @@
            return "";
        }
        StringBuilder sb = new StringBuilder();
        AoxinglujingNoObstacle.Point last = null;
        for (AoxinglujingNoObstacle.PathSegment segment : segments) {
            // 只添加割草工作段,跳过过渡段
            if (segment.isMowing) {
                // 如果起点与上一个终点不同,添加起点
                if (last == null || !equalsAoxingPoint(last, segment.start)) {
                    appendAoxingPoint(sb, segment.start);
                }
                // 添加终点
                appendAoxingPoint(sb, segment.end);
                last = segment.end;
        AoxinglujingNoObstacle.Point lastEnd = null;
        boolean firstWritten = false;
        for (AoxinglujingNoObstacle.PathSegment s : segments) {
            if (!firstWritten) {
                appendAoxingPoint(sb, s.start);
                firstWritten = true;
                lastEnd = s.start;
            } else if (lastEnd == null || !equalsAoxingPoint(lastEnd, s.start)) {
                appendAoxingPoint(sb, s.start);
                lastEnd = s.start;
            }
            appendAoxingPointWithType(sb, s.end, s.isMowing);
            lastEnd = s.end;
        }
        return sb.toString();
    }
@@ -1540,18 +1541,19 @@
            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();
    }
@@ -1571,10 +1573,20 @@
     * 添加 AoxinglujingNoObstacle.Point 到字符串构建器
     */
    private void appendAoxingPoint(StringBuilder sb, AoxinglujingNoObstacle.Point point) {
                if (sb.length() > 0) {
                    sb.append(";");
                }
        sb.append(String.format(Locale.US, "%.6f,%.6f", point.x, point.y));
            }
    /**
     * 添加 AoxinglujingNoObstacle.Point 到字符串构建器(带类型标记)
     */
    private void appendAoxingPointWithType(StringBuilder sb, AoxinglujingNoObstacle.Point point, boolean isMowing) {
        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,%s", point.x, point.y, isMowing ? "M" : "T"));
    }
    
    /**
@@ -1592,10 +1604,20 @@
     * 添加 YixinglujingNoObstacle.Point 到字符串构建器
     */
    private void appendYixingPoint(StringBuilder sb, YixinglujingNoObstacle.Point point) {
                if (sb.length() > 0) {
                    sb.append(";");
                }
        sb.append(String.format(Locale.US, "%.6f,%.6f", point.x, point.y));
            }
    /**
     * 添加 YixinglujingNoObstacle.Point 到字符串构建器(带类型标记)
     */
    private void appendYixingPointWithType(StringBuilder sb, YixinglujingNoObstacle.Point point, boolean isMowing) {
        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,%s", point.x, point.y, isMowing ? "M" : "T"));
    }
    
    private void previewMowingPath() {