先说结论
这套流程的核心不是“直接手写 .SLDPRT”,而是:

  1. 用 Python 调 OpenCascade 建几何
  2. 导出 STEP
  3. 用 SolidWorks 打开 STEP
  4. 需要原生零件时,再在 SolidWorks 里另存为 SLDPRT

SLDPRT/SLDASM 是 SolidWorks 专有格式,最稳的工程路径还是 STEP -> SolidWorks。

一、环境准备
系统环境:

  • Windows
  • Python 3.12
  • SolidWorks

项目目录我实际用的是:

  • D:\solidworks\project\vscode\solidworks_ai_demo

二、依赖安装
一开始直接装 cadquery-ocp 很容易慢、超时、哈希报错,所以最终稳定方案是:

先装 OCP:

python -m pip install --user OCP

再用清华镜像装 cadquery-ocp:

python -m pip install --user --no-cache-dir --retries 50 --timeout 600 -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn cadquery-ocp

为什么要这两个都装:

  • cadquery-ocp 提供 OCC 运行时依赖和 dll
  • OCP 提供底层 pyd 二进制模块

三、为什么还要写一层兼容代码
安装后直接 import OCP 在这台机器上并不稳定,原因是包结构和模块路径有坑。

所以我在脚本里统一加了一个启动函数 ensure_ocp_available(),做三件事:

  • 定位用户目录里的 ocp/OCP*.pyd
  • 手动把 cadquery_ocp.libs 和 vtk.libs 加进 dll 搜索路径
  • 动态构造 OCP 包,让后续代码可以正常 from OCP import ...

也就是说,这套脚本不是只在我这次会话里能跑,而是把运行时兼容逻辑也一起封进去了。

你可以看实际脚本,比如:

  • rc_plane_ultra_detail_step_export.py
  • detailed_castle_step_export.py

四、建模的核心思路
整个流程本质上就是 CAD 布尔建模。

常用模块:

  • BRepPrimAPI
    用来创建基础体,比如圆柱、圆锥、盒子
  • BRepBuilderAPI
    用来做多边形、拉伸、变换
  • BRepAlgoAPI
    用来做 Fuse 和 Cut
  • STEPControl
    用来导出 STEP

最核心的几个操作:

  1. 先造基础体

BRepPrimAPI.BRepPrimAPI_MakeBox(...) BRepPrimAPI.BRepPrimAPI_MakeCylinder(...) BRepPrimAPI.BRepPrimAPI_MakeCone(...)

  1. 再做布尔运算

BRepAlgoAPI.BRepAlgoAPI_Fuse(base, tool).Shape() BRepAlgoAPI.BRepAlgoAPI_Cut(base, tool).Shape()

  1. 草图轮廓拉伸

polygon = BRepBuilderAPI.BRepBuilderAPI_MakePolygon() face = BRepBuilderAPI.BRepBuilderAPI_MakeFace(polygon.Wire()).Face() shape = BRepPrimAPI.BRepPrimAPI_MakePrism(face, gp.gp_Vec(...)).Shape()

  1. 最后导出 STEP

writer = STEPControl.STEPControl_Writer() writer.Transfer(shape, STEPControl.STEPControl_AsIs) writer.Write("model.step")

五、我这次实际做了哪些模型
已经生成的文件包括:

  • 法兰盘
    • flange_demo.step
  • 概念航模
    • rc_plane_concept.step
  • 高细节航模
    • rc_plane_ultra_detail.step
  • 高细节城堡
    • detailed_castle.step

对应导出脚本也都在同目录里。

六、以“高细节航模”为例,它是怎么堆出来的
不是一句提示词直接变模型,而是拆成可控几何部件:

  • 机身
    用多段圆柱和圆锥拼接,再切底部、加背脊和腹部整流
  • 舱盖
    独立生成透明罩形体和舱盖框
  • 发动机区
    加螺旋桨、桨毂、进气口、排气口
  • 主翼
    左右翼分开建,再补中翼和翼根整流
  • 尾翼
    水平尾翼、垂尾、舵面缝单独处理
  • 起落架
    主起落架、轮子、轮罩、尾轮单独做
  • 附件
    检修盖、天线、小整流件

这样做的优点:

  • 稳定
  • 细节可控
  • 容易继续加细节
  • 导出 STEP 成功率高

七、脚本如何运行
直接运行对应脚本即可:

python D:\solidworks\project\vscode\solidworks_ai_demo\rc_plane_ultra_detail_step_export.py

运行完成后,会在脚本同目录生成:

rc_plane_ultra_detail.step

城堡同理:

python D:\solidworks\project\vscode\solidworks_ai_demo\detailed_castle_step_export.py

八、如何导入 SolidWorks

  1. 打开 SolidWorks
  2. 文件 -> 打开
  3. 选择 .step
  4. 导入后检查实体
  5. 如需要,另存为 -> SLDPRT

注意:

  • STEP 导入后通常是几何体,不是原生特征树
  • 如果你要参数化特征树,最好直接走 SolidWorks API 或宏

九、部署中踩过的坑

  1. pip 下载超慢
    解决:换清华镜像

  2. cadquery-ocp 下载超时
    解决:加 --timeout 600 --retries 50

  3. hash mismatch
    解决:加 --no-cache-dir

  4. ModuleNotFoundError: OCP
    解决:不要只靠裸 import OCP,用脚本里的 ensure_ocp_available()

  5. Windows 中文路径在 PowerShell 里偶尔编码翻车
    解决:涉及复制和路径处理时,用 Python 处理更稳

十、这套方案适合做什么
适合:

  • 机械零件
  • 建筑体块和细节体
  • 航模、载具、概念工业模型
  • 参数化规则明显的 CAD 模型

不适合直接一步到位做:

  • 可编辑的原生 SLDPRT 特征树
  • 影视级贴图材质模型
  • 复杂自由曲面角色模型

十一、最终建议
如果你的目标是“让 AI 帮你生成 SolidWorks 模型”,最实用的路线是:

  • 简单机械件:直接生成 STEP
  • 要原生零件:STEP 导入后另存 SLDPRT
  • 要参数化:生成 SolidWorks 宏/API
  • 要复杂模型:先拆构件,再布尔建模,不要指望一句话直接出完美高模
Logo

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

更多推荐