OCC 7.9.3 + VS2022 可编译、可运行的最简可视化窗口

背景

OCC 引擎Open CASCADE Technology(OCCT) ,是一款由法国 Matra Datavision 公司开发、开源的工业级三维几何建模 C++ 类库,广泛用于 CAD、CAE、CAM 及 3D 建模类软件开发。

核心定义与定位
  • 全称:Open CASCADE Technology(常简称为 OCC 或 OCCT)。
  • 本质 :面向对象的 C++ 软件库,非独立软件,是三维几何建模内核,为开发者提供底层几何与拓扑能力。
  • 定位:工业级开源几何引擎,曾为商用后开源,是 CAD/CAE/CAM 领域的核心基础组件。
核心功能
  1. 几何建模:支持 B-Rep(边界表示)建模、NURBS 曲线 / 曲面、基本几何体生成、布尔运算(加减交)、倒角 / 圆角 / 扫掠等高级操作。
  2. 数据交换:兼容 STEP、IGES、STL 等工业标准格式,实现跨软件模型互通。
  3. 可视化与网格:提供三维渲染显示,支持三角网格生成、离散化,适配仿真前处理与渲染需求。
  4. 拓扑处理:分离几何与拓扑结构,支持形状修复、精度控制,保障模型稳健性。
典型应用场景
  • 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):

  1. OCC 自身 DLL

    复制代码
    D:\soft\opencascade-7.9.3-vc14-64\opencascade-7.9.3\win64\vc14\bin\
  2. 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 文件等操作,先记录到这里。

  • 左键拖动:旋转模型
  • 滚轮:缩放
  • 右键拖动:平移
相关推荐
嵌入式冰箱16 小时前
2026年第二十三届五一数学建模竞赛-C题 边坡预警问题
数学建模
Math_teacher_fan20 小时前
Flutter 跨平台开发实战:鸿蒙与音乐律动艺术(六)、Lissajous 利萨茹曲线:频率耦合的轨迹艺术
flutter·ui·数学建模·华为·harmonyos·鸿蒙系统
lichensun1 天前
2026年第二十三届五一数学建模竞赛题目C题 边坡预警问题-完整模型及代码论文
数学建模
maligebilaowang1 天前
2026年五一数学建模联赛 A/B/C 三题选题分析
数学建模·2026年五一赛·2026年五一杯
★飞翔的企鹅★1 天前
【一等奖版】2026 五一数学建模 B题 多工序协同作业问题
数学建模·2026五一数学建模·2026五一数学建模b题·多工序协同作业问题
★飞翔的企鹅★1 天前
【一等奖版】2026 五一数学建模 C题 边坡预警问题
数学建模·2026五一数学建模·2026五一数学建模c题
AI科技星1 天前
从180°旋转定值π、e论证时空宿命与未来可预测性—全域数学视角
人工智能·算法·机器学习·数学建模·数据挖掘
周末也要写八哥2 天前
C4D/Cinema 4D 2026超详细下载与安装教程(附资源包)
学习·数学建模
AI科技星2 天前
《基于 1 的 N 维分形与对称统一理论》
人工智能·算法·机器学习·数学建模·数据挖掘
AI科技星2 天前
《全域数学》第一部 数术本源 全10卷1-4级完整目录(出版定稿)
人工智能·机器学习·数学建模·数据挖掘·量子计算