fix 20250313

master
Tongg 4 months ago
parent 2e183ad96e
commit 94249bf5f3
  1. 13
      Language/en_US.xaml
  2. 2
      Model/Helper/RegistryHelper.cs
  3. 104
      Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs

@ -154,7 +154,7 @@
<sys:String x:Key="ViewportSaveSucceed">Save Successful</sys:String> <sys:String x:Key="ViewportSaveSucceed">Save Successful</sys:String>
<sys:String x:Key="ViewportSaveFail">Save Failed</sys:String> <sys:String x:Key="ViewportSaveFail">Save Failed</sys:String>
<sys:String x:Key="ViewportSelectPath">Select Path</sys:String> <sys:String x:Key="ViewportSelectPath">Select Path</sys:String>
<sys:String x:Key="ViewportRightMenuReset">Reset grid lines</sys:String> <sys:String x:Key="ViewportRightMenuReset">Reset Grid Lines</sys:String>
<!-- Login Page --> <!-- Login Page -->
<sys:String x:Key="LoginWindowTitle">SparkDetectionSystem</sys:String> <sys:String x:Key="LoginWindowTitle">SparkDetectionSystem</sys:String>
@ -183,7 +183,7 @@
<sys:String x:Key="DiamondResultGridCutLevel">Cut Grade</sys:String> <sys:String x:Key="DiamondResultGridCutLevel">Cut Grade</sys:String>
<sys:String x:Key="DiamondResultGridSymLevel">SYM Grade</sys:String> <sys:String x:Key="DiamondResultGridSymLevel">SYM Grade</sys:String>
<sys:String x:Key="DiamondResultPopupFacet1">Facet 1</sys:String> <sys:String x:Key="DiamondResultPopupFacet1">Facet 1</sys:String>
<sys:String x:Key="DiamodResultCloseConfirm">Are you sure you want to close the detection results screen?</sys:String> <sys:String x:Key="DiamodResultCloseConfirm">Close the result window?</sys:String>
<sys:String x:Key="DiamodResultPrintError">Thermal printing error occurred</sys:String> <sys:String x:Key="DiamodResultPrintError">Thermal printing error occurred</sys:String>
<!-- External Interface Messages--> <!-- External Interface Messages-->
@ -211,12 +211,12 @@
<sys:String x:Key="DateOfIssue">DateOfIssue</sys:String> <sys:String x:Key="DateOfIssue">DateOfIssue</sys:String>
<sys:String x:Key="Organization">Organization</sys:String> <sys:String x:Key="Organization">Organization</sys:String>
<sys:String x:Key="Code">Code</sys:String> <sys:String x:Key="Code">Code</sys:String>
<sys:String x:Key="Wight">Wight</sys:String> <sys:String x:Key="Wight">Weight</sys:String>
<sys:String x:Key="Parameters">Parameters</sys:String> <sys:String x:Key="Parameters">Parameters</sys:String>
<sys:String x:Key="Interval">Interval</sys:String> <sys:String x:Key="Interval">Interval</sys:String>
<sys:String x:Key="YesOrNo">Whether to print labels</sys:String> <sys:String x:Key="YesOrNo">Whether to print labels</sys:String>
<sys:String x:Key="CuttingGrade">CuttingGrade</sys:String> <sys:String x:Key="CuttingGrade">Cutting Grade</sys:String>
<sys:String x:Key="SymmetryLevel">SymmetryLevel</sys:String> <sys:String x:Key="SymmetryLevel">Symmetry Level</sys:String>
<sys:String x:Key="Print">Print</sys:String> <sys:String x:Key="Print">Print</sys:String>
<sys:String x:Key="RayTracingNoPlugin">No rendering plugin found!</sys:String> <sys:String x:Key="RayTracingNoPlugin">No rendering plugin found!</sys:String>
@ -236,4 +236,7 @@
<sys:String x:Key="GradingLoadingReplay">Replay</sys:String> <sys:String x:Key="GradingLoadingReplay">Replay</sys:String>
<sys:String x:Key="GradingLoadingPrevious">Previous Frame</sys:String> <sys:String x:Key="GradingLoadingPrevious">Previous Frame</sys:String>
<sys:String x:Key="GradingLoadingNext">Next Frame</sys:String> <sys:String x:Key="GradingLoadingNext">Next Frame</sys:String>
<sys:String x:Key="ViewportCutXuanZ">Rotate Cut Tool to This Face</sys:String>
<sys:String x:Key="ViewportCenterFlag">Show Center Mark</sys:String>
</ResourceDictionary> </ResourceDictionary>

@ -5,7 +5,7 @@ namespace SparkClient.Model.Helper;
public static class RegistryHelper public static class RegistryHelper
{ {
private const string BaseRegistryKey = @"SOFTWARE\Dayu\Spark"; private const string BaseRegistryKey = @"SOFTWARE\Dayu\Spark";
/// <summary> /// <summary>
/// 向注册表写入字符串类型值 /// 向注册表写入字符串类型值
/// </summary> /// </summary>
/// <param name="keyName">存储的键名</param> /// <param name="keyName">存储的键名</param>

@ -893,7 +893,10 @@ public class ViewportHelperPro
var valueFloat = ValueFormat(paramValue.ToString(), param, true); var valueFloat = ValueFormat(paramValue.ToString(), param, true);
Logger.Info($"【面文本生成】 {valueFloat} -- {valueIndex}"); Logger.Info($"【面文本生成】 {valueFloat} -- {valueIndex}");
var facetTextPoint = GetOffsetCenter(facetPoints, ViewportManager.CenterVector); 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) } else if (ViewportManager.DiamondData.Count > 1 && facetIndex != -1)
{ {
@ -920,6 +923,105 @@ public class ViewportHelperPro
result.Add(DisplayText3D($"{valueFloat} \r\n {facetIndex}", facetTextPoint)); result.Add(DisplayText3D($"{valueFloat} \r\n {facetIndex}", facetTextPoint));
} }
} }
if (string.IsNullOrWhiteSpace(valKey))
{
if (PlaneType.StarFacet == selFacetType || PlaneType.UpperGirdleFacet == selFacetType)
{
//星刻面: 在底面的点显示 星刻面长度比
//上腰面: 在顶面的点显示 对应星刻面的 1-星刻面长度比
string valParam = "STAR";
List<Viewport3DTriangleEntity> allStartEntity =
ViewportManager.ViewportTriangle.FindAll(e => e.PlaneType == PlaneType.StarFacet);
var allStartEntityGroupByFacet = allStartEntity.GroupBy(entity => entity.PlaneCode)
.ToDictionary(group => group.Key, group => group.ToList());
List<Viewport3DTriangleEntity> allUpperGridleEntity =
ViewportManager.ViewportTriangle.FindAll(e => e.PlaneType == PlaneType.UpperGirdleFacet);
var allUpperGridleEntityGroupByFacet = allUpperGridleEntity.GroupBy(entity => entity.PlaneCode)
.ToDictionary(group => group.Key, group => group.ToList());
List<Vector3> points = new List<Vector3>();
for (int i = 0; i < allStartEntityGroupByFacet.Count; i++)
{
List<Vector3> pointsTemp = new List<Vector3>();
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<Viewport3DTriangleEntity> 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<Vector3> pointsTemp = new List<Vector3>();
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)));
}
}
}
} }

Loading…
Cancel
Save