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 导致应用退出
|
// 防止选择窗口关闭后触发 OnLastWindowClose 导致应用退出
|
||||||
ShutdownMode = ShutdownMode.OnExplicitShutdown;
|
ShutdownMode = ShutdownMode.OnExplicitShutdown;
|
||||||
|
|
||||||
bool canClearParameters = CanClearDrillTapeParameters(filePath);
|
// 只读取和解析文件一次,提取所有需要的信息
|
||||||
bool canGeneratePpDrillTape = CanGeneratePpDrillTape(filePath);
|
string content = CommandTypeFileReader.ReadAllText(filePath);
|
||||||
GetMinDiameters(filePath, out double minDrill, out double minSlot, out double minEA);
|
var viewModel = new MainWindowViewModel
|
||||||
GetPpSpacing(filePath, out bool isPpDrillTape, out double ppXSpacing, out double ppYSpacing);
|
{
|
||||||
|
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);
|
var selectionWindow = new StartupSelectionWindow(filePath, canClearParameters, canGeneratePpDrillTape, minDrill, minSlot, minEA, isPpDrillTape, ppXSpacing, ppYSpacing);
|
||||||
selectionWindow.ShowDialog();
|
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)
|
private static void PerformPpDrillTapeGeneration(string filePath)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user