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