VS+QT+OCC创建坐标界面

1、安装并配置好项目后,填写如下代码:

cpp 复制代码
#pragma once

#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>

#include <QtWidgets/QMainWindow>
#include "ui_OCC1.h"
#include <QDebug>

class V3d_Viewer;
class V3d_View;
class AIS_InteractiveContext;
class AIS_ViewController;


class OCC1 : public QMainWindow
{
    Q_OBJECT

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


    void paintEvent(QPaintEvent* event);

    QPaintEngine* paintEngine() const;
private:
    Ui::OCC1Class ui;

    Handle(V3d_Viewer) viewer;
    Handle(V3d_View) view;
    Handle(WNT_Window) window;
    Handle(AIS_InteractiveContext) context;
};
cpp 复制代码
#include "OCC1.h"

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

    Handle(Aspect_DisplayConnection) hAspect_DisplayConnect = new Aspect_DisplayConnection;
    Handle(OpenGl_GraphicDriver) driver = new OpenGl_GraphicDriver(hAspect_DisplayConnect);

    viewer = new V3d_Viewer(driver);
    view = viewer->CreateView();

    WId window_handle = (WId)winId();
    //WId win_handle = winId();
    window = new WNT_Window((Aspect_Handle)window_handle);
    view->SetWindow(window);
    if (!window->IsMapped())
    {
        window->Map();//打开窗口
    }
    view->SetBackgroundColor(Quantity_NOC_BLACK);
    view->MustBeResized();
    view->TriedronDisplay(Aspect_TOTP_LEFT_LOWER, Quantity_NOC_GOLD, 0.08, V3d_ZBUFFER);

    viewer->SetDefaultLights();
    setAttribute(Qt::WA_PaintOnScreen);

    context = new AIS_InteractiveContext(viewer);
    context->SetDisplayMode(AIS_Shaded, Standard_True);
}

OCC1::~OCC1()
{}

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

QPaintEngine* OCC1::paintEngine() const
{
    return 0;
}
cpp 复制代码
#include "OCC1.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    OCC1 w;
    w.show();
    return a.exec();
}

2、运行结果:

相关推荐
Kiyra2 分钟前
限流不是加个计数器就行:用 Lua 脚本实现多维度原子限流
开发语言·人工智能·网络协议·职场和发展·架构·lua·ai-native
雨落在了我的手上4 分钟前
初识java(二):数据类型与变量
java·开发语言
xcjbqd015 分钟前
提升Python编程效率的五大特性
开发语言·python
平凡但不平庸的码农20 分钟前
Go GMP 调度模型详解
开发语言·后端·golang
2401_8784545326 分钟前
js的复习(一)
开发语言·javascript·ecmascript
旺仔老馒头.26 分钟前
【C++】类和对象(二)
开发语言·c++·后端·类和对象
等故意28 分钟前
C# 工业视觉上位机开发心得分享
开发语言·数码相机·c#·视觉检测
广师大-Wzx29 分钟前
JavaWeb:后端部分
java·开发语言·spring·servlet·tomcat·maven·mybatis
机器学习之心31 分钟前
基于CPO-VMD冠豪猪优化优化变分模态分解与最小包络熵的自适应变分模态分解方法,附MATLAB代码
开发语言·matlab·cpo-vmd·冠豪猪优化优化变分模态分解
lly20240632 分钟前
Font Awesome 文件类型图标
开发语言