# 使用任意 AI 编程工具维护 Motor-CAD 扫描项目 本文面向使用 Claude Code、Codex CLI、Cursor、GitHub Copilot、Kiro、Cline、Continue 或其它 AI 编程工具的开发者。目标是让新的 AI 助手在不了解历史对话的情况下,也能安全维护、构建和运行 本项目。 ## 1. 项目用途 本项目使用 Ansys Motor-CAD 的 Python 自动化接口进行参数扫描,并提供 Windows GUI/EXE: - 设置模型文件; - 设置参数范围和步长; - 启动独立、前台可见的 Motor-CAD 实例; - 实时显示进度和仿真结果; - 保存带详细时间戳的汇总 CSV、原始结果和程序日志; - 在每个扫描点重新加载基线模型,避免参数累积污染。 ## 2. AI 开始工作前必须阅读 让 AI 按顺序阅读: 1. `MOTORCAD_SCAN_KNOWLEDGE_BASE.md` 2. `README_Central_Mag_Arc扫描.md` 3. `motorcad_scan_gui.py` 4. `scan_central_mag_arc.py` 5. 与任务对应的参数配置 JSON 6. `E:\aitestlocal\claude\motorcadopt\CLAUDE.md` 7. `E:\aitestlocal\claude\motorcadopt\TORQUE_RIPPLE_ANALYSIS.md` 其中 `MOTORCAD_SCAN_KNOWLEDGE_BASE.md` 是本项目的主要知识入口,包含参数映射、求解设置、 运行约束、结果指标和已知 Motor-CAD 陷阱。 ## 3. 可直接复制给 AI 的首次提示词 ```text 请先完整阅读 MOTORCAD_SCAN_KNOWLEDGE_BASE.md 和 README_AI_TOOLS.md,再检查当前 Git 状态。 这是 Windows 原生 Motor-CAD 自动化项目。所有 .py 和 .ps1 源码必须只含 ASCII 字符。 任何实际 Motor-CAD 求解启动前,必须先有 Git 提交,并确保所有已跟踪文件无未提交修改。 Motor-CAD 必须使用独立、前台可见的实例,不能抢占其它程序正在使用的实例。 不要猜 Motor-CAD 变量名;先从 .mot、已有参数表或探测结果确认,写入后必须回读校验。 每个扫描点开始前重新加载基线模型,每点完成后立即保存 CSV 和日志。 先说明你检查到的事实和计划,再进行修改。 ``` ## 4. 环境要求 ### 4.1 操作系统 - Windows 10 或 Windows 11; - 已安装与模型兼容的 Ansys Motor-CAD; - 使用 Windows 原生 Python,不能使用 WSL Python。 ### 4.2 Python 依赖 ```powershell python -m pip install ansys-motorcad-core pyinstaller ``` Tkinter 通常随 Windows Python 安装。验证: ```powershell python -c "import tkinter; import ansys.motorcad.core; print('OK')" ``` ### 4.3 Git 本机可能出现仓库所有权保护错误。不要修改全局 Git 配置,使用每条命令的局部配置: ```powershell git -c safe.directory=E:/aitestlocal/codex/tr status ``` ## 5. 硬性工程约束 ### 5.1 脚本必须是纯 ASCII 所有 `.py` 和 `.ps1` 文件只能包含 ASCII 字符。中文说明写在 Markdown 文件中。 检查命令: ```powershell rg -n "[^\x00-\x7F]" --glob '*.py' --glob '*.ps1' . ``` 如果命令输出任何行,先修正,再构建或运行。 ### 5.2 运行前必须提交 Git 实际启动 Motor-CAD 求解前必须满足: ```powershell git -c safe.directory=E:/aitestlocal/codex/tr rev-parse --verify HEAD git -c safe.directory=E:/aitestlocal/codex/tr status --porcelain --untracked-files=no ``` 第二条命令必须没有输出。GUI 内置 Git preflight,不满足时应拒绝启动扫描。 ### 5.3 不影响其它 Motor-CAD 实例 如果其它程序正在使用 Motor-CAD,不要使用模糊的“连接已有实例”方式。扫描程序应创建独立实例: ```python mc = pymotorcad.MotorCAD(open_new_instance=True, keep_instance_open=False) mc.set_visible(True) ``` ### 5.4 参数必须验证 不能只调用 `set_variable`。必须回读: ```python mc.set_variable(variable, value) applied = mc.get_variable(variable) ``` 回读不一致时将该点标记为 `FAILED`,保存错误并继续下一点。 ## 6. 当前关键参数 | 用户界面名称 | Motor-CAD 变量 | 说明 | |---|---|---| | Central Mag Arc [ED] | `MagnetCentralArc_HalbachRing` | Halbach 中央磁块弧角 | | Magnet Arc [ED] | `Magnet_Arc_[ED]` | 整体磁铁极弧 | | Slot Opening | `Slot_Opening` | 槽口宽度 | | Copper Width | `Copper_Width` | PCB 铜线宽度 | `Central Mag Arc [ED]` 和 `Magnet Arc [ED]` 不是同一个参数,禁止混用。 ## 7. 主要程序和配置 | 文件 | 用途 | |---|---| | `motorcad_scan_gui.py` | GUI 主程序 | | `scan_central_mag_arc.py` | 单参数扫描、结果解析和分析基础代码 | | `scan_parameters.json` | 二参数扫描配置 | | `scan_parameters_magnet_arc.json` | Magnet Arc 单参数配置 | | `build_gui_exe.ps1` | PyInstaller 通用构建脚本 | | `package_magnet_arc_v2.ps1` | Magnet Arc V2 单参数包生成脚本 | | `MOTORCAD_SCAN_KNOWLEDGE_BASE.md` | 项目知识库 | ## 8. 构建 EXE 构建前先提交所有已跟踪修改: ```powershell git -c safe.directory=E:/aitestlocal/codex/tr add -- git -c safe.directory=E:/aitestlocal/codex/tr commit -m "Describe the change" ``` 构建通用 GUI: ```powershell powershell.exe -NoLogo -ExecutionPolicy Bypass -File .\build_gui_exe.ps1 -AppName MotorCADParameterScanV3 ``` 生成 Magnet Arc 单参数 V2 包: ```powershell powershell.exe -NoLogo -ExecutionPolicy Bypass -File .\package_magnet_arc_v2.ps1 ``` 输出位于: ```text dist//.exe ``` 不要覆盖仍在运行的旧版 EXE 目录。需要修改布局或逻辑时使用新的应用名,例如 V4。 ## 9. 运行方法 1. 启动对应 EXE; 2. Browse 选择 `.mot` 模型; 3. 检查扫描参数、起点、终点和步长; 4. 检查 Torque points 和 Airgap mesh; 5. 二参数扫描时确认两个水平数量的乘积; 6. 点击 Start; 7. 确认弹窗中的总仿真数和预计耗时; 8. 观察前台 Motor-CAD 和 GUI 进度; 9. 需要停止时使用 `Stop after current point`,不要强制结束当前求解。 ## 10. 输出文件 每次运行创建: ```text runs/YYYYMMDD_HHMMSS_mmm_/ ``` 主要文件: - `run_manifest_.json`:完整运行配置和 Git 提交; - `scan_results_.csv`:汇总结果; - `program_log_.log`:详细时间戳日志; - `raw/result_*.csv`:每个扫描点的原始 Motor-CAD 导出结果。 分析问题时,AI 应先读取 manifest 和 log,再读取汇总 CSV,最后只打开相关的 raw 文件。 ## 11. 结果指标 程序当前关注: - Torque Ripple,百分比和 Nm; - Average torque (virtual work); - System Efficiency; - Back EMF 及 THD; - Total Losses; - DC copper loss; - Magnet loss; - Stator iron loss; - Input、Output 和 Electromagnetic Power; - Shaft speed 和 No-load speed。 Motor-CAD 导出文件使用分号分隔,同一指标可能在多个段落重复或带状态后缀。不要用普通逗号 CSV 解析器直接读取原始结果。 ## 12. 修改或增加扫描参数 AI 不得凭记忆猜变量名。推荐流程: 1. 在 `.mot` 文件中搜索 GUI 名称附近的候选变量; 2. 查询 `motorcadopt/results/mot_params_relevant.csv`; 3. 用单点脚本写入并回读; 4. 必要时保存几何截图,确认参数确实改变模型; 5. 将已验证映射加入配置和知识库; 6. 添加范围检查; 7. 用 1–2 点 dry run 或真实单点验证; 8. 提交 Git 后才允许完整扫描。 ## 13. 给 AI 的具体任务模板 ### 增加单参数扫描 ```text 请在不影响现有 EXE 的前提下,增加 单参数扫描。 先从 .mot 和已验证参数表确认 Motor-CAD 自动化变量名,不要猜。 沿用 V2 三行布局:模型;参数与 Start/Stop/Step;Torque points/Airgap mesh。 所有 .py/.ps1 只能包含 ASCII。写入后回读校验,每点重新加载基线,每点立即保存结果。 修改完成后运行静态检查,提交 Git,再用新的应用名构建 EXE。不要启动完整仿真。 ``` ### 增加二参数扫描 ```text 请将参数 A 和参数 B 做笛卡尔积扫描,总数量必须显示为 NA x NB。 启动前显示组合总数和预计时长并要求确认。 每个点重新加载基线,按依赖顺序写参数并逐个回读。 结果 CSV 必须同时记录 A、B、所有联动值、求解设置和 Git 提交。 保留旧版 EXE,构建新的版本目录。 ``` ### 分析扫描结果 ```text 请先读取最新 runs 目录中的 manifest、log 和 scan_results CSV。 检查失败点、参数写入、Torque points、airgap mesh 和 Git 提交。 按 Torque Ripple 排序,同时施加 Tavg、效率、损耗和转速约束。 快速扫描只用于趋势判断,给出需要用 180 点和收敛网格复算的候选列表。 ``` ## 14. 提交前检查清单 - [ ] 阅读知识库; - [ ] 确认真实 Motor-CAD 参数名; - [ ] 不影响其它 Motor-CAD 实例; - [ ] `.py`、`.ps1` 纯 ASCII; - [ ] Python 编译检查通过; - [ ] JSON 能正常解析; - [ ] Git diff 无空白错误; - [ ] 已跟踪修改已提交; - [ ] EXE 使用新目录构建; - [ ] GUI 启动测试不自动开始求解; - [ ] 完整扫描前先做单点验证。