Feat: Logs Add

master
Tongg 9 months ago
parent 5e21cb8788
commit 9f68f17e95
  1. 2
      App.config
  2. 30
      LoginWindow.xaml.cs
  3. 5
      MainWindow.xaml.cs
  4. 18
      Model/Attributes/LogAttribute.cs
  5. 4
      Model/Helper/Common.cs
  6. 38
      SparkClient.sln.DotSettings.user
  7. 6
      ViewModel/BaseWindow/BaseControlVM.cs
  8. 7
      ViewModel/Configuration/AlgorithmConfigVM.cs
  9. 34
      ViewModel/Grading/GradingLoadingVM.cs
  10. 8
      ViewModel/Grading/GradingResultVM.cs
  11. 3
      Views/HelperPage.xaml.cs
  12. 12
      Views/UserControl/Viewport3D.xaml.cs
  13. 17
      Views/UserControl/ViewportData/Helper/CommonHelper.cs
  14. 8
      Views/UserControl/ViewportData/Helper/ObjExporter.cs
  15. 11
      Views/UserControl/ViewportData/Helper/RayHelper.cs
  16. 14
      Views/UserControl/ViewportData/Helper/VideoHelper.cs
  17. 90
      Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs
  18. 4
      Views/UserControl/ViewportData/Helper/ViewportManager.cs
  19. 9
      Views/UserControl/ViewportData/ViewportData.cs

@ -18,7 +18,7 @@
<add key="ProgressTime" value="50000"/>
<add key="RunModel" value="0" />
<add key="AppVersion" value="1.0.20250401" />
<add key="AppVersion" value="Nlsqq/kAPIXFHKk9dFcfqw==" />
</appSettings>
<connectionStrings>
<add name="" connectionString=""/>

@ -7,6 +7,7 @@ using System.Text;
using System.Windows;
using System.Windows.Input;
using Microsoft.Win32;
using SparkClient.Model.Attributes;
using MessageBox = SparkClient.Views.Dialog.MessageBox;
namespace SparkClient;
@ -19,13 +20,23 @@ public partial class LoginWindow : Window
WindowStartupLocation = WindowStartupLocation.CenterScreen;
AccountTextBox.Text = Settings.SelectValueById("SAVE_ACCOUNT");
PasswordBox.Password = Settings.SelectValueById("SAVE_PASSWORD");
TBlockAppVersion.Text = $"Version {ConfigurationHelper.ReadConfigValue("AppVersion")}";
try
{
string version = AESHelper.Decrypt(ConfigurationHelper.ReadConfigValue("AppVersion"));
TBlockAppVersion.Text = $"Version {version}";
}
catch
{
TBlockAppVersion.Text = $"Illegal Version";
}
//checkCUDA();
checkNvidia();
// 检测MSVCRuntime是否安装
checkMSVCRuntime();
}
[Log]
private void checkNvidia()
{
string nvidiaVersion = "";
@ -90,7 +101,7 @@ public partial class LoginWindow : Window
messageBox.Show(MultilingualHelper.getString("NotNvidia"));
}
}
[Log]
public static int CompareVersions(string versionA, string versionB)
{
int[] partsA = ParseVersion(versionA);
@ -110,6 +121,7 @@ public partial class LoginWindow : Window
return 0; // 版本相同
}
[Log]
private static int[] ParseVersion(string version)
{
string[] stringParts = version.Split('.');
@ -126,6 +138,7 @@ public partial class LoginWindow : Window
return intParts;
}
[Log]
private void checkCUDA()
{
try
@ -164,6 +177,7 @@ public partial class LoginWindow : Window
Logger.Error("CUDA 安装检测错误:"+ ex);
}
}
[Log]
private void checkMSVCRuntime()
{
try
@ -204,6 +218,7 @@ public partial class LoginWindow : Window
Environment.Exit(0); // 退出程序
}
}
[Log]
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (e.ButtonState == MouseButtonState.Pressed)
@ -211,12 +226,12 @@ public partial class LoginWindow : Window
this.DragMove();
}
}
[Log]
private void UIElement_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
AccountTextBox.Text = string.Empty;
}
[Log]
private void CloseButton_OnClick(object sender, RoutedEventArgs e)
{
this.Close();
@ -245,7 +260,7 @@ public partial class LoginWindow : Window
this.Close();
#endif
}
[Log]
private void savePassword()
{
if (IsRemberPassword.IsChecked ?? false)
@ -292,7 +307,7 @@ public partial class LoginWindow : Window
};
PERMISSIONS.insert();
}
[Log]
private string getPassword(string userName)
{
string password = string.Empty;
@ -304,6 +319,7 @@ public partial class LoginWindow : Window
}
return password;
}
[Log]
private void PasswordBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)

@ -10,6 +10,7 @@ using HandyControl.Controls;
using HandyControl.Tools;
using log4net;
using log4net.Config;
using SparkClient.Model.Attributes;
using SparkClient.Model.Helper;
using SparkClient.Model.Services;
using SparkClient.ViewModel;
@ -30,7 +31,7 @@ public partial class MainWindow
public MainWindow()
{
InitializeComponent();
Logger.Info("Application started");
var vm = DataContext as MainWindowViewModel;
if (vm != null)
{
@ -47,7 +48,7 @@ public partial class MainWindow
}
public static extern int GetDpiForSystem();
[Log]
protected override void OnContentRendered(EventArgs e)
{
base.OnContentRendered(e);

@ -18,15 +18,15 @@ namespace SparkClient.Model.Attributes
{
//Logger.Debug($"Entering {context.Method.DeclaringType?.Name}.{context.Method.Name}");
// 获取方法参数
var parameters = context.Method.GetParameters();
var arguments = context.Arguments;
// 构建参数字符串
var parameterLog = new StringBuilder();
for (int i = 0; i < parameters.Length; i++)
{
parameterLog.Append($"{parameters[i].Name} = {arguments[i]}, ");
}
// var parameters = context.Method.GetParameters();
// var arguments = context.Arguments;
//
// // 构建参数字符串
// var parameterLog = new StringBuilder();
// for (int i = 0; i < parameters.Length; i++)
// {
// parameterLog.Append($"{parameters[i].Name} = {arguments[i]}, ");
// }
// 记录日志
//Logger.Debug($"Entering {context.Method.DeclaringType?.Name}.{context.Method.Name} with parameters: {parameterLog}");

@ -11,9 +11,9 @@ public class Common
public const string DatabasePwd = "DyumL4FvF6wVHWw";
public const string AesKey = "JbI36Snd3s+QjlOcz5dytgkL5W6OnFEV5ZNRg/OYp58=";
public const string AesKey = "2AB6AA27B1302AEB747E952D5C5C73B9";
public const string AesIV = "QRYL9P9NcV9Uny29DqEBqg==";
public const string AesIV = "B1302AEB747E952D";
public static readonly string BasePath = AppDomain.CurrentDomain.BaseDirectory;

@ -1,12 +1,11 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=F_003A_005CWorkSpace_005CRider_005CSparkClient_005Cbin_005CDebug_005Cnet8_002E0_002Dwindows_005CSparkDotNetCore_002Edll/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=C_003A_005CWindows_005Cassembly_005CGAC_005FMSIL_005Coffice_005C15_002E0_002E0_002E0_005F_005F71e9bce111e9429c_005COFFICE_002EDLL/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=D_003A_005CWorkSpace_005Cspark_005CSparkClient_005Cbin_005CRelease_005Cnet8_002E0_002Dwindows_005CSparkDotNetCore_002Edll/@EntryIndexedValue">True</s:Boolean>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAsyncStreamReader_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F4a26a752ec6249c4a090905d31c0cdfa528a0_003F4d_003Fa3eda23d_003FAsyncStreamReader_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAsyncStreamReader_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F5657934e169f1e03f1713934a999de82e80b02c892c78df9913e46e2e681e_003FAsyncStreamReader_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAsyncTaskMethodBuilder_00601_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003F93_003F031cf753_003FAsyncTaskMethodBuilder_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAsyncTaskMethodBuilder_00601_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F243a037ca7a04510a506adfdd94befbac90930_003F84_003F376f943b_003FAsyncTaskMethodBuilder_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAsyncVoidMethodBuilder_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003F18_003Feb00c5a4_003FAsyncVoidMethodBuilder_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABaseUriHelper_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fbfd90ad81939493b96034353abcd1045825908_003Fdc_003Fff55e936_003FBaseUriHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABitmapDecoder_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F07bfb99174b741c3b7fe42eda0be362a825938_003Ff4_003F7111d5e4_003FBitmapDecoder_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABrushes_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F96a561fe76144633acef44f09d0dcb8a825920_003F7e_003F126cf976_003FBrushes_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AButtonBase_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F6412d4331611499aab4eb63809a2a83bf60910_003Ffb_003F3185652c_003FButtonBase_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AButtonBase_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F6412d4331611499aab4eb63809a2a83bf60910_003Ffb_003F3185652c_003FButtonBase_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
@ -14,23 +13,25 @@
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AButton_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F6412d4331611499aab4eb63809a2a83bf60910_003F94_003F46375460_003FButton_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AButton_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F89a2b53da2e32f22f450ecab5f59ea9f03bfe76b409627069931a786fcee_003FButton_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACallerMemberNameAttribute_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003F33_003F7a9a7620_003FCallerMemberNameAttribute_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACastCache_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003F0d_003F69770120_003FCastCache_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AClrObjectRuntime_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fab21534b1ec041498b3c23a65e9ed82b15a918_003F19_003F3f4e517b_003FClrObjectRuntime_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AColor_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc45597e5b7ab42d99b3882b94d97e64034a00_003Ffb_003F5b076364_003FColor_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AComponent_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fb0b0c4a2151d399b735ee25ece57ad68175a5c695936bef89d53e293f47c75_003FComponent_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AConfigurationManager_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F4855f825db5f4f469faf36f45940559e106918_003Fff_003Fb357c8b2_003FConfigurationManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AConfigurationManager_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F4855f825db5f4f469faf36f45940559e106918_003Fff_003Fb357c8b2_003FConfigurationManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AContentControl_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F27bb3fae2c21cbe9a2565477feaa7a5b3a19cd779b4a91a98edfff9cd468972_003FContentControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACulturePreservingExecutionContext_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fbc9a074a2f204631bd77a8b9ba934b50226928_003Fd3_003Fb047e8cb_003FCulturePreservingExecutionContext_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADefaultInterpolatedStringHandler_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003F79_003Fabab4420_003FDefaultInterpolatedStringHandler_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADependencyObject_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F60b63c019ead4a238340b47a1c0010d5226910_003Fca_003F09e9dbc0_003FDependencyObject_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADictionary_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F387238ef9c8f8c6b1dccf4dcba4eed0e459454919b2e4b9cad11a5071789df_003FDictionary_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADispatcherOperation_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F60b63c019ead4a238340b47a1c0010d5226910_003Fd8_003F13c94a2a_003FDispatcherOperation_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADispatcherOperation_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F09fbc1bf68d246cebb5d616191a1b5b5226918_003Fe0_003F8d2a4875_003FDispatcherOperation_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADispatcherOperation_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F60b63c019ead4a238340b47a1c0010d5226910_003Fd8_003F13c94a2a_003FDispatcherOperation_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADispatcher_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F09fbc1bf68d246cebb5d616191a1b5b5226918_003Fa2_003F6dbb8418_003FDispatcher_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADispatcher_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F60b63c019ead4a238340b47a1c0010d5226910_003Ff6_003F1c45f799_003FDispatcher_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADispatcher_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F60b63c019ead4a238340b47a1c0010d5226910_003Ff6_003F1c45f799_003FDispatcher_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADispatcher_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F9ac32f819d6853e0a6eda168c52b7f38eef9ae75936fb85d96a15c39d115245_003FDispatcher_002Ecs_002Fz_003A2_002D0/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADispatcher_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F9ac32f819d6853e0a6eda168c52b7f38eef9ae75936fb85d96a15c39d115245_003FDispatcher_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADouble_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003F58_003F8e334cc5_003FDouble_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AEnumerable_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fcca5cfb955e146648d91eb22ffe4627a84930_003F82_003F5c4de7b7_003FEnumerable_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AEventRoute_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F4bda76b5cc453e1edf5d5c754c4a8215edbd3d3e4f80706dcf4f52a4f68979_003FEventRoute_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AEventRoute_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F96a561fe76144633acef44f09d0dcb8a825920_003Fb0_003F8f1a0289_003FEventRoute_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AEventToCommand_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F436b6c3e323d68842c9e251322f5d42b47569f7c925e63aa245dc65465d2843_003FEventToCommand_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
@ -38,20 +39,21 @@
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AExceptionDispatchInfo_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fbd1d5c50194fea68ff3559c160230b0ab50f5acf4ce3061bffd6d62958e2182_003FExceptionDispatchInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AExceptionDispatchInfo_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F8a03fcac5714437e83949a44ecf2e771c90920_003F6e_003F464f2557_003FExceptionDispatchInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AExceptionDispatchInfo_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fbd1d5c50194fea68ff3559c160230b0ab50f5acf4ce3061bffd6d62958e2182_003FExceptionDispatchInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AExceptionWrapper_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F09fbc1bf68d246cebb5d616191a1b5b5226918_003F7a_003F4473075a_003FExceptionWrapper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AExecutionContext_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003F35_003F053c62c1_003FExecutionContext_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AExecutionContext_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F243a037ca7a04510a506adfdd94befbac90930_003F13_003F371ed1af_003FExecutionContext_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AExporter_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F876888135b7d44baac30e9ec038e9f39f200_003F56_003F10f4418e_003FExporter_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFacet_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F26799665587e4e19ab5c96d588ccf350bc00_003Fbd_003Fbce2944a_003FFacet_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFileSystem_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F4c69bf2d25bb4f2497b2dbd14727a7811308b0_003F9b_003F7ca26691_003FFileSystem_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFile_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003F00_003Fb0994fb0_003FFile_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFolderBrowserDialog_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F1f2f0b08d2574f1aa35973d1cd0ae347cef920_003Fc5_003Fcd61a412_003FFolderBrowserDialog_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFrameworkElement_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F6412d4331611499aab4eb63809a2a83bf60910_003F07_003Fdab5922a_003FFrameworkElement_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFrameworkElement_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F6412d4331611499aab4eb63809a2a83bf60910_003F07_003Fdab5922a_003FFrameworkElement_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFrameworkTemplate_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F6412d4331611499aab4eb63809a2a83bf60910_003Fdb_003F9492c998_003FFrameworkTemplate_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AFuture_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F6f90c6c13479b8c2a5be98f3d75dfc3bd885a055652d8a32904ca2448132949e_003FFuture_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGraphics_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fb6416db4533e4255bc43c1cfd556a910175930_003Fa9_003Ff7e2a9a8_003FGraphics_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGuid_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003Faa_003Fa49e75b9_003FGuid_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AHorizontalAlignment_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F6412d4331611499aab4eb63809a2a83bf60910_003F45_003F96f9f663_003FHorizontalAlignment_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AHotKeyManager_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fd5c1718d5e8747ee92425852975506512400_003Fed_003Fdddc73e1_003FHotKeyManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AHttpContent_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F99f9cf07abc74d3fb3bed9a41bc5b3141a68b0_003F96_003F9899e487_003FHttpContent_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AILog_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fcd69d110241e68c102d90de60fe9abbdef79631973c35119af9fe6139bcdbc_003FILog_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AILog_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F6f4e00a876324444bc5ae4e52ed22ade46200_003F49_003Fe673ccfc_003FILog_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AInputManager_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F59d3cbd3f2f27be170d8c07c2c3947fe0efe92848ebab828a63cfbe1ef3a1d_003FInputManager_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
@ -68,32 +70,36 @@
<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_003F476b8dbfd2cb40ab8ff230fdcda5e37081d20_003F0e_003F12425a46_003FMessageBox_002Ecs_002Fz_003A2_002D1/@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_003AMethodBaseInvoker_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fd882146b4f265f10bcbec2663fce248db9ffec5fa1aeaf76e32a11ba5eafcd6_003FMethodBaseInvoker_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMonitor_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003F29_003Fbcd9b851_003FMonitor_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AObjExporter_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F68d37d16685244cf9996bf767117a771210200_003Fb5_003F8d39bfb2_003FObjExporter_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003APictureBoxSizeMode_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F1f2f0b08d2574f1aa35973d1cd0ae347cef920_003Fb2_003F76f4e66c_003FPictureBoxSizeMode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003APortableThreadPool_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F243a037ca7a04510a506adfdd94befbac90930_003Fc7_003Fe24f8349_003FPortableThreadPool_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003APrintController_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fb6416db4533e4255bc43c1cfd556a910175930_003Fd9_003Fccfaf320_003FPrintController_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003APrintDocument_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fd36f5542a36946fd848d7e2cc5ad4b96175928_003Fb9_003F07399a56_003FPrintDocument_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003APrintPreviewDialog_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F1f2f0b08d2574f1aa35973d1cd0ae347cef920_003F07_003Fd26ee918_003FPrintPreviewDialog_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AProcess_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fdf65fa90bd99487685aab638b8da0da252928_003F6c_003Fc1aa1dce_003FProcess_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AProcess_002EWindows_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F56dbd817965a6c8ddb04d88402812c2ed2a2bc9705cb97f04c24c4916cfcf_003FProcess_002EWindows_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003APropertyChangedEventArgs_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F4a37508f5f72412da47f18c02ce8145313928_003F27_003F53f616d3_003FPropertyChangedEventArgs_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AResizeMode_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F6412d4331611499aab4eb63809a2a83bf60910_003F5d_003Fbab92bb0_003FResizeMode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARougamoPool_00601_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe6791e39471d4d42a4a2478530abe7195a00_003F5e_003Fc0560022_003FRougamoPool_00601_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_003ARuntimeHelpers_002ECoreCLR_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F8d42d5f1712377031e2892d1c29db5c23b8c7d49b9dc632fbf463bd930a8_003FRuntimeHelpers_002ECoreCLR_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARuntimeHelpers_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003F69_003F0b77400f_003FRuntimeHelpers_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_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5147b10c5a8c4522b56fba0a889139cfc8f908_003F45_003F2a5f113e_003FRuntimeType_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AScanner_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F035900dc04594e1e8a19c9aacf06b227d200_003F0f_003Fa4586988_003FScanner_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AScanner_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F26799665587e4e19ab5c96d588ccf350bc00_003Fe9_003Fa12f4246_003FScanner_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASceneNode_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fcb6cfc793bda40e2bf434431c621ac561a7200_003Fc8_003Fe89a583f_003FSceneNode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AScreenSpacedNode_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F68d37d16685244cf9996bf767117a771210200_003Ff9_003F61fd6f6c_003FScreenSpacedNode_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASerialPort_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5d0eccfb3f30419a9d4fa45d3592504e15930_003F76_003Fea59f066_003FSerialPort_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_003AStaticResourceExtension_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F6412d4331611499aab4eb63809a2a83bf60910_003F88_003Fef12a016_003FStaticResourceExtension_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AStringBuilder_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003F86_003Fa0c3a364_003FStringBuilder_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_003ATask_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003F72_003F6381d5d3_003FTask_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATask_00601_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003Fc7_003F4331ea58_003FTask_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_003AThreadPoolWorkQueue_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F243a037ca7a04510a506adfdd94befbac90930_003F64_003F7f8a3e7c_003FThreadPoolWorkQueue_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_003FAdministrator_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_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fc7da56581ee7b20208f09e80b735961e4d5d7b9e5562bfdec94a75c57b391_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_003F243a037ca7a04510a506adfdd94befbac90930_003F46_003Ff8b18c4b_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_003Fbf4f8e8f3625482a92218402cf05e9ca16e8a0_003F1d_003F97596cb8_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_003Fbf4f8e8f3625482a92218402cf05e9ca16e8a0_003F1d_003F97596cb8_003FThrowHelper_002Ecs_002Fz_003A2_002D1/@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_003Fdad8a84eb59b44ebb2ed26202283a85984920_003F4b_003F3f166652_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_003FSourcesCache_003F2c8e7ca976f350cba9836d5565dac56b11e0b56656fa786460eb1395857a6fa_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
@ -105,8 +111,9 @@
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AUndoStack_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F85eb3e3af2ef415e8072243864dec55a97e00_003F18_003F3f9ef08f_003FUndoStack_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AUnsafeNativeMethodsCLR_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F2e8b8aa5d488ba9b46d9ca2a747d6895994b3519f2f231f4e3d1af87b86320_003FUnsafeNativeMethodsCLR_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AUnwrapPromise_00601_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F211e6f3b24fa438a92f1815153647ce2c8f908_003F9d_003F0ea6b8e2_003FUnwrapPromise_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AUri_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F71da7403ef224ae98be9940699b0fcce3f938_003Fc9_003Fbf936118_003FUri_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AUri_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F11b25f9a61164e868985cc936e392f643f908_003Fbc_003Fed4dcc6a_003FUri_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AVector3_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc45597e5b7ab42d99b3882b94d97e64034a00_003F78_003F89f75558_003FVector3_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AVisualTreeHelper_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F96a561fe76144633acef44f09d0dcb8a825920_003Fca_003F351b0a1e_003FVisualTreeHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AWindowChromeWorker_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F6412d4331611499aab4eb63809a2a83bf60910_003Ff9_003F2f1adeba_003FWindowChromeWorker_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AWindow_002Ecs_002Fl_003AC_0021_003FUsers_003FAdministrator_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fd0db11e55b76dc7f234163f6cee32b297b8ddb591fb0b5cbad1b46ed17343e18_003FWindow_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AWindow_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F0713c794b56e4feca091d5981a6f5967f60930_003Fc8_003F61b7e802_003FWindow_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
@ -114,4 +121,7 @@
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AXamlReader_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fc82ad29b96d5485f88fa4f2ce6e6c019f60908_003F0b_003Fbba3a168_003FXamlReader_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AXamlReader_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F38ad98c9d60c1739a82dce92fa559af31b833496d8d3fba4a86361ff05bf017_003FXamlReader_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003A_005F003CModule_005F003E_002Ecs_002Fl_003AC_0021_003FUsers_003Ftongg_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe32fe72a9f26462ea51e007d0a63cbd252c00_003Fff_003F79504f9e_003F_005F003CModule_005F003E_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=9B346951_002D9ACB_002D4A13_002DB212_002D8C75AED24131_002Fd_003AViews_002Fd_003AGrading_002Ff_003AGradingResult_002Examl/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=9B346951_002D9ACB_002D4A13_002DB212_002D8C75AED24131_002Fd_003AViews_002Fd_003AGrading_002Ff_003AGradingResult_002Examl/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/Environment/AssemblyExplorer/XmlDocument/@EntryValue">&lt;AssemblyExplorer&gt;&#xD;
&lt;Assembly Path="D:\WorkSpace\spark\SparkClient\bin\Debug\net8.0-windows\SparkDotNetCore.dll" /&gt;&#xD;
&lt;/AssemblyExplorer&gt;</s:String></wpf:ResourceDictionary>

@ -1,12 +1,10 @@
using System.Windows;
using System.Windows.Input;
using GlobalHotKey;
using HandyControl.Controls;
using SparkClient.Model.Attributes;
using SparkClient.Model.Helper;
using SparkClient.Model.Services;
using SparkClient.ViewModel.Grading;
using SparkClient.Views.Grading;
using MessageBox = SparkClient.Views.Dialog.MessageBox;
namespace SparkClient.ViewModel.BaseWindow;
public class BaseControlVM : BaseViewModel
@ -51,6 +49,7 @@ public class BaseControlVM : BaseViewModel
/// </summary>
/// <param name="vm">子页面</param>
/// <param name="windowTitle">子窗口标题</param>
public BaseControlVM(BaseViewModel vm, string windowTitle)
{
Content = vm;
@ -148,6 +147,7 @@ public class BaseControlVM : BaseViewModel
/// 关闭并退回至上一个页面
/// </summary>
/// <param name="parameter"></param>
[Log]
public async void CloseVM(object parameter)
{
if(Content is GradingResultVM)

@ -54,7 +54,7 @@ public class AlgorithmConfigVM : BaseViewModel
InitAgileJsonConfig();
}
[Log]
private void InitAgileJsonConfig()
{
AgileJsonConfigEntities = new ObservableCollection<AgileJsonConfigEntity>();
@ -79,6 +79,7 @@ public class AlgorithmConfigVM : BaseViewModel
}
}
}
[Log]
private bool CheckAndSaveAgileJson()
{
var finalSaveData = new ObservableCollection<AgileJsonConfigEntity>();
@ -117,6 +118,7 @@ public class AlgorithmConfigVM : BaseViewModel
return true;
}
[Log]
public string GetAlgorithmConfig(string param)
{
string sql = @"SELECT Mode, Shape, Spec, JsonKey, Value FROM AGILE_ALGORITHM_CONFIG";
@ -205,7 +207,7 @@ public class AlgorithmConfigVM : BaseViewModel
AgileJsonConfigEntities.Add(new AgileJsonConfigEntity(_jsonKeysBak));
});
[Log]
private List<string> GetNestedKeys(JToken token, string prefix = "")
{
var keys = new List<string>();
@ -292,6 +294,7 @@ public class AlgorithmConfigVM : BaseViewModel
Logger.Error($"全局异常捕获:{ex.Message}",ex);
}
}
[Log]
private void IsEnabledByRole (){
string PERMISSIONS = Settings.SelectValueById("PERMISSIONS");
if ("admin".Equals(PERMISSIONS))

@ -8,6 +8,7 @@ using System.Windows.Media;
using System.Windows.Media.Imaging;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SparkClient.Model.Attributes;
using SparkClient.Model.Common;
using SparkClient.Model.Entity.ApiEntity;
using SparkClient.Model.Extension;
@ -136,7 +137,7 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
/// <summary>
/// 开始检测
/// </summary>
//[Log]
[Log]
public async Task<int> Start(int type = 0)
{
@ -309,7 +310,8 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
}
}
[Log]
private async Task<int> ReslutGen(Task<DiaResult> detectTask)
{
bool hasErr = false;
@ -418,7 +420,7 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
}
}
}
[Log]
private async Task CompleteProgressSlowlyAsync()
{
// 缓慢完成剩余3%(总耗时保持原速度的3倍)
@ -433,7 +435,7 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
await Task.Delay(stepTime);
}
}
[Log]
private async Task CompleteProgressQuicklyAsync()
{
// 取消原进度任务
@ -453,6 +455,7 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
await Task.Delay(stepTime/2);
}
}
[Log]
private void UpdateProgress(int value)
{
// UI线程安全更新
@ -461,6 +464,7 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
Progress = value;
});
}
[Log]
private void Stop(object param)
{
//询问?停止:忽略
@ -484,7 +488,7 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
}
}
[Log]
private async Task RunProgressAsync(CancellationToken token)
{
var configValue = ConfigurationHelper.ReadConfigValue("ProgressTime");
@ -513,13 +517,13 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
}, token);
}
[Log]
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
[Log]
protected virtual void Dispose(bool disposing)
{
if (_disposed) return;
@ -537,7 +541,7 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
_disposed = true;
}
[Log]
private string getStandardName()
{
string sql = $"select\r\nRULE_NAME AS NAME,\r\nRULE_EN_NAME AS EN_NAME\r\nfrom\r\nsetting\r\nleft join rule\r\non setting.SETTING_P = rule.RULE_ID\r\nwhere\r\nsetting.SETTING_ID = 'RuleId'\r\n";
@ -552,19 +556,21 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
}
}
#region 图片播放处理
[Log]
public void LoadImages(string folderPath)
{
ImagePaths = Directory.GetFiles(folderPath, "*.bmp");
CurrentIndex = 0;
CurrentStatus = PlayStatus.Stopped;
}
[Log]
public void LoadImages(List<string> folderPath)
{
ImagePaths = folderPath.ToArray();
CurrentIndex = 0;
CurrentStatus = PlayStatus.Stopped;
}
[Log]
private async Task HandlePlayControl()
{
switch (CurrentStatus)
@ -580,6 +586,7 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
break;
}
}
[Log]
private async Task StartPlayback()
{
CurrentStatus = PlayStatus.Playing;
@ -602,19 +609,20 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
}
catch (TaskCanceledException) { /* 正常取消处理 */ }
}
[Log]
private void PausePlayback()
{
_cts?.Cancel();
CurrentStatus = PlayStatus.Paused;
}
[Log]
private async Task ResumePlayback()
{
CurrentStatus = PlayStatus.Playing;
_cts = new CancellationTokenSource();
await StartPlayback();
}
[Log]
private void UpdateCurrentImage()
{
if (ImagePaths == null || CurrentIndex < 0 || CurrentIndex >= ImagePaths.Length)
@ -630,7 +638,7 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
CurrentImage = bitmap;
OnPropertyChanged(nameof(CurrentImage));
}
[Log]
private void MovePrevious()
{
if (CurrentStatus == PlayStatus.Playing)
@ -638,7 +646,7 @@ public class GradingLoadingVM : BaseViewModel,IDisposable
CurrentIndex = (CurrentIndex - 1 + ImagePaths.Length) % ImagePaths.Length;
}
[Log]
private void MoveNext()
{
if (CurrentStatus == PlayStatus.Playing)

@ -331,7 +331,7 @@ public class GradingResultVM : BaseViewModel
Logger.Error($"Auto Save Error: {ex.Message}");
}
}
[Log]
private void saveTempDS(string selValue)
{
ConfigurationHelper.SetConfigValue("DSSet",selValue);
@ -391,6 +391,7 @@ public class GradingResultVM : BaseViewModel
/// 参数列表测试内容获取
/// </summary>
/// <returns></returns>
[Log]
private List<string> GetTestItemList()
{
// DB 没关联
@ -446,6 +447,7 @@ public class GradingResultVM : BaseViewModel
}
return ruleIdForSelect;
}
[Log]
private List<CalGradeInfo> GetCalGradeInfos(string item)
{
string ruleIdForSelect = getActualRuleId();
@ -453,6 +455,7 @@ public class GradingResultVM : BaseViewModel
List<CalGradeInfo> calGrades = DataBaseHelper.ExecuteQuery<CalGradeInfo>(sql);
return calGrades;
}
[Log]
private List<CalGradeInfo> GetCalGradeInfos_SYM(string item)
{
string ruleIdForSelect = getActualRuleId();
@ -696,6 +699,7 @@ public class GradingResultVM : BaseViewModel
decimal.TryParse(min, out Min);
return (Max-Min).ToString();
}
[Log]
private double calSymValue(double Min, double Max, double Avg,bool isPercentage = true)
{
int c = 1;
@ -2505,7 +2509,7 @@ public class GradingResultVM : BaseViewModel
e.Graphics.DrawString($"{MultilingualHelper.getString("DateOfIssue")}: {DateTime.Now:yyyy/M/d}", font, brush, new PointF(X, Y));
}
[Log]
private string GenerateTempExcelFile()
{
try

@ -2,6 +2,7 @@
using System.Windows.Controls;
using log4net;
using Microsoft.Web.WebView2.Core;
using SparkClient.Model.Attributes;
using SparkClient.Model.Helper;
using SparkClient.ViewModel.Configuration;
@ -16,7 +17,7 @@ public partial class HelperPage
InitializeWebView();
}
[Log]
private async void InitializeWebView()
{
try

@ -19,6 +19,7 @@ using MathNet.Numerics;
using System.Windows.Media;
using GlobalHotKey;
using NPOI.SS.Formula.Functions;
using SparkClient.Model.Attributes;
using SparkClient.Model.Services;
using MessageBox = SparkClient.Views.Dialog.MessageBox;
using ObjExporter = SparkClient.Views.UserControl.ViewportData.Helper.ObjExporter;
@ -46,6 +47,7 @@ public partial class Viewport3D
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[Log]
private void Viewport3D_OnLoaded(object sender, RoutedEventArgs e)
{
ViewportManager.SetViewport3D(Viewport3Dx);
@ -148,6 +150,7 @@ public partial class Viewport3D
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[Log]
private void Viewport3Dx_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (ViewportManager.DoubleClickSelect == false) return;
@ -194,6 +197,7 @@ public partial class Viewport3D
/// <param name="sender"></param>
/// <param name="e"></param>
/// <exception cref="NotImplementedException"></exception>
[Log]
private void BtnAngle_OnClick(object sender, RoutedEventArgs e)
{
var directionName = ((Button)sender).Name.ToString();
@ -239,6 +243,7 @@ public partial class Viewport3D
/// <param name="sender"></param>
/// <param name="e"></param>
/// <exception cref="NotImplementedException"></exception>
[Log]
private async void BtnFunction_OnClick(object sender, RoutedEventArgs e)
{
var directionName = ((Button)sender).Name.ToString();
@ -296,6 +301,7 @@ public partial class Viewport3D
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[Log]
private void BtnDirection_OnClick(object sender, RoutedEventArgs e)
{
var directionName = ((Button)sender).Name.ToString();
@ -351,7 +357,7 @@ public partial class Viewport3D
// camera.UpDirection = new Vector3D(0, 1, 0); // 保持 Y 轴为上方向
}
[Log]
private void ShowArrowAndHeart(object sender, KeyPressedEventArgs e)
{
try
@ -445,6 +451,7 @@ public partial class Viewport3D
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[Log]
private void MenuItem_OnCheckedChanged(object sender, RoutedEventArgs e)
{
ViewportRightMenuSelectFaceFrame.IsEnabled = ViewportRightMenuSelectFace.IsChecked ;
@ -538,6 +545,7 @@ public partial class Viewport3D
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[Log]
private void MenuItem_OnClick(object sender, RoutedEventArgs e)
{
var controlName = ((MenuItem)sender).Name.ToString();
@ -703,7 +711,7 @@ public partial class Viewport3D
#endregion
[Log]
private void TbCustomizeRevolve_OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
//Viewport3Dx.ShowCameraInfo = !Viewport3Dx.ShowCameraInfo;

@ -4,6 +4,7 @@ using System.Text;
using System.Windows.Input;
using Newtonsoft.Json;
using SharpDX;
using SparkClient.Model.Attributes;
using SparkClient.Views.UserControl.ViewportData.Entity;
using SparkClient.Views.UserControl.ViewportData.Enum;
@ -11,18 +12,18 @@ namespace SparkClient.Views.UserControl.ViewportData.Helper;
public class CommonHelper
{
[Log]
public static bool IsTextNumeric(string text)
{
return int.TryParse(text, out _); // 只允许数字输入
}
[Log]
public static bool IsKeyNumeric(Key key)
{
// 判断按键是否是数字键
return (key >= Key.D0 && key <= Key.D9) || (key >= Key.NumPad0 && key <= Key.NumPad9);
}
[Log]
public static Viewport3DTriangleEntity CreateByJsonStr(string json)
{
// 解析 JSON 数据
@ -71,6 +72,7 @@ public class CommonHelper
/// <param name="p2"></param>
/// <param name="p3"></param>
/// <returns></returns>
[Log]
public static string GenerateTriangleCode(Vector3 p1, Vector3 p2, Vector3 p3)
{
var concatenated = $"{p1.X},{p1.Y},{p1.Z};{p2.X},{p2.Y},{p2.Z};{p3.X},{p3.Y},{p3.Z}";
@ -81,6 +83,7 @@ public class CommonHelper
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[Log]
private static string GenerateMd5Hash(string input)
{
using (var md5 = MD5.Create())
@ -90,7 +93,7 @@ public class CommonHelper
return string.Concat(hashBytes.Select(b => b.ToString("X2")));
}
}
[Log]
public static string Color4ToHex(Color4 color)
{
int a = (int)(color.Alpha * 255);
@ -101,7 +104,7 @@ public class CommonHelper
// 返回 Hex 字符串
return $"#{a:X2}{r:X2}{g:X2}{b:X2}";
}
[Log]
public static Color4 HexToColor4(string hex)
{
// 移除可能的前导 '#'
@ -123,7 +126,7 @@ public class CommonHelper
throw new ArgumentException("Hex string must be in the format #AARRGGBB or #RRGGBB.");
}
}
[Log]
private static Color4 ConvertArgb(string hex)
{
// 解析 ARGB 组件
@ -135,7 +138,7 @@ public class CommonHelper
// 创建 Color4 对象,RGBA 的范围是 0 到 1,因此除以 255
return new Color4(r / 255f, g / 255f, b / 255f, a / 255f);
}
[Log]
private static Color4 ConvertRgb(string hex)
{
// 解析 RGB 组件,Alpha 默认 255

@ -2,6 +2,7 @@ using System.IO;
using System.Text;
using HelixToolkit.SharpDX.Core;
using SharpDX;
using SparkClient.Model.Attributes;
using SparkClient.Views.UserControl.ViewportData.Entity;
using SparkClient.Views.UserControl.ViewportData.Enum;
@ -9,6 +10,7 @@ namespace SparkClient.Views.UserControl.ViewportData.Helper;
public class ObjExporter
{
[Log]
public static void ExportToObj2(List<Viewport3DTriangleEntity> entities, string outputPath)
{
string obj = GenerateObj(entities);
@ -17,7 +19,7 @@ public class ObjExporter
writer.Write(obj);
}
}
[Log]
public static string GenerateObj(IEnumerable<Viewport3DTriangleEntity> triangles)
{
var groups = triangles.GroupBy(t => t.PlaneCode);
@ -122,6 +124,7 @@ public class ObjExporter
/// <summary>
/// 凸包排序(Andrew's Monotone Chain 算法)
/// </summary>
[Log]
private static List<Vector3> ConvexHullSort(List<Vector3> points)
{
if (points.Count <= 3) return points;
@ -152,6 +155,7 @@ public class ObjExporter
/// <summary>
/// 计算叉积 (p2-p0) × (p1-p0)
/// </summary>
[Log]
private static float Cross(Vector3 p0, Vector3 p1, Vector3 p2)
{
return (p1.X - p0.X) * (p2.Z - p0.Z) - (p1.Z - p0.Z) * (p2.X - p0.X);
@ -159,6 +163,7 @@ public class ObjExporter
/// <summary>
/// 计算面的法线(基于顶点顺序)
/// </summary>
[Log]
private static Vector3 CalculateFaceNormal(List<Vector3> vertices, Vector3 modelCenter)
{
// 使用前三个顶点计算初始法线
@ -183,6 +188,7 @@ public class ObjExporter
/// <summary>
/// 计算顶点列表的中心点
/// </summary>
[Log]
private static Vector3 GetCenter(List<Vector3> vertices)
{
var center = Vector3.Zero;

@ -1,5 +1,6 @@
using System.Drawing;
using System.Text;
using SparkClient.Model.Attributes;
using SparkClient.Model.Helper;
using SparkDotNetCore.ArrowAndHeart;
using SparkDotNetCore.ArrowAndHeart.Entity;
@ -16,7 +17,7 @@ public class RayHelper
private static string _image_path = AppDomain.CurrentDomain.BaseDirectory + @"Ray\Image\";
//unity渲染模型缓存(运行前清理)
private static string _obj_path = AppDomain.CurrentDomain.BaseDirectory + @"Ray\Obj";
[Log]
public static void GenerateRender(string modelInfo, string diamondCode)
{
string fileName = GenerateSignature(modelInfo, diamondCode);
@ -56,13 +57,13 @@ public class RayHelper
}
}
[Log]
private static string GenerateSignature(string modelInfo, string diamondCode)
{
// 模拟生成签名逻辑,可以自定义为更复杂的算法
return modelInfo;
}
[Log]
private static void CleanDirectory(string path)
{
if (Directory.Exists(path))
@ -130,7 +131,7 @@ public class RayHelper
// }
// }
// }
[Log]
private static bool ValidateImages()
{
string heartImage = Path.Combine(_image_path, @"Heart.png");
@ -138,7 +139,7 @@ public class RayHelper
return File.Exists(heartImage) && File.Exists(arrowImage);
}
[Log]
private static void ShowImages()
{
// 创建一个简单的图片展示窗口

@ -9,11 +9,13 @@ using System.IO;
using System.Windows.Media.Imaging;
using System.Drawing;
using System.Windows;
using SparkClient.Model.Attributes;
namespace SparkClient.Views.UserControl.ViewportData.Helper;
public class VideoHelper
{
[Log]
public static void CreateVideoFromPngList(List<PngBitmapEncoder> pngEncoders, string outputPath)
{
string tempDirectory = Path.Combine(System.Environment.CurrentDirectory, "PngFrames");
@ -72,7 +74,7 @@ public class VideoHelper
Directory.Delete(tempDirectory, true);
}
}
[Log]
public static async Task CreateVideoFromPngListAsync(List<PngBitmapEncoder> pngEncoders, string outputPath)
{
string tempDirectory = Path.Combine(Environment.CurrentDirectory, "PngFrames");
@ -140,7 +142,7 @@ public class VideoHelper
Directory.Delete(tempDirectory, true);
}
}
[Log]
public static void ConvertMp4ToDat(string inputFilePath, string outputFilePath)
{
string ffmpegPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ffmpeg.exe"); // Assuming ffmpeg.exe is in the same directory as the application
@ -162,7 +164,7 @@ public class VideoHelper
File.Delete(outputFilePath);
}
[Log]
public static async Task<List<PngBitmapEncoder>> StartGenerationAndRotation(Viewport3DX viewport)
{
@ -175,7 +177,7 @@ public class VideoHelper
return genPngTask.Result;
}
[Log]
public static List<PngBitmapEncoder> GenPng(Viewport3DX viewport)
{
List<PngBitmapEncoder> result = new List<PngBitmapEncoder>();
@ -191,7 +193,7 @@ public class VideoHelper
return result;
}
[Log]
public static async void RotateModel()
{
await Application.Current.Dispatcher.InvokeAsync(() =>
@ -215,7 +217,7 @@ public class VideoHelper
ViewportManager.DoubleClickSelect = !false;
}
[Log]
public static PngBitmapEncoder CutPng(Viewport3DX viewport)
{
int width = (int)viewport.ActualWidth;

@ -22,6 +22,7 @@ using HelixToolkit.Wpf;
using MeshBuilder = HelixToolkit.Wpf.SharpDX.MeshBuilder;
using OrthographicCamera = HelixToolkit.Wpf.SharpDX.OrthographicCamera;
using System.Windows.Input;
using SparkClient.Model.Attributes;
using SparkClient.Model.Extension;
using SparkClient.Model.Helper;
using MessageBox = SparkClient.Views.Dialog.MessageBox;
@ -50,6 +51,7 @@ public class ViewportHelperPro
/// </summary>
/// <param name="viewport"></param>
/// <param name="entities"></param>
[Log]
public static MeshGeometryModel3D GenerateModelByEntity(Viewport3DX viewport, List<Viewport3DTriangleEntity> entities, Color4? color = null)
{
var geometryModel = GenerateModelByEntity(entities, color);
@ -63,6 +65,7 @@ public class ViewportHelperPro
/// <param name="entities"></param>
/// <param name="color"></param>
/// <returns></returns>
[Log]
public static MeshGeometryModel3D GenerateModelByEntity(List<Viewport3DTriangleEntity> entities, Color4? color = null)
{
var meshBuilder = new MeshBuilder(true, false);
@ -111,6 +114,7 @@ public class ViewportHelperPro
/// <param name="entities"></param>
/// <param name="color"></param>
/// <returns></returns>
[Log]
public static List<MeshGeometryModel3D> GenerateModelByEntityGroupByType(List<Viewport3DTriangleEntity> entities)
{
var groupedDict = entities
@ -128,7 +132,7 @@ public class ViewportHelperPro
}
[Log]
private static Color4? GenFaceColor4(PlaneType planeType)
{
switch (planeType)
@ -159,6 +163,7 @@ public class ViewportHelperPro
/// </summary>
/// <param name="viewport"></param>
/// <param name="filePath"></param>
[Log]
public static void SaveViewportAsImage(Viewport3DX viewport, string filePath)
{
// 定义图像大小
@ -179,7 +184,7 @@ public class ViewportHelperPro
}
}
[Log]
public static async Task ExportModelsToVideo(Viewport3DX viewport, string filePath)
{
if (viewport == null)
@ -197,6 +202,7 @@ public class ViewportHelperPro
/// </summary>
/// <param name="viewport"></param>
/// <param name="filePath"></param>
[Log]
public static void ExportModelsToStl(Viewport3DX viewport, string filePath)
{
if (viewport == null)
@ -248,6 +254,7 @@ public class ViewportHelperPro
/// </summary>
/// <param name="viewport"></param>
/// <param name="filePath"></param>
[Log]
public static async Task ExportModelsToStlASync(string filePath)
{
Viewport3DX viewport = ViewportManager.GetViewport3D();
@ -310,7 +317,7 @@ public class ViewportHelperPro
}).ConfigureAwait(false);
}
[Log]
public static List<LineGeometryModel3D> ShowCenterTag(float lineLength = 0.5f)
{
List<LineGeometryModel3D> result = new List<LineGeometryModel3D>();
@ -382,6 +389,7 @@ public class ViewportHelperPro
/// </summary>
/// <param name="viewport"></param>
/// <param name="entities"></param>
[Log]
public static List<LineGeometryModel3D> GentrateLineByEntity(Viewport3DX viewport, List<Viewport3DTriangleEntity> entities, Color4? color = null, double thickness = 1.0)
{
List<LineGeometryModel3D> result = GentrateLineByEntity(entities, ViewportManager.isUglyDiamond ? new Color4(new Color3(1f, 0,0)):color, thickness);
@ -397,6 +405,7 @@ public class ViewportHelperPro
/// <param name="color"></param>
/// <param name="thickness"></param>
/// <returns></returns>
[Log]
public static List<LineGeometryModel3D> GentrateLineGirdleByEntity(List<Viewport3DTriangleEntity> entities,
Color4? color = null, double thickness = 1.0)
{
@ -503,6 +512,7 @@ public class ViewportHelperPro
/// <param name="color"></param>
/// <param name="thickness"></param>
/// <returns></returns>
[Log]
public static List<LineGeometryModel3D> GentrateLineByEntity(List<Viewport3DTriangleEntity> entities, Color4? color = null, double thickness = 1.0)
{
List<LineGeometryModel3D> result = new List<LineGeometryModel3D>();
@ -560,7 +570,7 @@ public class ViewportHelperPro
return result;
}
[Log]
public static List<Viewport3DTriangleEntity> GenerateLineTextModelsByType(PlaneType type, Color4? textColor = null,
bool showAll = false)
{
@ -585,6 +595,7 @@ public class ViewportHelperPro
/// <param name="entities">三角形集合</param>
/// <param name="valKey">指定数据集</param>
/// <returns></returns>
[Log]
public static List<GeometryModel3D> GenerateLineTextModels(List<Viewport3DTriangleEntity> entities, string valKey = "")
{
var result = new List<GeometryModel3D>();
@ -1119,6 +1130,7 @@ public class ViewportHelperPro
/// <param name="triangleCode">三角形ID</param>
/// <param name="selType">生成范围</param>
/// <returns></returns>
[Log]
public static List<GeometryModel3D> GentrateChosenView(string triangleCode, string valKey = "", params SelShowType[] selType)
{
var res = ViewportManager.ViewportTriangle.Find(e => triangleCode.Equals(e.TriangleCode));
@ -1134,6 +1146,7 @@ public class ViewportHelperPro
/// <param name="selType">生成范围</param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
[Log]
public static List<GeometryModel3D> GentrateChosenView(Viewport3DTriangleEntity entity, string valKey = "", params SelShowType[] selType)
{
if (entity == null || entity.TriangleCode == null || entity.TriangleCode.Length == 0)
@ -1192,6 +1205,7 @@ public class ViewportHelperPro
/// <param name="textColor">文本颜色(默认红)</param>
/// <param name="showAll">是否显示全部(默认否)</param>
/// <returns></returns>
[Log]
public static List<GeometryModel3D> GenerateLineAngleTextModels(List<Viewport3DTriangleEntity> entities,
Color4? textColor = null, bool showAll = false)
{
@ -1245,6 +1259,7 @@ public class ViewportHelperPro
/// <param name="axis">中心</param>
/// <param name="hasLine">是否包含线</param>
/// <param name="speed">旋转时间 秒</param>
[Log]
public static void RotateModel(Vector3D axis, bool hasLine = true, int speed = 7, int to = 360)
{
ViewportManager.GetViewport().ViewportRightMenuShowModelFaceByType.IsChecked = false;
@ -1285,6 +1300,7 @@ public class ViewportHelperPro
/// <param name="text">文字</param>
/// <param name="position">位置</param>
/// <returns></returns>
[Log]
public static BillboardTextModel3D DisplayText3D(string text, Vector3 position, Color4? color = null)
{
var billboardTextModel = new BillboardTextModel3D();
@ -1308,6 +1324,7 @@ public class ViewportHelperPro
/// <param name="direction"></param>
/// <param name="color"></param>
/// <returns></returns>
[Log]
public static BillboardTextModel3D DisplayText3D(string text, Vector3 position, Vector3 direction, Color4? color = null)
{
// 计算线段方向的角度
@ -1342,6 +1359,7 @@ public class ViewportHelperPro
/// <param name="lineColor">线颜色</param>
/// <param name="thickness">线粗细 默认1</param>
/// <returns></returns>
[Log]
public static LineGeometryModel3D DisplayLineModel3D(List<Vector3> points, Color4 lineColor,
double thickness = 1.0)
{
@ -1364,6 +1382,7 @@ public class ViewportHelperPro
/// <param name="fieldOfView"></param>
/// <param name="aspectRatio"></param>
/// <returns></returns>
[Log]
public static HelixToolkit.Wpf.SharpDX.OrthographicCamera CalculateCamera(Vector3 positiveDirection, BoundingBox boundingBox, double fieldOfView = 45, double aspectRatio = 16.0 / 9.0)
{
// 单位化正方向
@ -1409,6 +1428,7 @@ public class ViewportHelperPro
/// <param name="headDiameterRatio">圆锥直径与圆柱直径的比例 1.5</param>
/// <param name="padding">模型边界范围 1</param>
/// <returns></returns>
[Log]
public static MeshGeometryModel3D CreateArrow(
Vector3 cameraPosition,
Vector3 modelCenter,
@ -1474,6 +1494,7 @@ public class ViewportHelperPro
/// <param name="lineColor">线段颜色</param>
/// <param name="thickness">线段粗细</param>
/// <returns></returns>
[Log]
public static LineGeometryModel3D DisplayLineModel3D(List<Tuple<Vector3, Vector3>> points, Color4 lineColor,
double thickness = 1.0)
{
@ -1506,6 +1527,7 @@ public class ViewportHelperPro
/// </summary>
/// <param name="viewport"></param>
/// <returns></returns>
[Log]
public static List<Light3D> GenerateLightingForModel(Viewport3DX viewport)
{
@ -1582,7 +1604,7 @@ public class ViewportHelperPro
result.ForEach(e => viewport.Items.Add(e));
return result;
}
[Log]
public static Vector3 GetCenterOfTriangles(List<Viewport3DTriangleEntity> triangles)
{
if (triangles == null || triangles.Count == 0)
@ -1603,7 +1625,7 @@ public class ViewportHelperPro
// 计算平均坐标
return total / vertexCount;
}
[Log]
public static Vector3 CalculateCenter(List<Vector3> girdleTopLines, List<Vector3> girdleBottomLines)
{
// 计算 GirdleTopLines 的中心点
@ -1625,6 +1647,7 @@ public class ViewportHelperPro
/// 删除视图中的照明
/// </summary>
/// <param name="viewport"></param>
[Log]
public static void RemoveLightingInViewport(Viewport3DX viewport)
{
List<Light3D> lights = new List<Light3D>();
@ -1648,6 +1671,7 @@ public class ViewportHelperPro
/// <param name="entities"></param>
/// <param name="thickness"></param>
/// <returns></returns>
[Log]
public static List<LineGeometryModel3D> ShowMeshLines(bool isCrown = true, double thickness = 0.5)
{
List<LineGeometryModel3D> lines = new();
@ -1735,6 +1759,7 @@ public class ViewportHelperPro
/// </summary>
/// <param name="lineA"></param>
/// <param name="lineB"></param>
[Log]
private static void bindingMoveLine(LineGeometryModel3D lineA, LineGeometryModel3D lineB)
{
lineA.HitTestThickness = HitTestThickness;
@ -1752,6 +1777,7 @@ public class ViewportHelperPro
private static Point startDragPoint = new Point();
private static Transform3D initialTransform;
private static Transform3D initialOtherTransform;
[Log]
private static void LineA_MouseMove3D(object sender, RoutedEventArgs e)
{
if (isDrawing)
@ -1869,13 +1895,14 @@ public class ViewportHelperPro
}
}
// 检查点是否在范围内(距离大于 minDistance 且小于等于 radius)
[Log]
private static bool IsPointInRange(Point3D point, Point3D center, double radius, double minDistance)
{
double distance = (point - center).Length;
Logger.Info("距离:" + distance);
return distance > minDistance && distance <= radius;
}
[Log]
private static Point3D LimitToMaxPosition(Point3D center, double radius, Point3D currentCenter)
{
// 计算当前中心点与中心点的方向
@ -1885,7 +1912,7 @@ public class ViewportHelperPro
// 计算最大允许位置
return center + direction * radius;
}
[Log]
private static void LineA_MouseUp3D(object sender, RoutedEventArgs e)
{
isDrawing = false;
@ -1893,7 +1920,7 @@ public class ViewportHelperPro
Viewport.Cursor = Cursors.Arrow;
startDragPoint = new Point();
}
[Log]
private static void LineA_MouseDown3D(object sender, RoutedEventArgs e)
{
isDrawing = true;
@ -1912,6 +1939,7 @@ public class ViewportHelperPro
}
}
}
[Log]
private static Point3D Get3DPointFromMouse(Point mousePosition)
{
// 使用 HelixToolkit 的 Ray3D 和 Plane3D
@ -1932,7 +1960,7 @@ public class ViewportHelperPro
}
return intersection.Value;
}
[Log]
private static Ray3D GetRayFromMouse(Point mousePosition, Viewport3DX viewport)
{
// 将鼠标坐标转换为归一化设备坐标 (NDC)
@ -1951,7 +1979,7 @@ public class ViewportHelperPro
// 返回射线
return new Ray3D(cameraPosition, ray);
}
[Log]
private static Point3D? GetIntersection(Ray3D ray, Plane3D plane)
{
// 计算射线方向与平面法向量的点积
@ -1971,7 +1999,7 @@ public class ViewportHelperPro
// 返回交点
return ray.Origin + ray.Direction * t;
}
//private static Point3D? GetIntersection(Ray3D ray, Plane3D plane)
//{
// // 将射线转换为直线(起点和终点)
@ -1987,6 +2015,7 @@ public class ViewportHelperPro
/// <param name="radius"></param>
/// <param name="thickness"></param>
/// <returns></returns>
[Log]
public static LineGeometryModel3D ShowCircleLine(bool isCrown = true, double radius = 1.0, double thickness = 0.5)
{
var Y = -0.01F;
@ -2003,6 +2032,7 @@ public class ViewportHelperPro
Circle.MouseMove3D += Circle_MouseMove3D;
return Circle;
}
[Log]
private static LineGeometryModel3D UpdateCircleGeometry(Vector3 center, double radius = 1.0, double thickness = 1.0)
{
// 生成圆形线的点
@ -2026,7 +2056,7 @@ public class ViewportHelperPro
// 更新圆形线的几何形状
return Circle;
}
[Log]
private static void Circle_MouseMove3D(object sender, RoutedEventArgs e)
{
if (isDrawing)
@ -2073,6 +2103,7 @@ public class ViewportHelperPro
}
}
// 计算两点之间的距离
[Log]
private static double CalculateDistance(Point3D p1, Point3D p2)
{
double dx = p2.X - p1.X;
@ -2081,6 +2112,7 @@ public class ViewportHelperPro
return Math.Sqrt(dx * dx + dy * dy + dz * dz);
}
[Log]
private static void Circle_MouseUp3D(object sender, RoutedEventArgs e)
{
isDrawing = false;
@ -2089,7 +2121,7 @@ public class ViewportHelperPro
// 释放鼠标捕获
Viewport.ReleaseMouseCapture();
}
[Log]
private static void Circle_MouseDown3D(object sender, RoutedEventArgs e)
{
isDrawing = true;
@ -2102,6 +2134,7 @@ public class ViewportHelperPro
Viewport.CaptureMouse();
}
}
[Log]
public static bool IsCrown()
{
bool isCrown = false;
@ -2119,6 +2152,7 @@ public class ViewportHelperPro
/// </summary>
/// <param name="points"></param>
/// <returns></returns>
[Log]
public static List<Vector3> VectorClockwiseSort(List<Vector3> points)
{
Vector3 center = GetCentroid(points);
@ -2131,6 +2165,7 @@ public class ViewportHelperPro
/// <param name="points"></param>
/// <param name="center"></param>
/// <returns></returns>
[Log]
public static List<Vector3> VectorClockwiseSort(List<Vector3> points, Vector3 center)
{
points.Sort((v1, v2) =>
@ -2141,7 +2176,7 @@ public class ViewportHelperPro
});
return points;
}
[Log]
private static Vector3 GetCenter(List<Vector3> points)
{
float x = points.Average(p => p.X);
@ -2155,6 +2190,7 @@ public class ViewportHelperPro
/// </summary>
/// <param name="vectors"></param>
/// <returns></returns>
[Log]
public static Vector3 GetCentroid(List<Vector3> vectors)
{
float x = vectors.Sum(v => v.X) / vectors.Count;
@ -2162,6 +2198,7 @@ public class ViewportHelperPro
float z = vectors.Sum(v => v.Z) / vectors.Count;
return new Vector3(x, y, z);
}
[Log]
public static Vector3 GetOffsetCenter(List<Vector3> facetVector, Vector3 center, float dev = 0.4f)
{
// 1. 去重 facetVector
@ -2184,6 +2221,7 @@ public class ViewportHelperPro
/// <param name="v1"></param>
/// <param name="v2"></param>
/// <returns></returns>
[Log]
private static float AngleBetween(Vector3 v1, Vector3 v2)
{
// 计算两个向量的点积
@ -2208,19 +2246,20 @@ public class ViewportHelperPro
// 返回角度,单位是度
return (float)(Math.Acos(cosTheta) * (180.0 / Math.PI));
}
[Log]
private static double GetBoundingBoxVolume(BoundingBox bound)
{
var size = bound.Size;
return size.X * size.Y * size.Z;
}
[Log]
private static Vector3 CalculateNormal(Vector3 p0, Vector3 p1, Vector3 p2)
{
var u = p1 - p0;
var v = p2 - p0;
return Vector3.Cross(u, v);
}
[Log]
private static bool IsLineSegmentParallelToYAxis(Tuple<Vector3, Vector3> lineSegment,float epsilon = 0.001f)
{
Vector3 nowItem = lineSegment.Item1;
@ -2233,12 +2272,14 @@ public class ViewportHelperPro
return false; // 不平行于 Y 轴
}
// 计算两个点之间的距离
[Log]
private static float GetDistance(Vector3 point1, Vector3 point2)
{
return (float)Math.Sqrt(Math.Pow(point2.X - point1.X, 2) + Math.Pow(point2.Y - point1.Y, 2) + Math.Pow(point2.Z - point1.Z, 2));
}
// 判断是否平行于Y轴的线段,返回较长或者较短的线段
[Log]
private static Tuple<Vector3, Vector3> GetLongestOrShortestLineSegment(List<Vector3> facetPoints, bool returnLongest = true)
{
Tuple<Vector3, Vector3> resultSegment = null;
@ -2269,7 +2310,7 @@ public class ViewportHelperPro
return resultSegment; // 返回符合条件的线段
}
[Log]
private static Tuple<Vector3, Vector3> GetLeftOrRightLineSegment(List<Vector3> facetPoints,
bool isLeft = true)
{
@ -2302,7 +2343,7 @@ public class ViewportHelperPro
return resultSegment; // 返回符合条件的线段
}
[Log]
private static void CalculateLineSegmentStats(List<Tuple<Vector3, Vector3>> lines,
out Tuple<Vector3, Vector3> maxLine,
out Tuple<Vector3, Vector3> minLine,
@ -2334,6 +2375,7 @@ public class ViewportHelperPro
/// <param name="facetPoints">四边形的顶点列表</param>
/// <param name="returnLongest">是否返回最长的边线</param>
/// <returns>符合条件的边线,如果不存在则返回null</returns>
[Log]
public static Tuple<Vector3, Vector3> GetLeftParallelLineSegment(
List<Vector3> facetPoints)
{
@ -2365,7 +2407,7 @@ public class ViewportHelperPro
}
[Log]
private static string ValueFormat(string value, string type, bool hasUnit = false)
{
if (double.TryParse(value, out var v) )
@ -2403,7 +2445,7 @@ public class ViewportHelperPro
return "--";
}
[Log]
private static Vector3? CalculateIntersection(
Tuple<Vector3, Vector3> line1,
Tuple<Vector3, Vector3> line2)
@ -2446,7 +2488,7 @@ public class ViewportHelperPro
return new Vector3(x, maxY, z);
}
#endregion
[Log]
private static bool FactoryShowTextCheck(string diamondType, PlaneType planeType)
{
Dictionary<string, HashSet<PlaneType>> stepPlaneMappings = new()
@ -2467,7 +2509,7 @@ public class ViewportHelperPro
}
return allowedTypes.Contains(planeType);
}
[Log]
private static string[] GetAlgorithmParam(string diamondType, PlaneType planeType)
{
Dictionary<string, Dictionary<PlaneType, string[]>> stepPlaneMappings = new()
@ -2516,7 +2558,7 @@ public class ViewportHelperPro
return [];
}
[Log]
private static float DisplacementCalculations(PlaneType planeType, float vol = 0.4f)
{
switch (planeType)

@ -6,6 +6,7 @@ using HelixToolkit.Wpf.SharpDX;
using MathNet.Numerics;
using SharpDX;
using SharpDX.Direct3D11;
using SparkClient.Model.Attributes;
using SparkClient.Views.Dialog;
using SparkClient.Views.UserControl.ViewportData.Entity;
using SparkClient.Views.UserControl.ViewportData.Enum;
@ -306,6 +307,7 @@ public class ViewportManager
#region 统一控制方法
public static MeshGeometryModel3D PointTowardsTheFrontModel = new MeshGeometryModel3D();
[Log]
public static void PointTowardsTheFront(bool isPoint)
{
if (isPoint)
@ -321,6 +323,7 @@ public class ViewportManager
}
public static MeshGeometryModel3D MarkFacesModel = new MeshGeometryModel3D();
[Log]
public static void MarkSpecificFaces(bool isMark)
{
if (isMark)
@ -339,6 +342,7 @@ public class ViewportManager
/// </summary>
/// <param name="viewport"></param>
/// <param name="entities"></param>
[Log]
public static void LoadModelByEntities(List<Viewport3DTriangleEntity> entities)
{
if (entities.Count == 0 && ViewportTriangle.Count != 0)

@ -1,5 +1,6 @@
using System.Text.Json.Nodes;
using SharpDX;
using SparkClient.Model.Attributes;
using SparkClient.Model.Extension;
using SparkClient.Model.Helper;
using SparkClient.Views.UserControl.ViewportData.Entity;
@ -49,7 +50,7 @@ public class ViewportData
public ViewportData()
{
}
[Log]
public void LoadData()
{
JsonNode? json = null;
@ -169,7 +170,7 @@ public class ViewportData
}
}
[Log]
public async Task SaveAsToStlFile(string filename)
{
try
@ -182,7 +183,7 @@ public class ViewportData
return ;
}
}
[Log]
public async Task SaveAsToVedioFile(string filename)
{
try
@ -195,7 +196,7 @@ public class ViewportData
return ;
}
}
[Log]
public bool ConvertMp4ToDat(string mp4FilePath, string datFilePath)
{

Loading…
Cancel
Save