perf: 启动时合并4次文件读取解析为1次,加速右键打开大钻带
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
110
App.xaml.cs
110
App.xaml.cs
@@ -36,10 +36,25 @@ namespace DrillTools
|
||||
// 防止选择窗口关闭后触发 OnLastWindowClose 导致应用退出
|
||||
ShutdownMode = ShutdownMode.OnExplicitShutdown;
|
||||
|
||||
bool canClearParameters = CanClearDrillTapeParameters(filePath);
|
||||
bool canGeneratePpDrillTape = CanGeneratePpDrillTape(filePath);
|
||||
GetMinDiameters(filePath, out double minDrill, out double minSlot, out double minEA);
|
||||
GetPpSpacing(filePath, out bool isPpDrillTape, out double ppXSpacing, out double ppYSpacing);
|
||||
// 只读取和解析文件一次,提取所有需要的信息
|
||||
string content = CommandTypeFileReader.ReadAllText(filePath);
|
||||
var viewModel = new MainWindowViewModel
|
||||
{
|
||||
IsStartupDrillTapeFile = true,
|
||||
OriginalFilePath = filePath,
|
||||
ShouldCheckSortFileOnLoad = false
|
||||
};
|
||||
viewModel.LoadToolsFromDrillTape(content);
|
||||
|
||||
bool canClearParameters = DrillTapeParameterCleaner.CanClearParameters(content);
|
||||
bool canGeneratePpDrillTape = viewModel.CanGeneratePpDrillTape;
|
||||
double minDrill = viewModel.MinDrillDiameter;
|
||||
double minSlot = viewModel.MinSlotDiameter;
|
||||
double minEA = viewModel.MinEADiameter;
|
||||
bool isPpDrillTape = viewModel.IsPpDrillTape;
|
||||
double ppXSpacing = viewModel.PpXSpacing;
|
||||
double ppYSpacing = viewModel.PpYSpacing;
|
||||
|
||||
var selectionWindow = new StartupSelectionWindow(filePath, canClearParameters, canGeneratePpDrillTape, minDrill, minSlot, minEA, isPpDrillTape, ppXSpacing, ppYSpacing);
|
||||
selectionWindow.ShowDialog();
|
||||
|
||||
@@ -114,93 +129,6 @@ namespace DrillTools
|
||||
}
|
||||
}
|
||||
|
||||
private static bool CanClearDrillTapeParameters(string filePath)
|
||||
{
|
||||
try
|
||||
{
|
||||
string content = CommandTypeFileReader.ReadAllText(filePath);
|
||||
return DrillTapeParameterCleaner.CanClearParameters(content);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static bool CanGeneratePpDrillTape(string filePath)
|
||||
{
|
||||
try
|
||||
{
|
||||
var viewModel = new MainWindowViewModel
|
||||
{
|
||||
IsStartupDrillTapeFile = true,
|
||||
OriginalFilePath = filePath,
|
||||
ShouldCheckSortFileOnLoad = false
|
||||
};
|
||||
|
||||
string content = CommandTypeFileReader.ReadAllText(filePath);
|
||||
viewModel.LoadToolsFromDrillTape(content);
|
||||
return viewModel.CanGeneratePpDrillTape;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static void GetMinDiameters(string filePath, out double minDrillDiameter, out double minSlotDiameter, out double minEADiameter)
|
||||
{
|
||||
minDrillDiameter = 0;
|
||||
minSlotDiameter = 0;
|
||||
minEADiameter = 0;
|
||||
|
||||
try
|
||||
{
|
||||
var viewModel = new MainWindowViewModel
|
||||
{
|
||||
ShouldCheckSortFileOnLoad = false
|
||||
};
|
||||
|
||||
string content = CommandTypeFileReader.ReadAllText(filePath);
|
||||
viewModel.LoadToolsFromDrillTape(content);
|
||||
|
||||
if (viewModel.Tools.Count > 0)
|
||||
{
|
||||
minDrillDiameter = viewModel.MinDrillDiameter;
|
||||
minSlotDiameter = viewModel.MinSlotDiameter;
|
||||
minEADiameter = viewModel.MinEADiameter;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private static void GetPpSpacing(string filePath, out bool isPpDrillTape, out double ppXSpacing, out double ppYSpacing)
|
||||
{
|
||||
isPpDrillTape = false;
|
||||
ppXSpacing = 0;
|
||||
ppYSpacing = 0;
|
||||
|
||||
try
|
||||
{
|
||||
var viewModel = new MainWindowViewModel
|
||||
{
|
||||
OriginalFilePath = filePath,
|
||||
ShouldCheckSortFileOnLoad = false
|
||||
};
|
||||
|
||||
string content = CommandTypeFileReader.ReadAllText(filePath);
|
||||
viewModel.LoadToolsFromDrillTape(content);
|
||||
|
||||
isPpDrillTape = viewModel.IsPpDrillTape;
|
||||
ppXSpacing = viewModel.PpXSpacing;
|
||||
ppYSpacing = viewModel.PpYSpacing;
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private static void PerformPpDrillTapeGeneration(string filePath)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user