概述
本教程提供了Render SDK平面视图的使用教程,可通过该教程了解创建正视图、顶视图、右视图。
前置条件
如果未初始化SDK,需要通过以下代码初始化
auto mRender = mRenderComponent->CreateBasicRender();
AMCAX_RENDER_API std::shared_ptr< IRenderComponent > CreateRenderComponent(QWidget *parent)
Create Render Component
示例代码
以下代码展示了创建平面视图模块的使用方法
CMakeLists.txt
cmake_minimum_required(VERSION 3.16)
project(FourViewSample)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
add_definitions(-DUSE_AMCAX_KERNEL)
list(APPEND CMAKE_PREFIX_PATH ${AMCAX_DIR})
set(AMCAX_components AMCAXCommon AMCAXPart AMCAXStep AMCAXOCCTIO)
find_package(AMCAXCommon REQUIRED)
find_package(AMCAXStep REQUIRED)
find_package(AMCAXPart REQUIRED)
find_package(AMCAXOCCTIO REQUIRED)
list(APPEND CMAKE_PREFIX_PATH ${AMCAXRender_PATH})
find_package(AMCAXRender )
find_package(Qt6 COMPONENTS Widgets Core Gui REQUIRED)
list(APPEND CMAKE_PREFIX_PATH ${Json_PATH})
find_package(nlohmann_json 3.11.3 REQUIRED)
file(GLOB ALL_UI_FILES *.ui)
file(GLOB ALL_FILES *.cpp *.h)
add_executable(${PROJECT_NAME} ${ALL_UI_FILES} ${ALL_FILES})
target_link_libraries(${PROJECT_NAME} PRIVATE ${AMCAX_components})
target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets)
target_link_libraries(${PROJECT_NAME} PRIVATE AMCAXRender::AMCAXRender)
main.cpp
#include <QApplication>
#include "Mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Mainwindow w;
w.show();
return a.exec();
}
Mainwindow.h
#pragma once
#include <QWidget>
#include "ui_Mainwindow.h"
class Mainwindow : public QWidget
{
Q_OBJECT
public:
Mainwindow(QWidget *parent = nullptr);
~Mainwindow();
private:
Ui::MainwindowClass ui;
std::shared_ptr<AMCAXRender::IRenderComponent> mRenderComponent;
std::shared_ptr<AMCAXRender::CBasicRender> mRender;
};
Mainwindow.cpp
#include "Mainwindow.h"
#include <modeling/MakeBox.hpp>
#include <QSplitter>
Mainwindow::Mainwindow(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
mRender = mRenderComponent->CreateBasicRender();
mRender->styleManage->ShowTitleMenu(1);
QSplitter* verticalSplitter = new QSplitter(Qt::Vertical, this);
QSplitter* horizontalSplitter = new QSplitter(Qt::Horizontal, this);
QSplitter* horizontalSplitter2 = new QSplitter(Qt::Horizontal, this);
horizontalSplitter->addWidget(topWidget);
horizontalSplitter->addWidget(mRender->widget);
horizontalSplitter2->addWidget(frontWidget);
horizontalSplitter2->addWidget(rightWidget);
verticalSplitter->addWidget(horizontalSplitter);
verticalSplitter->addWidget(horizontalSplitter2);
ui.gridLayout->addWidget(verticalSplitter);
AMCAX::TopoShape s = AMCAX::MakeBox(10.0, 10.0, 10.0);
auto entity = mRender->entityFactory->FromShape(s);
mRender->entityManage->AddEntity(entity);
mRender->cameraManage->SetParallelProjection(false);
mRender->cameraManage->ResetClippingRange();
mRender->entityManage->DoRepaint();
}
Mainwindow::~Mainwindow()
{
}
@ RIGHT
RIGHT Rendering Window
定义 Constants.h:29
@ TOP
TOP Rendering Window
定义 Constants.h:27
@ FRONT
FRONT Rendering Window
定义 Constants.h:28
Mainwindow.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainwindowClass</class>
<widget class="QWidget" name="MainwindowClass">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>600</width>
<height>400</height>
</rect>
</property>
<property name="windowTitle">
<string>Mainwindow</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout"/>
</item>
</layout>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>
四视图预览
更多
更多设置请参考 IRenderComponent.h