using System; using DrillTools.Integration; namespace DrillTools.Tests { /// /// 调试测试程序,用于验证孔数计算问题 /// 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一致" : "✗ 存在不一致的结果")}"); } } }