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;
+ }
+ }
+}