Commit Graph

27 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
2335894be7 fix: 取消PP钻带外框13/15孔规则 — GetPpGenerationRule仅返回Legacy 3孔规则;删除外框规则及专属辅助死代码(SelectPpDrillTapeLocations/ParsePpHolePoints/SelectMiddlePoint/PpHolePoint/PpSideCoordinateTolerance) 2026-08-12 10:25:14 +08:00
5365791acd feat: 铆钉孔4.503作为PP钻带来源孔径 — PpSourceDiameters集合含3.203/4.503,legacy 3孔与外框13/15孔规则不变 2026-08-12 10:11:57 +08:00
b51a5cecf8 fix: 按尾号标准计算最小刀径,排除粉尘刀与去毛刺刀
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-09 17:44:07 +08:00
3e07873636 Exclude 0.749 from minimum diameter display 2026-06-06 08:37:11 +08:00
c9d2f49eda fix: 3.175外围孔间距算法,兼容轮廓式分布和侧面凸出点
旧算法要求最上/最下排各≥2个点,无法处理角上只有单个孔的板边轮廓分布。
新算法:X间距取上下排边缘点的极值(过滤侧面凸出点),Y间距取所有点极值。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 16:55:03 +08:00
c7f982c145 feat: 增加3.203孔PP钻带生成逻辑 2026-05-25 16:35:41 +08:00
ce81e1cf7d 显示 3.175 外围孔间距 2026-05-25 10:15:42 +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
9896e54e93 fix: 排序种子与当前刀序一致时跳过提示
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 15:39:16 +08:00
473b2ca9cf fix: 统一输出文件编码为ANSI,修复.NET 6下Encoding.Default回退为UTF-8的问题
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 15:35:11 +08:00
d1cdf081fe 移除主窗口置顶功能 2026-05-22 22:48:37 +08:00
4b2eff1c7e Defer sort seed checks until adjust-order startup 2026-05-22 22:44:56 +08:00
e438386e68 Reuse open Explorer window when selecting files 2026-05-21 13:33:25 +08:00
25a7458db3 Add startup PP drill tape generation 2026-05-21 13:16:39 +08:00
81a1726557 实现导出孔数量 2026-05-16 12:07:32 +08:00
fc5b2b16fa Hide slot and regular hole columns in main list 2026-05-16 10:56:12 +08:00
03d9b8baa2 Refactor drill tape reading and reorder logic 2026-05-16 10:23:55 +08:00
0c14c16a21 修复钻带文件输出末尾缺少空行的问题
在 DrillTapeProcessor 和 MainWindowViewModel 中的钻带生成逻辑里,
为 M30 结束标记后添加换行符,确保输出文件符合标准钻带文件格式。

🤖 Generated with [Claude Code](https://claude.com/claude-code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-03-02 11:06:02 +08:00
5e8b989add 刀具日志增强与PCB钻孔数据大规模更新
本次提交包含以下主要变更:

- 增强了刀具类型、尾号类型及最小直径计算的调试日志,便于问题追踪和数据分析。
- 修正了最小槽刀直径的计算逻辑,EA型槽刀单独处理,提升了判定准确性。
- 针对特殊直径的刀具类型判定增加了专门处理和日志输出。
- 删除了 General_sort.txt 和 s40024079g0-a2-cs-jp-sort.txt 文件内容。
- n40032386g0-a2-cs-jp.drl 文件新增了大量PCB钻孔、槽孔(G85)、外形轮廓等数控加工数据,完善了刀具分组与程序控制指令,满足PCB生产自动化需求。
2025-12-31 15:09:14 +08:00
837cf6fb12 新增钻带刀序多种排序功能及相关文档
本次提交主要内容如下:

- 新增“排序功能”菜单,支持重排刀序、生成/应用排序种子、按参考钻带重排等多种排序方式,提升刀具顺序管理灵活性。
- 支持用户选择参考钻带文件或排序种子文件,自动重排当前刀具顺序,并提供详细的匹配校验、警告提示和重排前后对比确认。
- 新增生成通用排序种子文件(General_sort.txt)功能,便于批量产品排序。
- 优化界面布局,提升信息展示美观性和空间利用率。
- 增加异常处理和详细注释,提升健壮性和可维护性。
- 新增多个文档,详细说明“使用指定钻带的刀序”功能的实现、使用方法、演示流程及开发过程中的问题修复,便于开发和用户理解。
- 新增两个排序种子文件示例(General_sort.txt、s40024079g0-a2-cs-jp-sort.txt),用于刀具顺序自动重排。
- 其他无实际代码变更的文件未影响功能。

本次改动极大提升了钻带刀具顺序管理的自动化、灵活性和用户体验,适用于多样化的生产场景。
2025-12-28 13:16:41 +08:00
0eab0f42ee 钻带解析顺序与格式优化,界面信息增强
本次更新聚焦于钻带文件解析顺序与格式的准确还原,提升了界面基础信息展示,并优化了相关数据结构和辅助方法。主要包括:
- 钻带孔位逐行顺序解析,完整保留原始坐标字符串格式,避免顺序错乱和格式丢失。
- 界面新增基础信息分组,自动统计并展示最小钻咀、槽刀、EA刀直径。
- 数据结构如Point2D等增加运算符重载和构造函数,便于几何计算。
- 机台码(0.499刀具)坐标行顺序提取及正则健壮性提升。
- 移除强制编码指定,提升跨平台兼容性。
- 清理冗余测试代码,更新示例/测试钻带文件内容。
- 新增《必读.md》,明确AI开发不需编写测试单元。
本次无其他功能或逻辑变动的占位diff。
2025-12-22 16:50:42 +08:00
44de1cb982 新增窗口置顶功能并优化sort.txt读取方式
新增窗口“置顶/取消置顶”按钮,支持动态切换窗口置顶状态,按钮文本随状态变化自动更新。优化 sort.txt 文件读取,改用 cmd type 命令读取并按行分割,提升编码兼容性,避免因编码问题导致读取异常。
2025-12-17 19:39:57 +08:00
c73555cb9b V1.0 2025-12-15 20:53:20 +08:00
3cdf68651f 删除了一些测试方法
新增了刀序重排确认窗口
优化了应用刀序到钻带后的一些操作
2025-12-13 12:30:36 +08:00
b866365968 添加项目文件。 2025-12-07 20:25:27 +08:00