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 文件等操作,先记录到这里。

  • 左键拖动:旋转模型
  • 滚轮:缩放
  • 右键拖动:平移
相关推荐
2601_953988072 小时前
Ricon组态系统vs传统组态软件:为什么选择新一代Web组态平台
前端·后端·物联网·tcp/ip·数学建模·前端框架
数模竞赛Paid answer1 天前
2026年华东杯数学建模C题收益率预测问题解题全过程文档及程序
算法·数学建模·数据分析·华东杯
数模竞赛Paid answer2 天前
2026年电工杯数学建模A题绿电直连型电氢氨园区优化运行求解全过程论文及程序
算法·数学建模·电工杯
AI Dog2 天前
MathHub:数学建模学习社区,内置数学建模智能体Modulus
学习·数学建模·智能体·modulus·数学建模智能体
统计学小王子2 天前
分类模型评价指标——R语言(数学建模常用)
数学建模·分类·r语言
数模竞赛Paid answer2 天前
2026年华东杯数学建模B题医药物流安排问题解题全过程文档及程序
算法·数学建模·数据分析·华东杯
数模竞赛Paid answer3 天前
2021年深圳杯数学建模C题配电网可靠性和故障软自愈研究解题全过程论文及程序
算法·数学建模·数据分析·深圳杯
数模竞赛Paid answer4 天前
2026年华数杯数学建模A题微构体中填充导电介质的仿真优化解题全过程及程序
数学建模·数据分析·华数杯
数模竞赛Paid answer4 天前
2021年深圳杯数学建模B题背向瑞利散射光纤激光传感器设计解题全过程论文及程序
数学建模·数据分析·深圳杯
数模竞赛Paid answer4 天前
2026年五一杯数学建模B题多工序协同作业问题求解全过程文档及程序
数学建模·数据分析·五一杯