Files
StructureHelper/StructureHelperLogics/Models/BeamShears/Factories/BeamShearTemplatesFactory.cs
2025-07-20 21:45:07 +05:00

75 lines
2.8 KiB
C#

using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Models.Forces;
using StructureHelperCommon.Models.Forces.BeamShearActions;
using StructureHelperCommon.Models.Shapes;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
public enum ShearSectionTemplateTypes
{
Rectangle,
Circle
}
public static class BeamShearTemplatesFactory
{
public static IBeamShearRepository GetTemplateRepository(ShearSectionTemplateTypes templateType)
{
if (templateType is ShearSectionTemplateTypes.Rectangle)
{
return GetRectangleSection();
}
if (templateType is ShearSectionTemplateTypes.Circle)
{
return GetCircleSection();
}
else
{
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(templateType));
}
}
private static IBeamShearRepository GetCircleSection()
{
BeamShearSection section = new(Guid.NewGuid())
{
Name = "New circle section",
Shape = new CircleShape(Guid.NewGuid()) { Diameter = 0.6},
};
return BuildRepository(section);
}
private static IBeamShearRepository GetRectangleSection()
{
BeamShearSection section = new(Guid.NewGuid())
{
Name = "New rectangle section",
Shape = new RectangleShape(Guid.NewGuid()) { Height = 0.6, Width = 0.4 },
};
return BuildRepository(section);
}
private static IBeamShearRepository BuildRepository(BeamShearSection section)
{
BeamShearRepository shearRepository = new(Guid.Empty);
IBeamShearAction shearAction = BeamShearActionFactory.GetBeamShearAction(ShearActionTypes.DistributedLoad);
shearAction.Name = "New shear action";
shearRepository.Actions.Add(shearAction);
shearRepository.Sections.Add(section);
StirrupByRebar stirrupByUniformRebar = new(Guid.NewGuid()) { Name = "New uniform stirrup" };
shearRepository.Stirrups.Add(stirrupByUniformRebar);
BeamShearCalculator beamShearCalculator = new(Guid.NewGuid()) { Name = "New shear calculator" };
beamShearCalculator.InputData.Sections.Add(section);
beamShearCalculator.InputData.Stirrups.Add(stirrupByUniformRebar);
beamShearCalculator.InputData.Actions.Add(shearAction);
shearRepository.Calculators.Add(beamShearCalculator);
return shearRepository;
}
}
}