Fix error of cross-section cloning strategy

This commit is contained in:
Evgeny Redikultsev
2024-12-29 20:32:48 +05:00
parent bd0175086a
commit ba70e0d214
8 changed files with 42 additions and 31 deletions

View File

@@ -1,4 +1,5 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Infrastructures.Settings;
using StructureHelperCommon.Services;
using StructureHelperLogics.NdmCalculations.Primitives;
using StructureHelperLogics.NdmCalculations.Primitives.Logics;
@@ -31,6 +32,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces.Logics
public void Update(IForceCalculator targetObject, IForceCalculator sourceObject)
{
var project = ProgramSetting.CurrentProject;
CheckObject.IsNull(cloningStrategy);
CheckObject.IsNull(sourceObject);
CheckObject.IsNull(targetObject);

View File

@@ -1,5 +1,6 @@
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Infrastructures.Settings;
using StructureHelperCommon.Models.Calculators;
using StructureHelperCommon.Models.Parameters;
using StructureHelperCommon.Services;
@@ -21,14 +22,6 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
private IUpdateStrategy<ICrackCalculator> crackCalculatorUpdateStrategy;
private IUpdateStrategy<ILimitCurvesCalculator> limitCurvesCalculatorUpdateStrategy;
public HasCalculatorsUpdateCloningStrategy(ICloningStrategy cloningStrategy) : this(
cloningStrategy,
new ForceCalculatorUpdateCloningStrategy(cloningStrategy),
new CrackCalculatorUpdateCloningStrategy(cloningStrategy),
new LimitCurvesCalculatorUpdateCloningStrategy(cloningStrategy)
)
{
}
public HasCalculatorsUpdateCloningStrategy(
ICloningStrategy cloningStrategy,
@@ -42,8 +35,18 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
this.limitCurvesCalculatorUpdateStrategy = limitCurvesCalculatorUpdateStrategy;
}
public HasCalculatorsUpdateCloningStrategy(ICloningStrategy cloningStrategy) : this(
cloningStrategy,
new ForceCalculatorUpdateCloningStrategy(cloningStrategy),
new CrackCalculatorUpdateCloningStrategy(cloningStrategy),
new LimitCurvesCalculatorUpdateCloningStrategy(cloningStrategy)
)
{
}
public void Update(IHasCalculators targetObject, IHasCalculators sourceObject)
{
var project = ProgramSetting.CurrentProject;
CheckObject.IsNull(cloningStrategy);
CheckObject.IsNull(sourceObject);
CheckObject.IsNull(targetObject);
@@ -52,8 +55,8 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
foreach (var calculator in sourceObject.Calculators)
{
//to do Change to cloning strategy
//var newCalculator = cloningStrategy.Clone(calculator);
var newCalculator = calculator.Clone() as ICalculator;
var newCalculator = cloningStrategy.Clone(calculator);
//var newCalculator = calculator.Clone() as ICalculator;
if (calculator is IForceCalculator forceCalculator)
{
forceCalculatorUpdateStrategy.Update(newCalculator as IForceCalculator, forceCalculator);

View File

@@ -68,11 +68,14 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
Message = "Mx = " + item.DesignForceTuple.ForceTuple.Mx.ToString() + "N*m, My = " + item.DesignForceTuple.ForceTuple.My.ToString() + "N*m, Nz =" + item.DesignForceTuple.ForceTuple.Nz.ToString() + "N, ",
Priority = priority
};
ndmRow.Elements[2].Value = new StringLogEntry()
if (item.LoaderResults is not null)
{
Message = "Kx = " + item.LoaderResults.StrainMatrix.Kx + "(1/m), Ky = " + item.LoaderResults.StrainMatrix.Ky + "(1/m), EpsZ = " + item.LoaderResults.StrainMatrix.EpsZ + "(dimensionless)",
Priority = priority
};
ndmRow.Elements[2].Value = new StringLogEntry()
{
Message = "Kx = " + item.LoaderResults.StrainMatrix.Kx + "(1/m), Ky = " + item.LoaderResults.StrainMatrix.Ky + "(1/m), EpsZ = " + item.LoaderResults.StrainMatrix.EpsZ + "(dimensionless)",
Priority = priority
};
}
ndmRow.Elements[3].Value = new StringLogEntry()
{
Message = item.Description,