From 9e7962fc3f4958b315ead02c92c746cbf58aa3ba Mon Sep 17 00:00:00 2001 From: Evgeny Redikultsev Date: Sun, 19 Mar 2023 17:38:01 +0500 Subject: [PATCH] Surrounding property was added --- StructureHelper/App.xaml | 1 + .../Infrastructure/Enums/ActionType.cs | 14 ++++ .../UI/DataContexts/PrimitiveBase.cs | 8 +- .../UI/DataContexts/PrimitiveOperations.cs | 45 +++++++----- .../ReinforcementViewPrimitive.cs | 17 ++++- .../UI/Resources/ForceTemplates.xaml | 47 ++++++++++++ StructureHelper/StructureHelper.csproj.user | 9 +++ .../Forces/ForceCombinationByFactorView.xaml | 53 ++++++++++++++ .../ForceCombinationByFactorView.xaml.cs | 32 ++++++++ .../Windows/Forces/ForceCombinationView.xaml | 48 +----------- .../Windows/MainWindow/MainView.xaml | 5 +- .../Windows/MainWindow/MainViewModel.cs | 15 ++-- .../PrimitivePropertiesView.xaml | 2 +- .../PrimitivePropertiesView.xaml.cs | 19 ++--- .../Calculators/ForceCalculatorViewModel.cs | 14 ++-- .../ViewModels/Forces/ActionsViewModel.cs | 43 +++++++++-- .../ViewModels/Forces/ForceActionVMBase.cs | 61 ++++++++++++++++ .../Forces/ForceCombinationByFactorVM.cs | 73 +++++++++++++++++++ .../Forces/ForceCombinationViewModel.cs | 56 ++------------ .../Windows/ViewModels/Forces/ForceTupleVM.cs | 73 +++++++++++++++++++ .../NdmCrossSections/AnalysisVewModelLogic.cs | 2 +- .../ForceCombinationViewModelLogic.cs | 22 +++--- .../IForceCombinationViewModelLogic.cs | 2 +- .../IPrimitiveViewModelLogic.cs | 13 ---- .../PrimitiveViewModelLogic.cs | 18 ++++- .../PrimitivePropertiesViewModel.cs | 69 ++++++++++++++---- .../Interfaces/IHasForceCombinations.cs | 2 +- .../Models/Forces/ForceCombinationByFactor.cs | 25 +++++-- .../Models/Forces/ForceCombinationList.cs | 14 ++-- .../Models/Forces/IForceAction.cs | 6 +- .../Models/Forces/IForceCombinationList.cs | 4 +- .../Services/Forces/ForceActionService.cs | 21 ++++++ .../CrossSections/CrossSectionRepository.cs | 4 +- .../CrossSections/ICrossSectionRepository.cs | 2 +- .../CrossSections/RCs/CircleGeometryLogic.cs | 14 +++- .../CrossSections/RCs/RectGeometryLogic.cs | 21 +++--- .../CrossSections/RCs/SectionTemplate.cs | 8 +- .../Analyses/ByForces/ForceCalculator.cs | 25 +++++-- .../Analyses/ByForces/IForceCalculator.cs | 1 + .../Primitives/CirclePrimitive.cs | 2 + ...imitive.cs => IHasSurroundingPrimitive.cs} | 4 +- .../Primitives/INdmPrimitive.cs | 2 + .../Primitives/PointPrimitive.cs | 2 + .../Primitives/RectanglePrimitive.cs | 3 +- .../Primitives/ReinforcementPrimitive.cs | 8 +- .../NdmCalculations/InterpolateService.cs | 24 +++--- .../ViewModelTests/NdmPrimitiveTests.cs | 24 ++++++ 47 files changed, 716 insertions(+), 261 deletions(-) create mode 100644 StructureHelper/Infrastructure/Enums/ActionType.cs create mode 100644 StructureHelper/Infrastructure/UI/Resources/ForceTemplates.xaml create mode 100644 StructureHelper/Windows/Forces/ForceCombinationByFactorView.xaml create mode 100644 StructureHelper/Windows/Forces/ForceCombinationByFactorView.xaml.cs create mode 100644 StructureHelper/Windows/ViewModels/Forces/ForceActionVMBase.cs create mode 100644 StructureHelper/Windows/ViewModels/Forces/ForceCombinationByFactorVM.cs create mode 100644 StructureHelper/Windows/ViewModels/Forces/ForceTupleVM.cs delete mode 100644 StructureHelper/Windows/ViewModels/NdmCrossSections/IPrimitiveViewModelLogic.cs create mode 100644 StructureHelperCommon/Services/Forces/ForceActionService.cs rename StructureHelperLogics/NdmCalculations/Primitives/{IHasSorroundingPrimitive.cs => IHasSurroundingPrimitive.cs} (65%) diff --git a/StructureHelper/App.xaml b/StructureHelper/App.xaml index 9d626e4..df63f54 100644 --- a/StructureHelper/App.xaml +++ b/StructureHelper/App.xaml @@ -15,6 +15,7 @@ + diff --git a/StructureHelper/Infrastructure/Enums/ActionType.cs b/StructureHelper/Infrastructure/Enums/ActionType.cs new file mode 100644 index 0000000..3a81918 --- /dev/null +++ b/StructureHelper/Infrastructure/Enums/ActionType.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelper.Infrastructure.Enums +{ + public enum ActionType + { + ForceCombination, + ForceCombinationByFactor + } +} diff --git a/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveBase.cs b/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveBase.cs index c05f549..9017cc8 100644 --- a/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveBase.cs +++ b/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveBase.cs @@ -263,13 +263,13 @@ namespace StructureHelper.Infrastructure.UI.DataContexts public virtual INdmPrimitive GetNdmPrimitive() { - RefreshNdmPrimitive(); + //RefreshNdmPrimitive(); return primitive; } - public virtual void RefreshNdmPrimitive() - { - } + //public virtual void RefreshNdmPrimitive() + //{ + //} public void RefreshColor() { diff --git a/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs b/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs index 719c60c..74f5b55 100644 --- a/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs +++ b/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs @@ -17,26 +17,37 @@ namespace StructureHelper.Infrastructure.UI.DataContexts public static ObservableCollection ConvertNdmPrimitivesToPrimitiveBase(IEnumerable primitives) { ObservableCollection viewItems = new ObservableCollection(); - foreach (var item in primitives) + foreach (var primitive in primitives) { - if (item is IRectanglePrimitive) - { - var rect = item as IRectanglePrimitive; - viewItems.Add(new RectangleViewPrimitive(rect)); - } - else if (item is ICirclePrimitive) - { - var circle = item as ICirclePrimitive; - viewItems.Add(new CircleViewPrimitive(circle)); - } - else if (item is IPointPrimitive) - { - var point = item as IPointPrimitive; - viewItems.Add(new PointViewPrimitive(point)); - } - else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown); + viewItems.Add(ConvertNdmPrimitiveToPrimitiveBase(primitive)); } return viewItems; } + public static PrimitiveBase ConvertNdmPrimitiveToPrimitiveBase(INdmPrimitive primitive) + { + PrimitiveBase viewItem; + if (primitive is IRectanglePrimitive) + { + var rect = primitive as IRectanglePrimitive; + viewItem = new RectangleViewPrimitive(rect); + } + else if (primitive is ICirclePrimitive) + { + var circle = primitive as ICirclePrimitive; + viewItem = new CircleViewPrimitive(circle); + } + else if (primitive is IPointPrimitive & primitive is not ReinforcementPrimitive) + { + var point = primitive as IPointPrimitive; + viewItem = new PointViewPrimitive(point); + } + else if (primitive is ReinforcementPrimitive) + { + var point = primitive as ReinforcementPrimitive; + viewItem = new ReinforcementViewPrimitive(point); + } + else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + $". Actual type: {primitive.GetType()}"); + return viewItem; + } } } diff --git a/StructureHelper/Infrastructure/UI/DataContexts/ReinforcementViewPrimitive.cs b/StructureHelper/Infrastructure/UI/DataContexts/ReinforcementViewPrimitive.cs index 72c467b..e7b7fb2 100644 --- a/StructureHelper/Infrastructure/UI/DataContexts/ReinforcementViewPrimitive.cs +++ b/StructureHelper/Infrastructure/UI/DataContexts/ReinforcementViewPrimitive.cs @@ -7,10 +7,23 @@ using System.Threading.Tasks; namespace StructureHelper.Infrastructure.UI.DataContexts { - internal class ReinforcementViewPrimitive : PointViewPrimitive + public class ReinforcementViewPrimitive : PointViewPrimitive, IHasSurroundingPrimitive { - public ReinforcementViewPrimitive(IPointPrimitive _primitive) : base(_primitive) + ReinforcementPrimitive primitive; + + public INdmPrimitive SurroundingPrimitive { + get => primitive.SurroundingPrimitive; + set + { + primitive.SurroundingPrimitive = value; + OnPropertyChanged(nameof(SurroundingPrimitive)); + } + } + + public ReinforcementViewPrimitive(ReinforcementPrimitive _primitive) : base(_primitive) + { + primitive = _primitive; } } } diff --git a/StructureHelper/Infrastructure/UI/Resources/ForceTemplates.xaml b/StructureHelper/Infrastructure/UI/Resources/ForceTemplates.xaml new file mode 100644 index 0000000..39c13cf --- /dev/null +++ b/StructureHelper/Infrastructure/UI/Resources/ForceTemplates.xaml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +