From 15bb7030cc311bea9db4dd6d4e544cb9bc83675a Mon Sep 17 00:00:00 2001 From: Evgeny Redikultsev Date: Sun, 23 Mar 2025 21:24:22 +0500 Subject: [PATCH] Add stirrup update strategy --- StructureHelper/StructureHelper.csproj.user | 6 ++ .../BeamShears/BeamShearActionView.xaml | 29 +++++- .../BeamShears/BeamShearActionViewModel.cs | 12 ++- .../BeamShearAxisActionViewModel.cs | 21 ++-- .../BeamShears/BeamShearLoadsViewModel.cs | 8 +- .../Windows/BeamShears/BeamShearView.xaml | 4 +- .../BeamShears/BeamStirrupsViewModel.cs | 96 ++++++++++++++++++- .../BeamShears/StirrupByDensityView.xaml | 32 +++++++ .../BeamShears/StirrupByDensityView.xaml.cs | 35 +++++++ .../BeamShears/StirrupByDensityViewModel.cs | 40 ++++++++ .../Forces/FactoredForceTupleViewModel.cs | 25 +++++ .../BeamShearActions/BeamShearAction.cs | 17 ++-- .../BeamShearActionUpdateStrategy.cs | 9 +- .../BeamShearActions/BeamShearAxisAction.cs | 7 +- .../BeamShearAxisActionUpdateStrategy.cs | 10 +- .../BeamShearLoadBaseUpdateStrategy.cs | 4 +- .../BeamShearLoadUpdateStrategy.cs | 6 +- .../ConcentratedForceUpdateStrategy.cs | 2 +- .../DistributedLoadUpdateStrategy.cs | 2 +- .../Factories/BeamShearActionFactory.cs | 31 +++--- .../Factories/BeamShearLoadFactory.cs | 2 +- .../BeamShearActions/IBeamShearAction.cs | 16 +++- .../BeamShearActions/IBeamShearAxisAction.cs | 10 +- .../ConcentratedForce.cs | 0 .../{BeamShearActions => }/DistributedLoad.cs | 0 .../Models/Forces/FactoredForceTuple.cs | 25 +++++ .../IBeamShearLoad.cs => IBeamSpanLoad.cs} | 2 +- .../IConcentratedForce.cs | 2 +- .../IDistributedLoad.cs | 2 +- .../Models/Forces/IFactoredForceTuple.cs | 11 ++- .../Logics/GetDirectShearForceLogic.cs | 2 +- .../BeamShears/Logics/IShearForceLogic.cs | 8 +- .../Logics/ISumForceByShearLoadLogic.cs | 2 +- .../BeamShears/Logics/ShearForceLogic.cs | 2 +- .../Logics/StirrupBaseUpdateStrategy.cs | 22 +++++ .../Logics/StirrupByDensityUpdateStrategy.cs | 22 +++++ .../StirrupByUniformRebarUpdateStrategy.cs | 29 ++++++ .../Logics/StirrupUpdateStrategy.cs | 61 ++++++++++++ .../Logics/SumConcentratedForceLogic.cs | 2 +- .../Logics/SumDistributedLoadLogic.cs | 2 +- .../Logics/SumForceByShearLoadLogic.cs | 3 +- .../GetDirectShearForceLogicTests.cs | 6 +- .../SumConcentratedForceLogicTests.cs | 2 +- .../SumDistributedLoadLogicTests.cs | 2 +- 44 files changed, 524 insertions(+), 107 deletions(-) create mode 100644 StructureHelper/Windows/BeamShears/StirrupByDensityView.xaml create mode 100644 StructureHelper/Windows/BeamShears/StirrupByDensityView.xaml.cs create mode 100644 StructureHelper/Windows/BeamShears/StirrupByDensityViewModel.cs create mode 100644 StructureHelper/Windows/Forces/FactoredForceTupleViewModel.cs rename StructureHelperCommon/Models/Forces/{BeamShearActions => }/ConcentratedForce.cs (100%) rename StructureHelperCommon/Models/Forces/{BeamShearActions => }/DistributedLoad.cs (100%) create mode 100644 StructureHelperCommon/Models/Forces/FactoredForceTuple.cs rename StructureHelperCommon/Models/Forces/{BeamShearActions/IBeamShearLoad.cs => IBeamSpanLoad.cs} (93%) rename StructureHelperCommon/Models/Forces/{BeamShearActions => }/IConcentratedForce.cs (90%) rename StructureHelperCommon/Models/Forces/{BeamShearActions => }/IDistributedLoad.cs (90%) create mode 100644 StructureHelperLogics/Models/BeamShears/Logics/StirrupBaseUpdateStrategy.cs create mode 100644 StructureHelperLogics/Models/BeamShears/Logics/StirrupByDensityUpdateStrategy.cs create mode 100644 StructureHelperLogics/Models/BeamShears/Logics/StirrupByUniformRebarUpdateStrategy.cs create mode 100644 StructureHelperLogics/Models/BeamShears/Logics/StirrupUpdateStrategy.cs diff --git a/StructureHelper/StructureHelper.csproj.user b/StructureHelper/StructureHelper.csproj.user index b525da0..65eb1d7 100644 --- a/StructureHelper/StructureHelper.csproj.user +++ b/StructureHelper/StructureHelper.csproj.user @@ -24,6 +24,9 @@ Code + + Code + Code @@ -161,6 +164,9 @@ Designer + + Designer + Designer diff --git a/StructureHelper/Windows/BeamShears/BeamShearActionView.xaml b/StructureHelper/Windows/BeamShears/BeamShearActionView.xaml index 9111a61..3a0160f 100644 --- a/StructureHelper/Windows/BeamShears/BeamShearActionView.xaml +++ b/StructureHelper/Windows/BeamShears/BeamShearActionView.xaml @@ -31,8 +31,29 @@ - - + + + + + + + + + + + + + + + + + + + + + + + @@ -48,12 +69,12 @@ - + - + diff --git a/StructureHelper/Windows/BeamShears/BeamShearActionViewModel.cs b/StructureHelper/Windows/BeamShears/BeamShearActionViewModel.cs index 79902cb..e10d8ba 100644 --- a/StructureHelper/Windows/BeamShears/BeamShearActionViewModel.cs +++ b/StructureHelper/Windows/BeamShears/BeamShearActionViewModel.cs @@ -1,4 +1,6 @@ -using StructureHelper.Windows.ViewModels; +using StructureHelper.Windows.Forces; +using StructureHelper.Windows.ViewModels; +using StructureHelper.Windows.ViewModels.Forces; using StructureHelperCommon.Models.Forces; using System; using System.Collections.Generic; @@ -21,12 +23,16 @@ namespace StructureHelper.Windows.BeamShears shearAction.Name = value; } } - public BeamShearAxisActionViewModel YAxisAction { get; private set; } + + public FactoredForceTupleViewModel ExternalForces { get; private set; } + + public BeamShearAxisActionViewModel SupportAction { get; private set; } public BeamShearActionViewModel(IBeamShearAction shearAction) { this.shearAction = shearAction; - YAxisAction = new(this.shearAction.YAxisShearAction); + SupportAction = new(this.shearAction.SupportAction); + ExternalForces = new(this.shearAction.ExternalForce); } } } diff --git a/StructureHelper/Windows/BeamShears/BeamShearAxisActionViewModel.cs b/StructureHelper/Windows/BeamShears/BeamShearAxisActionViewModel.cs index 4ac0af0..a37aa77 100644 --- a/StructureHelper/Windows/BeamShears/BeamShearAxisActionViewModel.cs +++ b/StructureHelper/Windows/BeamShears/BeamShearAxisActionViewModel.cs @@ -1,11 +1,10 @@ using StructureHelper.Infrastructure; using StructureHelper.Windows.Forces; +using StructureHelper.Windows.ViewModels.Forces; using StructureHelperCommon.Models.Forces; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; + +//Copyright (c) 2025 Redikultsev Evgeny, Ekaterinburg, Russia +//All rights reserved. namespace StructureHelper.Windows.BeamShears { @@ -13,21 +12,13 @@ namespace StructureHelper.Windows.BeamShears { private readonly IBeamShearAxisAction beamShearAxisAction; - public double SupportShearForce - { - get => beamShearAxisAction.SupportShearForce; - set - { - beamShearAxisAction.SupportShearForce = value; - } - } - public FactoredCombinationPropertyVM CombinationProperty { get; } + public FactoredForceTupleViewModel SupportForces { get; private set; } public BeamShearLoadsViewModel ShearLoads { get; } public BeamShearAxisActionViewModel(IBeamShearAxisAction beamShearAxisAction) { this.beamShearAxisAction = beamShearAxisAction; - CombinationProperty = new(this.beamShearAxisAction.FactoredCombinationProperty); + SupportForces = new(this.beamShearAxisAction.SupportForce); ShearLoads = new(this.beamShearAxisAction.ShearLoads); } } diff --git a/StructureHelper/Windows/BeamShears/BeamShearLoadsViewModel.cs b/StructureHelper/Windows/BeamShears/BeamShearLoadsViewModel.cs index 4baef3f..00b9906 100644 --- a/StructureHelper/Windows/BeamShears/BeamShearLoadsViewModel.cs +++ b/StructureHelper/Windows/BeamShears/BeamShearLoadsViewModel.cs @@ -14,10 +14,10 @@ using System.Windows.Forms; namespace StructureHelper.Windows.BeamShears { - public class BeamShearLoadsViewModel : SelectItemVM + public class BeamShearLoadsViewModel : SelectItemVM { - private IUpdateStrategy updateStrategy; - public BeamShearLoadsViewModel(List collection) : base(collection) + private IUpdateStrategy updateStrategy; + public BeamShearLoadsViewModel(List collection) : base(collection) { } public override void AddMethod(object parameter) @@ -41,7 +41,7 @@ namespace StructureHelper.Windows.BeamShears { if (SelectedItem is null) { return; } Window window; - IBeamShearLoad temporaryShearLoad = SelectedItem.Clone() as IBeamShearLoad; + IBeamSpanLoad temporaryShearLoad = SelectedItem.Clone() as IBeamSpanLoad; if (SelectedItem is IDistributedLoad distributedLoad) { window = new DistributedLoadView(distributedLoad); diff --git a/StructureHelper/Windows/BeamShears/BeamShearView.xaml b/StructureHelper/Windows/BeamShears/BeamShearView.xaml index 354594e..dc86b6f 100644 --- a/StructureHelper/Windows/BeamShears/BeamShearView.xaml +++ b/StructureHelper/Windows/BeamShears/BeamShearView.xaml @@ -11,9 +11,9 @@ Title="Beam Shear Analysis" Height="450" Width="800" MinHeight="250" MinWidth="400" MaxHeight="1000" MaxWidth="1500" WindowStartupLocation="CenterScreen"> - +