Files
wg_cpso/CaeCuttingForce/CuttingForceTools.cs
2026-03-25 18:20:24 +08:00

58 lines
2.0 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}
}
}