diff --git a/Model/Helper/Common.cs b/Model/Helper/Common.cs index c4a85be..d169d30 100644 --- a/Model/Helper/Common.cs +++ b/Model/Helper/Common.cs @@ -1,5 +1,7 @@ using System.Data; using System.Reflection; +using System.Security.Cryptography; +using System.Text; using Newtonsoft.Json; namespace SparkClient.Model.Helper; @@ -88,4 +90,14 @@ public class Common return entityList; } + + private static string GenerateMd5Hash(string input) + { + using (var md5 = MD5.Create()) + { + var inputBytes = Encoding.UTF8.GetBytes(input); + var hashBytes = md5.ComputeHash(inputBytes); + return string.Concat(hashBytes.Select(b => b.ToString("X2"))); + } + } } \ No newline at end of file diff --git a/ViewModel/Grading/DiamondSelectVM.cs b/ViewModel/Grading/DiamondSelectVM.cs index 3a6d297..ccfb249 100644 --- a/ViewModel/Grading/DiamondSelectVM.cs +++ b/ViewModel/Grading/DiamondSelectVM.cs @@ -114,7 +114,9 @@ public class DiamondSelectVM : BaseViewModel /// public async void StartGrading(object param) { - + #if DEBUG + DoStartGrading(param); + #else LoadingDialog loading = new LoadingDialog(); try { @@ -236,7 +238,7 @@ public class DiamondSelectVM : BaseViewModel finally { } - + #endif } // 将 UI 操作调度到主线程并显示错误信息 diff --git a/Views/Configuration/ConfigMenuPage.xaml b/Views/Configuration/ConfigMenuPage.xaml index 87b29c5..269676c 100644 --- a/Views/Configuration/ConfigMenuPage.xaml +++ b/Views/Configuration/ConfigMenuPage.xaml @@ -78,10 +78,10 @@ @@ -181,10 +181,12 @@ - + - diff --git a/Views/UserControl/ViewportData/Entity/ColorConfigEntity.cs b/Views/UserControl/ViewportData/Entity/ColorConfigEntity.cs index 4df96eb..9a559ac 100644 --- a/Views/UserControl/ViewportData/Entity/ColorConfigEntity.cs +++ b/Views/UserControl/ViewportData/Entity/ColorConfigEntity.cs @@ -14,19 +14,19 @@ public class ColorConfigEntity private string _selFacetColor = "#FFBDB759"; private string _selBorderColor = "#FF000000"; private string _selTypeColor = "#FFFCFCD1"; - private string _selFontColor = "#FFF4A061"; - private string _selLineColor; - private string _selFrontColor = "FFFF0000"; + private string _selFontColor = "#FFFF0000"; + private string _selLineColor = "#FFFF0000"; + private string _selFrontColor = "#FFFF0000"; private string _errFacetColor = "#FFFF0000"; - private string _tableFacetColor; - private string _upperMainFacetColor; - private string _starFacetColor; - private string _upperGridleFacetColor; - private string _girdleFacetColor; - private string _pavilionFacetColor; - private string _lowerGridleFacetColor; - private string _culetFacetColor; + private string _tableFacetColor = "#FF87CEFA"; + private string _upperMainFacetColor = "#FF1E90FF"; + private string _starFacetColor = "#FF0000FF"; + private string _upperGirdleFacetColor = "#FF6495ED"; + private string _girdleFacetColor = "#3300BFFF"; + private string _pavilionFacetColor = "#FF6A5ACD"; + private string _lowerGirdleFacetColor = "#FFAEEEEE"; + private string _culetFacetColor = "#FFFFFFFF"; /// /// 面部颜色 @@ -211,15 +211,15 @@ public class ColorConfigEntity /// /// 上腰面颜色 /// - public Color4 UpperGridleFacetColor + public Color4 UpperGirdleFacetColor { get { - return CommonHelper.HexToColor4(_upperGridleFacetColor); + return CommonHelper.HexToColor4(_upperGirdleFacetColor); } set { - _upperGridleFacetColor = CommonHelper.Color4ToHex(value); + _upperGirdleFacetColor = CommonHelper.Color4ToHex(value); } } @@ -256,15 +256,15 @@ public class ColorConfigEntity /// /// 下腰面颜色 /// - public Color4 LowerGridleFacetColor + public Color4 LowerGirdleFacetColor { get { - return CommonHelper.HexToColor4(_lowerGridleFacetColor); + return CommonHelper.HexToColor4(_lowerGirdleFacetColor); } set { - _lowerGridleFacetColor = CommonHelper.Color4ToHex(value); + _lowerGirdleFacetColor = CommonHelper.Color4ToHex(value); } } diff --git a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs index ba2b326..2816627 100644 --- a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs +++ b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs @@ -123,21 +123,21 @@ public class ViewportHelperPro switch (planeType) { case PlaneType.Girdle: - return new Color4(0, 0.74901f, 1, 0.2f); + return ViewportManager.ColorConfig.GirdleFacetColor; case PlaneType.TableFacet : - return new Color4(0.52941f, 0.80734f, 0.98039f, 1); + return ViewportManager.ColorConfig.TableFacetColor; case PlaneType.UpperMainFacet: - return new Color4(30/255f, 144/255f, 1, 1f); + return ViewportManager.ColorConfig.UpperMainFacetColor; case PlaneType.StarFacet: - return new Color4(0, 0, 1, 1f); + return ViewportManager.ColorConfig.StarFacetColor; case PlaneType.UpperGirdleFacet: - return new Color4(100/255f, 149/255f, 237/255f, 1f); + return ViewportManager.ColorConfig.UpperGirdleFacetColor; case PlaneType.PavilionMainFacet: - return new Color4(106/255f, 90/255f, 205/255f, 1f); + return ViewportManager.ColorConfig.PavilionFacetColor; case PlaneType.LowerGirdleFact: - return new Color4(175/255f, 238/255f, 238/255f, 1f); + return ViewportManager.ColorConfig.LowerGirdleFacetColor; case PlaneType.Culet: - return new Color4(255/255f, 255/255f, 255/255f, 1f); + return ViewportManager.ColorConfig.CuletFacetColor; } return null; @@ -338,10 +338,10 @@ public class ViewportHelperPro } HashSet uniqueVectors = new HashSet(selFaceVector); - for (int i = 0; i < uniqueVectors.ToList().Count - 1; i++) + for (int i = 0; i < selFaceVector.ToList().Count - 1; i++) { - var nowItem = uniqueVectors.ToList()[i]; - var nextItem = uniqueVectors.ToList()[i + 1]; + var nowItem = selFaceVector.ToList()[i]; + var nextItem = selFaceVector.ToList()[i + 1]; var line = new Tuple(nowItem, nextItem); if (IsLineSegmentParallelToYAxis(line)) { @@ -455,7 +455,21 @@ public class ViewportHelperPro ViewportManager.ViewportTriangle.FindAll(e => e.PlaneType == selFacetType); var groupedDic = facetTypeAll.GroupBy(entity => entity.PlaneCode) .ToDictionary(group => group.Key, group => group.ToList()); - + + foreach (var kv in groupedDic) + { + var value = kv.Value; + var key = kv.Key; + var facetIndex = key.Split("_")[1]; + List facetPoints = new List(); + value.ForEach(e => { facetPoints.Add(e.Point1); facetPoints.Add(e.Point2); facetPoints.Add(e.Point3); }); + + + + var facetTextPoint = GetOffsetCenter(facetPoints, ViewportManager.CenterVector); + result.Add(DisplayText3D($"{key.Split("_")[1]} \r\n 12334", facetTextPoint, textColor)); + } + /*** * 思路: * 1、以面分组,1组为台面、底面,8组、16组、64组、other @@ -677,6 +691,8 @@ public class ViewportHelperPro { Foreground = color??ViewportManager.ColorConfig.SelFontColor, Scale = 0.8f, + VerticalAlignment = BillboardVerticalAlignment.Center, + HorizontalAlignment = BillboardHorizontalAlignment.Center }); billboardTextModel.Geometry = billboardText; @@ -1059,6 +1075,22 @@ public class ViewportHelperPro float z = vectors.Sum(v => v.Z) / vectors.Count; return new Vector3(x, y, z); } + public static Vector3 GetOffsetCenter(List facetVector, Vector3 center, float dev = 0.4f) + { + // 1. 去重 facetVector + var distinctFacetVector = facetVector.Distinct().ToList(); + + // 2. 计算多边形的几何中心 + Vector3 polygonCenter = GetCentroid(distinctFacetVector); + + // 3. 计算从模型中心点到几何中心的向量 + Vector3 direction = polygonCenter - center; + + // 4. 归一化方向向量并根据偏移量 dev 计算最终的偏移位置 + Vector3 offsetCenter = polygonCenter + Vector3.Normalize(direction) * dev; + + return offsetCenter; + } /// /// 计算夹角度数 /// diff --git a/Views/UserControl/ViewportData/Helper/ViewportManager.cs b/Views/UserControl/ViewportData/Helper/ViewportManager.cs index 2c2d301..d18470a 100644 --- a/Views/UserControl/ViewportData/Helper/ViewportManager.cs +++ b/Views/UserControl/ViewportData/Helper/ViewportManager.cs @@ -1,3 +1,4 @@ +using System.Text.Json.Nodes; using System.Windows.Media.Media3D; using HelixToolkit.Wpf.SharpDX; using SharpDX; @@ -14,6 +15,8 @@ public class ViewportManager /// 视图中三角形实体们 /// public static List ViewportTriangle = new List(); + + public static JsonObject DiamondData = new JsonObject(); /// /// 模型正方向(从模型中心出发的方向) /// diff --git a/Views/UserControl/ViewportData/ViewportData.cs b/Views/UserControl/ViewportData/ViewportData.cs index b65d9b1..80122ab 100644 --- a/Views/UserControl/ViewportData/ViewportData.cs +++ b/Views/UserControl/ViewportData/ViewportData.cs @@ -92,7 +92,9 @@ public class ViewportData ViewportManager.PositiveDirection.Y = 0f; ViewportManager.PositiveDirection.Z = 0; } - + + var measurements = json.AsObject()["measurements"]; + ViewportManager.DiamondData = measurements==null?new JsonObject():measurements.AsObject(); var midZ = facets.SelectMany(e => new[] { e.Point1.X, e.Point2.X, e.Point3.X }).OrderBy(z => Math.Abs(z)) .First(); List facetsFinal = new List();