Merge remote-tracking branch 'origin/master'

master
sunhonglei 7 months ago
commit 11c7d74a30
  1. 5
      App.xaml.cs
  2. 1
      Language/zh_CN.xaml
  3. 8
      MainWindow.xaml.cs
  4. BIN
      Resource/Images/UIResource/03-0.jpg
  5. 4
      SparkClient.csproj
  6. 1
      SparkClient.sln.DotSettings.user
  7. 13
      Views/BaseWindow/BaseControl.xaml
  8. 5
      Views/UserControl/Viewport3D.xaml
  9. 20
      Views/UserControl/Viewport3D.xaml.cs
  10. 77
      Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs
  11. 6
      Views/UserControl/ViewportData/Helper/ViewportManager.cs

@ -2,6 +2,8 @@
using System.Data; using System.Data;
using System.IO; using System.IO;
using System.Windows; using System.Windows;
using System.Windows.Media;
using System.Windows.Threading;
using log4net.Config; using log4net.Config;
using SparkClient.Model.Helper; using SparkClient.Model.Helper;
@ -19,5 +21,8 @@ public partial class App : Application
XmlConfigurator.Configure(new FileInfo("log4net.config")); XmlConfigurator.Configure(new FileInfo("log4net.config"));
//运行是否需要归档 //运行是否需要归档
Log4NetHelper.ArchiveOldLogs(); Log4NetHelper.ArchiveOldLogs();
//打开数据库连接
//读取数据库多语言配置
} }
} }

@ -141,6 +141,7 @@
<sys:String x:Key="ViewportRightMenuSelectFaceFrame">显示选择面的边框</sys:String> <sys:String x:Key="ViewportRightMenuSelectFaceFrame">显示选择面的边框</sys:String>
<sys:String x:Key="ViewportRightMenuSelectFaceLengthText">显示选择面边框长度文本</sys:String> <sys:String x:Key="ViewportRightMenuSelectFaceLengthText">显示选择面边框长度文本</sys:String>
<sys:String x:Key="ViewportRightMenuSelectFaceAngleText">显示选择面夹角角度文本</sys:String> <sys:String x:Key="ViewportRightMenuSelectFaceAngleText">显示选择面夹角角度文本</sys:String>
<sys:String x:Key="ViewportRightMenuSelectFaceText">显示关联信息文本</sys:String>
<sys:String x:Key="ViewportRightMenuSelectFaceKind">显示选择面的同类面</sys:String> <sys:String x:Key="ViewportRightMenuSelectFaceKind">显示选择面的同类面</sys:String>
<sys:String x:Key="ViewportRightMenuShowDefectFace">显示瑕疵面</sys:String> <sys:String x:Key="ViewportRightMenuShowDefectFace">显示瑕疵面</sys:String>
<sys:String x:Key="ViewportRightMenuShowFront">显示正方向标识</sys:String> <sys:String x:Key="ViewportRightMenuShowFront">显示正方向标识</sys:String>

@ -3,6 +3,7 @@ using System.IO;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Media; using System.Windows.Media;
using System.Windows.Media.Animation; using System.Windows.Media.Animation;
using HandyControl.Controls; using HandyControl.Controls;
@ -37,8 +38,15 @@ public partial class MainWindow
this.WindowState = WindowState.Minimized; this.WindowState = WindowState.Minimized;
}; };
} }
// 强制设置应用窗口大小为 1920x1080
this.Width = 1920;
this.Height = 1080;
} }
public static extern int GetDpiForSystem();
protected override void OnContentRendered(EventArgs e) protected override void OnContentRendered(EventArgs e)
{ {
base.OnContentRendered(e); base.OnContentRendered(e);

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

@ -74,7 +74,7 @@
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None> </None>
<None Update="SparkDB.db"> <None Update="SparkDB.db">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None> </None>
<None Remove="Resource\Images\config_3x.png" /> <None Remove="Resource\Images\config_3x.png" />
<None Remove="Resource\Images\diam_3x.png" /> <None Remove="Resource\Images\diam_3x.png" />
@ -181,6 +181,8 @@
<Resource Include="Resource\Images\UIResource\08-4.png" /> <Resource Include="Resource\Images\UIResource\08-4.png" />
<None Remove="Resource\Images\UIResource\08-5.jpg" /> <None Remove="Resource\Images\UIResource\08-5.jpg" />
<Resource Include="Resource\Images\UIResource\08-5.jpg" /> <Resource Include="Resource\Images\UIResource\08-5.jpg" />
<None Remove="Resource\Images\UIResource\03-0.jpg" />
<Resource Include="Resource\Images\UIResource\03-0.jpg" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

@ -34,6 +34,7 @@
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMessageBox_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Ffdc001c928464b80ad45ffa09b838a3a15e200_003F55_003F1a844f6e_003FMessageBox_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMessageBox_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Ffdc001c928464b80ad45ffa09b838a3a15e200_003F55_003F1a844f6e_003FMessageBox_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARoutedEventArgs_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F1a88b4a860176dd5f825206bbebf3ee3d44ff3f058ceed9eb693c1eaa018_003FRoutedEventArgs_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARoutedEventArgs_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F1a88b4a860176dd5f825206bbebf3ee3d44ff3f058ceed9eb693c1eaa018_003FRoutedEventArgs_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARuntimeType_002ECoreCLR_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F955ec549fe664629353c3b5424b6ad6c7dfcec4ab59bae709ab962c228cf45_003FRuntimeType_002ECoreCLR_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARuntimeType_002ECoreCLR_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F955ec549fe664629353c3b5424b6ad6c7dfcec4ab59bae709ab962c228cf45_003FRuntimeType_002ECoreCLR_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASqliteCommand_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc7a59cb727594ed7a94648b2d66dbf702aa28_003F2f_003Fdc5f3094_003FSqliteCommand_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATaskCompletionSource_00601_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5147b10c5a8c4522b56fba0a889139cfc8f908_003Ffc_003Fe9092391_003FTaskCompletionSource_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATaskCompletionSource_00601_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5147b10c5a8c4522b56fba0a889139cfc8f908_003Ffc_003Fe9092391_003FTaskCompletionSource_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATextInfo_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F68d37d16685244cf9996bf767117a771210200_003F3a_003Ff14dd285_003FTextInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATextInfo_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F68d37d16685244cf9996bf767117a771210200_003F3a_003Ff14dd285_003FTextInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fcca5cfb955e146648d91eb22ffe4627a84930_003F7a_003F2d86be72_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fcca5cfb955e146648d91eb22ffe4627a84930_003F7a_003F2d86be72_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>

@ -45,14 +45,15 @@
<RowDefinition Height="*"/> <RowDefinition Height="*"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid Grid.Row="0" Height="50" VerticalAlignment="Top" MouseLeftButtonDown="UIElement_OnMouseLeftButtonDown"> <Grid Grid.Row="0" Height="80" VerticalAlignment="Top" MouseLeftButtonDown="UIElement_OnMouseLeftButtonDown">
<!-- 渐变背景 --> <!-- 渐变背景 -->
<Grid.Background> <Grid.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0"> <ImageBrush ImageSource="../../Resource/Images/UIResource/03-0.jpg"></ImageBrush>
<GradientStop Color="#e8eaf7" Offset="0" /> <!-- <LinearGradientBrush StartPoint="0,0" EndPoint="1,0"> -->
<GradientStop Color="#e8eaf7" Offset="0.5" /> <!-- <GradientStop Color="#e8eaf7" Offset="0" /> -->
<GradientStop Color="#d5d7f0" Offset="1" /> <!-- <GradientStop Color="#e8eaf7" Offset="0.7" /> -->
</LinearGradientBrush> <!-- <GradientStop Color="#d5d7f0" Offset="1" /> -->
<!-- </LinearGradientBrush> -->
</Grid.Background> </Grid.Background>
<!-- 顶部布局 --> <!-- 顶部布局 -->
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>

@ -63,8 +63,9 @@
<Separator /> <Separator />
<MenuItem Header="{StaticResource ViewportRightMenuSelectFace}" x:Name="ViewportRightMenuSelectFace" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/> <MenuItem Header="{StaticResource ViewportRightMenuSelectFace}" x:Name="ViewportRightMenuSelectFace" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
<MenuItem Header="{StaticResource ViewportRightMenuSelectFaceFrame}" x:Name="ViewportRightMenuSelectFaceFrame" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/> <MenuItem Header="{StaticResource ViewportRightMenuSelectFaceFrame}" x:Name="ViewportRightMenuSelectFaceFrame" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
<MenuItem Header="{StaticResource ViewportRightMenuSelectFaceLengthText}" x:Name="ViewportRightMenuSelectFaceLengthText" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/> <MenuItem Header="{StaticResource ViewportRightMenuSelectFaceText}" x:Name="ViewportRightMenuSelectFaceText" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
<MenuItem Header="{StaticResource ViewportRightMenuSelectFaceAngleText}" x:Name="ViewportRightMenuSelectFaceAngleText" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/> <!-- <MenuItem Header="{StaticResource ViewportRightMenuSelectFaceLengthText}" x:Name="ViewportRightMenuSelectFaceLengthText" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/> -->
<!-- <MenuItem Header="{StaticResource ViewportRightMenuSelectFaceAngleText}" x:Name="ViewportRightMenuSelectFaceAngleText" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/> -->
<MenuItem Header="{StaticResource ViewportRightMenuSelectFaceKind}" x:Name="ViewportRightMenuSelectFaceKind" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/> <MenuItem Header="{StaticResource ViewportRightMenuSelectFaceKind}" x:Name="ViewportRightMenuSelectFaceKind" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
</ContextMenu> </ContextMenu>
</Border.ContextMenu> </Border.ContextMenu>

@ -44,16 +44,18 @@ public partial class Viewport3D
//选项初始化 显示-后端-管理类 一致 //选项初始化 显示-后端-管理类 一致
ViewportRightMenuSelectFaceFrame.IsEnabled = ViewportRightMenuSelectFace.IsChecked ; ViewportRightMenuSelectFaceFrame.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuSelectFaceLengthText.IsEnabled = ViewportRightMenuSelectFace.IsChecked ; // ViewportRightMenuSelectFaceLengthText.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuSelectFaceAngleText.IsEnabled = ViewportRightMenuSelectFace.IsChecked ; // ViewportRightMenuSelectFaceAngleText.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuSelectFaceText.IsCheckable = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuSelectFaceKind.IsEnabled = ViewportRightMenuSelectFace.IsChecked ; ViewportRightMenuSelectFaceKind.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuShowModelFace.IsChecked = true; ViewportRightMenuShowModelFace.IsChecked = true;
ViewportRightMenuShowModelFrame.IsChecked = true; ViewportRightMenuShowModelFrame.IsChecked = true;
ViewportRightMenuShowLighting.IsChecked = true; ViewportRightMenuShowLighting.IsChecked = true;
ViewportRightMenuSelectFace.IsChecked = ViewportManager.DoubleClickSelect; ViewportRightMenuSelectFace.IsChecked = ViewportManager.DoubleClickSelect;
ViewportRightMenuSelectFaceFrame.IsChecked = ViewportManager.DoubleClickSelectShowBorder; ViewportRightMenuSelectFaceFrame.IsChecked = ViewportManager.DoubleClickSelectShowBorder;
ViewportRightMenuSelectFaceLengthText.IsChecked = ViewportManager.DoubleClickSelectShowBorderLength; // ViewportRightMenuSelectFaceLengthText.IsChecked = ViewportManager.DoubleClickSelectShowBorderLength;
ViewportRightMenuSelectFaceAngleText.IsChecked = ViewportManager.DoubleClickSelectShowBorderAngle; // ViewportRightMenuSelectFaceAngleText.IsChecked = ViewportManager.DoubleClickSelectShowBorderAngle;
ViewportRightMenuSelectFaceText.IsChecked = ViewportManager.DoubleClickSelectShowInfoText;
ViewportRightMenuSelectFaceKind.IsChecked = ViewportManager.DoubleClickSelectShowPlaneType; ViewportRightMenuSelectFaceKind.IsChecked = ViewportManager.DoubleClickSelectShowPlaneType;
@ -262,8 +264,9 @@ public partial class Viewport3D
private void MenuItem_OnCheckedChanged(object sender, RoutedEventArgs e) private void MenuItem_OnCheckedChanged(object sender, RoutedEventArgs e)
{ {
ViewportRightMenuSelectFaceFrame.IsEnabled = ViewportRightMenuSelectFace.IsChecked ; ViewportRightMenuSelectFaceFrame.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuSelectFaceLengthText.IsEnabled = ViewportRightMenuSelectFace.IsChecked ; // ViewportRightMenuSelectFaceLengthText.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuSelectFaceAngleText.IsEnabled = ViewportRightMenuSelectFace.IsChecked ; // ViewportRightMenuSelectFaceAngleText.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuSelectFaceText.IsCheckable = ViewportRightMenuSelectFace.IsChecked ;
ViewportRightMenuSelectFaceKind.IsEnabled = ViewportRightMenuSelectFace.IsChecked ; ViewportRightMenuSelectFaceKind.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
var controlName = ((MenuItem)sender).Name.ToString(); var controlName = ((MenuItem)sender).Name.ToString();
@ -313,6 +316,11 @@ public partial class Viewport3D
ViewportManager.DoubleClickSelectShowBorderLength = checkResult; ViewportManager.DoubleClickSelectShowBorderLength = checkResult;
ViewportManager.ResetChooseAddModels(); ViewportManager.ResetChooseAddModels();
break; break;
case "ViewportRightMenuSelectFaceText":
//双击选择面的边框长度文字
ViewportManager.DoubleClickSelectShowInfoText = checkResult;
ViewportManager.ResetChooseAddModels();
break;
case "ViewportRightMenuSelectFaceAngleText": case "ViewportRightMenuSelectFaceAngleText":
//双击选择面的边框夹角文字 //双击选择面的边框夹角文字
ViewportManager.DoubleClickSelectShowBorderAngle = checkResult; ViewportManager.DoubleClickSelectShowBorderAngle = checkResult;

@ -431,8 +431,11 @@ public class ViewportHelperPro
public static List<GeometryModel3D> GenerateLineTextModels(List<Viewport3DTriangleEntity> entities, public static List<GeometryModel3D> GenerateLineTextModels(List<Viewport3DTriangleEntity> entities,
Color4? textColor = null,bool showAll = false) Color4? textColor = null,bool showAll = false)
{ {
var selFacet = entities;
var selFacetType = entities.First().PlaneType;
var result = new List<GeometryModel3D>(); var result = new List<GeometryModel3D>();
if (entities.Count > 0 && entities[0].PlaneType == PlaneType.Girdle) if (selFacetType == PlaneType.Girdle)
{ {
if (ViewportManager.MainModelGirdleMaxLines != null || ViewportManager.MainModelGirdleMinLines != null || if (ViewportManager.MainModelGirdleMaxLines != null || ViewportManager.MainModelGirdleMinLines != null ||
ViewportManager.MainModelGirdleAvgLines != null) ViewportManager.MainModelGirdleAvgLines != null)
@ -447,30 +450,52 @@ public class ViewportHelperPro
} }
else else
{ {
var selFaceVector = entities //查找同类面
.SelectMany(entity => new[] { entity.Point1, entity.Point2, entity.Point3 }) List<Viewport3DTriangleEntity> facetTypeAll =
.Distinct() ViewportManager.ViewportTriangle.FindAll(e => e.PlaneType == selFacetType);
.ToList(); var groupedDic = facetTypeAll.GroupBy(entity => entity.PlaneCode)
var uniqueLines = new HashSet<string>(); .ToDictionary(group => group.Key, group => group.ToList());
var sortedVectors = VectorClockwiseSort(selFaceVector);
for (int i = 0; i < sortedVectors.Count; i++)
{
var current = sortedVectors[i];
var next = sortedVectors[(i + 1) % sortedVectors.Count];
double length = (next - current).Length(); /***
string lineKey = $"{length:F2}"; *
if (showAll == false) * 1181664other
{ * 2
if (uniqueLines.Contains(lineKey)) continue; * 1
uniqueLines.Add(lineKey); * 80-7 -> 1-8
} * 161-23-45-67-89-1011-1213-1415-0
var midPoint = (current + next) / 2; * 64else里的东西来
var text = $"{length:F2}mm"; * 3
var textY = midPoint.Y > ViewportManager.CenterVector.Y ? midPoint.Y + 0.3f : midPoint.Y - 0.3f; * 4Manager里制定面-
var lengthTextModel = DisplayText3D(text, new Vector3(midPoint.X, textY, midPoint.Z),next - current, textColor); * 5
result.Add(lengthTextModel); * 6
} * -id的文本
* +0.1"个单位 显示文本
*/
// var selFaceVector = entities
// .SelectMany(entity => new[] { entity.Point1, entity.Point2, entity.Point3 })
// .Distinct()
// .ToList();
// var uniqueLines = new HashSet<string>();
// var sortedVectors = VectorClockwiseSort(selFaceVector);
// for (int i = 0; i < sortedVectors.Count; i++)
// {
// var current = sortedVectors[i];
// var next = sortedVectors[(i + 1) % sortedVectors.Count];
//
// double length = (next - current).Length();
// string lineKey = $"{length:F2}";
// if (showAll == false)
// {
// if (uniqueLines.Contains(lineKey)) continue;
// uniqueLines.Add(lineKey);
// }
// var midPoint = (current + next) / 2;
// var text = $"{length:F2}mm";
// var textY = midPoint.Y > ViewportManager.CenterVector.Y ? midPoint.Y + 0.3f : midPoint.Y - 0.3f;
// var lengthTextModel = DisplayText3D(text, new Vector3(midPoint.X, textY, midPoint.Z),next - current, textColor);
// result.Add(lengthTextModel);
// }
} }
@ -1106,11 +1131,11 @@ public class ViewportHelperPro
avgLine = lineLengths.OrderBy(l => Math.Abs(l.Length - lineLengths.Average(ll => ll.Length))) avgLine = lineLengths.OrderBy(l => Math.Abs(l.Length - lineLengths.Average(ll => ll.Length)))
.First().Line; .First().Line;
} }
private static float CalculateLength(Tuple<Vector3, Vector3> line) private static double CalculateLength(Tuple<Vector3, Vector3> line)
{ {
Vector3 startPoint = line.Item1; Vector3 startPoint = line.Item1;
Vector3 endPoint = line.Item2; Vector3 endPoint = line.Item2;
return Vector3.Distance(startPoint, endPoint); return Math.Round(Vector3.Distance(startPoint, endPoint), 2);
} }
#endregion #endregion

@ -91,6 +91,8 @@ public class ViewportManager
public static bool DoubleClickSelectShowBorderLength = false; public static bool DoubleClickSelectShowBorderLength = false;
//选中边框夹角文字 //选中边框夹角文字
public static bool DoubleClickSelectShowBorderAngle = false; public static bool DoubleClickSelectShowBorderAngle = false;
public static bool DoubleClickSelectShowInfoText = false;
//选中同类面 //选中同类面
public static bool DoubleClickSelectShowPlaneType = true; public static bool DoubleClickSelectShowPlaneType = true;
//选中三角形代码 //选中三角形代码
@ -112,8 +114,8 @@ public class ViewportManager
HashSet<SelShowType> models = new HashSet<SelShowType>(); HashSet<SelShowType> models = new HashSet<SelShowType>();
models.Add(SelShowType.SelPanel); models.Add(SelShowType.SelPanel);
if(DoubleClickSelectShowBorder) models.Add(SelShowType.Border); if(DoubleClickSelectShowBorder) models.Add(SelShowType.Border);
if (DoubleClickSelectShowBorderLength) models.Add(SelShowType.LengthText); if (DoubleClickSelectShowInfoText) models.Add(SelShowType.LengthText);
if (DoubleClickSelectShowBorderAngle) models.Add(SelShowType.BorderAngle); // if (DoubleClickSelectShowBorderAngle) models.Add(SelShowType.BorderAngle);
if (DoubleClickSelectShowPlaneType) models.Add(SelShowType.IsTypePanel); if (DoubleClickSelectShowPlaneType) models.Add(SelShowType.IsTypePanel);
ChooseAddModels.AddRange( ViewportHelperPro.GentrateChosenView(ChooseTriangleCode, models.ToArray())); ChooseAddModels.AddRange( ViewportHelperPro.GentrateChosenView(ChooseTriangleCode, models.ToArray()));
ChooseAddModels.ForEach(e => _viewport.Items.Add(e)); ChooseAddModels.ForEach(e => _viewport.Items.Add(e));

Loading…
Cancel
Save