Files
AohDrllTools/DebugTest.cs
2025-12-07 20:25:27 +08:00

141 lines
4.8 KiB
C#

using System;
using DrillTools.Integration;
namespace DrillTools.Tests
{
/// <summary>
/// 调试测试程序,用于验证孔数计算问题
/// </summary>
public class DebugTest
{
public static void RunTest()
{
Console.WriteLine("=== 调试测试:孔数计算问题 ===");
// 使用用户提供的钻带数据
string drillTapeContent = @"M48
;厚铜板参数-镀膜-EA-250618
T01C1.049H05000Z+0.000S060.00F105.0U0700.0
T02C1.550H01500Z+0.150S070.00F008.0U0800.0
T03C1.156H03000Z-0.200S040.00F030.0U0900.0
T04C1.451H04000Z-0.200S040.00F030.0U0900.0
T05C1.153H05000Z-0.200S040.00F030.0U0900.0
T06C0.499
%
T01
X-167525Y013500
X-167525Y018500
X-167525Y023500
X167525Y013500
X167525Y018500
X167525Y023500
X099366Y502000
T02
X-065975Y115250
X-085825Y122450
X-085825Y124550
X-097425Y115250
X103093Y502000
T03
X-069659Y016450G85X-094159Y016450
X-181341Y195550G85X-156841Y195550
X-069659Y210450G85X-094159Y210450
X-181341Y389550G85X-156841Y389550
X-069659Y404450G85X-094159Y404450
X-181341Y583550G85X-156841Y583550
X162939Y596000
T04
X-069659Y016450G85X-094159Y016450
X-181341Y195550G85X-156841Y195550
X-069659Y210450G85X-094159Y210450
X-181341Y389550G85X-156841Y389550
X-069659Y404450G85X-094159Y404450
X-181341Y583550G85X-156841Y583550
T05
X-069659Y016450G85X-094159Y016450
X-181341Y195550G85X-156841Y195550
X-069659Y210450G85X-094159Y210450
X-181341Y389550G85X-156841Y389550
X-069659Y404450G85X-094159Y404450
X-181341Y583550G85X-156841Y583550
T06
M97,A*,$S $N
X-194000Y002000
M30";
// 处理钻带
var result = DrillTapeProcessor.ProcessDrillTape(drillTapeContent);
// 输出结果
Console.WriteLine($"处理状态: {(result.Success ? "" : "")}");
if (!result.Success)
{
Console.WriteLine($"错误信息: {result.Message}");
return;
}
Console.WriteLine("\n刀具统计:");
Console.WriteLine("刀具\t孔径(mm)\t类型\t\t普通孔数\t槽孔数\t总孔数");
Console.WriteLine("========================================================");
foreach (var tool in result.ToolResults)
{
string toolTypeDisplay = tool.ToolType switch
{
ToolType.Regular => "圆孔",
ToolType.Slot => "槽孔",
ToolType.MachineCode => "机台码",
_ => "未知"
};
Console.WriteLine($"T{tool.ToolNumber:D2}\t{tool.Diameter:F3}\t\t{toolTypeDisplay}\t{tool.RegularHoles}\t\t{tool.SlotHoles}\t{tool.TotalHoles}");
}
Console.WriteLine($"\n总孔数: {result.TotalHoles}");
// 验证结果
Console.WriteLine("\n=== 验证结果 ===");
VerifyResults(result);
}
private static void VerifyResults(DrillTapeResult result)
{
// CAM350的预期结果
var expectedResults = new[]
{
new { ToolNumber = 1, Diameter = 1.049, ExpectedHoles = 7 },
new { ToolNumber = 2, Diameter = 1.550, ExpectedHoles = 5 },
new { ToolNumber = 3, Diameter = 1.156, ExpectedHoles = 619 },
new { ToolNumber = 4, Diameter = 1.451, ExpectedHoles = 5 },
new { ToolNumber = 5, Diameter = 1.153, ExpectedHoles = 5 },
new { ToolNumber = 6, Diameter = 0.499, ExpectedHoles = 57 }
};
bool allMatch = true;
foreach (var expected in expectedResults)
{
var actual = result.ToolResults.Find(t => t.ToolNumber == expected.ToolNumber);
if (actual != null)
{
bool match = Math.Abs(actual.Diameter - expected.Diameter) < 0.001 &&
actual.TotalHoles == expected.ExpectedHoles;
Console.WriteLine($"T{expected.ToolNumber:D2} ({expected.Diameter:F3}mm): " +
$"预期={expected.ExpectedHoles}, 实际={actual.TotalHoles}, " +
$"{(match ? "" : "")}");
if (!match)
allMatch = false;
}
else
{
Console.WriteLine($"T{expected.ToolNumber:D2}: 未找到结果 ✗");
allMatch = false;
}
}
Console.WriteLine($"\n总体结果: {(allMatch ? " CAM350一致" : " ")}");
}
}
}