欢迎光临
我们一直在努力

Claude Code × SolidWorks 进阶:用 Python 替代 VBA 宏,实现真正的设计自动化

Claude Code × SolidWorks 进阶:用 Python 替代 VBA 宏,实现真正的设计自动化

摘要:VBA 宏适合单文件批处理,但面对跨工具链协作(参数化建模 → 仿真验证 → 报告生成)时力不从心。本文介绍通过 Python + win32com 直接调用 SolidWorks COM API,结合 Claude Code 生成生产级 Python 脚本,实现参数化驱动建模、批量导出与命名管理、装配体约束链自动构建、以及一键从 Excel 规格表生成全部零件和工程图的全自动化工作流。

关键词:SolidWorks API, Python, win32com, Claude Code, 参数化设计, 自动化建模


目录

  • 为什么从 VBA 升级到 Python
  • 环境配置
  • Python COM API 基础
  • 实战一:参数化驱动建模
  • 实战二:批量导出 + 智能命名管理
  • 实战三:装配体约束链自动构建
  • 实战四:Excel 规格表 → 全自动生成零件 + 工程图
  • 方案选择:VBA 还是 Python

为什么升级

VBA 宏有两个硬伤:

  • 无法处理复杂数据结构。 丝杠选型需要查表插值、做迭代优化——这在 VBA 里写起来像受刑。Python 直接上 pandas + scipy,三行代码搞定。

  • 无法跨工具链协作。 一个完整的设计流程是「Excel 规格表 → SolidWorks 建模 → 仿真软件跑载荷 → 生成设计报告」。VBA 只能锁死在 SolidWorks 进程里,Python 可以把这四个工具串成一条流水线。

  • 升级之后,Claude Code 的代码生成能力才能最大化——Python 生态 + SolidWorks API 的组合,可做的事情比 VBA 宏大一个数量级。


    环境配置

    必要条件

    • Windows 10/11 + SolidWorks 2020+
    • Python 3.9+
    • pywin32 包(提供 COM 接口)

    pip install pywin32 pandas openpyxl

    验证 COM 连接

    import win32com.client

    swApp = win32com.client.Dispatch(\”SldWorks.Application\”)
    swApp.Visible = True
    print(f\”SolidWorks {

    swApp.RevisionNumber} 连接成功\”)

    如果报 com_error: (-2147221005, \’无效的类字符串\’, …),说明 SolidWorks 未注册 COM——重新以管理员权限运行一次 SolidWorks 安装程序选「修复」即可。


    Python COM API 基础

    SolidWorks COM API 的对象模型是层级结构:

    SldWorks.Application # 顶层应用对象
    ├── .ActiveDoc # 当前文档(零件/装配体/工程图)
    ├── .OpenDoc6() # 打开文件
    ├── .NewDocument() # 新建文件
    └── ModelDoc2 # 文档对象
    ├── .SketchManager # 草图操作
    ├── .FeatureManager # 特征操作(拉伸/切除/圆角)
    ├── .Extension # 扩展功能(属性/SaveAs)
    └── .ConfigurationManager # 配置管理

    核心操作对照表

    VBA
    Python (win32com)
    Set swApp = Application.SldWorks swApp = win32com.client.Dispatch(\”SldWorks.Application\”)
    swApp.OpenDoc6(path, …) swApp.OpenDoc6(path, 1, 0, \”\”, 0, 0)
    swModel.Extension.CustomPropertyManager(\”\”) swModel.Extension.CustomPropertyManager(\”\”)
    swModel.Save3(…) swModel.Save3(0, 0, 0)
    MsgBox \”done\” print(\”done\”)

    注意:Python 调用 COM 时不支持 VBA 的命名参数(swOpenDocOptions_Silent 这类枚举),需要填入数字常量。查阅 SolidWorks API Help 中的 swDocumentTypes_e 等枚举表即可。


    实战一:参数化驱动建模

    场景:底座长度从 175 mm 改为 200 mm,安装孔距从 34 mm 改为 42 mm,自动重新建模、重建、保存。

    不打开 SolidWorks GUI 手动改尺寸——用 Python 直接修改模型参数。

    \”\”\”
    ParametricUpdate.py
    修改已存在的 SolidWorks 零件中的尺寸参数,重建并保存。
    \”\”\”

    import win32com.client

    def update_dimensions(filepath, dim_updates):
    \”\”\”
    filepath: .SLDPRT 文件路径
    dim_updates: dict, {\”D1@草图1\”: 0.200, \”D2@基体-拉伸1\”: 0.042}
    \”\”\”

    swApp = win32com.client.Dispatch(\”SldWorks.Application\”)
    swApp.Visible = False # 后台运行,不弹 GUI

    # 静默打开零件
    swModel = swApp.OpenDoc6(filepath, 1, 0, \”\”, 0, 0)
    if not swModel:
    print(f\”无法打开: {

    filepath}\”)
    return False

    for dim_name, new_value in dim_updates.items():
    # SolidWorks 内部单位是米
    swModel.Parameter(dim_name).SystemValue = new_value

    # 强制重建
    swModel.EditRebuild3()
    swModel.Save3(0, 0, 0)
    swApp.CloseDoc(swModel.GetTitle())

    print(f\”更新完成: {

    filepath}\”)
    return True

    # 使用示例
    update_dimensions(
    r\”D:\\Projects\\RobotArm\\CylinderBracket_Base.SLDPRT\”,
    {


    \”D1@草图1\”: 0.200, # 底座长度 175→200
    \”D2@草图1\”: 0.040, # 底座宽度 40(不变)

    赞(0)
    未经允许不得转载:171主机测评 » Claude Code × SolidWorks 进阶:用 Python 替代 VBA 宏,实现真正的设计自动化
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址