Files
StructureHelper/StructureHelperLogics/Services/NdmCalculations/InterpolateService.cs
2023-03-19 17:38:01 +05:00

45 lines
1.9 KiB
C#

using StructureHelperCommon.Models.Forces;
using StructureHelperCommon.Services.Forces;
using StructureHelperCommon.Services.Sections;
using StructureHelperLogics.Models.Primitives;
using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Services.NdmCalculations
{
public static class InterpolateService
{
public static IForceCalculator InterpolateForceCalculator(IForceCalculator source, IDesignForceTuple finishDesignForce,IDesignForceTuple startDesignForce, int stepCount)
{
IForceCalculator calculator = new ForceCalculator();
calculator.LimitStatesList.Clear();
calculator.LimitStatesList.Add(finishDesignForce.LimitState);
calculator.CalcTermsList.Clear();
calculator.CalcTermsList.Add(finishDesignForce.CalcTerm);
CompressedMemberServices.CopyProperties(source.CompressedMember, calculator.CompressedMember);
calculator.Accuracy = source.Accuracy;
calculator.Primitives.AddRange(source.Primitives);
calculator.ForceActions.Clear();
var forceTuples = ForceTupleService.InterpolateDesignTuple(finishDesignForce, startDesignForce, stepCount);
foreach (var forceTuple in forceTuples)
{
var combination = new ForceCombinationList()
{
Name = "New combination",
SetInGravityCenter = false
};
combination.DesignForces.Clear();
combination.DesignForces.Add(forceTuple);
combination.ForcePoint.X = 0;
combination.ForcePoint.Y = 0;
calculator.ForceActions.Add(combination);
}
return calculator;
}
}
}