Change beam shear calculator

This commit is contained in:
RedikultsevEvg
2025-08-09 17:33:08 +05:00
parent b34618e8a4
commit 3d8ac6f0c4
22 changed files with 372 additions and 198 deletions

View File

@@ -2,22 +2,23 @@
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models;
using StructureHelperCommon.Models.Calculators;
using StructureHelperCommon.Models.Forces;
using StructureHelperCommon.Models.Loggers;
using StructureHelperLogics.Models.Materials;
using StructureHelperLogics.NdmCalculations.Primitives;
namespace StructureHelperLogics.Models.BeamShears
{
public class BeamShearCalculatorLogic : IGetResultByInputDataLogic<IBeamShearCalculatorInputData, IBeamShearCalculatorResult>
{
private const LimitStates CollapseLimitState = LimitStates.ULS;
private readonly List<CalcTerms> calcTerms = new() { CalcTerms.LongTerm, CalcTerms.ShortTerm };
private IBeamShearCalculatorResult result;
private IBeamShearSectionLogic beamShearSectionLogic;
private List<IBeamShearActionResult> actionResults;
private IBeamShearCalculatorInputData inputData;
private readonly List<CalcTerms> calcTerms = new() { CalcTerms.LongTerm, CalcTerms.ShortTerm };
private List<IInclinedSection> inclinedSections;
private IBeamShearSectionLogic beamShearSectionLogic;
private IGetBeamShearSectionIputDatasLogic getBeamShearSectionIputDatasLogic;
private IGetInclinedSectionListLogic getInclinedSectionListLogic;
public IShiftTraceLogger? TraceLogger { get; set; }
@@ -36,7 +37,7 @@ namespace StructureHelperLogics.Models.BeamShears
InitializeStrategies();
try
{
GetSections();
GetActionResults();
result.ActionResults = actionResults;
}
catch (Exception ex)
@@ -82,6 +83,8 @@ namespace StructureHelperLogics.Models.BeamShears
private void InitializeStrategies()
{
beamShearSectionLogic ??= new BeamShearSectionLogic(TraceLogger);
getInclinedSectionListLogic ??= new GetInclinedSectionListLogic(null);
getBeamShearSectionIputDatasLogic ??= new GetBeamShearSectionIputDatasLogic();
}
private void PrepareNewResult()
@@ -93,7 +96,7 @@ namespace StructureHelperLogics.Models.BeamShears
};
}
private void GetSections()
private void GetActionResults()
{
actionResults = new();
List<IStirrup> stirrups = inputData.Stirrups.ToList();
@@ -103,17 +106,24 @@ namespace StructureHelperLogics.Models.BeamShears
}
foreach (var beamShearAction in inputData.Actions)
{
getBeamShearSectionIputDatasLogic.Action = beamShearAction;
foreach (var calcTerm in calcTerms)
{
getBeamShearSectionIputDatasLogic.CalcTerm = calcTerm;
foreach (var section in inputData.Sections)
{
getInclinedSectionListLogic.BeamShearSection = section;
getInclinedSectionListLogic.DesignRangeProperty = inputData.DesignRangeProperty;
inclinedSections = getInclinedSectionListLogic.GetInclinedSections();
getBeamShearSectionIputDatasLogic.Section = section;
getBeamShearSectionIputDatasLogic.InclinedSectionList = inclinedSections;
TraceLogger?.AddMessage($"Analysis for action: {beamShearAction.Name}, section: {section.Name}, calc turm {calcTerm} has been started");
TraceSection(section);
foreach (var stirrup in stirrups)
{
List<IInclinedSection> inclinedSections = GetInclinedSections(section);
List<IBeamShearSectionLogicInputData> sectionInputDatas = GetSectionInputDatas(beamShearAction, calcTerm, section, stirrup, inclinedSections);
List<IBeamShearSectionLogicResult> sectionResults = GetSectionResults(sectionInputDatas);
getBeamShearSectionIputDatasLogic.Stirrup = stirrup;
List<IBeamShearSectionLogicInputData> sectionInputDatas = getBeamShearSectionIputDatasLogic.GetBeamShearSectionInputDatas();
List<IBeamShearSectionLogicResult> sectionResults = GetInclinedSectionResults(sectionInputDatas);
BeamShearActionResult actionResult = GetActionResult(beamShearAction, calcTerm, section, stirrup, sectionResults);
actionResults.Add(actionResult);
}
@@ -139,7 +149,7 @@ namespace StructureHelperLogics.Models.BeamShears
return actionResult;
}
private List<IBeamShearSectionLogicResult> GetSectionResults(List<IBeamShearSectionLogicInputData> sectionInputDatas)
private List<IBeamShearSectionLogicResult> GetInclinedSectionResults(List<IBeamShearSectionLogicInputData> sectionInputDatas)
{
List<IBeamShearSectionLogicResult> sectionResults = new();
foreach (var item in sectionInputDatas)
@@ -147,42 +157,9 @@ namespace StructureHelperLogics.Models.BeamShears
IBeamShearSectionLogicResult sectionResult = CalculateInclinedSectionResult(item);
sectionResults.Add(sectionResult);
}
return sectionResults;
}
private List<IBeamShearSectionLogicInputData> GetSectionInputDatas(IBeamShearAction beamShearAction, CalcTerms calcTerm, IBeamShearSection section, IStirrup stirrup, List<IInclinedSection> inclinedSections)
{
List<IBeamShearSectionLogicInputData> sectionInputDatas = new();
var material = section.ConcreteMaterial;
var strength = material.GetStrength(CollapseLimitState, calcTerm);
foreach (var inclinedSection in inclinedSections)
{
inclinedSection.LimitState = CollapseLimitState;
inclinedSection.CalcTerm = calcTerm;
inclinedSection.ConcreteCompressionStrength = strength.Compressive;
inclinedSection.ConcreteTensionStrength = strength.Tensile;
DirectShearForceLogicInputData inputData = new()
{
BeamShearAction = beamShearAction,
InclinedSection = inclinedSection,
LimitState = CollapseLimitState,
CalcTerm = calcTerm,
};
IForceTuple forceTuple = GetForceTupleByShearAction(inputData);
BeamShearSectionLogicInputData newInputData = new(Guid.NewGuid())
{
InclinedSection = inclinedSection,
Stirrup = stirrup,
ForceTuple = forceTuple,
LimitState = CollapseLimitState,
CalcTerm = calcTerm
};
sectionInputDatas.Add(newInputData);
}
return sectionInputDatas;
}
private static BeamShearActionResult PrepareNewActionResult(IBeamShearAction beamShearAction, CalcTerms calcTerm, IBeamShearSection section, IStirrup stirrup)
{
@@ -197,19 +174,5 @@ namespace StructureHelperLogics.Models.BeamShears
Stirrup = stirrup
};
}
private List<IInclinedSection> GetInclinedSections(IBeamShearSection beamShearSection)
{
IGetInclinedSectionListInputData inclinedSectionInputDataLogic = new GetInclinedSectionListInputData(inputData.DesignRangeProperty, beamShearSection);
//IGetInclinedSectionListLogic getInclinedSectionListLogic = new GetInclinedSectionListLogic(inclinedSectionInputDataLogic, TraceLogger);
IGetInclinedSectionListLogic getInclinedSectionListLogic = new GetInclinedSectionListLogic(inclinedSectionInputDataLogic, null);
return getInclinedSectionListLogic.GetInclinedSections();
}
private IForceTuple GetForceTupleByShearAction(IDirectShearForceLogicInputData inputData)
{
IGetDirectShearForceLogic getDirectShearForceLogic = new GetDirectShearForceLogic(inputData, null);
return getDirectShearForceLogic.CalculateShearForceTuple();
}
}
}

View File

@@ -17,6 +17,8 @@ namespace StructureHelperLogics.Models.BeamShears
private IGetLongitudinalForceFactorLogic getLongitudinalForceFactorLogic;
private string sectionMessage;
private ICheckInputDataLogic<IBeamShearSectionLogicInputData> checkInputDataLogic;
private double concreteStrength;
private double stirrupStrength;
private ShiftTraceLogger? localTraceLogger { get; set; }
@@ -41,6 +43,7 @@ namespace StructureHelperLogics.Models.BeamShears
InitializeStrategies();
try
{
AddInclinedCrackToInputData();
CalculateResult();
}
catch (Exception ex)
@@ -50,6 +53,20 @@ namespace StructureHelperLogics.Models.BeamShears
}
}
private void AddInclinedCrackToInputData()
{
InclinedSection newSection = new();
var updateStrategy = new InclinedSectionUpdateStrategy();
updateStrategy.Update(newSection, InputData.InclinedSection);
double crackLength = newSection.EndCoord - newSection.StartCoord;
double maxCrackLength = 2 * newSection.EffectiveDepth;
if (crackLength > maxCrackLength)
{
newSection.StartCoord = newSection.EndCoord - maxCrackLength;
}
InputData.InclinedCrack = newSection;
}
private bool Check()
{
bool checkResult = true;
@@ -71,8 +88,8 @@ namespace StructureHelperLogics.Models.BeamShears
SetLongitudinalForce();
double factorOfLongitudinalForce = getLongitudinalForceFactorLogic.GetFactor();
localTraceLogger?.AddMessage($"Factor of longitudinal force = {factorOfLongitudinalForce}, (dimensionless)");
double concreteStrength = concreteLogic.GetShearStrength();
double stirrupStrength = stirrupLogic.GetShearStrength();
concreteStrength = concreteLogic.GetShearStrength();
stirrupStrength = stirrupLogic.GetShearStrength();
if (stirrupStrength > concreteStrength)
{
localTraceLogger?.AddMessage($"Shear reinforcement strength Qsw = {stirrupStrength} is greater than concrete strength for shear Qb = {concreteStrength}, shear reinforcement strength has to be restricted.");
@@ -113,6 +130,7 @@ namespace StructureHelperLogics.Models.BeamShears
};
double stirrupStrength = logic.GetShearStrength();
localTraceLogger?.AddMessage($"Stirrup strength was restricted as Qsw,restricted = {stirrupStrength}(N)");
InputData.InclinedCrack = logic.InclinedCrack;
return stirrupStrength;
}

View File

@@ -0,0 +1,71 @@
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Models.Forces;
namespace StructureHelperLogics.Models.BeamShears
{
public class GetBeamShearSectionIputDatasLogic : IGetBeamShearSectionIputDatasLogic
{
private const LimitStates CollapseLimitState = LimitStates.ULS;
private IDirectShearForceLogicInputData directShearForceLogicInputData;
private (double Compressive, double Tensile) strength;
public IBeamShearAction Action { get; set; }
public CalcTerms CalcTerm { get; set; }
public IBeamShearSection Section { get; set; }
public IStirrup Stirrup { get; set; }
public List<IInclinedSection> InclinedSectionList { get; set; }
public List<IBeamShearSectionLogicInputData> GetBeamShearSectionInputDatas()
{
List<IBeamShearSectionLogicInputData> sectionInputDatas = new();
var material = Section.ConcreteMaterial;
strength = material.GetStrength(CollapseLimitState, CalcTerm);
foreach (var inclinedSection in InclinedSectionList)
{
PrepareInclinedSection(inclinedSection);
BeamShearSectionLogicInputData newInputData = GetNewInputData(inclinedSection);
sectionInputDatas.Add(newInputData);
}
return sectionInputDatas;
}
private void PrepareInclinedSection(IInclinedSection inclinedSection)
{
inclinedSection.LimitState = CollapseLimitState;
inclinedSection.CalcTerm = CalcTerm;
inclinedSection.ConcreteCompressionStrength = strength.Compressive;
inclinedSection.ConcreteTensionStrength = strength.Tensile;
}
private BeamShearSectionLogicInputData GetNewInputData(IInclinedSection inclinedSection)
{
IForceTuple forceTuple = GetForceTupleByShearAction(inclinedSection);
BeamShearSectionLogicInputData beamShearSectionLogicInputData = new(Guid.NewGuid())
{
InclinedSection = inclinedSection,
BeamShearAction = Action,
BeamShearSection = Section,
Stirrup = Stirrup,
ForceTuple = forceTuple,
LimitState = CollapseLimitState,
CalcTerm = CalcTerm
};
BeamShearSectionLogicInputData newInputData = beamShearSectionLogicInputData;
return newInputData;
}
private IForceTuple GetForceTupleByShearAction(IInclinedSection inclinedSection)
{
directShearForceLogicInputData = new DirectShearForceLogicInputData()
{
BeamShearAction = Action,
InclinedSection = inclinedSection,
LimitState = CollapseLimitState,
CalcTerm = CalcTerm,
};
IGetDirectShearForceLogic getDirectShearForceLogic = new GetDirectShearForceLogic(directShearForceLogicInputData, null);
return getDirectShearForceLogic.CalculateShearForceTuple();
}
}
}

View File

@@ -1,22 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
/// <inheritdoc/>
public class GetInclinedSectionListInputData : IGetInclinedSectionListInputData
{
public IBeamShearDesignRangeProperty DesignRangeProperty { get; }
public IGetInclinedSectionLogic? GetInclinedSectionLogic { get; set; }
public IBeamShearSection BeamShearSection { get; set; }
public GetInclinedSectionListInputData(IBeamShearDesignRangeProperty designRangeProperty, IBeamShearSection beamShearSection)
{
DesignRangeProperty = designRangeProperty;
BeamShearSection = beamShearSection;
}
}
}

View File

@@ -7,19 +7,18 @@ namespace StructureHelperLogics.Models.BeamShears
{
public class GetInclinedSectionListLogic : IGetInclinedSectionListLogic
{
private readonly IGetInclinedSectionListInputData inputData;
private IGetInclinedSectionLogic inclinedSectionLogic;
private double depth;
private double effectiveDepth;
private List<IInclinedSection> inclinedSections;
private List<double> coordinates;
public IBeamShearDesignRangeProperty DesignRangeProperty { get; set; }
public IBeamShearSection BeamShearSection { get; set; }
public IShiftTraceLogger? TraceLogger { get; set; }
public GetInclinedSectionListLogic(
IGetInclinedSectionListInputData inputData,
IShiftTraceLogger? traceLogger)
public GetInclinedSectionListLogic(IShiftTraceLogger? traceLogger)
{
this.inputData = inputData;
TraceLogger = traceLogger;
}
@@ -29,14 +28,20 @@ namespace StructureHelperLogics.Models.BeamShears
Check();
GetShapeParameters();
GetCoordinates();
double minSectionLength = DesignRangeProperty.RelativeEffectiveDepthSectionLengthMinValue * effectiveDepth;
double maxSectionLength = DesignRangeProperty.RelativeEffectiveDepthSectionLengthMaxValue * effectiveDepth;
foreach (var startCoord in coordinates)
{
var endCoordinates = coordinates.Where(x => x >= startCoord);
foreach (var endCoord in endCoordinates)
{
inclinedSectionLogic = InitializeInclinedSectionLogic(startCoord, endCoord);
IInclinedSection inclinedSection = inclinedSectionLogic.GetInclinedSection();
inclinedSections.Add(inclinedSection);
double sectionLength = endCoord - startCoord;
if (sectionLength >= minSectionLength & sectionLength <= maxSectionLength)
{
inclinedSectionLogic = new GetInclinedSectionLogic(BeamShearSection, startCoord, endCoord, TraceLogger);
IInclinedSection inclinedSection = inclinedSectionLogic.GetInclinedSection();
inclinedSections.Add(inclinedSection);
}
}
}
return inclinedSections;
@@ -44,8 +49,8 @@ namespace StructureHelperLogics.Models.BeamShears
private void GetCoordinates()
{
double maxSectionLength = GetMaxSectionLength();
int stepCount = inputData.DesignRangeProperty.StepCount;
double maxSectionLength = GetMaxLengthOfInclinedSection();
int stepCount = DesignRangeProperty.StepCount;
double step = maxSectionLength / stepCount;
inclinedSections = new();
coordinates = new();
@@ -57,41 +62,36 @@ namespace StructureHelperLogics.Models.BeamShears
}
}
private double GetMaxSectionLength()
private double GetMaxLengthOfInclinedSection()
{
double relativeLength = inputData.DesignRangeProperty.RelativeEffectiveDepthRangeValue * effectiveDepth;
double length = Math.Max(relativeLength, inputData.DesignRangeProperty.AbsoluteRangeValue);
double minimumRelativeLength = DesignRangeProperty.RelativeEffectiveDepthRangeValue * effectiveDepth;
double minimumAbsoluteLength = DesignRangeProperty.AbsoluteRangeValue;
double length = Math.Max(minimumRelativeLength, minimumAbsoluteLength);
return length;
}
private void Check()
{
CheckObject.IsNull(inputData);
CheckObject.IsNull(inputData.BeamShearSection);
}
private IGetInclinedSectionLogic InitializeInclinedSectionLogic(double startCoord, double endCoord)
{
if (inputData.GetInclinedSectionLogic is not null)
{
return inputData.GetInclinedSectionLogic;
}
return new GetInclinedSectionLogic(inputData.BeamShearSection, startCoord, endCoord, TraceLogger);
CheckObject.IsNull(BeamShearSection);
CheckObject.IsNull(DesignRangeProperty);
}
private void GetShapeParameters()
{
if (inputData.BeamShearSection.Shape is IRectangleShape rectangle)
if (BeamShearSection.Shape is IRectangleShape rectangle)
{
depth = rectangle.Height;
}
else if (inputData.BeamShearSection.Shape is ICircleShape circle)
else if (BeamShearSection.Shape is ICircleShape circle)
{
depth = circle.Diameter;
}
else
{
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(inputData.BeamShearSection.Shape));
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(BeamShearSection.Shape));
}
effectiveDepth = depth - inputData.BeamShearSection.CenterCover;
double coverLayerOfConcrete = BeamShearSection.CenterCover;
effectiveDepth = depth - coverLayerOfConcrete;
}
}
}

View File

@@ -0,0 +1,16 @@
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Models.Forces;
namespace StructureHelperLogics.Models.BeamShears
{
public interface IGetBeamShearSectionIputDatasLogic
{
public IBeamShearAction Action { get; set; }
public CalcTerms CalcTerm { get; set; }
public IBeamShearSection Section { get; set; }
public IStirrup Stirrup { get; set; }
public List<IInclinedSection> InclinedSectionList { get; set; }
List<IBeamShearSectionLogicInputData> GetBeamShearSectionInputDatas();
}
}

View File

@@ -1,11 +0,0 @@
using StructureHelperCommon.Models.Calculators;
namespace StructureHelperLogics.Models.BeamShears
{
public interface IGetInclinedSectionListInputData : IInputData
{
IBeamShearDesignRangeProperty DesignRangeProperty { get; }
IGetInclinedSectionLogic? GetInclinedSectionLogic { get; set; }
IBeamShearSection BeamShearSection { get; set; }
}
}

View File

@@ -7,6 +7,8 @@ namespace StructureHelperLogics.Models.BeamShears
/// </summary>
public interface IGetInclinedSectionListLogic : ILogic
{
public IBeamShearDesignRangeProperty DesignRangeProperty { get; set; }
public IBeamShearSection BeamShearSection { get; set; }
List<IInclinedSection> GetInclinedSections();
}
}

View File

@@ -8,7 +8,10 @@ namespace StructureHelperLogics.Models.BeamShears
{
private ConcreteStrengthLogic concreteLogic;
private StirrupStrengthLogic stirrupLogic;
private IFindParameterCalculator parameterCalculator;
public IShiftTraceLogger? TraceLogger { get; set; }
public IInclinedSection InclinedCrack { get; private set; }
public IBeamShearSectionLogicInputData InputData { get; internal set; }
public ISectionEffectiveness SectionEffectiveness { get; internal set; }
public StirrupBySearchLogic(IShiftTraceLogger? traceLogger)
@@ -20,6 +23,7 @@ namespace StructureHelperLogics.Models.BeamShears
{
double parameter = GetCrackLengthRatio();
BeamShearSectionLogicInputData newInputData = GetNewInputDataByCrackLengthRatio(parameter);
InclinedCrack = newInputData.InclinedCrack;
TraceLogger?.AddMessage($"New value of dangerous inclinated crack has been obtained: start point Xstart = {newInputData.InclinedSection.StartCoord}(m), end point Xend = {newInputData.InclinedSection.EndCoord}(m)");
stirrupLogic = new(newInputData, TraceLogger);
double stirrupStrength = stirrupLogic.GetShearStrength();
@@ -33,14 +37,18 @@ namespace StructureHelperLogics.Models.BeamShears
/// <exception cref="StructureHelperException"></exception>
private double GetCrackLengthRatio()
{
var parameterCalculator = new FindParameterCalculator();
if (GetPredicate(1) == false)
{
return 1;
}
parameterCalculator = new FindParameterCalculator();
parameterCalculator.InputData.Predicate = GetPredicate;
parameterCalculator.Accuracy.IterationAccuracy = 0.0001d;
parameterCalculator.Accuracy.MaxIterationCount = 1000;
parameterCalculator.Run();
if (parameterCalculator.Result.IsValid == false)
{
throw new StructureHelperException(ErrorStrings.DataIsInCorrect + $": predicate error");
throw new StructureHelperException(ErrorStrings.DataIsInCorrect + $": Binary search error {parameterCalculator.Result.Description}");
}
var result = parameterCalculator.Result as FindParameterResult;
var crackLengthRatio = result.Parameter;
@@ -59,25 +67,32 @@ namespace StructureHelperLogics.Models.BeamShears
private bool GetPredicate(double crackLengthRatio)
{
BeamShearSectionLogicInputData newInputData = GetNewInputDataByCrackLengthRatio(crackLengthRatio);
concreteLogic = new(SectionEffectiveness, newInputData.InclinedSection, null);
concreteLogic = new(SectionEffectiveness, newInputData.InclinedCrack, null);
stirrupLogic = new(newInputData, null);
double concreteStrength = concreteLogic.GetShearStrength();
double stirrupStrength = stirrupLogic.GetShearStrength();
return stirrupStrength > concreteStrength;
bool predicateResult = stirrupStrength > concreteStrength;
if (crackLengthRatio == 1 & predicateResult == false)
{
}
return predicateResult;
}
private BeamShearSectionLogicInputData GetNewInputDataByCrackLengthRatio(double crackLengthRatio)
{
double sourceCrackLength = InputData.InclinedSection.EndCoord - InputData.InclinedSection.StartCoord;
IInclinedSection inclinedSection = InputData.InclinedCrack;
double sourceCrackLength = inclinedSection.EndCoord - inclinedSection.StartCoord;
double newCrackLength = sourceCrackLength * crackLengthRatio;
double newStartCoord = InputData.InclinedSection.EndCoord - newCrackLength;
double newStartCoord = inclinedSection.EndCoord - newCrackLength;
InclinedSection newSection = new();
var updateStrategy = new InclinedSectionUpdateStrategy();
updateStrategy.Update(newSection, InputData.InclinedSection);
updateStrategy.Update(newSection, inclinedSection);
newSection.StartCoord = newStartCoord;
BeamShearSectionLogicInputData newInputData = new(Guid.Empty)
{
InclinedSection = newSection,
InclinedCrack = newSection,
LimitState = InputData.LimitState,
CalcTerm = InputData.CalcTerm,
Stirrup = InputData.Stirrup,

View File

@@ -8,7 +8,7 @@ namespace StructureHelperLogics.Models.BeamShears
{
private readonly IBeamShearSectionLogicInputData inputData;
private IStirrup stirrup => inputData.Stirrup;
private IInclinedSection inclinedSection => inputData.InclinedSection;
private IInclinedSection inclinedSection => inputData.InclinedCrack;
private IBeamShearStrenghLogic stirrupByDensityStrengthLogic;
private IBeamShearStrenghLogic stirrupGroupStrengthLogic;
private IBeamShearStrenghLogic stirrupByInclinedRebarStrengthLogic;

View File

@@ -14,6 +14,8 @@ namespace StructureHelperLogics.Models.BeamShears
targetObject.AbsoluteRangeValue = sourceObject.AbsoluteRangeValue;
targetObject.RelativeEffectiveDepthRangeValue = sourceObject.RelativeEffectiveDepthRangeValue;
targetObject.StepCount = sourceObject.StepCount;
targetObject.RelativeEffectiveDepthSectionLengthMaxValue = sourceObject.RelativeEffectiveDepthSectionLengthMaxValue;
targetObject.RelativeEffectiveDepthSectionLengthMinValue = sourceObject.RelativeEffectiveDepthSectionLengthMinValue;
}
}
}

View File

@@ -12,6 +12,7 @@ namespace StructureHelperLogics.Models.BeamShears
CheckObject.IsNull(targetObject, ErrorStrings.TargetObject);
if (ReferenceEquals(targetObject, sourceObject)) { return; }
targetObject.InclinedSection = sourceObject.InclinedSection;
targetObject.InclinedCrack = sourceObject.InclinedCrack;
targetObject.Stirrup = sourceObject.Stirrup;
targetObject.LimitState = sourceObject.LimitState;
targetObject.CalcTerm = sourceObject.CalcTerm;