Files
StructureHelper/StructureHelperLogics/Models/Materials/FunctionMaterial.cs
2025-04-22 17:09:06 +05:00

55 lines
1.9 KiB
C#

using LoaderCalculator.Data.Materials;
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Infrastructures.Settings;
using StructureHelperCommon.Models.Functions;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperLogics.Models.Materials.Logics;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.Materials
{
public class FunctionMaterial : IFunctionMaterial
{
private IFunctionMaterialLogic functionMaterialLogic => new FunctionMaterialLogic();
public double Modulus { get; set; }
public double CompressiveStrength { get; set; }
public double TensileStrength { get; set; }
public List<IMaterialSafetyFactor> SafetyFactors { get; } = new();
public IOneVariableFunction Function { get; set; }
public FunctionStorage FunctionStorage { get; set; }
public List<MaterialSettings> MaterialSettings { get; set; }
public Guid Id { get; }
public FunctionMaterial(Guid id)
{
Id = id;
}
public FunctionMaterial() : this(Guid.NewGuid())
{
}
public IMaterial GetLoaderMaterial(LimitStates limitState, CalcTerms calcTerm)
{
var material = functionMaterialLogic.GetLoaderMaterial(this, limitState, calcTerm);
return material;
}
public object Clone()
{
var newItem = new FunctionMaterial();
var updateStrategy = new FunctionUpdateStrategy();
updateStrategy.Update(newItem, this);
return newItem;
}
public IMaterial GetCrackedLoaderMaterial(LimitStates limitState, CalcTerms calcTerm)
{
return GetLoaderMaterial(limitState, calcTerm);
}
}
}