feat: 基础信息叠板计算功能

- 新增 StackCountCalculator: 数字化规则表(短槽刀/EA刀10×4、槽刀10×4、钻针10×6),公开Calculate方法,输入校验,查表逻辑,16oz铜厚递减
- 新增 StartupSelectionViewModel: 替换匿名DataContext,保留所有显示属性,新增板厚/铜厚输入、计算结果/明细、CanCalculate
- 新增 NonEmptyToVisibilityConverter
- 修改 StartupSelectionWindow.xaml: 增宽680px,新增3行(输入+结果+明细),计算按钮在基础信息内部
- 修改 StartupSelectionWindow.xaml.cs: 构造函数接收ViewModel,新增计算按钮事件
- 修改 App.xaml.cs: 构建ViewModel实例,CalculateStackMinDiameters独立遍历Tools(含0.749mm,排除机台码)
- 修改 App.xaml: 注册NonEmptyToVisibilityConverter
This commit is contained in:
2026-06-27 16:24:45 +08:00
parent e27636dd93
commit fa697c9fd0
7 changed files with 919 additions and 31 deletions

View File

@@ -1,4 +1,3 @@
using System.IO;
using System.Windows;
namespace DrillTools
@@ -17,26 +16,12 @@ namespace DrillTools
{
public StartupAction SelectedAction { get; private set; } = StartupAction.None;
public StartupSelectionWindow(string filePath, bool canClearParameters = false, bool canGeneratePpDrillTape = false,
bool canScaleDrillTape = false,
double minDrillDiameter = 0, double minSlotDiameter = 0, double minEADiameter = 0,
bool isPpDrillTape = false, double ppXSpacing = 0, double ppYSpacing = 0,
bool hasOuter3175Spacing = false, double outer3175XSpacing = 0, double outer3175YSpacing = 0)
public StartupSelectionWindow(StartupSelectionViewModel viewModel,
bool canClearParameters = false, bool canGeneratePpDrillTape = false,
bool canScaleDrillTape = false)
{
InitializeComponent();
DataContext = new
{
FileName = Path.GetFileNameWithoutExtension(filePath),
MinDrillDiameter = minDrillDiameter,
MinSlotDiameter = minSlotDiameter,
MinEADiameter = minEADiameter,
IsPpDrillTape = isPpDrillTape,
PpXSpacing = ppXSpacing,
PpYSpacing = ppYSpacing,
HasOuter3175Spacing = hasOuter3175Spacing,
Outer3175XSpacing = outer3175XSpacing,
Outer3175YSpacing = outer3175YSpacing
};
DataContext = viewModel;
ClearParametersButton.Visibility = canClearParameters ? Visibility.Visible : Visibility.Collapsed;
GeneratePpDrillTapeButton.Visibility = canGeneratePpDrillTape ? Visibility.Visible : Visibility.Collapsed;
ScaleDrillTapeButton.Visibility = canScaleDrillTape ? Visibility.Visible : Visibility.Collapsed;
@@ -71,5 +56,16 @@ namespace DrillTools
SelectedAction = StartupAction.ScaleDrillTape;
Close();
}
/// <summary>
/// 计算叠板按钮点击事件
/// </summary>
private void CalculateStackCount_Click(object sender, RoutedEventArgs e)
{
if (DataContext is StartupSelectionViewModel vm)
{
vm.CalculateStackCount();
}
}
}
}