核心答案: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,导致对应目录下的文件被锁定。

解决步骤

  1. 关闭 SolidWorks 界面中所有已打开的模型
  2. 终止残留 cscript.exe 进程:Get-Process cscript | Stop-Process -Force
  3. 再次运行 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-xxtest-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 辅助创新平台,专门服务机械、自动化与机器人领域的工程师。它的工作方式是:

  1. 用大白话描述你的工程问题——不需要懂 TRIZ 术语,像跟同事讲清楚问题就行
  2. AI 自动提炼工程矛盾——识别"你想改善 A,但改了之后 B 会变差"这类矛盾结构
  3. 匹配创新发明原理——从阿奇舒勒矛盾矩阵中找出"动态化""分割""空间分离"等适用原理
  4. 生成具象方案卡片 + 原理动画——直接用 2D/2.5D 动画展示机构运动,不用建样机就能看效果

工程场景 萃智引擎能帮你做什么
机构减重但强度不降 识别质量-强度矛盾,推荐空心化、材料替换方案
设备节拍慢想提速 分析时序矛盾,推荐并行化、预处理等原理
联动机构卡滞 定位运动约束矛盾,推荐弹性补偿或自由度分配方案
空间受限无法安装 空间分离原理匹配,推荐折叠、嵌套结构方案

方案确定了,再回来用这套 SolidWorks AI 系统去自动化建模——两者配合,从"想到方案"到"出图验证"的效率会高出不少。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐