背景
OCC 引擎 即Open CASCADE Technology(OCCT) ,是一款由法国 Matra Datavision 公司开发、开源的工业级三维几何建模 C++ 类库,广泛用于 CAD、CAE、CAM 及 3D 建模类软件开发。
核心定义与定位
- 全称:Open CASCADE Technology(常简称为 OCC 或 OCCT)。
- 本质 :面向对象的 C++ 软件库,非独立软件,是三维几何建模内核,为开发者提供底层几何与拓扑能力。
- 定位:工业级开源几何引擎,曾为商用后开源,是 CAD/CAE/CAM 领域的核心基础组件。
核心功能
- 几何建模:支持 B-Rep(边界表示)建模、NURBS 曲线 / 曲面、基本几何体生成、布尔运算(加减交)、倒角 / 圆角 / 扫掠等高级操作。
- 数据交换:兼容 STEP、IGES、STL 等工业标准格式,实现跨软件模型互通。
- 可视化与网格:提供三维渲染显示,支持三角网格生成、离散化,适配仿真前处理与渲染需求。
- 拓扑处理:分离几何与拓扑结构,支持形状修复、精度控制,保障模型稳健性。
典型应用场景
- CAD/CAM/CAE 软件:如 FreeCAD、Salome 等基于 OCC 构建。
- 3D 打印:模型修复、布尔操作、切片处理。
- 工业仿真:几何清理、网格生成、实体布尔运算。
- 航空航天、汽车设计:复杂曲面与零件精准建模。
同类引擎简单对比
- OCC(Open CASCADE):开源免费,功能强,生态大,C++
- Parasolid:商用,非常强,UG、SolidWorks 内核,贵
- ACIS:商用,C++,AutoCAD 系常用,贵
- 其他轻量引擎:功能弱,不适合工业
结论:做工业 3D 开发,优先 OCC,成本最低、最稳。
(参考链接: https://blog.csdn.net/weixin_44153630/article/details/148479728)
环境准备
首先进Open Cascade官网下载相关的开源库文件及三方库文件,最好直接下载最下面的包含 PCH(带调试功能)和第三方VC++ 2022 64 位版本的 Windows 软件包, 至少要下载Windows 软件包和第三方VC++ 2022 64 位版本,因为我们的电脑很可能缺少必须的三方库。
下载下来的是压缩包,直接免安装,马上直接在VS里面添加头文件、依赖库就可以了。
https://dev.opencascade.org/release

一、VS2022新建控制台运行程序,添加如下源码
cpp
#pragma warning(disable:4996)
#include <windows.h>
#include <BRepPrimAPI_MakeBox.hxx>
#include <BRepPrimAPI_MakeCylinder.hxx>
#include <BRepAlgoAPI_Cut.hxx>
#include <TopoDS_Shape.hxx>
#include <gp_Pnt.hxx>
#include <gp_Ax2.hxx>
#include <AIS_InteractiveContext.hxx>
#include <AIS_Shape.hxx>
#include <V3d_View.hxx>
#include <V3d_Viewer.hxx>
#include <WNT_Window.hxx>
#include <Aspect_DisplayConnection.hxx>
#include <OpenGl_GraphicDriver.hxx>
TopoDS_Shape MakeShape()
{
gp_Pnt pMin(0, 0, 0);
gp_Pnt pMax(100, 100, 100);
TopoDS_Shape box = BRepPrimAPI_MakeBox(pMin, pMax);
gp_Ax2 cylAxis(gp_Pnt(50, 50, 0), gp_Dir(0, 0, 1));
TopoDS_Shape cylinder = BRepPrimAPI_MakeCylinder(cylAxis, 20, 100);
BRepAlgoAPI_Cut cut(box, cylinder);
cut.Build();
return cut.Shape();
}
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int)
{
HWND hwnd = CreateWindowA("STATIC", "OCC 3D 窗口",
WS_OVERLAPPEDWINDOW, 100, 100, 1000, 800, NULL, NULL, hInst, NULL);
ShowWindow(hwnd, SW_SHOW);
Handle(Aspect_DisplayConnection) disp = new Aspect_DisplayConnection();
Handle(OpenGl_GraphicDriver) driver = new OpenGl_GraphicDriver(disp);
Handle(V3d_Viewer) viewer = new V3d_Viewer(driver);
Handle(V3d_View) view = viewer->CreateView();
Handle(WNT_Window) wnd = new WNT_Window(hwnd);
view->SetWindow(wnd);
if (!wnd->IsMapped())
wnd->Map();
Handle(AIS_InteractiveContext) ctx = new AIS_InteractiveContext(viewer);
Handle(AIS_Shape) shape = new AIS_Shape(MakeShape());
ctx->Display(shape, Standard_True);
view->FitAll();
view->Redraw();
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
view->Redraw();
}
return 0;
}
二、解决 "找不到 tbb12.dll"(最关键)
把下面两个目录里的 全部 DLL 复制到你的项目输出目录(如 x64\Debug):
-
OCC 自身 DLL
D:\soft\opencascade-7.9.3-vc14-64\opencascade-7.9.3\win64\vc14\bin\ -
TBB 依赖 DLL(含 tbb12.dll)
D:\soft\opencascade-7.9.3-vc14-64\tbb\vc14\bin\
复制完这两个文件夹的所有 .dll 到你的 .exe 旁边,F5 就不会再报缺少 tbb12.dll。
三、VS 项目配置(你已经配过,再核对一遍)
-
C/C++ → 常规 → 附加包含目录
D:\soft\opencascade-7.9.3-vc14-64\opencascade-7.9.3\inc -
链接器 → 常规 → 附加库目录
D:\soft\opencascade-7.9.3-vc14-64\opencascade-7.9.3\win64\vc14\lib -
链接器 → 输入 → 附加依赖项(至少这些)
TKernel.lib
TKMath.lib
TKBRep.lib
TKTopAlgo.lib
TKGeomBase.lib
TKGeomAlgo.lib
TKPrim.lib
TKBO.lib
TKV3d.lib
TKOpenGl.lib
TKService.lib
四、那个 C4996 警告(Handle 废弃)
在你的 .cpp 最顶部加一行:
#pragma warning(disable:4996)
就不会再报 Handle_Graphic3d_CLight 废弃警告。
五、现在 F5 运行
成功弹出 3D 窗口,但是说是可以进行如下操作,但是我的却没有反应,还不知道为什么。并且后续还可以给模型上色、做圆角、打开 STEP 文件等操作,先记录到这里。
- 左键拖动:旋转模型
- 滚轮:缩放
- 右键拖动:平移
