diff --git a/App.xaml.cs b/App.xaml.cs index 0e5bb3c..096172d 100644 --- a/App.xaml.cs +++ b/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) {