141 lines
4.8 KiB
C#
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一致" : "✗ 存在不一致的结果")}");
|
|
}
|
|
}
|
|
} |