OCC+VS+QT项目配置

1、安装好VS2022、QT、OCC安装包后,在VS2022中创建一个项目,具体如下:

2、配置步骤1中创建的项目的属性,具体如下:

VC++目录>>>包含目录:

 添加文件目录如上三个。

 VC++目录>>>库目录:

 添加文件目录如上两个。

 依赖项内容:

TKBin.lib
TKBinL.lib
TKBinTObj.lib
TKBinXCAF.lib
TKBO.lib
TKBool.lib
TKBRep.lib
TKCAF.lib
TKCDF.lib
TKD3DHost.lib
TKD3DHostTest.lib
TKDCAF.lib
TKDFBrowser.lib
TKDraw.lib
TKernel.lib
TKExpress.lib
TKFeat.lib
TKFillet.lib
TKG2d.lib
TKG3d.lib
TKGeomAlgo.lib
TKGeomBase.lib
TKHLR.lib
TKIGES.lib
TKIVtk.lib
TKIVtkDraw.lib
TKLCAF.lib
TKMath.lib
TKMesh.lib
TKMeshVS.lib
TKMessageModel.lib
TKMessageView.lib
TKOffset.lib
TKOpenGl.lib
TKOpenGles.lib
TKOpenGlesTest.lib
TKOpenGlTest.lib
TKPrim.lib
TKQADraw.lib
TKRWMesh.lib
TKService.lib
TKShapeView.lib
TKShHealing.lib
TKStd.lib
TKStdL.lib
TKSTEP.lib
TKSTEP209.lib
TKSTEPAttr.lib
TKSTEPBase.lib
TKSTL.lib
TKTInspector.lib
TKTInspectorAPI.lib
TKTObj.lib
TKTObjDRAW.lib
TKToolsDraw.lib
TKTopAlgo.lib
TKTopTest.lib
TKTreeModel.lib
TKV3d.lib
TKVCAF.lib
TKView.lib
TKViewerTest.lib
TKVInspector.lib
TKVRML.lib
TKXCAF.lib
TKXDE.lib
TKXDECascade.lib
TKXDEDRAW.lib
TKXDEIGES.lib
TKXDESTEP.lib
TKXMesh.lib
TKXml.lib
TKXmlL.lib
TKXmlTObj.lib
TKXmlXCAF.lib
TKXSBase.lib
TKXSDRAW.lib

注意:可用快捷方法获取上述列表名单,具体如下:

在以上目录下创建一个文本文件,并输入以上内容,保存后将后缀名改成.bat,双击运行该bat文件,就可在目录下生成一个lib.txt文件。里面包含了该目录下所有.lib文件的名称,具体如下:

 接着在【链接器】>>>【输入】>>>【附加依赖项】中,添加上述获取的lib列表。

 3、在系统环境变量中,添加所有的bin文件夹,具体如下:

上图中,第一个未完整显示的OCC目录如下:

E:\OpenCASCADE-7.7.0-vc14-64\opencascade-7.7.0\win64\vc14\bin 

这里根据OCC版本不同,需要添加的也不同,主要宗旨就是尽可能将OCC中包含的bin文件夹包含进来,免得VS2022编译的时候报错。

注意:修改完系统环境变量后,需要重启电脑才生效。 

4、添加如下代码

.h文件中:

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_TestOCC.h"

#include <Standard_Handle.hxx>
#include <V3d_Viewer.hxx>
#include <OpenGl_GraphicDriver.hxx>
#include <WNT_Window.hxx>
#include <V3d_View.hxx>
#include <AIS_InteractiveContext.hxx>
#include <BRepPrimAPI_MakeBox.hxx>
#include <TopoDs_Shape.hxx>
#include <AIS_Shape.hxx>

class TestOCC : public QMainWindow
{
    Q_OBJECT

public:
    TestOCC(QWidget *parent = nullptr);
    ~TestOCC();

protected:
    //重写绘图事件
    void paintEvent(QPaintEvent* event) override;
    //返回窗口绘图引擎
    QPaintEngine* paintEngine() const;

private:
    Ui::TestOCCClass ui;

    //定义查看器viewer 3D查看器
    Handle(V3d_Viewer) viewer;
    //视图
    Handle(V3d_View) view;
    //交互式上下文,管理一个或者多个viewer
    Handle(AIS_InteractiveContext) context;
    //window NT窗口
    Handle(WNT_Window) window;
};

.cpp文件中:

#include "TestOCC.h"

TestOCC::TestOCC(QWidget *parent)
    : QMainWindow(parent)
{
    //ui.setupUi(this);

    //提供X server的连接,在window和Mac中不起作用
    Handle(Aspect_DisplayConnection) hAspect_DisplayConnect = new Aspect_DisplayConnection;
    //创建3D接口定义图形驱动
    Handle(OpenGl_GraphicDriver) driver = new OpenGl_GraphicDriver(hAspect_DisplayConnect);

    //该类的方法允许编辑、询问连接该类的其他参数(如视图、光)
    viewer = new V3d_Viewer(driver);
    view = viewer->CreateView();

    WId win_handle = winId();
    //在已有的窗口上创建窗口
    window = new WNT_Window((Aspect_Handle)win_handle);
    view->SetWindow(window);
    if (!window->IsMapped())
    {
        window->Map();//打开窗口
    }
    view->SetBackgroundColor(Quantity_NOC_BLACK);
    view->MustBeResized();
    viewer->SetDefaultLights();
    setAttribute(Qt::WA_PaintOnScreen);
    //交互式上下文
    context = new AIS_InteractiveContext(viewer);
    context->SetDisplayMode(AIS_Shaded, Standard_True);

    TopoDS_Shape box = BRepPrimAPI_MakeBox(10, 10, 10);
    Handle(AIS_Shape) abox = new AIS_Shape(box);
    context->Display(abox, Standard_True);
    view->FitAll();
}

TestOCC::~TestOCC()
{}

void TestOCC::paintEvent(QPaintEvent* event)
{
    view->Redraw();
}

QPaintEngine* TestOCC::paintEngine() const
{
    return 0;
}

 5、运行效果

如上,完成第一个VS+QT+OCC项目! 

注意:为保证代码顺利运行,在电脑上只能安装一个OCC版本,在系统环境变量中,只能有一个QT路径,一定要确保,否则显示不出效果。 

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值