feat: 增加钻带涨缩功能,支持倍率/PPM模式缩放坐标
- 新增 ExcellonScaler 引擎:普通孔缩放坐标,G85槽孔保护槽长,刀具定义行原样保留 - 新增 DrillScalingWindow 参数设置窗口:倍率/PPM模式切换,X/Y独立输入 - 集成到启动功能菜单:.dr2/.dpin 文件显示"涨缩"按钮 - 输出覆盖原文件 + .bak 备份,GB2312 编码
This commit is contained in:
43
App.xaml.cs
43
App.xaml.cs
@@ -48,6 +48,8 @@ namespace DrillTools
|
||||
|
||||
bool canClearParameters = DrillTapeParameterCleaner.CanClearParameters(content);
|
||||
bool canGeneratePpDrillTape = viewModel.CanGeneratePpDrillTape;
|
||||
string extension = Path.GetExtension(filePath).ToLowerInvariant();
|
||||
bool canScaleDrillTape = extension == ".dr2" || extension == ".dpin";
|
||||
double minDrill = viewModel.MinDrillDiameter;
|
||||
double minSlot = viewModel.MinSlotDiameter;
|
||||
double minEA = viewModel.MinEADiameter;
|
||||
@@ -62,6 +64,7 @@ namespace DrillTools
|
||||
filePath,
|
||||
canClearParameters,
|
||||
canGeneratePpDrillTape,
|
||||
canScaleDrillTape,
|
||||
minDrill,
|
||||
minSlot,
|
||||
minEA,
|
||||
@@ -91,6 +94,10 @@ namespace DrillTools
|
||||
PerformPpDrillTapeGeneration(filePath);
|
||||
Shutdown();
|
||||
break;
|
||||
case StartupAction.ScaleDrillTape:
|
||||
PerformDrillScaling(filePath);
|
||||
Shutdown();
|
||||
break;
|
||||
default:
|
||||
Shutdown();
|
||||
break;
|
||||
@@ -191,6 +198,42 @@ namespace DrillTools
|
||||
}
|
||||
}
|
||||
|
||||
private static void PerformDrillScaling(string filePath)
|
||||
{
|
||||
try
|
||||
{
|
||||
var scalingWindow = new DrillScalingWindow();
|
||||
scalingWindow.ShowDialog();
|
||||
|
||||
if (scalingWindow.ScalingResult == null)
|
||||
return;
|
||||
|
||||
var (kx, ky) = scalingWindow.ScalingResult.Value;
|
||||
|
||||
string content = CommandTypeFileReader.ReadAllText(filePath);
|
||||
string scaledContent = Integration.ExcellonScaler.Scale(content, kx, ky);
|
||||
|
||||
// 备份原文件
|
||||
string backupFilePath = filePath + ".bak";
|
||||
File.Copy(filePath, backupFilePath, true);
|
||||
|
||||
// 写入缩放后的内容
|
||||
using var writer = new StreamWriter(filePath, false, Encoding.GetEncoding(936));
|
||||
writer.Write(scaledContent);
|
||||
|
||||
System.Windows.MessageBox.Show(
|
||||
$"涨缩完成,原文件已备份为:\n{Path.GetFileName(filePath)}.bak",
|
||||
"涨缩完成",
|
||||
MessageBoxButton.OK,
|
||||
MessageBoxImage.Information);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
System.Windows.MessageBox.Show($"涨缩失败:\n{ex.Message}",
|
||||
"错误", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private static void RegisterShellContextMenu()
|
||||
{
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user