一、先搞懂:什么是 PythonOCC-Core?
PythonOCC-Core 是Open CASCADE Technology (OCCT) 的 Python 绑定库(OCCT 是一款开源的 C++ 三维几何建模内核,被 FreeCAD、CADAssistant 等知名 CAD 软件采用)。简单来说,它让你可以用 Python 代码替代 C++,快速开发三维几何建模、CAD 数据处理、工程分析相关的程序,无需深入底层 C++ 开发,大幅降低三维工程开发的门槛。
核心定位:PythonOCC-Core = Python + 工业级三维几何内核,主打参数化建模、STEP/IGES 文件读写、几何拓扑操作、可视化显示,适配机械设计、逆向工程、CAE 前处理等工程场景。
二、环境安装(新手友好版)
PythonOCC-Core 支持 Windows、Linux、macOS,推荐用
conda安装(避免依赖冲突):bash
运行
# 1. 创建虚拟环境(建议,避免污染全局环境)
conda create -n occ_env python=3.9 # 推荐Python 3.8-3.10,兼容性最好
conda activate occ_env# 2. 安装PythonOCC-Core(conda方式最稳定)
conda install -c conda-forge pythonocc-core=7.7.0 # 指定版本,7.7.0为稳定版# 备选:pip安装(部分系统可能需手动装依赖)
# pip install pythonocc-core==7.7.0
验证安装:
python
运行
import OCC
print(OCC.VERSION) # 输出7.7.0则安装成功
三、核心功能:基础使用示例
1. 最简示例:创建立方体并可视化
这是 PythonOCC-Core 的入门案例,实现三维立方体建模 + 交互式显示:
python
运行
from OCC.Core.BRepPrimAPI import BRepPrimAPI_MakeBox
from OCC.Core.Display.SimpleGui import init_display# 1. 创建三维几何:100x50x30的立方体(原点(0,0,0))
box = BRepPrimAPI_MakeBox(100, 50, 30).Shape()# 2. 初始化可视化窗口并显示几何体
display, start_display, add_menu, add_function_to_menu = init_display()
display.DisplayShape(box, update=True) # 显示立方体
display.FitAll() # 自适应视图# 3. 启动交互式窗口(支持鼠标拖拽旋转、缩放)
start_display()
运行效果:弹出一个可视化窗口,显示可交互的三维立方体,支持鼠标左键旋转、滚轮缩放、右键平移。
2. 核心场景 1:STEP/IGES 文件读写(CAD 数据交换)
工业场景中最常用的功能 —— 读取 / 导出 STEP 格式的 CAD 文件(STEP 是工业标准的三维模型交换格式):
python
运行
from OCC.Core.STEPControl import STEPControl_Reader, STEPControl_Writer
from OCC.Core.IFSelect import IFSelect_RetDone
from OCC.Core.BRepPrimAPI import BRepPrimAPI_MakeBox
from OCC.Core.Display.SimpleGui import init_display# ---------------------- 写入STEP文件 ----------------------
# 创建立方体模型
box = BRepPrimAPI_MakeBox(50, 50, 50).Shape()# 初始化STEP写入器
writer = STEPControl_Writer()
writer.Transfer(box, STEPControl_Writer.StepModelType.STEPControl_AsIs)
# 保存为STEP文件
writer.Write("cube.step")
print("STEP文件已保存:cube.step")# ---------------------- 读取STEP文件 ----------------------
reader = STEPControl_Reader()
status = reader.ReadFile("cube.step")
if status == IFSelect_RetDone: # 读取成功# 转换所有实体reader.TransferRoots()shape = reader.OneShape()# 可视化读取的模型display, start_display, _, _ = init_display()display.DisplayShape(shape, update=True)display.FitAll()start_display()
else:print("STEP文件读取失败!")
3. 核心场景 2:参数化几何建模(布尔运算)
实现两个几何体的布尔运算(合并、切割、相交),是参数化建模的核心:
python
运行
from OCC.Core.BRepPrimAPI import BRepPrimAPI_MakeBox, BRepPrimAPI_MakeCylinder
from OCC.Core.BRepAlgoAPI import BRepAlgoAPI_Cut, BRepAlgoAPI_Fuse
from OCC.Core.Display.SimpleGui import init_display# 1. 创建基础几何体:立方体 + 圆柱体
box = BRepPrimAPI_MakeBox(100, 100, 100).Shape()
# 圆柱体:底面圆心(50,50,0),半径30,高度100
cylinder = BRepPrimAPI_MakeCylinder(30, 100, (50,50,0)).Shape()# 2. 布尔运算:立方体切割圆柱体(挖洞)
cut_shape = BRepAlgoAPI_Cut(box, cylinder).Shape()
# (可选)布尔合并:BRepAlgoAPI_Fuse(box, cylinder).Shape()
# (可选)布尔相交:BRepAlgoAPI_Common(box, cylinder).Shape()# 3. 可视化结果
display, start_display, _, _ = init_display()
display.DisplayShape(cut_shape, color="red", update=True)
display.FitAll()
start_display()
运行效果:显示一个中间有圆柱形孔洞的立方体,直观体现布尔切割的效果。
四、PythonOCC-Core 核心模块与能力
| 核心模块 | 功能说明 | 典型应用场景 |
|---|---|---|
BRepPrimAPI |
基础几何体创建(立方体、圆柱、球、圆锥等) | 快速创建标准三维零件 |
BRepAlgoAPI |
布尔运算、几何拓扑操作 | 参数化建模、零件组合 |
STEPControl/IGESControl |
STEP/IGES 文件读写 | CAD 数据交换、第三方模型导入 |
TopAbs/TopExp |
几何拓扑分析(点、边、面、体提取) | 逆向工程、几何特征识别 |
Display |
三维可视化(窗口 / 截图 / 导出) | 模型预览、结果展示 |
Geom/Geom2d |
曲线 / 曲面建模(贝塞尔、样条、圆弧等) | 复杂曲面设计、模具建模 |
五、适用场景 & 注意事项
1. 适用场景
- 快速开发轻量化 CAD 工具(无需依赖商业 CAD 软件如 SolidWorks);
- CAE 前处理(网格划分前的几何清理、模型简化);
- 工业自动化建模(批量生成标准化零件、CAD 文件批量转换);
- 逆向工程(点云转曲面、几何特征提取)。
2. 注意事项
- 性能:PythonOCC-Core 底层是 C++,但 Python 调用有轻微性能损耗,超大规模模型建议核心逻辑用 C++ 编写,Python 做封装;
- 学习成本:需了解基础的几何拓扑概念(点、边、面、体、拓扑),建议先熟悉 OCCT 的核心概念;
- 可视化:默认的
SimpleGui仅用于调试,生产环境可结合PyQt/wxPython做自定义界面; - 依赖问题:macOS/Linux 需确保安装了 OpenGL 相关依赖,否则可视化窗口无法启动。
六、进阶方向
- 结合 PyQt/PySide:开发带自定义界面的 CAD 工具(如参数化建模界面、文件批量处理工具);
- 点云处理:结合
Open3D/PCL,实现点云转三维模型; - CAE 集成:导出模型为 STL 格式,对接 ANSYS、Abaqus 等仿真软件;
- 轻量化部署:用
PyInstaller打包为可执行文件,无需安装 Python 环境即可运行。
总结
- PythonOCC-Core 是 Python 绑定的开源工业级三维几何内核,核心是用 Python 实现 CAD 建模、STEP/IGES 文件处理、几何拓扑操作;
- 核心优势是低成本、易上手,无需 C++ 即可开发工业级三维几何程序,适配建模、数据交换、CAE 前处理等场景;
- 基础用法聚焦 “几何体创建→拓扑操作→可视化 / 文件导出”,进阶可结合 GUI、点云、CAE 工具扩展能力;
- 适合中小规模三维工程开发,超大规模模型需注意性能优化,优先用底层 C++ 接口。