From 5f80de49c4a00416591054180bf809a12a76d686 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期四, 07 十一月 2024 16:40:53 +0800
Subject: [PATCH] 1

---
 TEWin/FrmWin.cs |   55 +++++++++++++++++++++++++++++--------------------------
 1 files changed, 29 insertions(+), 26 deletions(-)

diff --git a/TEWin/FrmWin.cs b/TEWin/FrmWin.cs
index 49a0a95..87c9072 100644
--- a/TEWin/FrmWin.cs
+++ b/TEWin/FrmWin.cs
@@ -577,16 +577,7 @@
 
                 if (angleCount % 3 == 2)
                 {
-                    IPoint p1 = (IPoint)line.Points[0];
-                    IPoint p2 = (IPoint)line.Points[1];
-                    IPoint p3 = (IPoint)line.Points[2];
-                    var pos1 = SG.Creator.CreatePosition(p1.X, p1.Y);
-                    var pos2 = SG.Creator.CreatePosition(p2.X, p2.Y);
-                    var pos3 = SG.Creator.CreatePosition(p3.X, p3.Y);
-
-                    var first = SG.CoordServices.GetAimingAngles(pos1, pos2);
-                    var sencod = SG.CoordServices.GetAimingAngles(pos2, pos3);
-                    angleSize = getAngle(first, sencod);
+                    angleSize = getAngle(line);
                     angleLabel.Text = angleSize.ToString() + "掳";
                 }
             }
@@ -596,21 +587,33 @@
             }
         }
 
-        private double getAngle(IPosition71 first, IPosition71 sencod)
+        private double getAngle(ILineString line, bool getB = false)
         {
-            /*double angle = 0;
-            if (sencod.Yaw > first.Yaw)
+            IPoint p1 = (IPoint)line.Points[0];
+            IPoint p2 = (IPoint)line.Points[1];
+            IPoint p3 = (IPoint)line.Points[2];
+            var pos1 = SG.Creator.CreatePosition(p1.X, p1.Y);
+            var pos2 = SG.Creator.CreatePosition(p2.X, p2.Y);
+            var pos3 = SG.Creator.CreatePosition(p3.X, p3.Y);
+
+            //var first = SG.CoordServices.GetAimingAngles(pos1, pos2);
+            var first = SG.CoordServices.GetAimingAngles(pos1, pos2);
+            var sencod = SG.CoordServices.GetAimingAngles(pos2, pos3);
+            if (getB) return Math.Round(sencod.Yaw, 2);
+
+            double angle = 0;
+            if (first.Yaw >= 0 && first.Yaw < 180)
             {
-                angle = sencod.Yaw - first.Yaw;
-                if (angle > 180) angle = 360 - sencod.Yaw + first.Yaw;
+                angle = first.Yaw + 180 - sencod.Yaw;
+                if (angle > 180) angle = 360 - angle;
+                if (angle < 0) angle = -angle;
             }
             else
             {
-                angle = first.Yaw - sencod.Yaw;
-                if (angle > 180) angle = 360 + sencod.Yaw - first.Yaw;
-            }*/
-
-            double angle = sencod.Yaw > first.Yaw ? sencod.Yaw - first.Yaw : first.Yaw - sencod.Yaw;
+                angle = sencod.Yaw - (first.Yaw - 180);
+                if (angle > 180) angle = 360 - angle;
+                if (angle < 0) angle = -angle;
+            }
 
             return Math.Round(angle, 2);
         }
@@ -648,14 +651,14 @@
 
                 if (angleCount % 3 == 2)
                 {
-                    IPoint secondPoint = (IPoint)line.Points[line.Points.Count - 2];
+                    //IPoint secondPoint = (IPoint)line.Points[line.Points.Count - 2];
+                    //var secondPos = SG.Creator.CreatePosition(secondPoint.X, secondPoint.Y);
                     IPoint nowPoint = (IPoint)line.Points[line.Points.Count - 1];
-                    var secondPos = SG.Creator.CreatePosition(secondPoint.X, secondPoint.Y);
                     var newPos = SG.Creator.CreatePosition(nowPoint.X, nowPoint.Y);
-
                     bLabel = CreateLabel(newPos, GetGroupId(angleGroupName), "#00FFFF");
-                    bLabel.Text = Math.Round(SG.CoordServices.GetAimingAngles(secondPos, newPos).Yaw, 2) + "掳";
+                    bLabel.Text = getAngle(line, true) + "掳";
 
+                    angleSize = getAngle(line);
                     angleLabel.Text = angleSize.ToString() + "掳";
                 }
                 angleCount++;
@@ -870,7 +873,7 @@
         private void Save()
         {
             string emptyFly = Path.Combine(Application.StartupPath, "Resources", "empty.fly");
-            if (emptyFly.Equals(this.fly))
+            if (emptyFly.Contains("empty.fly")) //if (emptyFly.Equals(this.fly))
             {
                 SaveAs();
                 return;
@@ -951,7 +954,7 @@
         {
             try
             {
-                if (String.IsNullOrEmpty(fileName)) fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".fly";
+                if (String.IsNullOrEmpty(fileName) || "empty.fly".Equals(fileName)) fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".fly";
 
                 SaveLocation();
                 this.SG.Command.Execute(1019, 0); // Capture Tree State

--
Gitblit v1.9.3