Commit Graph

23 Commits

Author SHA1 Message Date
209268ee18 fix: 还原 cmd /c type 读取并移除路径字符黑名单 — 加密钻带文件只能用 cmd type 读取
b75439c 以"命令行是多余的"为由把读取改成 FileStream+StreamReader,是错误前提:
项目存在无法用标准文件 I/O 读取的加密 txt/钻带文件(CLAUDE.md "Encrypted file reading"、
Docs/readme.md "读取加密钻带(使用cmd命令type读取)"、
Docs/刀具列表拖动排序功能说明.md "加密文件:使用 cmd 命令读取"均有记录),
该改动会导致这些文件读取失败。本次回退。

改动:
- 还原 CommandTypeFileReader.cs:cmd.exe /d /c type(ANSI/936 解码),
  失败时退出码与 stderr 保留在异常消息里
- 删除 ForbiddenPathChars 与两处字符校验(本次报错根因):
  ( ) & ^ @ 空格在双引号内对 type 安全,黑名单只会误伤 (D2-f)、(1) 等正常文件名
- 保留"非空路径""文件存在"校验与 ReadAllText(path, encoding) 重载
- 删除 AnsiFileReader.cs,15 处调用点改回
- CLAUDE.md / .trellis/spec/:恢复"加密文件必须用 cmd type"的说明,
  并标注为不可优化掉的硬约束(含 b75439c 反例)

验证:demo_drl 全部 36 个文件与 2335894 实现逐字符一致、行数一致;
含 ( ) & 空格路径实测可读(旧黑名单实现抛"文件路径包含不允许的命令行特殊字符");
cmd 失败消息含退出码与 stderr;dotnet build -p:Platform=x86 0 错误,
警告集与 HEAD 基线完全一致。
2026-09-20 13:28:37 +08:00
b75439cff4 fix: 修复含特殊字符路径的钻带文件读取失败 — 移除 cmd /c type,改为 AnsiFileReader 直接文件IO
问题:路径含 ( ) & % ! ^ @ 等字符时报"文件路径包含不允许的命令行特殊字符",
(D2-f)、(1) 这类正常业务文件名直接命中。

根因:读取统一入口把路径拼进命令行(cmd.exe /d /c type "..."),为"防炸"在 03d9b8b
引入 ForbiddenPathChars 黑名单——并非业务需求,是实现的自我约束。
实测:真正会坏的只有 %VAR%(必坏) 与延迟展开开启时的 !VAR!,而 ( ) & ^ @ 空格在
双引号内均正常;且 type 是字节透传,这层 cmd 对当初的编码问题毫无帮助。

改动:
- 新增 AnsiFileReader.cs:FileStream + StreamReader(默认 936 解码 + BOM 探测,
  与旧 StreamReader 解码路径逐字符等价),不经命令行
- 删除 CommandTypeFileReader.cs 及其 ForbiddenPathChars 字符校验
- 路径只保留"非空"与"文件存在"校验;IO 异常包装为
  InvalidOperationException("读取文件失败:{路径}({原因})")并保留 InnerException
- 15 处调用点同步改名;更新 CLAUDE.md 与 Docs 说明

验证:14 个 demo_drl 样例新旧实现字符串/行数逐字符一致;含特殊字符路径(含 %TEMP% 字面
路径,旧实现 rc=1)可读可解析;UTF-8/UTF-16 BOM 结果与旧实现一致;
dotnet build -p:Platform=x86 0 错误且警告集与基线逐条相同。
2026-09-20 11:30:04 +08:00
d234bb06dc feat: DRL钻带更改参数功能 — 支持.drl文件从A01-A14参数文件按直径替换H/Z/S/F/U参数段 2026-08-07 07:18:23 +08:00
5ee4fb9c59 feat: 未匹配直径在完成弹窗中提示 — ReplaceParameters 返回 unmatchedDiameters 列表 2026-08-03 18:28:36 +08:00
5c9a70c9f0 feat: ROU成型参数替换功能 — 支持 .rou/.rou1/.rou2/.roux 文件从参数 txt 自动补充 S/F/R/Z/H 2026-08-03 18:19:33 +08:00
b51a5cecf8 fix: 按尾号标准计算最小刀径,排除粉尘刀与去毛刺刀
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-09 17:44:07 +08:00
c20a2c62b8 fix: 排除3.203等特殊孔径参与叠板计算,槽刀统计对齐真实槽孔
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-30 17:00:56 +08:00
fa697c9fd0 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
2026-06-27 16:24:45 +08:00
e27636dd93 fix: 二钻涨缩系数记忆在写回钻带后立即落盘
原实现 Save 在'涨缩完成'MessageBox(模态阻塞)之后才执行,配置滞后到用户点掉弹窗。改为写回钻带后立即 Save,失败信息并入完成提示,避免两个连续模态框。
2026-06-14 13:43:59 +08:00
29c7be3fac feat: 二钻涨缩系数记忆,载入上次系数
涨缩完成后将模式与系数写入 %LocalAppData%\DrillTools\scaling.ini,涨缩窗口新增"载入上次系数"按钮实时读取回填。每次完成涨缩覆盖更新,只保留最新一条记录(含源文件名追溯)。ini 使用 UTF-8 无 BOM,损坏时容错返回空。
2026-06-14 12:16:17 +08:00
cacbbe6c33 feat: 增加钻带涨缩功能,支持倍率/PPM模式缩放坐标
- 新增 ExcellonScaler 引擎:普通孔缩放坐标,G85槽孔保护槽长,刀具定义行原样保留
- 新增 DrillScalingWindow 参数设置窗口:倍率/PPM模式切换,X/Y独立输入
- 集成到启动功能菜单:.dr2/.dpin 文件显示"涨缩"按钮
- 输出覆盖原文件 + .bak 备份,GB2312 编码
2026-06-05 22:17:15 +08:00
ce81e1cf7d 显示 3.175 外围孔间距 2026-05-25 10:15:42 +08:00
41bba7f8aa perf: 启动时合并4次文件读取解析为1次,加速右键打开大钻带
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 17:13:53 +08:00
b009ece1cd feat: 注册右键菜单"用DrillTools打开",新增.dr3/.trg后缀支持
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 16:35:56 +08:00
cb27e8917a feat: PP钻带基础信息显示X/Y间距
检测PP钻带(文件名-pp结尾、4孔、直径4.000),计算上下孔X间距和左右孔Y间距
(欧氏距离),在MainWindow和StartupSelectionWindow的基础信息中显示。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 16:04:51 +08:00
ceb88c216a feat: 在启动功能选择窗口中显示基础信息
在 StartupSelectionWindow 顶部添加基础信息展示模块,
显示文件名、最小钻咀、最小槽刀、最小EA刀直径,
与 MainWindow 中的基础信息面板布局一致。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 12:23:28 +08:00
4b2eff1c7e Defer sort seed checks until adjust-order startup 2026-05-22 22:44:56 +08:00
25a7458db3 Add startup PP drill tape generation 2026-05-21 13:16:39 +08:00
951486202e Add startup drill tape parameter cleanup 2026-05-21 12:49:19 +08:00
a27cef82b2 新增启动菜单 2026-05-17 21:56:57 +08:00
81a1726557 实现导出孔数量 2026-05-16 12:07:32 +08:00
6361f17598 支持拖拽钻带文件到exe自动打开并加载
实现了命令行参数解析,支持将钻带文件(.txt, .drl, .dr2, .dpin)拖拽到exe上直接打开。重构了 App 启动流程,MainWindow 构造函数支持初始文件路径,窗口加载后自动异步读取并解析文件内容。增强了异常处理,提升了启动健壮性和用户体验。
2025-12-30 18:42:03 +08:00
b866365968 添加项目文件。 2025-12-07 20:25:27 +08:00