From 6d1f9bae1bfd0e8c74427e9ea351ffba7010130d Mon Sep 17 00:00:00 2001 From: Evgeny Redikultsev Date: Mon, 16 Jan 2023 21:42:18 +0500 Subject: [PATCH] CompressedProperty was added --- StructureHelper.csproj | 4 +- .../Models/Calculators/Accuracy.cs | 14 ++ .../Models/Calculators/IAccuracy.cs | 14 ++ .../Models/Sections/CompressedMember.cs | 37 +++++ .../Models/Sections/ICompressedMember.cs | 18 +++ .../Services/Calculations/AccuracyService.cs | 19 +++ .../Sections/CompressedMemberServices.cs | 22 +++ .../StructureHelperCommon.csproj | 6 + .../Analyses/ByForces/ForceCalculator.cs | 40 ++--- .../Analyses/ByForces/IForceCalculator.cs | 6 +- .../NdmCalculations/InterpolateService.cs | 4 +- .../ForceCalculatorView.xaml | 25 +++ Windows/MainWindow/MainViewModel.cs | 6 +- .../PrimitivePropertiesView.xaml | 40 +++-- .../Calculators/ForceCalculatorViewModel.cs | 13 +- ...isVewModel.cs => AnalysisVewModelLogic.cs} | 4 +- .../CalculatorsViewModelLogic.cs | 153 ------------------ .../NdmCrossSections/SecondOrderViewModel.cs | 60 +++++++ 18 files changed, 276 insertions(+), 209 deletions(-) create mode 100644 StructureHelperCommon/Models/Calculators/Accuracy.cs create mode 100644 StructureHelperCommon/Models/Calculators/IAccuracy.cs create mode 100644 StructureHelperCommon/Models/Sections/CompressedMember.cs create mode 100644 StructureHelperCommon/Models/Sections/ICompressedMember.cs create mode 100644 StructureHelperCommon/Services/Calculations/AccuracyService.cs create mode 100644 StructureHelperCommon/Services/Sections/CompressedMemberServices.cs rename Windows/ViewModels/NdmCrossSections/{AnalysisVewModel.cs => AnalysisVewModelLogic.cs} (93%) delete mode 100644 Windows/ViewModels/NdmCrossSections/CalculatorsViewModelLogic.cs create mode 100644 Windows/ViewModels/NdmCrossSections/SecondOrderViewModel.cs diff --git a/StructureHelper.csproj b/StructureHelper.csproj index 80a9cca..14efb18 100644 --- a/StructureHelper.csproj +++ b/StructureHelper.csproj @@ -264,7 +264,8 @@ - + + @@ -278,7 +279,6 @@ - diff --git a/StructureHelperCommon/Models/Calculators/Accuracy.cs b/StructureHelperCommon/Models/Calculators/Accuracy.cs new file mode 100644 index 0000000..67ca68e --- /dev/null +++ b/StructureHelperCommon/Models/Calculators/Accuracy.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelperCommon.Models.Calculators +{ + public class Accuracy : IAccuracy + { + public double IterationAccuracy { get; set; } + public int MaxIterationCount { get; set; } + } +} diff --git a/StructureHelperCommon/Models/Calculators/IAccuracy.cs b/StructureHelperCommon/Models/Calculators/IAccuracy.cs new file mode 100644 index 0000000..4ca1bd4 --- /dev/null +++ b/StructureHelperCommon/Models/Calculators/IAccuracy.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelperCommon.Models.Calculators +{ + public interface IAccuracy + { + double IterationAccuracy { get; set; } + int MaxIterationCount { get; set; } + } +} diff --git a/StructureHelperCommon/Models/Sections/CompressedMember.cs b/StructureHelperCommon/Models/Sections/CompressedMember.cs new file mode 100644 index 0000000..7c2722f --- /dev/null +++ b/StructureHelperCommon/Models/Sections/CompressedMember.cs @@ -0,0 +1,37 @@ +using StructureHelperCommon.Services.Sections; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelperCommon.Models.Sections +{ + public class CompressedMember : ICompressedMember + { + public bool Buckling { get; set; } + public double GeometryLength { get; set; } + public double LengthFactorX { get; set; } + public double DiagramFactorX { get; set; } + public double LengthFactorY { get; set; } + public double DiagramFactorY { get; set; } + + + public CompressedMember() + { + Buckling = true; + GeometryLength = 3d; + LengthFactorX = 1d; + DiagramFactorX = 1d; + LengthFactorY = 1d; + DiagramFactorY = 1d; + } + + public object Clone() + { + var target = new CompressedMember(); + CompressedMemberServices.CopyProperties(this, target); + return target; + } + } +} diff --git a/StructureHelperCommon/Models/Sections/ICompressedMember.cs b/StructureHelperCommon/Models/Sections/ICompressedMember.cs new file mode 100644 index 0000000..e3b3cb1 --- /dev/null +++ b/StructureHelperCommon/Models/Sections/ICompressedMember.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelperCommon.Models.Sections +{ + public interface ICompressedMember : ICloneable + { + bool Buckling { get; set; } + double GeometryLength { get; set; } + double LengthFactorX { get; set; } + double DiagramFactorX { get; set; } + double LengthFactorY { get; set; } + double DiagramFactorY { get; set; } + } +} diff --git a/StructureHelperCommon/Services/Calculations/AccuracyService.cs b/StructureHelperCommon/Services/Calculations/AccuracyService.cs new file mode 100644 index 0000000..c56bd0c --- /dev/null +++ b/StructureHelperCommon/Services/Calculations/AccuracyService.cs @@ -0,0 +1,19 @@ +using LoaderCalculator; +using StructureHelperCommon.Models.Calculators; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelperCommon.Services.Calculations +{ + public static class AccuracyService + { + public static void CopyProperties(IAccuracy source, IAccuracy target) + { + target.IterationAccuracy = source.IterationAccuracy; + target.MaxIterationCount = source.MaxIterationCount; + } + } +} diff --git a/StructureHelperCommon/Services/Sections/CompressedMemberServices.cs b/StructureHelperCommon/Services/Sections/CompressedMemberServices.cs new file mode 100644 index 0000000..e38a53e --- /dev/null +++ b/StructureHelperCommon/Services/Sections/CompressedMemberServices.cs @@ -0,0 +1,22 @@ +using StructureHelperCommon.Models.Sections; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelperCommon.Services.Sections +{ + public static class CompressedMemberServices + { + public static void CopyProperties(ICompressedMember source, ICompressedMember target) + { + target.Buckling = source.Buckling; + target.GeometryLength = source.GeometryLength; + target.LengthFactorX = source.LengthFactorX; + target.DiagramFactorX = source.DiagramFactorX; + target.LengthFactorY = source.LengthFactorY; + target.DiagramFactorY = source.DiagramFactorY; + } + } +} diff --git a/StructureHelperCommon/StructureHelperCommon.csproj b/StructureHelperCommon/StructureHelperCommon.csproj index 6874bd7..5faf8c6 100644 --- a/StructureHelperCommon/StructureHelperCommon.csproj +++ b/StructureHelperCommon/StructureHelperCommon.csproj @@ -61,6 +61,8 @@ + + @@ -86,6 +88,8 @@ + + @@ -98,9 +102,11 @@ + + diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceCalculator.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceCalculator.cs index 9063e50..6a47239 100644 --- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceCalculator.cs +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceCalculator.cs @@ -3,9 +3,13 @@ using LoaderCalculator.Data.Matrix; using LoaderCalculator.Data.Ndms; using LoaderCalculator.Data.SourceData; using StructureHelperCommon.Infrastructures.Enums; +using StructureHelperCommon.Models.Calculators; using StructureHelperCommon.Models.Forces; +using StructureHelperCommon.Models.Sections; using StructureHelperCommon.Models.Shapes; +using StructureHelperCommon.Services.Calculations; using StructureHelperCommon.Services.Forces; +using StructureHelperCommon.Services.Sections; using StructureHelperLogics.NdmCalculations.Primitives; using StructureHelperLogics.Services.NdmPrimitives; using System; @@ -17,14 +21,13 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces public class ForceCalculator : IForceCalculator { public string Name { get; set; } - public double IterationAccuracy { get; set; } - public int MaxIterationCount { get; set; } public List LimitStatesList { get; } public List CalcTermsList { get; } public List ForceCombinationLists { get; } public List Primitives { get; } public INdmResult Result { get; private set; } - + public ICompressedMember CompressedMember { get; } + public IAccuracy Accuracy { get; } public void Run() { @@ -82,8 +85,8 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces { ForceCombinationLists = new List(); Primitives = new List(); - IterationAccuracy = 0.001d; - MaxIterationCount = 1000; + CompressedMember = new CompressedMember(); + Accuracy = new Accuracy() { IterationAccuracy = 0.001d, MaxIterationCount = 1000 }; LimitStatesList = new List() { LimitStates.ULS, LimitStates.SLS }; CalcTermsList = new List() { CalcTerms.ShortTerm, CalcTerms.LongTerm }; } @@ -100,8 +103,8 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces { Preconditions = new Preconditions { - ConditionRate = IterationAccuracy, - MaxIterationCount = MaxIterationCount, + ConditionRate = Accuracy.IterationAccuracy, + MaxIterationCount = Accuracy.MaxIterationCount, StartForceMatrix = new ForceMatrix { Mx = mx, My = my, Nz = nz } }, NdmCollection = ndmCollection @@ -109,7 +112,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces var calculator = new Calculator(); calculator.Run(loaderData, new CancellationToken()); var calcResult = calculator.Result; - if (calcResult.AccuracyRate <= IterationAccuracy) + if (calcResult.AccuracyRate <= Accuracy.IterationAccuracy) { return new ForcesResult() { IsValid = true, Desctription = "Analysis is done succsefully", LoaderResults = calcResult }; } @@ -131,17 +134,16 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces public object Clone() { - IForceCalculator calculator = new ForceCalculator(); - calculator.Name = Name + " copy"; - calculator.LimitStatesList.Clear(); - calculator.LimitStatesList.AddRange(LimitStatesList); - calculator.CalcTermsList.Clear(); - calculator.CalcTermsList.AddRange(CalcTermsList); - calculator.IterationAccuracy = IterationAccuracy; - calculator.MaxIterationCount = MaxIterationCount; - calculator.Primitives.AddRange(Primitives); - calculator.ForceCombinationLists.AddRange(ForceCombinationLists); - return calculator; + IForceCalculator target = new ForceCalculator { Name = Name + " copy"}; + target.LimitStatesList.Clear(); + target.LimitStatesList.AddRange(LimitStatesList); + target.CalcTermsList.Clear(); + target.CalcTermsList.AddRange(CalcTermsList); + AccuracyService.CopyProperties(Accuracy, target.Accuracy); + CompressedMemberServices.CopyProperties(CompressedMember, target.CompressedMember); + target.Primitives.AddRange(Primitives); + target.ForceCombinationLists.AddRange(ForceCombinationLists); + return target; } } } diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceCalculator.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceCalculator.cs index a7555f3..ebf5d12 100644 --- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceCalculator.cs +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceCalculator.cs @@ -1,6 +1,8 @@ using StructureHelperCommon.Infrastructures.Enums; using StructureHelperCommon.Infrastructures.Interfaces; +using StructureHelperCommon.Models.Calculators; using StructureHelperCommon.Models.Forces; +using StructureHelperCommon.Models.Sections; using StructureHelperLogics.NdmCalculations.Primitives; using System; using System.Collections.Generic; @@ -10,8 +12,8 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces public interface IForceCalculator : INdmCalculator, IHasPrimitives, IHasForceCombinations { List CalcTermsList { get; } - double IterationAccuracy { get; set; } List LimitStatesList { get; } - int MaxIterationCount { get; set; } + ICompressedMember CompressedMember { get; } + IAccuracy Accuracy { get; } } } \ No newline at end of file diff --git a/StructureHelperLogics/Services/NdmCalculations/InterpolateService.cs b/StructureHelperLogics/Services/NdmCalculations/InterpolateService.cs index ee11f7d..11ced04 100644 --- a/StructureHelperLogics/Services/NdmCalculations/InterpolateService.cs +++ b/StructureHelperLogics/Services/NdmCalculations/InterpolateService.cs @@ -19,8 +19,8 @@ namespace StructureHelperLogics.Services.NdmCalculations calculator.LimitStatesList.Add(finishDesignForce.LimitState); calculator.CalcTermsList.Clear(); calculator.CalcTermsList.Add(finishDesignForce.CalcTerm); - calculator.IterationAccuracy = source.IterationAccuracy; - calculator.MaxIterationCount = source.MaxIterationCount; + calculator.Accuracy.IterationAccuracy = source.Accuracy.IterationAccuracy; + calculator.Accuracy.MaxIterationCount = source.Accuracy.MaxIterationCount; calculator.Primitives.AddRange(source.Primitives); calculator.ForceCombinationLists.Clear(); var combination = new ForceCombinationList() diff --git a/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml b/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml index df2b42e..2363cdf 100644 --- a/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml +++ b/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml @@ -49,6 +49,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Windows/MainWindow/MainViewModel.cs b/Windows/MainWindow/MainViewModel.cs index 047ad93..7feb8af 100644 --- a/Windows/MainWindow/MainViewModel.cs +++ b/Windows/MainWindow/MainViewModel.cs @@ -43,8 +43,8 @@ namespace StructureHelper.Windows.MainWindow public PrimitiveBase SelectedPrimitive { get; set; } public IForceCombinationList SelectedForceCombinationList { get; set; } - private readonly AnalysisVewModel calculatorsLogic; - public AnalysisVewModel CalculatorsLogic { get => calculatorsLogic;} + private readonly AnalysisVewModelLogic calculatorsLogic; + public AnalysisVewModelLogic CalculatorsLogic { get => calculatorsLogic;} public ActionsViewModel CombinationsLogic { get => combinationsLogic; } public IPrimitiveViewModelLogic PrimitiveLogic => primitiveLogic; @@ -202,7 +202,7 @@ namespace StructureHelper.Windows.MainWindow Model = model; section = model.Section; combinationsLogic = new ActionsViewModel(repository); - calculatorsLogic = new AnalysisVewModel(repository); + calculatorsLogic = new AnalysisVewModelLogic(repository); primitiveLogic = new PrimitiveViewModelLogic(repository) { CanvasWidth = CanvasWidth, CanvasHeight = CanvasHeight }; XX2 = CanvasWidth; XY1 = CanvasHeight / 2d; diff --git a/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml b/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml index 6c08e23..b59edfe 100644 --- a/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml +++ b/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml @@ -83,28 +83,24 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/Windows/ViewModels/Calculations/Calculators/ForceCalculatorViewModel.cs b/Windows/ViewModels/Calculations/Calculators/ForceCalculatorViewModel.cs index b0c19ef..6551470 100644 --- a/Windows/ViewModels/Calculations/Calculators/ForceCalculatorViewModel.cs +++ b/Windows/ViewModels/Calculations/Calculators/ForceCalculatorViewModel.cs @@ -1,6 +1,7 @@ using StructureHelper.Infrastructure; using StructureHelper.Infrastructure.UI.DataContexts; using StructureHelper.Services.Primitives; +using StructureHelper.Windows.ViewModels.NdmCrossSections; using StructureHelperCommon.Infrastructures.Enums; using StructureHelperCommon.Infrastructures.Exceptions; using StructureHelperCommon.Infrastructures.Strings; @@ -25,6 +26,7 @@ namespace StructureHelper.Windows.ViewModels.Calculations.Calculators IEnumerable allowedPrimitives; IEnumerable allowedForceCombinations; ForceCalculator forcesCalculator; + SecondOrderViewModel secondOrderViewModel; public string Name { @@ -34,16 +36,18 @@ namespace StructureHelper.Windows.ViewModels.Calculations.Calculators public double IterationAccuracy { - get { return forcesCalculator.IterationAccuracy; } - set { forcesCalculator.IterationAccuracy = value;} + get { return forcesCalculator.Accuracy.IterationAccuracy; } + set { forcesCalculator.Accuracy.IterationAccuracy = value;} } public int MaxIterationCount { - get { return forcesCalculator.MaxIterationCount; } - set { forcesCalculator.MaxIterationCount = value; } + get { return forcesCalculator.Accuracy.MaxIterationCount; } + set { forcesCalculator.Accuracy.MaxIterationCount = value; } } + public SecondOrderViewModel SecondOrder => secondOrderViewModel; + public bool ULS { get; set; } public bool SLS { get; set; } public bool ShortTerm { get; set; } @@ -147,6 +151,7 @@ namespace StructureHelper.Windows.ViewModels.Calculations.Calculators allowedPrimitives = _allowedPrimitives; allowedForceCombinations = _allowedForceCombinations; forcesCalculator = _forcesCalculator; + secondOrderViewModel = new SecondOrderViewModel(forcesCalculator.CompressedMember); CombinationViewModel = new SourceToTargetViewModel(); CombinationViewModel.SetTargetItems(forcesCalculator.ForceCombinationLists); diff --git a/Windows/ViewModels/NdmCrossSections/AnalysisVewModel.cs b/Windows/ViewModels/NdmCrossSections/AnalysisVewModelLogic.cs similarity index 93% rename from Windows/ViewModels/NdmCrossSections/AnalysisVewModel.cs rename to Windows/ViewModels/NdmCrossSections/AnalysisVewModelLogic.cs index ba1c6f7..2fdb818 100644 --- a/Windows/ViewModels/NdmCrossSections/AnalysisVewModel.cs +++ b/Windows/ViewModels/NdmCrossSections/AnalysisVewModelLogic.cs @@ -15,7 +15,7 @@ using System.Windows.Forms; namespace StructureHelper.Windows.ViewModels.NdmCrossSections { - public class AnalysisVewModel : CRUDViewModelBase + public class AnalysisVewModelLogic : CRUDViewModelBase { private ICrossSectionRepository repository; private RelayCommand runCommand; @@ -69,7 +69,7 @@ namespace StructureHelper.Windows.ViewModels.NdmCrossSections }, o => SelectedItem != null)); } } - public AnalysisVewModel(ICrossSectionRepository sectionRepository) : base(sectionRepository.CalculatorsList) + public AnalysisVewModelLogic(ICrossSectionRepository sectionRepository) : base(sectionRepository.CalculatorsList) { repository = sectionRepository; } diff --git a/Windows/ViewModels/NdmCrossSections/CalculatorsViewModelLogic.cs b/Windows/ViewModels/NdmCrossSections/CalculatorsViewModelLogic.cs deleted file mode 100644 index d6f2019..0000000 --- a/Windows/ViewModels/NdmCrossSections/CalculatorsViewModelLogic.cs +++ /dev/null @@ -1,153 +0,0 @@ -using StructureHelper.Infrastructure; -using StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalculatorViews; -using StructureHelper.Windows.ViewModels.Calculations.Calculators; -using StructureHelperCommon.Models.Forces; -using StructureHelperLogics.Models.CrossSections; -using StructureHelperLogics.NdmCalculations.Analyses; -using StructureHelperLogics.NdmCalculations.Analyses.ByForces; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Windows.Forms; -using System.Windows.Input; - -namespace StructureHelper.Windows.ViewModels.NdmCrossSections -{ - public class CalculatorsViewModelLogic : ViewModelBase, ICalculatorsViewModelLogic - { - private readonly ICrossSectionRepository repository; - - public INdmCalculator SelectedItem { get; set; } - public ObservableCollection Items { get; private set; } - - private RelayCommand addCommand; - public RelayCommand Add - { - get - { - return addCommand ?? - ( - addCommand = new RelayCommand(o => - { - AddCalculator(); - OnPropertyChanged(nameof(Items)); - })); - } - } - private void AddCalculator() - { - var item = new ForceCalculator() { Name = "New force calculator" }; - Items.Add(item); - repository.CalculatorsList.Add(item); - } - private RelayCommand editCommand; - public RelayCommand Edit - { - get - { - return editCommand ?? - ( - editCommand = new RelayCommand(o => - { - var tmpSelected = SelectedItem; - EditCalculator(); - Items.Clear(); - AddItems(repository.CalculatorsList); - OnPropertyChanged(nameof(Items)); - SelectedItem = tmpSelected; - }, o => SelectedItem != null)); - } - } - private void EditCalculator() - { - if (SelectedItem is ForceCalculator) - { - var calculator = SelectedItem as ForceCalculator; - var vm = new ForceCalculatorViewModel(repository.Primitives, repository.ForceCombinationLists, calculator); - - var wnd = new ForceCalculatorView(vm); - wnd.ShowDialog(); - } - } - private RelayCommand deleteCommand; - private RelayCommand runCommand; - private RelayCommand copyCommand; - - public RelayCommand Delete - { - get - { - return deleteCommand ?? - ( - deleteCommand = new RelayCommand(o => - { - DeleteCalculator(); - }, o => SelectedItem != null)); - } - } - public RelayCommand Run - { - get - { - return runCommand ?? - ( - runCommand = new RelayCommand(o => - { - SelectedItem.Run(); - var result = SelectedItem.Result; - if (result.IsValid == false) - { - MessageBox.Show(result.Desctription, "Check data for analisys", MessageBoxButtons.OK, MessageBoxIcon.Warning); - } - else - { - var calculator = SelectedItem as IForceCalculator; - var vm = new ForcesResultsViewModel(calculator); - var wnd = new ForceResultsView(vm); - wnd.ShowDialog(); - } - }, o => SelectedItem != null)); - } - } - public RelayCommand Copy - { - get - { - return copyCommand ?? - ( - copyCommand = new RelayCommand(o => - { - var item = SelectedItem.Clone() as INdmCalculator; - repository.CalculatorsList.Add(item); - Items.Add(item); - OnPropertyChanged(nameof(Items)); - }, o => SelectedItem != null)); - } - } - private void DeleteCalculator() - { - var dialogResult = MessageBox.Show("Delete calculator?", "Please, confirm deleting", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); - if (dialogResult == DialogResult.Yes) - { - repository.CalculatorsList.Remove(SelectedItem as INdmCalculator); - OnPropertyChanged(nameof(Items)); - } - } - - public void AddItems(IEnumerable items) - { - foreach (var item in items) - { - Items.Add(item); - } - } - - public CalculatorsViewModelLogic(ICrossSectionRepository repository) - { - this.repository = repository; - Items = new ObservableCollection(); - AddItems(this.repository.CalculatorsList); - } - } -} diff --git a/Windows/ViewModels/NdmCrossSections/SecondOrderViewModel.cs b/Windows/ViewModels/NdmCrossSections/SecondOrderViewModel.cs new file mode 100644 index 0000000..fe267b0 --- /dev/null +++ b/Windows/ViewModels/NdmCrossSections/SecondOrderViewModel.cs @@ -0,0 +1,60 @@ +using FieldVisualizer.ViewModels; +using StructureHelperCommon.Models.Sections; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelper.Windows.ViewModels.NdmCrossSections +{ + public class SecondOrderViewModel : ViewModelBase + { + ICompressedMember member; + + public bool Buckling + { + get => member.Buckling; + set + { + member.Buckling = value; + OnPropertyChanged(nameof(Buckling)); + } + } + + public double GeometryLength + { + get => member.GeometryLength; + set + { + member.GeometryLength = value; + OnPropertyChanged(nameof(GeometryLength)); + } + } + + public double LengthFactorX + { + get => member.LengthFactorX; + set + { + member.GeometryLength = value; + OnPropertyChanged(nameof(LengthFactorX)); + } + } + + public double LengthFactorY + { + get => member.LengthFactorY; + set + { + member.GeometryLength = value; + OnPropertyChanged(nameof(LengthFactorY)); + } + } + + public SecondOrderViewModel(ICompressedMember compressedMember) + { + member = compressedMember; + } + } +}