OpenCASCADE 7.7.0 完全教程(一):入门与架构详解
OpenCASCADE 7.7.0 完全教程(一):入门与架构详解
> 版本: OCCT 7.7.0
> 发布日期: 2023 年
> 难度: 入门
> 字数: 约 2000 字
—
什么是 OpenCASCADE?
OpenCASCADE Technology(简称 OCCT)是一个面向对象的 C++ 类库,专为快速开发复杂的 CAD/CAM/CAE 应用程序而设计。
核心定位
┌─────────────────────────────────────────────────────────┐
│ OpenCASCADE Technology │
├─────────────────────────────────────────────────────────┤
│ CAD (计算机辅助设计) │ CAM (计算机辅助制造) │
│ - 3D 建模 │ - 刀具路径生成 │
│ - 参数化设计 │ - 加工仿真 │
│ - 装配设计 │ │
├─────────────────────────────────────────────────────────┤
│ CAE (计算机辅助工程) │
│ - 有限元分析前处理 │ - 网格划分 │
│ - 运动仿真 │ - 结构分析 │
└─────────────────────────────────────────────────────────┘
典型应用场景
| 行业 | 应用 | 使用 OCCT 的原因 |
|——|——|—————–|
| 机械设计 | 零件建模、装配设计 | 精确的 BRep 表示 |
| 模具设计 | 型腔设计、电极生成 | 布尔运算、曲面操作 |
| 3D 打印 | STL 导出、切片处理 | 网格生成、格式转换 |
| CAE 仿真 | 网格划分前处理 | 几何清理、简化 |
| 数控加工 | 刀具路径生成 | 精确几何计算 |
—
OCCT 7.7.0 新特性
重要更新
1. 改进的布尔运算 – 更稳定的布尔操作,减少失败率
2. 增强的网格算法 – 更快的 tessellation 速度
3. STEP AP242 支持 – 完整的 STEP AP242 协议支持
4. OpenGL ES 优化 – 移动端渲染性能提升
5. CMake 构建系统改进 – 更灵活的配置选项
版本兼容性
| OCCT 版本 | C++ 标准 | 编译器要求 |
|———–|———-|———–|
| 7.7.0 | C++17 | GCC 9+, MSVC 2019+, Clang 10+ |
| 7.6.0 | C++17 | GCC 8+, MSVC 2017+, Clang 9+ |
| 7.5.0 | C++11 | GCC 7+, MSVC 2017+, Clang 8+ |
—
OCCT 架构总览
七大模块
┌────────────────────────────────────────────────────────────┐
│ OCCT 7.7.0 架构 │
├────────────────────────────────────────────────────────────┤
│ ┌──────────────────┐ │
│ │ Foundation │ ← 基础类(数据类型、集合、异常) │
│ │ Classes │ │
│ └────────┬─────────┘ │
│ ↓ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Modeling Data │ │ Modeling Algo │ │
│ │ (BRep 数据结构) │ │ (建模算法) │ │
│ └────────┬─────────┘ └────────┬─────────┘ │
│ ↓ ↓ │
│ ┌──────────────────────────────────────────┐ │
│ │ Mesh (网格化) │ │
│ └──────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Visualization │ │ Data Exchange │ │
│ │ (可视化) │ │ (数据交换) │ │
│ └──────────────────┘ └──────────────────┘ │
│ │
│ ┌──────────────────────────────────────────┐ │
│ │ OCAF (应用框架 - 可选) │ │
│ └──────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────┘
模块详解
#### 1. Foundation Classes(基础类)
作用: 所有其他模块的基础
核心功能:
– 基本数据类型(Boolean, Integer, Real)
– Unicode 字符串处理
– 集合类(数组、列表、映射、哈希表)
– 数值算法(线性代数、矩阵运算)
– 异常处理机制
– 智能指针(自动内存管理)
– RTTI(运行时类型识别)
示例代码:
#include
#include
#include
// 基本类型
Standard_Integer i = 42;
Standard_Real r = 3.14159;
// 数组
TColStd_Array1OfReal arr(1, 10); // 10 个实数
arr(1) = 1.0;
// 点集合
TColgp_Array1OfPnt points(1, 5); // 5 个点
#### 2. Modeling Data(建模数据)
作用: BRep 边界表示的数据结构
核心概念:
几何 (Geometry) 拓扑 (Topology)
↓ ↓
数学描述 (曲线/曲面) 关系绑定 (顶点/边/面)
拓扑元素层次:
Compound (复合体)
└─ CompSolid (复合实体)
└─ Solid (实体)
└─ Shell (壳)
└─ Face (面)
├─ Wire (外轮廓)
│ └─ Edge (边)
│ └─ Vertex (顶点)
└─ Wire (内孔)
#### 3. Modeling Algorithms(建模算法)
作用: 几何和拓扑算法库
主要功能:
– 基本体素: Box, Cylinder, Cone, Sphere, Torus
– 运动建模: 拉伸、旋转、扫掠、放样
– 布尔运算: Common, Fuse, Cut
– 局部修改: 倒角、圆角、抽壳、拔模
– 特征创建: 凹槽、凸台、肋板
#### 4. Mesh(网格)
作用: BRep 到三角网格的转换
功能:
– 表面网格生成
– 网格数据存储
– 网格显示支持
#### 5. Visualization(可视化)
作用: 3D 图形呈现
核心技术:
– AIS (Application Interactive Services) – 高级 API
– OpenGL/OpenGL ES 渲染
– 交互选择机制
– 实时光线追踪(可选)
#### 6. Data Exchange(数据交换)
作用: 与外部 CAD 系统互操作
支持格式:
| 格式 | 支持类型 | 说明 |
|——|———-|——|
| STEP | 读写 | AP203/AP214/AP242 |
| IGES | 读写 | 最高 5.3 版本 |
| STL | 读写 | 3D 打印标准格式 |
| glTF | 读写 | 现代 3D 格式 |
| OBJ | 读写 | 网格格式 |
| VRML | 写 | 虚拟现实格式 |
| BREP | 读写 | OCCT 原生格式 |
#### 7. OCAF(应用框架)- 可选
作用: 应用程序开发框架
功能:
– 数据持久化(保存/恢复)
– 撤销/重做
– 复制/粘贴
– 参数化建模支持
—
开发环境搭建
系统要求
| 组件 | 最低要求 | 推荐配置 |
|——|———-|———-|
| 操作系统 | Windows 10 / Linux / macOS | Windows 11 / Ubuntu 22.04 |
| CPU | 双核 2.0 GHz | 四核 3.0 GHz+ |
| 内存 | 4 GB | 16 GB+ |
| 显卡 | OpenGL 3.3 | OpenGL 4.5+ |
| 编译器 | GCC 9 / MSVC 2019 | GCC 11+ / MSVC 2022 |
| CMake | 3.14+ | 3.20+ |
安装 OCCT 7.7.0
#### 方式 1: 从源码编译(推荐)
1. 克隆源码
git clone --branch V7_7_0 https://git.dev.opencascade.org/git/occt.git
cd occt
2. 创建构建目录
mkdir build && cd build
3. 配置 CMake
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/opt/occt-7.7.0 \
-DUSE_VTK=OFF \
-DUSE_TBB=ON \
-DUSE_FREETYPE=ON
4. 编译
cmake --build . -j$(nproc)
5. 安装
sudo cmake --install .
#### 方式 2: 使用预编译包
Ubuntu/Debian:
sudo apt-get install libocct-data-exchange-dev libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-visualization-dev
Windows:
从官网下载预编译包
https://www.opencascade.com/download/
验证安装
测试 Draw 测试工具
draw
Draw 命令行测试
box b 10 20 30
vinit
vdisplay b
vfit
—
第一个 OCCT 程序
Hello Cube 示例
#include
#include
#include
#include
int main() {
std::cout << "OpenCASCADE 7.7.0 Hello Cube" << std::endl;
// 创建一个 10x20x30 的立方体
TopoDS_Solid box = BRepPrimAPI_MakeBox(10, 20, 30);
// 验证形状是否有效
if (box.IsNull()) {
std::cerr << "错误:创建失败" << std::endl;
return 1;
}
std::cout << "立方体创建成功!" << std::endl;
std::cout << "类型:" << box.DynamicType()->Name() << std::endl;
// 可选:导出为 BREP 格式
BRepTools::Write(box, "hello_cube.brep");
std::cout << "已保存到 hello_cube.brep" << std::endl;
return 0;
}
编译运行
CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(HelloCube)
find_package(OpenCASCADE REQUIRED COMPONENTS
FOUNDATION
MODELINGDATA
MODELINGALGORITHMS)
add_executable(HelloCube main.cpp)
target_link_libraries(HelloCASCADE::OpenCASCADE)
target_compile_features(HelloCube PUBLIC cxx_std_17)
编译
mkdir build && cd build
cmake ..
make
./HelloCube
---
学习路线建议
阶段 1: 基础入门(1-2 周)
- [x] 了解 OCCT 架构(本文)
- [ ] 掌握 BRep 基本概念
- [ ] 学习基础类使用
- [ ] 完成 Hello Cube 示例
阶段 2: 建模实践(2-4 周)
- [ ] 基本体素创建
- [ ] 布尔运算
- [ ] 倒角圆角
- [ ] 扫掠放样
阶段 3: 高级应用(4-8 周)
- [ ] 曲面建模
- [ ] 参数化设计
- [ ] 数据交换
- [ ] 可视化
阶段 4: 项目实战(8 周+)
- [ ] 完整 CAD 功能开发
- [ ] 性能优化
- [ ] 实际项目应用
---
下一步
本教程系列后续章节:
1. (二)BRep 数据结构详解 - 拓扑与几何的深层理解
2. (三)基础类使用指南 - 集合、异常、智能指针
3. (四)建模算法实战 - 布尔运算、倒角、抽壳
4. (五)曲面建模进阶 - NURBS、插值、逼近
5. (六)数据交换实践 - STEP/IGES/STL导入导出
6. (七)可视化开发 - AIS 交互式对象
7. (八)OCAF 应用框架 - 参数化建模系统
---
参考资料:
- [OCCT 7.7.0 官方文档](https://dev.opencascade.org/doc/overview/html/)
- [OCCT GitHub](https://github.com/Open-CAS/occt)
- [OCCT 论坛](https://www.opencascade.com/forum/)
---
本教程基于 OCCT 7.7.0 编写,部分内容可能随版本更新而变化。
最后更新:2026-02-28