Add Design range for shear
This commit is contained in:
@@ -13,7 +13,7 @@ namespace StructureHelperLogics.Models.BeamShears
|
||||
private string checkResult;
|
||||
private ICheckEntityLogic<IBeamShearAction> checkActionsLogic;
|
||||
private ICheckEntityLogic<IBeamShearSection> checkSectionLogic;
|
||||
private ICheckEntityLogic<IStirrup> checkStirrupLogic;
|
||||
private ICheckEntityLogic<IHasStirrups> StirrupCheckLogic;
|
||||
|
||||
public string CheckResult => checkResult;
|
||||
public IBeamShearCalculatorInputData InputData { get; set; }
|
||||
@@ -65,23 +65,12 @@ namespace StructureHelperLogics.Models.BeamShears
|
||||
|
||||
private void CheckStirrups()
|
||||
{
|
||||
if (InputData.Stirrups is null)
|
||||
StirrupCheckLogic ??= new HasStirrupsCheckLogic(TraceLogger);
|
||||
StirrupCheckLogic.Entity = InputData;
|
||||
if (StirrupCheckLogic.Check() == false)
|
||||
{
|
||||
result = false;
|
||||
TraceMessage("\nCollection of stirrups is null");
|
||||
}
|
||||
else
|
||||
{
|
||||
checkStirrupLogic ??= new CheckStirrupsLogic(TraceLogger);
|
||||
foreach (var stirrup in InputData.Stirrups)
|
||||
{
|
||||
checkStirrupLogic.Entity = stirrup;
|
||||
if (checkStirrupLogic.Check() == false)
|
||||
{
|
||||
result = false;
|
||||
checkResult += checkStirrupLogic.CheckResult;
|
||||
}
|
||||
}
|
||||
checkResult += StirrupCheckLogic.CheckResult;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Models;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public class CheckStirrupsLogic : ICheckEntityLogic<IStirrup>
|
||||
{
|
||||
private bool result;
|
||||
private string checkResult;
|
||||
private ICheckEntityLogic<IStirrupByDensity> checkDensityLogic;
|
||||
private ICheckEntityLogic<IStirrupByRebar> checkRebarLogic;
|
||||
|
||||
public CheckStirrupsLogic(IShiftTraceLogger? traceLogger)
|
||||
{
|
||||
TraceLogger = traceLogger;
|
||||
}
|
||||
|
||||
public IStirrup Entity { get; set; }
|
||||
|
||||
public string CheckResult => checkResult;
|
||||
|
||||
public IShiftTraceLogger? TraceLogger { get; set; }
|
||||
|
||||
public bool Check()
|
||||
{
|
||||
checkResult = string.Empty;
|
||||
result = true;
|
||||
if (Entity is null)
|
||||
{
|
||||
result = false;
|
||||
string errorString = "\nStirrup is not assigned";
|
||||
TraceMessage(errorString);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Entity is IStirrupByDensity density)
|
||||
{
|
||||
checkDensityLogic ??= new CheckStirrupsByDensityLogic(TraceLogger);
|
||||
checkDensityLogic.Entity = density;
|
||||
if (checkDensityLogic.Check() == false)
|
||||
{
|
||||
result = false;
|
||||
checkResult += checkDensityLogic.CheckResult;
|
||||
}
|
||||
}
|
||||
else if (Entity is IStirrupByRebar rebar)
|
||||
{
|
||||
checkRebarLogic ??= new CheckStirrupsByRebarLogic(TraceLogger);
|
||||
checkRebarLogic.Entity = rebar;
|
||||
if (checkRebarLogic.Check() == false)
|
||||
{
|
||||
result = false;
|
||||
checkResult += checkRebarLogic.CheckResult;
|
||||
}
|
||||
}
|
||||
else if (Entity is IStirrupGroup stirrupGroup)
|
||||
{
|
||||
|
||||
}
|
||||
else if (Entity is IStirrupByInclinedRebar inclinedRebar)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
result = false;
|
||||
string errorString = ErrorStrings.ObjectTypeIsUnknownObj(Entity) + $": name = {Entity.Name}, id = {Entity.Id}";
|
||||
TraceMessage(errorString);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
private void TraceMessage(string errorString)
|
||||
{
|
||||
checkResult += errorString;
|
||||
TraceLogger?.AddMessage(errorString, TraceLogStatuses.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Models;
|
||||
using StructureHelperCommon.Models.Calculators;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public class HasStirrupsCheckLogic : ICheckEntityLogic<IHasStirrups>
|
||||
{
|
||||
private bool result;
|
||||
private string checkResult;
|
||||
private ICheckEntityLogic<IStirrup> checkStirrupLogic;
|
||||
|
||||
public IHasStirrups Entity { get; set; }
|
||||
|
||||
public string CheckResult => checkResult;
|
||||
|
||||
public IShiftTraceLogger? TraceLogger { get; set; }
|
||||
|
||||
public HasStirrupsCheckLogic(IShiftTraceLogger? traceLogger)
|
||||
{
|
||||
TraceLogger = traceLogger;
|
||||
}
|
||||
|
||||
public bool Check()
|
||||
{
|
||||
checkResult = string.Empty;
|
||||
result = true;
|
||||
if (Entity is null)
|
||||
{
|
||||
result = false;
|
||||
string errorString = "\nHasSturrup element is not assigned";
|
||||
TraceMessage(errorString);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Entity.Stirrups is null)
|
||||
{
|
||||
result = false;
|
||||
TraceMessage("\nCollection of stirrups is null");
|
||||
}
|
||||
checkStirrupLogic ??= new StirrupsCheckLogic(TraceLogger);
|
||||
foreach (var stirrup in Entity.Stirrups)
|
||||
{
|
||||
checkStirrupLogic.Entity = stirrup;
|
||||
if (checkStirrupLogic.Check() == false)
|
||||
{
|
||||
result = false;
|
||||
checkResult += checkStirrupLogic.CheckResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void TraceMessage(string errorString)
|
||||
{
|
||||
checkResult += errorString;
|
||||
TraceLogger?.AddMessage(errorString, TraceLogStatuses.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,13 +8,13 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
internal class CheckStirrupsByDensityLogic : ICheckEntityLogic<IStirrupByDensity>
|
||||
internal class StirrupByDensityCheckLogic : ICheckEntityLogic<IStirrupByDensity>
|
||||
{
|
||||
private const int minDensity = 0;
|
||||
private bool result;
|
||||
private string checkResult;
|
||||
|
||||
public CheckStirrupsByDensityLogic(IShiftTraceLogger? traceLogger)
|
||||
public StirrupByDensityCheckLogic(IShiftTraceLogger? traceLogger)
|
||||
{
|
||||
TraceLogger = traceLogger;
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Models;
|
||||
using StructureHelperLogics.Models.Materials;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public class StirrupByInclinedRebarCheckLogic : ICheckEntityLogic<IStirrupByInclinedRebar>
|
||||
{
|
||||
private const int minLegCount = 0;
|
||||
private const double minTransferLength = 0.010;
|
||||
private const double minStartCoordinate = 0.0;
|
||||
private const int minAngleOfInclination = 30;
|
||||
private const int maxAngleOfInclination = 60;
|
||||
private bool result;
|
||||
private string checkResult;
|
||||
private ICheckEntityLogic<IRebarSection> checkRebarSectionLogic;
|
||||
|
||||
public IStirrupByInclinedRebar Entity { get; set; }
|
||||
|
||||
public string CheckResult => checkResult;
|
||||
|
||||
public IShiftTraceLogger? TraceLogger { get; set; }
|
||||
|
||||
public StirrupByInclinedRebarCheckLogic(IShiftTraceLogger? traceLogger)
|
||||
{
|
||||
TraceLogger = traceLogger;
|
||||
}
|
||||
|
||||
public bool Check()
|
||||
{
|
||||
result = true;
|
||||
checkResult = string.Empty;
|
||||
if (Entity is null)
|
||||
{
|
||||
result = false;
|
||||
string errorString = "\nInclined rebar is not assigned";
|
||||
TraceMessage(errorString);
|
||||
}
|
||||
else
|
||||
{
|
||||
CheckRebarSection();
|
||||
CheckEntityProperties();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void CheckEntityProperties()
|
||||
{
|
||||
if (Entity.StartCoordinate < minStartCoordinate)
|
||||
{
|
||||
result = false;
|
||||
checkResult += $"\nInclined rebar Name = {Entity.Name} start coordinate must be greater than {minStartCoordinate}, but was {Entity.StartCoordinate}";
|
||||
}
|
||||
if (Entity.AngleOfInclination < minAngleOfInclination)
|
||||
{
|
||||
result = false;
|
||||
checkResult += $"\nInclined rebar Name = {Entity.Name} angle of inclination must be greater than {minAngleOfInclination}, but was {Entity.AngleOfInclination}";
|
||||
}
|
||||
if (Entity.AngleOfInclination > maxAngleOfInclination)
|
||||
{
|
||||
result = false;
|
||||
checkResult += $"\nInclined rebar Name = {Entity.Name} angle of inclination must be less than {maxAngleOfInclination}, but was {Entity.AngleOfInclination}";
|
||||
}
|
||||
if (Entity.LegCount < minLegCount)
|
||||
{
|
||||
result = false;
|
||||
checkResult += $"\nInclined rebar Name = {Entity.Name} leg count n = {Entity.LegCount} is less than minimum leg count nmin = {minLegCount}";
|
||||
}
|
||||
if (Entity.TransferLength < minTransferLength)
|
||||
{
|
||||
result = false;
|
||||
checkResult += $"\nInclined rebar Name = {Entity.Name} transfer length Ltr = {Entity.TransferLength} is less than minimum trancfer length Ltr,min = {minTransferLength}";
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckRebarSection()
|
||||
{
|
||||
if (Entity.RebarSection is null)
|
||||
{
|
||||
result = false;
|
||||
TraceMessage($"Inclined rebar Name = {Entity.Name} does not have rebar section");
|
||||
}
|
||||
else
|
||||
{
|
||||
checkRebarSectionLogic ??= new CheckRebarSectionLogic(TraceLogger)
|
||||
{
|
||||
Entity = Entity.RebarSection,
|
||||
MinDiameter = 0.003,
|
||||
MaxDiameter = 0.036
|
||||
};
|
||||
if (checkRebarSectionLogic.Check() == false)
|
||||
{
|
||||
result = false;
|
||||
checkResult += checkRebarSectionLogic.CheckResult;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void TraceMessage(string errorString)
|
||||
{
|
||||
checkResult += errorString;
|
||||
TraceLogger?.AddMessage(errorString, TraceLogStatuses.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
internal class CheckStirrupsByRebarLogic : ICheckEntityLogic<IStirrupByRebar>
|
||||
internal class StirrupByRebarCheckLogic : ICheckEntityLogic<IStirrupByRebar>
|
||||
{
|
||||
private const double minDiameter = 0.003;
|
||||
private const double maxDiameter = 0.025;
|
||||
@@ -18,7 +18,7 @@ namespace StructureHelperLogics.Models.BeamShears
|
||||
private bool result;
|
||||
private string checkResult;
|
||||
|
||||
public CheckStirrupsByRebarLogic(IShiftTraceLogger? traceLogger)
|
||||
public StirrupByRebarCheckLogic(IShiftTraceLogger? traceLogger)
|
||||
{
|
||||
TraceLogger = traceLogger;
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Models;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public class StirrupGroupCheckLogic : ICheckEntityLogic<IStirrupGroup>
|
||||
{
|
||||
private bool result;
|
||||
private string checkResult;
|
||||
private ICheckEntityLogic<IHasStirrups> hasStirrupsCheckLogic;
|
||||
public IStirrupGroup Entity { get; set; }
|
||||
|
||||
public string CheckResult => checkResult;
|
||||
|
||||
public IShiftTraceLogger? TraceLogger { get; set; }
|
||||
|
||||
public StirrupGroupCheckLogic(IShiftTraceLogger? traceLogger)
|
||||
{
|
||||
TraceLogger = traceLogger;
|
||||
}
|
||||
|
||||
public bool Check()
|
||||
{
|
||||
checkResult = string.Empty;
|
||||
result = true;
|
||||
if (Entity is null)
|
||||
{
|
||||
result = false;
|
||||
string errorString = "\nStirrup group is not assigned";
|
||||
TraceMessage(errorString);
|
||||
}
|
||||
else
|
||||
{
|
||||
hasStirrupsCheckLogic ??= new HasStirrupsCheckLogic(TraceLogger);
|
||||
hasStirrupsCheckLogic.Entity = Entity;
|
||||
if (hasStirrupsCheckLogic.Check() == false)
|
||||
{
|
||||
result = false;
|
||||
checkResult += "\nStirrup group has some errors";
|
||||
checkResult += hasStirrupsCheckLogic.CheckResult;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void TraceMessage(string errorString)
|
||||
{
|
||||
checkResult += errorString;
|
||||
TraceLogger?.AddMessage(errorString, TraceLogStatuses.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Models;
|
||||
|
||||
namespace StructureHelperLogics.Models.BeamShears
|
||||
{
|
||||
public class StirrupsCheckLogic : ICheckEntityLogic<IStirrup>
|
||||
{
|
||||
private bool result;
|
||||
private string checkResult;
|
||||
private ICheckEntityLogic<IStirrupByDensity> densityCheckLogic;
|
||||
private ICheckEntityLogic<IStirrupByRebar> rebarCheckLogic;
|
||||
private ICheckEntityLogic<IStirrupGroup> stirrupGroupCheckLogic;
|
||||
private ICheckEntityLogic<IStirrupByInclinedRebar> inclinedRebarCheckLogic;
|
||||
|
||||
public StirrupsCheckLogic(IShiftTraceLogger? traceLogger)
|
||||
{
|
||||
TraceLogger = traceLogger;
|
||||
}
|
||||
|
||||
public IStirrup Entity { get; set; }
|
||||
|
||||
public string CheckResult => checkResult;
|
||||
|
||||
public IShiftTraceLogger? TraceLogger { get; set; }
|
||||
|
||||
public bool Check()
|
||||
{
|
||||
checkResult = string.Empty;
|
||||
result = true;
|
||||
if (Entity is null)
|
||||
{
|
||||
result = false;
|
||||
string errorString = "\nStirrup is not assigned";
|
||||
TraceMessage(errorString);
|
||||
}
|
||||
else
|
||||
{
|
||||
CheckStirrups();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void CheckStirrups()
|
||||
{
|
||||
if (Entity is IStirrupByDensity density)
|
||||
{
|
||||
CheckStirrupByDensity(density);
|
||||
}
|
||||
else if (Entity is IStirrupByRebar rebar)
|
||||
{
|
||||
CheckStirrupByRebar(rebar);
|
||||
}
|
||||
else if (Entity is IStirrupGroup stirrupGroup)
|
||||
{
|
||||
CheckStirrupGroup(stirrupGroup);
|
||||
}
|
||||
else if (Entity is IStirrupByInclinedRebar inclinedRebar)
|
||||
{
|
||||
CheckInclinedRebar(inclinedRebar);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = false;
|
||||
string errorString = ErrorStrings.ObjectTypeIsUnknownObj(Entity) + $": name = {Entity.Name}, id = {Entity.Id}";
|
||||
TraceMessage(errorString);
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckInclinedRebar(IStirrupByInclinedRebar inclinedRebar)
|
||||
{
|
||||
inclinedRebarCheckLogic ??= new StirrupByInclinedRebarCheckLogic(TraceLogger);
|
||||
inclinedRebarCheckLogic.Entity = inclinedRebar;
|
||||
if (inclinedRebarCheckLogic.Check() == false)
|
||||
{
|
||||
result = false;
|
||||
checkResult += inclinedRebarCheckLogic.CheckResult;
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckStirrupGroup(IStirrupGroup stirrupGroup)
|
||||
{
|
||||
stirrupGroupCheckLogic ??= new StirrupGroupCheckLogic(TraceLogger);
|
||||
stirrupGroupCheckLogic.Entity = stirrupGroup;
|
||||
if (stirrupGroupCheckLogic.Check() == false)
|
||||
{
|
||||
result = false;
|
||||
checkResult += stirrupGroupCheckLogic.CheckResult;
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckStirrupByRebar(IStirrupByRebar rebar)
|
||||
{
|
||||
rebarCheckLogic ??= new StirrupByRebarCheckLogic(TraceLogger);
|
||||
rebarCheckLogic.Entity = rebar;
|
||||
if (rebarCheckLogic.Check() == false)
|
||||
{
|
||||
result = false;
|
||||
checkResult += rebarCheckLogic.CheckResult;
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckStirrupByDensity(IStirrupByDensity density)
|
||||
{
|
||||
densityCheckLogic ??= new StirrupByDensityCheckLogic(TraceLogger);
|
||||
densityCheckLogic.Entity = density;
|
||||
if (densityCheckLogic.Check() == false)
|
||||
{
|
||||
result = false;
|
||||
checkResult += densityCheckLogic.CheckResult;
|
||||
}
|
||||
}
|
||||
|
||||
private void TraceMessage(string errorString)
|
||||
{
|
||||
checkResult += errorString;
|
||||
TraceLogger?.AddMessage(errorString, TraceLogStatuses.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user