using LoaderCalculator.Data.Materials; using StructureHelperCommon.Infrastructures.Enums; 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 SafetyFactors { get; } = new(); 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); } } }