欢迎光临
我们一直在努力

用 Python + OpenCascade 自动生成 3D CAD 模型,并导出 SolidWorks 可打开的 STEP 文件

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

  • 用 Python 调 OpenCascade 建几何
  • 导出 STEP
  • 用 SolidWorks 打开 STEP
  • 需要原生零件时,再在 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

    最核心的几个操作:

  • 先造基础体
  • BRepPrimAPI.BRepPrimAPI_MakeBox(…) BRepPrimAPI.BRepPrimAPI_MakeCylinder(…) BRepPrimAPI.BRepPrimAPI_MakeCone(…)

  • 再做布尔运算
  • BRepAlgoAPI.BRepAlgoAPI_Fuse(base, tool).Shape() BRepAlgoAPI.BRepAlgoAPI_Cut(base, tool).Shape()

  • 草图轮廓拉伸
  • polygon = BRepBuilderAPI.BRepBuilderAPI_MakePolygon() face = BRepBuilderAPI.BRepBuilderAPI_MakeFace(polygon.Wire()).Face() shape = BRepPrimAPI.BRepPrimAPI_MakePrism(face, gp.gp_Vec(…)).Shape()

  • 最后导出 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

  • 打开 SolidWorks
  • 文件 -> 打开
  • 选择 .step
  • 导入后检查实体
  • 如需要,另存为 -> SLDPRT
  • 注意:

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

    九、部署中踩过的坑

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

  • cadquery-ocp 下载超时
    解决:加 –timeout 600 –retries 50

  • hash mismatch
    解决:加 –no-cache-dir

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

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

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

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

    不适合直接一步到位做:

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

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

    • 简单机械件:直接生成 STEP
    • 要原生零件:STEP 导入后另存 SLDPRT
    • 要参数化:生成 SolidWorks 宏/API
    • 要复杂模型:先拆构件,再布尔建模,不要指望一句话直接出完美高模
    赞(0)
    未经允许不得转载:171主机测评 » 用 Python + OpenCascade 自动生成 3D CAD 模型,并导出 SolidWorks 可打开的 STEP 文件
    分享到: 更多 (0)

    评论 抢沙发

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