From b9f13193af8a6c4707881ecbc4ce156d3141e925 Mon Sep 17 00:00:00 2001 From: Evgeny Redikultsev Date: Sun, 21 Jan 2024 14:21:38 +0500 Subject: [PATCH] LimitCarveCalculator Edit Window was changed --- .../Infrastructure/Enums/CalculatorTypes.cs | 15 ++ .../Calculators/LimitCurveVisualCalculator.cs | 32 ++++ .../LimitCurveDataViewModel.cs | 11 +- .../ForcesResultsViewModel.cs | 7 +- .../LimitCurveCalculatorView.xaml | 52 ++----- .../LimitCurveCalculatorView.xaml.cs | 9 +- .../LimitCurveCalculatorViewModel.cs | 29 +++- .../UserControls/LimitCurveControl.xaml | 9 +- .../UserControls/LimitCurveControl.xaml.cs | 28 ++-- .../UserControls/SurroundDataControl.xaml | 2 +- .../UserControls/SurroundDataControl.xaml.cs | 68 ++++----- .../UserControls/SurroundDataViewModel.cs | 2 +- .../Windows/MainWindow/MainView.xaml | 15 +- .../Materials/MaterialsViewModel.cs | 14 +- .../NdmCrossSections/AnalysisVewModelLogic.cs | 141 ++++++++++++++---- .../ViewModels/OkCancelViewModelBase.cs | 4 +- .../Settings/CalcTermEntity.cs | 13 +- .../Settings/LimitStateEntity.cs | 10 ++ .../LimitCurve/Factories/PredicateEntry.cs | 7 + .../LimitCurve/LimitCurveInputData.cs | 39 ++++- .../LimitCurve/LimitCurvesCalculator.cs | 16 +- .../ByForces/LimitCurve/LimitCurvesResult.cs | 2 +- .../ByForces/LimitCurve/SurroundData.cs | 15 +- .../LimitCurveInputDataUpdateStrategy.cs | 28 ++++ .../LimitCurvesCalculatorUpdateStrategy.cs | 22 +++ .../Logics/SurroundDataUpdateStrategy.cs | 23 +++ .../Logics/CalculatorUpdateStrategy.cs | 9 +- 27 files changed, 462 insertions(+), 160 deletions(-) create mode 100644 StructureHelper/Infrastructure/Enums/CalculatorTypes.cs create mode 100644 StructureHelper/Models/Calculators/LimitCurveVisualCalculator.cs create mode 100644 StructureHelperLogics/NdmCalculations/Analyses/ByForces/Logics/LimitCurveInputDataUpdateStrategy.cs create mode 100644 StructureHelperLogics/NdmCalculations/Analyses/ByForces/Logics/LimitCurvesCalculatorUpdateStrategy.cs create mode 100644 StructureHelperLogics/NdmCalculations/Analyses/ByForces/Logics/SurroundDataUpdateStrategy.cs diff --git a/StructureHelper/Infrastructure/Enums/CalculatorTypes.cs b/StructureHelper/Infrastructure/Enums/CalculatorTypes.cs new file mode 100644 index 0000000..8383ce8 --- /dev/null +++ b/StructureHelper/Infrastructure/Enums/CalculatorTypes.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelper.Infrastructure.Enums +{ + public enum CalculatorTypes + { + ForceCalculator, + LimitCurveCalculator, + FireCalculator + } +} diff --git a/StructureHelper/Models/Calculators/LimitCurveVisualCalculator.cs b/StructureHelper/Models/Calculators/LimitCurveVisualCalculator.cs new file mode 100644 index 0000000..c81ac24 --- /dev/null +++ b/StructureHelper/Models/Calculators/LimitCurveVisualCalculator.cs @@ -0,0 +1,32 @@ +using StructureHelperCommon.Infrastructures.Interfaces; +using StructureHelperCommon.Models.Calculators; +using StructureHelperLogics.NdmCalculations.Analyses.ByForces; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelper.Models.Calculators +{ + internal class LimitCurveVisualCalculator : ISaveable, ICalculator + { + private LimitCurvesResult result; + + public Guid Id { get; } + public string Name { get; set; } + + public IResult Result => result; + + public void Run() + { + throw new NotImplementedException(); + } + + public object Clone() + { + throw new NotImplementedException(); + } + + } +} diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataViewModel.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataViewModel.cs index 12819ac..f994abb 100644 --- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataViewModel.cs +++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataViewModel.cs @@ -33,7 +33,6 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu public SelectItemsVM PredicateItems { get; private set; } public SelectItemsVM LimitStateItems { get; private set; } public SelectItemsVM CalcTermITems { get; private set; } - public bool ShowPrimitivesTab { get; set; } public int PointCount { @@ -77,8 +76,11 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu public void RefreshInputData() { + inputData.LimitStates.Clear(); inputData.LimitStates.AddRange(LimitStateItems.SelectedItems.Select(x => x.LimitState)); + inputData.CalcTerms.Clear(); inputData.CalcTerms.AddRange(CalcTermITems.SelectedItems.Select(x => x.CalcTerm)); + inputData.PredicateEntries.Clear(); inputData.PredicateEntries.AddRange(PredicateItems.SelectedItems); inputData.PrimitiveSeries.Clear(); foreach (var item in PrimitiveSeries.Collection) @@ -127,13 +129,15 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu private void GetCalcTerms() { CalcTermITems = new SelectItemsVM(ProgramSetting.CalcTermList.CalcTerms); - CalcTermITems.SelectedItems = ProgramSetting.CalcTermList.CalcTerms.Where(x => inputData.CalcTerms.Contains(x.CalcTerm)); + var selectedItems = ProgramSetting.CalcTermList.CalcTerms.Where(x => inputData.CalcTerms.Contains(x.CalcTerm)); + CalcTermITems.SelectedItems = selectedItems; CalcTermITems.ShowButtons = true; } private void GetLimitStates() { LimitStateItems = new SelectItemsVM(ProgramSetting.LimitStatesList.LimitStates); - LimitStateItems.SelectedItems = ProgramSetting.LimitStatesList.LimitStates.Where(x => inputData.LimitStates.Contains(x.LimitState)); + var selectedItems = ProgramSetting.LimitStatesList.LimitStates.Where(x => inputData.LimitStates.Contains(x.LimitState)); + LimitStateItems.SelectedItems = selectedItems; LimitStateItems.ShowButtons = true; } @@ -148,6 +152,7 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu { Name = "Cracking", PredicateType = PredicateTypes.Cracking }, } ); + PredicateItems.SelectedItems = inputData.PredicateEntries; PredicateItems.ShowButtons = true; } } diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsViewModel.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsViewModel.cs index ea4cb33..5062bfe 100644 --- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsViewModel.cs +++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsViewModel.cs @@ -86,9 +86,9 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu { var inputData = new LimitCurveInputData(ndmPrimitives); var vm = new LimitCurveDataViewModel(inputData, ndmPrimitives); - vm.LimitStateItems.SetIsSelected(); - vm.CalcTermITems.SetIsSelected(); - vm.ShowPrimitivesTab = true; + //vm.LimitStateItems.SetIsSelected(); + //vm.CalcTermITems.SetIsSelected(); + //vm.PredicateItems.SetIsSelected(); var wnd = new LimitCurveDataView(vm); wnd.ShowDialog(); if (wnd.DialogResult != true) return; @@ -382,6 +382,7 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu forcesResults = forceCalculator.Result as IForcesResults; ndmPrimitives = forceCalculator.Primitives; } + private void ShowIsoField() { try diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/LimitCurveCalculatorView.xaml b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/LimitCurveCalculatorView.xaml index ada70f2..90e622e 100644 --- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/LimitCurveCalculatorView.xaml +++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/LimitCurveCalculatorView.xaml @@ -1,4 +1,4 @@ - + Title="Limit Curve Calculator" Height="390" Width="400" MinHeight="300" MinWidth="400" ResizeMode="NoResize" WindowStartupLocation="CenterScreen"> - - - - - - - - - - - - - - - - - - - -