From 94249bf5f3805e02f1fe9a83ae8f9f2d6435d3d6 Mon Sep 17 00:00:00 2001 From: Tongg Date: Thu, 13 Mar 2025 16:20:57 +0800 Subject: [PATCH] fix 20250313 --- Language/en_US.xaml | 13 ++- Model/Helper/RegistryHelper.cs | 2 +- .../ViewportData/Helper/ViewportHelperPro.cs | 104 +++++++++++++++++- 3 files changed, 112 insertions(+), 7 deletions(-) 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))); + } + } + } }