diff --git a/Language/en_US.xaml b/Language/en_US.xaml
index 4534ce7..5678ef5 100644
--- a/Language/en_US.xaml
+++ b/Language/en_US.xaml
@@ -154,7 +154,7 @@
Save Successful
Save Failed
Select Path
- Reset grid lines
+ Reset Grid Lines
SparkDetectionSystem
@@ -183,7 +183,7 @@
Cut Grade
SYM Grade
Facet 1
- Are you sure you want to close the detection results screen?
+ Close the result window?
Thermal printing error occurred
@@ -211,12 +211,12 @@
DateOfIssue
Organization
Code
- Wight
+ Weight
Parameters
Interval
Whether to print labels
- CuttingGrade
- SymmetryLevel
+ Cutting Grade
+ Symmetry Level
Print
No rendering plugin found!
@@ -236,4 +236,7 @@
Replay
Previous Frame
Next Frame
+
+ Rotate Cut Tool to This Face
+ Show Center Mark
diff --git a/Model/Helper/RegistryHelper.cs b/Model/Helper/RegistryHelper.cs
index 116231a..eee4183 100644
--- a/Model/Helper/RegistryHelper.cs
+++ b/Model/Helper/RegistryHelper.cs
@@ -5,7 +5,7 @@ namespace SparkClient.Model.Helper;
public static class RegistryHelper
{
private const string BaseRegistryKey = @"SOFTWARE\Dayu\Spark";
- ///
+ ///
/// 向注册表写入字符串类型值
///
/// 存储的键名
diff --git a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs
index 512d369..8254d03 100644
--- a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs
+++ b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs
@@ -893,7 +893,10 @@ public class ViewportHelperPro
var valueFloat = ValueFormat(paramValue.ToString(), param, true);
Logger.Info($"【面文本生成】 {valueFloat} -- {valueIndex}");
var facetTextPoint = GetOffsetCenter(facetPoints, ViewportManager.CenterVector);
- result.Add(DisplayText3D($"{valueFloat} \r\n {facetIndex}", new Vector3(facetTextPoint.X, facetTextPoint.Y + 0.1f, facetTextPoint.Z)));
+ if(PlaneType.LowerGirdleFact == selFacetType)
+ result.Add(DisplayText3D($"\r\n\r\n{valueFloat} \r\n {facetIndex}", new Vector3(facetTextPoint.X, facetTextPoint.Y, facetTextPoint.Z)));
+ else
+ result.Add(DisplayText3D($"{valueFloat} \r\n {facetIndex}", new Vector3(facetTextPoint.X, facetTextPoint.Y + 0.1f, facetTextPoint.Z)));
} else if (ViewportManager.DiamondData.Count > 1 && facetIndex != -1)
{
@@ -920,6 +923,105 @@ public class ViewportHelperPro
result.Add(DisplayText3D($"{valueFloat} \r\n {facetIndex}", facetTextPoint));
}
}
+
+ if (string.IsNullOrWhiteSpace(valKey))
+ {
+ if (PlaneType.StarFacet == selFacetType || PlaneType.UpperGirdleFacet == selFacetType)
+ {
+ //星刻面: 在底面的点显示 星刻面长度比
+ //上腰面: 在顶面的点显示 对应星刻面的 1-星刻面长度比
+ string valParam = "STAR";
+ List allStartEntity =
+ ViewportManager.ViewportTriangle.FindAll(e => e.PlaneType == PlaneType.StarFacet);
+ var allStartEntityGroupByFacet = allStartEntity.GroupBy(entity => entity.PlaneCode)
+ .ToDictionary(group => group.Key, group => group.ToList());
+ List allUpperGridleEntity =
+ ViewportManager.ViewportTriangle.FindAll(e => e.PlaneType == PlaneType.UpperGirdleFacet);
+ var allUpperGridleEntityGroupByFacet = allUpperGridleEntity.GroupBy(entity => entity.PlaneCode)
+ .ToDictionary(group => group.Key, group => group.ToList());
+ List points = new List();
+ for (int i = 0; i < allStartEntityGroupByFacet.Count; i++)
+ {
+ List pointsTemp = new List();
+
+ allStartEntityGroupByFacet[$"13_{i}"].ForEach(e =>
+ {
+ pointsTemp.Add(e.Point1);
+ pointsTemp.Add(e.Point2);
+ pointsTemp.Add(e.Point3);
+ });
+ int upperGridleIndex = ((i + 1) * 2) >= 16 ? 1 : ((i + 1) * 2);
+ // allUpperGridleEntityGroupByFacet[$"14_{upperGridleIndex}"].ForEach(e =>
+ // {
+ // pointsTemp.Add(e.Point1);
+ // pointsTemp.Add(e.Point2);
+ // pointsTemp.Add(e.Point3);
+ // });
+ allUpperGridleEntityGroupByFacet[$"14_{upperGridleIndex-1}"].ForEach(e =>
+ {
+ pointsTemp.Add(e.Point1);
+ pointsTemp.Add(e.Point2);
+ pointsTemp.Add(e.Point3);
+ });
+ Vector3? mostFrequent = pointsTemp
+ .GroupBy(v => v)
+ .Select(group => new { Vector = group.Key, Count = group.Count() })
+ .OrderByDescending(x => x.Count)
+ .FirstOrDefault()?.Vector;
+ if(mostFrequent.HasValue)
+ points.Add(mostFrequent.Value);
+ }
+ var detail = ViewportManager.DiamondData[$"{valParam}_DETAIL"];
+ for (int i = 0; i < 8; i++)
+ {
+ var valIndex = i + 1;
+ var paramValue = detail[$"{valParam}_{valIndex}"];
+ var valueFloat = ValueFormat(paramValue.ToString(), valParam);
+ var finalValue = PlaneType.StarFacet == selFacetType
+ ? valueFloat
+ : (100 - (double.Parse(valueFloat))).ToString();
+ result.Add(DisplayText3D($"{finalValue}%", new Vector3(points[i].X,points[i].Y-0.2f,points[i].Z)));
+ }
+
+ }else if (PlaneType.LowerGirdleFact == selFacetType)
+ {
+ //下腰面: 在底面的点显示 下腰比
+ string valParam = "LOWER_HALVES_RATIO";
+
+ List allLowerGirdleEntity =
+ ViewportManager.ViewportTriangle.FindAll(e => e.PlaneType == PlaneType.LowerGirdleFact);
+ var allLowerGirdleGroupByFacet = allLowerGirdleEntity.GroupBy(entity => entity.PlaneCode)
+ .ToDictionary(group => group.Key, group => group.ToList());
+
+ var detail = ViewportManager.DiamondData[$"{valParam}_DETAIL"];
+ for (int i = 0; i < 8; i++)
+ {
+ var valIndex = i + 1;
+ //获取点
+ List pointsTemp = new List();
+ allLowerGirdleGroupByFacet[$"22_{i*2}"].ForEach(e =>
+ {
+ pointsTemp.Add(e.Point1);
+ pointsTemp.Add(e.Point2);
+ pointsTemp.Add(e.Point3);
+ });
+ float? maxY = pointsTemp.Any() ? pointsTemp.Max(v => v.Y) : (float?)null;
+ Vector3? points = pointsTemp
+ .Where(v => maxY.HasValue && v.Y == maxY.Value)
+ .GroupBy(v => v)
+ .Select(g => new { Point = g.Key, Count = g.Count() })
+ .OrderByDescending(x => x.Count)
+ .ThenByDescending(x => x.Point.Y)
+ .FirstOrDefault()?.Point;
+ if(!points.HasValue)continue;
+ Vector3 point = points.Value;
+ //取值
+ var paramValue = detail[$"{valParam}_{valIndex}"];
+ var valueFloat = ValueFormat(paramValue.ToString(), valParam);
+ result.Add(DisplayText3D($"{valueFloat}%", new Vector3(point.X,point.Y+0.2f,point.Z)));
+ }
+ }
+ }
}