From 776fc4c494c96e4e526f914824446bf10b0ff8f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD=20=D0=98=D0=B2=D0=B0=D1=88=D0=BA?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Tue, 22 Apr 2025 17:09:06 +0500 Subject: [PATCH] Change table UI and VM, add parser dll, add modulus --- StructureHelper/Libraries/FunctionParser.dll | Bin 0 -> 13312 bytes .../Models/Materials/MaterialSettings.cs | 18 ++++ .../StructureHelperCommon.csproj | 2 +- .../StructureHelperCommon.csproj.user | 6 ++ .../Windows/FunctionMaterialCreationVM.cs | 76 ++++++++++++++ .../Windows/FunctionMaterialCreationView.xaml | 97 ++++++++++++++++++ .../FunctionMaterialCreationView.xaml.cs | 37 +++++++ .../Windows/FunctionSelectionVM.cs | 2 + .../Factories/HeadMaterialFactory.cs | 19 ++-- .../Models/Materials/FunctionMaterial.cs | 2 + .../Models/Materials/IFunctionMaterial.cs | 2 + 11 files changed, 251 insertions(+), 10 deletions(-) create mode 100644 StructureHelper/Libraries/FunctionParser.dll create mode 100644 StructureHelperCommon/Models/Materials/MaterialSettings.cs create mode 100644 StructureHelperCommon/Windows/FunctionMaterialCreationVM.cs create mode 100644 StructureHelperCommon/Windows/FunctionMaterialCreationView.xaml create mode 100644 StructureHelperCommon/Windows/FunctionMaterialCreationView.xaml.cs diff --git a/StructureHelper/Libraries/FunctionParser.dll b/StructureHelper/Libraries/FunctionParser.dll new file mode 100644 index 0000000000000000000000000000000000000000..8e888897bc895c95e4c648154ed12dafb0122ff3 GIT binary patch literal 13312 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 literal 0 HcmV?d00001 diff --git a/StructureHelperCommon/Models/Materials/MaterialSettings.cs b/StructureHelperCommon/Models/Materials/MaterialSettings.cs new file mode 100644 index 0000000..e41ada2 --- /dev/null +++ b/StructureHelperCommon/Models/Materials/MaterialSettings.cs @@ -0,0 +1,18 @@ +using StructureHelperCommon.Infrastructures.Enums; +using StructureHelperCommon.Infrastructures.Interfaces; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelperCommon.Models.Materials +{ + public class MaterialSettings + { + public bool IsActive { get; set; } + public LimitStates LimitState { get; set; } + public CalcTerms CalcTerm { get; set; } + public IOneVariableFunction Function { get; set; } + } +} diff --git a/StructureHelperCommon/StructureHelperCommon.csproj b/StructureHelperCommon/StructureHelperCommon.csproj index 0d7c275..0b5175e 100644 --- a/StructureHelperCommon/StructureHelperCommon.csproj +++ b/StructureHelperCommon/StructureHelperCommon.csproj @@ -16,7 +16,7 @@ - ..\..\FunctionParser\FunctionParser\bin\Debug\FunctionParser.dll + ..\StructureHelper\Libraries\FunctionParser.dll ..\StructureHelper\Libraries\LoaderCalculator.dll diff --git a/StructureHelperCommon/StructureHelperCommon.csproj.user b/StructureHelperCommon/StructureHelperCommon.csproj.user index 0505297..5ab7385 100644 --- a/StructureHelperCommon/StructureHelperCommon.csproj.user +++ b/StructureHelperCommon/StructureHelperCommon.csproj.user @@ -2,11 +2,17 @@ + + Code + Code + + Designer + Designer diff --git a/StructureHelperCommon/Windows/FunctionMaterialCreationVM.cs b/StructureHelperCommon/Windows/FunctionMaterialCreationVM.cs new file mode 100644 index 0000000..fdca4a9 --- /dev/null +++ b/StructureHelperCommon/Windows/FunctionMaterialCreationVM.cs @@ -0,0 +1,76 @@ +using FunctionParser; +using StructureHelperCommon.Infrastructures.Commands; +using StructureHelperCommon.Infrastructures.Interfaces; +using StructureHelperCommon.Infrastructures.Settings; +using StructureHelperCommon.Models.Functions; +using StructureHelperCommon.Models.Materials; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Input; + +namespace StructureHelperCommon.Windows +{ + public class FunctionMaterialCreationVM + { + public string CREATE_MATERIAL { get; } = "Create Function Material"; + public string MODULUS_OF_ELASTICITY { get; } = "Modulus of elasticity = "; + + private const string ERROR_TEXT_1 = "Not all material states have functions "; + private RelayCommand createFunctionMaterialCommand; + public ICommand CreateFunctionMaterialCommand + { + get => createFunctionMaterialCommand ??= new RelayCommand(o => CreateFunctionMaterial(o)); + } + public double Modulus { get; set; } = 2e11d; + public ObservableCollection Functions { get; set; } = new ObservableCollection(); + public ObservableCollection MaterialSettingsList { get; set; } = new() { new MaterialSettings() }; + public FunctionMaterialCreationVM() + { + var stressStrainFunctions = new ObservableCollection + ( + ProgramSetting.Functions + .Where(x => x.FunctionPurpose == Infrastructures.Enums.FunctionPurpose.StressStrain) + ); + GetFunctionsFromTree(stressStrainFunctions); + } + private void GetFunctionsFromTree(ObservableCollection stressStrainFunctions) + { + foreach (IOneVariableFunction func in stressStrainFunctions) + { + Functions.Add(func); + if (func.Functions.Count > 0) + { + GetFunctionsFromTree(func.Functions); + } + } + } + private void CreateFunctionMaterial(object parameter) + { + // var window = parameter as Window; + // if (Func_ST_ULS == null || + // Func_ST_SLS == null || + // Func_ST_Special == null || + // Func_LT_ULS == null || + // Func_LT_SLS == null || + // Func_LT_Special == null) + // { + // MessageBox.Show($"{ERROR_TEXT_1}"); + // return; + // } + // FunctionStorage.Func_ST_ULS = Func_ST_ULS; + // FunctionStorage.Func_ST_SLS = Func_ST_SLS; + // FunctionStorage.Func_ST_Special = Func_ST_Special; + // FunctionStorage.Func_LT_ULS = Func_LT_ULS; + // FunctionStorage.Func_LT_SLS = Func_LT_SLS; + // FunctionStorage.Func_LT_Special = Func_LT_Special; + // window.DialogResult = true; + // window.Close(); + } + + } +} diff --git a/StructureHelperCommon/Windows/FunctionMaterialCreationView.xaml b/StructureHelperCommon/Windows/FunctionMaterialCreationView.xaml new file mode 100644 index 0000000..df89fd9 --- /dev/null +++ b/StructureHelperCommon/Windows/FunctionMaterialCreationView.xaml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +