|
|
|
@ -444,21 +444,19 @@ public class ViewportHelperPro |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// 显示线段长度mm |
|
|
|
|
/// 选择面生成文本信息 |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="entities">三角形集合</param> |
|
|
|
|
/// <param name="textColor">文字颜色</param> |
|
|
|
|
/// <param name="showAll">是否显示全部(false:只显示不重复)</param> |
|
|
|
|
/// <param name="valKey">指定数据集</param> |
|
|
|
|
/// <returns></returns> |
|
|
|
|
public static List<GeometryModel3D> GenerateLineTextModels(List<Viewport3DTriangleEntity> entities, |
|
|
|
|
Color4? textColor = null,bool showAll = false) |
|
|
|
|
public static List<GeometryModel3D> GenerateLineTextModels(List<Viewport3DTriangleEntity> entities, string valKey = "") |
|
|
|
|
{ |
|
|
|
|
Logger.Info("【面文本生成】开始生成面相关文本信息"); |
|
|
|
|
var selFacet = entities; |
|
|
|
|
var selFacetType = entities.First().PlaneType; |
|
|
|
|
|
|
|
|
|
var result = new List<GeometryModel3D>(); |
|
|
|
|
if (selFacetType == PlaneType.Girdle) |
|
|
|
|
if (selFacetType == PlaneType.Girdle && string.IsNullOrWhiteSpace(valKey)) |
|
|
|
|
{ |
|
|
|
|
Logger.Info($"【面文本生成】 命中面{selFacetType},是腰"); |
|
|
|
|
// if (ViewportManager.MainModelGirdleMaxLines != null || ViewportManager.MainModelGirdleMinLines != null || |
|
|
|
@ -547,7 +545,7 @@ public class ViewportHelperPro |
|
|
|
|
var valueFloat = (Math.Floor(float.Parse(paramValue.ToString())*1000)/10).ToString(); |
|
|
|
|
Logger.Info($"【面文本生成】 {valueFloat} -- {valueIndex}"); |
|
|
|
|
var facetTextPoint = GetOffsetCenter(facetPoints, ViewportManager.CenterVector); |
|
|
|
|
result.Add(DisplayText3D($"{valueFloat}", facetTextPoint, textColor)); |
|
|
|
|
result.Add(DisplayText3D($"{valueFloat}", facetTextPoint)); |
|
|
|
|
// foreach (var kv in groupedDic) |
|
|
|
|
// { |
|
|
|
|
// var value = kv.Value; |
|
|
|
@ -569,6 +567,11 @@ public class ViewportHelperPro |
|
|
|
|
// */ |
|
|
|
|
// |
|
|
|
|
// } |
|
|
|
|
}else if (selFacetType == PlaneType.Girdle && string.IsNullOrWhiteSpace(valKey)) |
|
|
|
|
{ |
|
|
|
|
Logger.Info($"【面文本生成】 命中面{selFacetType},是腰,显示值{valKey}"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
@ -579,6 +582,7 @@ public class ViewportHelperPro |
|
|
|
|
var groupedDic = facetTypeAll.GroupBy(entity => entity.PlaneCode) |
|
|
|
|
.ToDictionary(group => group.Key, group => group.ToList()); |
|
|
|
|
Logger.Info($"【面文本生成】 同类面{groupedDic.Count}个"); |
|
|
|
|
var valueIndex = 1; |
|
|
|
|
foreach (var kv in groupedDic) |
|
|
|
|
{ |
|
|
|
|
var value = kv.Value; |
|
|
|
@ -587,7 +591,7 @@ public class ViewportHelperPro |
|
|
|
|
int.TryParse(key.Split("_")[1], out facetIndex); |
|
|
|
|
List<Vector3> facetPoints = new List<Vector3>(); |
|
|
|
|
value.ForEach(e => { facetPoints.Add(e.Point1); facetPoints.Add(e.Point2); facetPoints.Add(e.Point3); }); |
|
|
|
|
var param = ViewportManager.DicFacetToValueParam.ContainsKey(selFacetType) ? ViewportManager.DicFacetToValueParam[selFacetType] : null; |
|
|
|
|
var param = string.IsNullOrWhiteSpace(valKey)? ViewportManager.DicFacetToValueParam.ContainsKey(selFacetType) ? ViewportManager.DicFacetToValueParam[selFacetType] : null : valKey; |
|
|
|
|
if (param == null) |
|
|
|
|
{ |
|
|
|
|
continue; |
|
|
|
@ -604,10 +608,31 @@ public class ViewportHelperPro |
|
|
|
|
var valueFloat = ValueFormat(paramValue.ToString(),param); |
|
|
|
|
Logger.Info($"【面文本生成】 {valueFloat} -- {facetIndex}"); |
|
|
|
|
var facetTextPoint = GetOffsetCenter(facetPoints, ViewportManager.CenterVector); |
|
|
|
|
result.Add(DisplayText3D($"{valueFloat}", facetTextPoint, textColor)); |
|
|
|
|
result.Add(DisplayText3D($"{valueFloat}", facetTextPoint)); |
|
|
|
|
|
|
|
|
|
}else if (groupedDic.Count == 16) |
|
|
|
|
{ |
|
|
|
|
facetIndex += 1; |
|
|
|
|
valueIndex = facetIndex == 16 ? 1 : facetIndex % 2 == 0 ? valueIndex + 1 : valueIndex; |
|
|
|
|
var detail = ViewportManager.DiamondData[$"{param}_DETAIL"]; |
|
|
|
|
if (detail == null) |
|
|
|
|
{ |
|
|
|
|
Logger.Info($"【面文本生成】 {param}_DETAIL Key不存在"); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
Logger.Info($"【面文本生成】 {param}_DETAIL == {detail}"); |
|
|
|
|
var paramValue = detail[$"{param}_{valueIndex}"]; |
|
|
|
|
if (paramValue == null) |
|
|
|
|
{ |
|
|
|
|
Logger.Info($"【面文本生成】 {param}_DETAIL.{param}_{valueIndex} Key不存在"); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
Logger.Info($"【面文本生成】 {param}_DETAIL.{param}_{valueIndex} ==={paramValue}"); |
|
|
|
|
|
|
|
|
|
var valueFloat = ValueFormat(paramValue.ToString(),param); |
|
|
|
|
Logger.Info($"【面文本生成】 {valueFloat} -- {valueIndex}"); |
|
|
|
|
var facetTextPoint = GetOffsetCenter(facetPoints, ViewportManager.CenterVector); |
|
|
|
|
result.Add(DisplayText3D($" {facetIndex} \r\n {valueFloat}", new Vector3(facetTextPoint.X, facetTextPoint.Y+0.1f, facetTextPoint.Z))); |
|
|
|
|
|
|
|
|
|
} else if (ViewportManager.DiamondData.Count > 1 && facetIndex != -1) |
|
|
|
|
{ |
|
|
|
@ -631,7 +656,7 @@ public class ViewportHelperPro |
|
|
|
|
var valueFloat = ValueFormat(paramValue.ToString(),param); |
|
|
|
|
Logger.Info($"【面文本生成】 {valueFloat} -- {facetIndex}"); |
|
|
|
|
var facetTextPoint = GetOffsetCenter(facetPoints, ViewportManager.CenterVector); |
|
|
|
|
result.Add(DisplayText3D($" {facetIndex} \r\n {valueFloat}", facetTextPoint, textColor)); |
|
|
|
|
result.Add(DisplayText3D($" {facetIndex} \r\n {valueFloat}", facetTextPoint)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -687,11 +712,11 @@ public class ViewportHelperPro |
|
|
|
|
/// <param name="triangleCode">三角形ID</param> |
|
|
|
|
/// <param name="selType">生成范围</param> |
|
|
|
|
/// <returns></returns> |
|
|
|
|
public static List<GeometryModel3D> GentrateChosenView(string triangleCode, params SelShowType[] selType) |
|
|
|
|
public static List<GeometryModel3D> GentrateChosenView(string triangleCode, string valKey = "", params SelShowType[] selType) |
|
|
|
|
{ |
|
|
|
|
var res = ViewportManager.ViewportTriangle.Find(e => triangleCode.Equals(e.TriangleCode)); |
|
|
|
|
if(res != null) |
|
|
|
|
return GentrateChosenView(res, selType); |
|
|
|
|
return GentrateChosenView(res, valKey, selType); |
|
|
|
|
return new List<GeometryModel3D>(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -702,7 +727,7 @@ public class ViewportHelperPro |
|
|
|
|
/// <param name="selType">生成范围</param> |
|
|
|
|
/// <returns></returns> |
|
|
|
|
/// <exception cref="Exception"></exception> |
|
|
|
|
public static List<GeometryModel3D> GentrateChosenView(Viewport3DTriangleEntity entity, params SelShowType[] selType) |
|
|
|
|
public static List<GeometryModel3D> GentrateChosenView(Viewport3DTriangleEntity entity, string valKey = "", params SelShowType[] selType) |
|
|
|
|
{ |
|
|
|
|
if (entity == null || entity.TriangleCode == null || entity.TriangleCode.Length == 0) |
|
|
|
|
{ |
|
|
|
@ -739,7 +764,7 @@ public class ViewportHelperPro |
|
|
|
|
case SelShowType.LengthText: |
|
|
|
|
//选中面 每条边长度标记 |
|
|
|
|
// if(PlaneType.Girdle == entity.PlaneType)break; |
|
|
|
|
result.AddRange(GenerateLineTextModels(selPanel)); |
|
|
|
|
result.AddRange(GenerateLineTextModels(selPanel, valKey)); |
|
|
|
|
break; |
|
|
|
|
case SelShowType.BorderAngle: |
|
|
|
|
//选中面 每条边向内的夹角 |
|
|
|
@ -1377,13 +1402,23 @@ public class ViewportHelperPro |
|
|
|
|
{ |
|
|
|
|
switch (type) |
|
|
|
|
{ |
|
|
|
|
case "DIAMETER": return hasUnit ? $"{v.ToString("F1")}mm" : v.ToString("F1"); |
|
|
|
|
case "CROWN_ANGLE": |
|
|
|
|
case "DIAMETER": |
|
|
|
|
v = Math.Floor(v * 10) / 10; |
|
|
|
|
return hasUnit ? $"{v.ToString("F1")}mm" : v.ToString("F1"); |
|
|
|
|
case "PAV_ANGLE": |
|
|
|
|
case "TWIST": return hasUnit ? $"{v.ToString("F1")}°" : v.ToString("F1"); |
|
|
|
|
case "TWIST": |
|
|
|
|
v = Math.Floor(v * 10) / 10; |
|
|
|
|
return hasUnit ? $"{v.ToString("F1")}°" : v.ToString("F1"); |
|
|
|
|
case "CROWN_ANGLE": |
|
|
|
|
v = Math.Floor(v * 10) / 10; |
|
|
|
|
return hasUnit ? $"{v.ToString("F1")}°" :v.ToString("F1"); |
|
|
|
|
case "TABLE": |
|
|
|
|
//var vv = v % 0.5 |
|
|
|
|
// case "CROWN HEIGHT": |
|
|
|
|
// case "PAV DEPTH": |
|
|
|
|
v *= 100; |
|
|
|
|
return hasUnit ? $"{(Math.Round(v / 0.5) * 0.5).ToString("F1")}%" : (Math.Round(v / 0.5) * 0.5).ToString("F1"); |
|
|
|
|
default: |
|
|
|
|
v = Math.Floor(v * 1000) / 1000; |
|
|
|
|
return hasUnit ? $"{(v*100).ToString("F1")}%" : (v*100).ToString("F1"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|