diff --git a/Views/Grading/DiamondSelect.xaml b/Views/Grading/DiamondSelect.xaml
index 8cad8df..288a9a0 100644
--- a/Views/Grading/DiamondSelect.xaml
+++ b/Views/Grading/DiamondSelect.xaml
@@ -7,11 +7,13 @@
xmlns:hc="https://handyorg.github.io/handycontrol"
d:DesignWidth="1000"
d:DesignHeight="600"
+
mc:Ignorable="d">
-
+
+
@@ -100,4 +102,7 @@
+
+
+
diff --git a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs
index 2974f03..8541947 100644
--- a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs
+++ b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs
@@ -346,6 +346,7 @@ public class ViewportHelperPro
List selFaceVector = new List();
if (waistList.Count > 0)
{
+ //顶线和底线
foreach (var entity in waistList)
{
selFaceVector.Add(entity.Point1);
@@ -367,8 +368,20 @@ public class ViewportHelperPro
}
result.Add(DisplayLineModel3D( VectorClockwiseSort(ViewportManager.GirdleBottomLines), color??ViewportManager.LineColor, thickness));
result.Add(DisplayLineModel3D( VectorClockwiseSort(ViewportManager.GirdleTopLines), color??ViewportManager.LineColor, thickness));
+ //找到所有平行于Y轴的线
+ for (int i = 0; i < uniqueVectors.ToList().Count - 1; i++)
+ {
+ var nowItem = uniqueVectors.ToList()[i];
+ var nextItem = uniqueVectors.ToList()[i + 1];
+ var line = new Tuple(nowItem, nextItem);
+ if (IsLineSegmentParallelToYAxis(line))
+ {
+ result.Add(DisplayLineModel3D(new List(){nowItem,nextItem }, color??ViewportManager.LineColor, thickness));
+ }
+ }
}
+
return result;
}
@@ -1009,6 +1022,17 @@ public class ViewportHelperPro
var v = p2 - p0;
return Vector3.Cross(u, v);
}
+ private static bool IsLineSegmentParallelToYAxis(Tuple lineSegment,float epsilon = 1e-6f)
+ {
+ Vector3 nowItem = lineSegment.Item1;
+ Vector3 nextItem = lineSegment.Item2;
+
+ if (Math.Abs(nowItem.X - nextItem.X) < epsilon && Math.Abs(nowItem.Z - nextItem.Z) < epsilon)
+ {
+ return true; // 平行于 Y 轴
+ }
+ return false; // 不平行于 Y 轴
+ }
#endregion
}
\ No newline at end of file