Files
wg_cpso/CaeCuttingForce/CuttingForceTools.cs

58 lines
2.0 KiB
C#
Raw Normal View History

2026-03-25 18:20:24 +08:00
using CaeKnowledge.Data;
using System.Collections.Generic;
using ToolPathParser;
using FlatendCalc = CaeCuttingForce.FlatendCutter.ClassicalCuttingForceCalculate;
using ToroidalCalc = CaeCuttingForce.ToroidalCutter.ClassicalCuttingForceCalculate;
namespace CaeCuttingForce
{
public class CuttingForceTools
{
public List<ToolPosition> ToolPositionProcessor(string inputFile,
int totalPointsPerLayer = 50,
double radialDepth = 1.0,
double zOrigin = 0.0)
{
var list = ToolPathProcessor.ProcessToolPath(inputFile, totalPointsPerLayer, radialDepth, zOrigin);
return list;
}
public void Calculate(Cutter cutter, CuttingParameter para, List<ToolPosition> toolPositions)
{
// 1. 刀具参数
var toolParams = new ToolParameters
{
NumberOfTeeth = cutter.Flute,
ToolRadius = cutter.Diameter / 2.0,
HelixAngle = cutter.HelixAngle,
// 由西工大权琳雅添加
ArcRadius = cutter.ArcRadius // 环形刀的圆弧半径参数
};
// 2. 切削系数
var coefficients = new CuttingForceCoefficients
{
kte = para.TangentialForceCoefficient,
kre = para.RadialForceCoefficient,
kue = para.AxialForceCoefficient,
ktc = para.TangentialForceConstant,
krc = para.RadialForceConstant,
kuc = para.AxialForceConstant
};
// 3. 平底刀计算
// 底层代码由西工大权琳雅维护
if(toolParams.ArcRadius > 0 ) // 圆弧半径>0采用环形刀代码计算
{
ToroidalCalc.AxialDepthGroupedForceCalculator(toolPositions, coefficients, toolParams);
}
else // 采用平底刀代码计算
{
FlatendCalc.AxialDepthGroupedForceCalculator(toolPositions, coefficients, toolParams);
}
}
}
}