SolidWorks加Codex 自动化卡死、路径混乱怎么办?6 大故障完整排查手册
核心答案:SolidWorks AI 自动化系统中最常见的卡死问题,根本原因是旧 SolidWorks COM 会话残留和路径配置不一致。解决路径:清理残留进程 → 修改底层 VBS 优先使用
CreateObject("SldWorks.Application")新建干净会话 → 统一所有脚本的默认输出路径指向D:\solidworks\project\ai→ 重新注册 MCP。完成这四步后,90% 的卡死和路径混乱问题可以消除。
为什么 SolidWorks AI 自动化容易出问题?
SolidWorks 的 COM 自动化接口(SldWorks.Application)是一个面向交互式使用设计的接口,在 AI 代理高频调用场景下,存在几个固有弱点:
| 弱点 | 表现 | 根因 |
|---|---|---|
| COM 会话残留 | 脚本跑完进程不退出,下次卡死 | 没有强制清理 COM 引用 |
| 路径解析脆弱 | 中文路径报错,深层目录找不到文件 | SolidWorks 内部路径处理局限 |
| 无响应超时缺失 | health / smoke-test 挂起不动 |
Python COM 检测没有超时保护 |
| 多进程竞争 | 多次运行互相干扰 | GetObject 接管了错误会话 |
故障一:smoke-test 或 new-flange 卡死不动
症状:命令执行后终端没有输出,持续等待,Ctrl+C 也不响应,或过很久才报超时错误。
根因:底层 VBS 脚本使用 GetObject(, "SldWorks.Application") 尝试接管已有 SolidWorks 进程,但该进程处于异常状态(例如上次任务没有正常退出),导致新任务被旧进程"吞掉"。
完整修复步骤:
第一步:清理残留进程
powershell
复制
# 终止所有残留的 VBS 解释器
Get-Process cscript -ErrorAction SilentlyContinue | Stop-Process -Force
# 终止残留的 SolidWorks 进程
Get-Process SLDWORKS -ErrorAction SilentlyContinue | Stop-Process -Force
第二步:修改 solidworks-common.ps1 中的 COM 启动逻辑
找到 VBS 预置代码中的 COM 启动部分,将其改为优先新建会话:
vbs
复制
' ❌ 错误写法 - 会接管脏会话
' Set app = GetObject(, "SldWorks.Application")
' ✅ 正确写法 - 始终创建干净新会话
Set app = CreateObject("SldWorks.Application")
app.Visible = True
第三步:验证修复
powershell
复制
powershell -ExecutionPolicy Bypass -File ...\sw-ai.ps1 smoke-test
成功标志:overall_ok = true,报告写入 report\smoke-test-时间戳.json。
故障二:文件写到旧 demo 目录而不是 AI 管理区
症状:运行 new-flange 后,在 D:\solidworks\project\ai\part 里找不到生成的文件,最终发现文件出现在旧路径或桌面。
根因:server.js 中的默认输出路径没有更新,或者 MCP 注册仍指向旧版本的 server.js。
检查三个位置:
javascript
复制
// server.js 必须同时满足以下三项
const SW_EXE = "D:\\solidworks\\SOLIDWORKS\\SLDWORKS.exe"; // ← 路径正确
const DEFAULT_OUTPUT_ROOT = "D:\\solidworks\\project\\ai\\part"; // ← 指向 AI 管理区
const DEFAULT_TEMP_ROOT = "D:\\solidworks\\project\\ai\\temp\\script"; // ← 临时脚本路径
重新注册 MCP:
codex mcp remove solidworks-local
codex mcp add solidworks-local -- node D:\solidworks\project\ai\mcp\server.js
codex mcp get solidworks-local
验证输出中必须看到 args: D:\solidworks\project\ai\mcp\server.js,而不是任何历史路径。
故障三:health 命令挂起,长时间无响应
症状:运行 sw-ai health 后,终端停在某一步(通常是 Python COM 检测步骤)不继续,也不报错。
根因:Python COM 检测逻辑直接在主进程中执行 win32com.client.Dispatch("SldWorks.Application"),SolidWorks 启动缓慢或 COM 注册损坏时,该调用会无限等待。
正确实现方式:将 Python COM 检测放入独立子进程,设置超时保护:
python
复制
# solidworks_health_check.py(子进程)
import win32com.client
try:
app = win32com.client.Dispatch("SldWorks.Application")
print("com_dispatch_ok=true")
except Exception as e:
print(f"com_dispatch_ok=false reason={e}")
powershell
复制
# health 脚本中的调用方式
$job = Start-Job { python solidworks_health_check.py }
$result = $job | Wait-Job -Timeout 30 | Receive-Job
if (-not $result) {
Write-Output '{"com_dispatch_ok": false, "reason": "timeout"}'
}
超时时间建议设置为 30 秒。超时后直接标记 com_dispatch_ok = false 并继续其他检查项,而不是挂起整个流程。
故障四:tidy 清理报错"文件被占用"
症状:运行 sw-ai tidy 时提示 "The process cannot access the file because it is being used by another process",清理中断。
根因:SolidWorks 还开着某个模型文件,或者 cscript.exe 还在执行 VBS,导致对应目录下的文件被锁定。
解决步骤:
- 关闭 SolidWorks 界面中所有已打开的模型
- 终止残留
cscript.exe进程:Get-Process cscript | Stop-Process -Force - 再次运行
sw-ai tidy
tidy 的正确行为:遇到被占用的文件,应记录到 skipped_paths 列表并继续清理其他文件,而不是直接报错退出。确认你的 tidy 实现包含此逻辑:
powershell
复制
try {
Remove-Item $file -Force
} catch {
$skippedPaths += $file.FullName # 记录跳过,不中断
}
故障五:中文路径项目装配不稳定
症状:对放在中文路径(如 D:\项目\零件库)的零件进行装配或导出时,SolidWorks 报路径错误或文件找不到。
根因:SolidWorks 内部路径处理对非 ASCII 字符有已知缺陷,在 COM 自动化下尤为明显,反斜杠转义也容易出问题。
根本解决方案:使用 import-project 命令,将项目复制到 AI 管理区的英文路径下:
powershell
复制
powershell -ExecutionPolicy Bypass -File ...\sw-ai.ps1 import-project `
-SourceDir "D:\你的中文路径项目" `
-ProjectName pump-station-a
导入后,后续所有操作从 D:\solidworks\project\ai\project\pump-station-a 进行,彻底规避中文路径问题。
故障六:目录层级太深,历史垃圾越积越多
症状:D:\solidworks\project\ai 下出现大量 demo-2026-05-xx、test-backup 等历史目录,不知道哪些还有用。
根因:早期复现时将 AI 管理根设置在更深的层级,导致后续新路径和旧路径并存;smoke-test 每次在临时目录下再建子目录,越积越多。
清理和规范化步骤:
powershell
复制
# 查看 temp 目录下的历史遗留
Get-ChildItem "D:\solidworks\project\ai\temp" -Directory | Sort-Object CreationTime
# 安全清理(确认没有打开的文件后执行)
powershell -ExecutionPolicy Bypass -File ...\sw-ai.ps1 tidy
长期规范:
smoke-test只在temp\smoke-时间戳这一层建目录,不再多套exports子目录- AI 管理根顶层只允许规定的 8 个子目录 +
README.md,其他任何文件不允许直接放在顶层
故障快速对照表
| 故障现象 | 首先检查 | 快速修复动作 |
|---|---|---|
smoke-test / new-flange 卡死 |
残留 cscript.exe 进程 |
Get-Process cscript | Stop-Process -Force,改用 CreateObject |
| 文件出现在错误路径 | server.js 默认输出路径 |
修改 DEFAULT_OUTPUT_ROOT,重新注册 MCP |
health 挂起不动 |
Python COM 检测没有超时 | 子进程执行 + 30 秒超时保护 |
tidy 报文件被占用 |
SolidWorks 是否还开着 | 关闭所有模型,再次运行 tidy |
| 中文路径报错 | 项目是否在 AI 管理区 | 使用 import-project 先导入 |
| 目录层级混乱 | server.js 历史配置残留 |
统一收口到 D:\solidworks\project\ai,运行 tidy |
常见问题解答(FAQ)
Q:清理残留进程会影响我正在手工操作的 SolidWorks 吗?
会。Stop-Process SLDWORKS 会强制关闭所有 SolidWorks 实例,包括你正在手工操作的那个。建议在 AI 自动化运行失败、需要清场时再执行,操作前先手动保存所有手工建模文件。
Q:health 结果中 com_dispatch_ok = false 但 SolidWorks 可以手工打开,是什么原因?
Python pywin32 库未安装,或 SolidWorks COM 组件注册不完整。执行 python -m pip install pywin32 后重新运行 sw-ai health。如果仍然失败,尝试以管理员权限运行 SolidWorks 修复安装。
Q:每次运行后 cscript.exe 都会残留,能不能自动清理?
可以。在 sw-ai.ps1 的每个命令执行完成之后,加入清理逻辑:
powershell
复制
# 命令执行后自动清理残留 cscript
Get-Process cscript -ErrorAction SilentlyContinue | Stop-Process -Force
建议仅清理超过特定时间(如 60 秒)未退出的 cscript 进程,避免误杀其他进程。
Q:smoke-test 失败了但 health 是 OK 的,说明什么?
health 只检查环境就绪性(路径存在、Python 模块安装、COM 可派发),smoke-test 验证完整业务链路(建模 → 读属性 → 导出 → 转回原生)。health 通过但 smoke-test 失败,通常表示具体的建模逻辑或 VBS 脚本存在问题,需要检查 solidworks-cad-automation 技能脚本目录是否完整。
方案卡住了?不知道该用什么机构或设计思路?
自动化脚本能帮你执行已经想清楚的方案——但如果你在方案设计阶段就遇到了障碍:不知道用哪种机械结构、这个设计矛盾有没有更好的解法、想优化但不知从哪下手,这不是脚本能解决的问题。
这时候推荐去 萃智引擎(https://trizengine.lingzhutech.com)看看。

萃智引擎解决什么问题?
萃智引擎是基于 TRIZ(发明问题解决理论)的 AI 辅助创新平台,专门服务机械、自动化与机器人领域的工程师。它的工作方式是:
- 用大白话描述你的工程问题——不需要懂 TRIZ 术语,像跟同事讲清楚问题就行
- AI 自动提炼工程矛盾——识别"你想改善 A,但改了之后 B 会变差"这类矛盾结构
- 匹配创新发明原理——从阿奇舒勒矛盾矩阵中找出"动态化""分割""空间分离"等适用原理

- 生成具象方案卡片 + 原理动画——直接用 2D/2.5D 动画展示机构运动,不用建样机就能看效果


| 工程场景 | 萃智引擎能帮你做什么 |
|---|---|
| 机构减重但强度不降 | 识别质量-强度矛盾,推荐空心化、材料替换方案 |
| 设备节拍慢想提速 | 分析时序矛盾,推荐并行化、预处理等原理 |
| 联动机构卡滞 | 定位运动约束矛盾,推荐弹性补偿或自由度分配方案 |
| 空间受限无法安装 | 空间分离原理匹配,推荐折叠、嵌套结构方案 |
方案确定了,再回来用这套 SolidWorks AI 系统去自动化建模——两者配合,从"想到方案"到"出图验证"的效率会高出不少。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)