# 刀具列表拖动排序功能说明 ## 功能概述 本功能为 DrillTools 应用程序添加了一个可拖动排序的刀具列表控件,允许用户通过直观的拖放操作调整刀具的处理顺序,并将新顺序应用到钻带输出中。 ## 主要特性 ### 1. 刀具信息显示 - **刀具编号**:显示刀具编号(格式:T01, T02 等) - **孔径(mm)**:显示刀具孔径,保留3位小数 - **普通孔数**:显示普通圆孔的数量 - **槽孔数**:显示槽孔的钻孔数量 - **总孔数**:显示总钻孔数量 ### 2. 拖放排序 - 点击并拖动刀具项到新位置 - 释放鼠标完成排序 - 支持视觉反馈,拖动时显示目标位置 ### 3. 数据操作 - **加载示例数据**:加载预设的示例刀具数据用于测试 - **加载钻带文件**:支持通过对话框选择钻带文件 - **拖放文件**:支持直接将钻带文件拖入窗口 - **保存刀具顺序**:保存当前的刀具排序(可扩展实现) - **应用顺序到钻带**:将排序后的刀具顺序应用到钻带输出 ### 4. 撤销/重做 - **撤销**:撤销上一次排序操作 - **重做**:重做已撤销的操作 ## 使用方法 ### 1. 启动应用程序 运行 DrillTools 应用程序,主窗口将显示刀具列表和钻带内容区域。 ### 2. 加载数据 - 点击"加载示例数据"按钮加载测试数据 - 或点击"加载钻带文件"按钮选择钻带文件 - 或直接将钻带文件拖入窗口 ### 3. 排序刀具 - 在刀具列表中,点击要移动的刀具项 - 按住鼠标左键,拖动到目标位置 - 释放鼠标完成排序 ### 4. 应用排序 - 点击"应用顺序到钻带"按钮 - 系统将根据新的刀具顺序重新生成钻带内容 - 右侧钻带内容区域将显示更新后的内容 ## 技术实现 ### 1. 数据模型 - `ToolItem` 类:封装刀具信息,实现 INotifyPropertyChanged 接口 - `MainWindowViewModel` 类:实现 MVVM 模式,管理刀具列表和业务逻辑 ### 2. 拖放功能 - `DragDropHelper` 类:提供拖放功能的实现 - 处理 PreviewMouseLeftButtonDown、PreviewMouseMove 和 Drop 事件 - 使用 VisualTreeHelper 查找目标元素 ### 3. 钻带处理 - 扩展 `DrillTapeProcessor` 类,添加重新排序功能 - 解析原始钻带,按新顺序重新生成钻带内容 ### 4. 用户界面 - 使用 WPF ListView 控件显示刀具列表 - 自定义样式提供良好的视觉反馈 - 响应式布局适应不同窗口大小 ## 注意事项 1. **文件格式**:支持 .txt 和 .dr2 格式的钻带文件 2. **加密文件**:使用 cmd 命令读取加密钻带文件内容 3. **数据完整性**:排序操作不会修改原始钻带数据,只影响输出顺序 4. **性能考虑**:大量刀具时可能需要优化拖放性能 ## 扩展功能建议 1. **保存/加载排序方案**:针对不同料号保存和加载排序方案 2. **批量操作**:支持多选和批量排序操作 3. **排序规则**:添加自动排序规则(如按孔径大小排序) 4. **导入/导出**:支持导入/导出刀具排序配置 5. **预览功能**:在应用排序前预览钻带输出变化