增加了硬件设备的界面设置

pull/1/head
剑古敛锋 2024-07-23 10:35:59 +08:00
parent 28d0a1dd1b
commit deb2a63ceb
12 changed files with 1862 additions and 0 deletions

View File

@ -0,0 +1,282 @@
/**
* @file DialogMeshOptimization.cpp
* @brief None
* @author (3045316072@qq.com)
* @version 2.5.0
* @date 2024/4/5
* @copyright Copyright (c) Since 2024 All rights reserved.
*/
// You may need to build the project (run Qt uic code generator) to get "ui_DialogMeshOptimization.h"
// resolved
#include "DialogMeshOptimizationOCCT.h"
#include "ui_DialogMeshOptimizationOCCT.h"
#include "PythonModule/PyAgent.h"
#include "MeshData/meshSingleton.h"
#include "MeshData/meshSet.h"
#include <QMenu>
#include <QDebug>
#include <QFileDialog>
#include <QFileInfo>
#include <pcl/filters/statistical_outlier_removal.h>
#include "MeshData/meshKernal.h"
#include "PointCloudOperator/PointCloudCommon.h"
#include "Settings/BusAPI.h"
#include "IO/IOConfig.h"
#include <pcl/filters/convolution_3d.h>
#include <QFileDialog>
#include <QFileInfo>
#include <pcl/filters/statistical_outlier_removal.h>
#include <QMessageBox>
#include <vtkAppendFilter.h>
#include <vtkThreshold.h>
#include "MeshData/meshKernal.h"
#include "PointCloudOperator/PointCloudCommon.h"
#include "Settings/BusAPI.h"
#include "IO/IOConfig.h"
#include "ModuleBase/ThreadControl.h"
#include "ConfigOptions/ConfigOptions.h"
#include "ConfigOptions/MeshConfig.h"
#include "Common/DebugLogger.h"
#include "ModuleBase/messageWindowBase.h"
#include "MainWindow/MainWindow.h"
#include "MeshOperator.h"
#include "MainWindow/MainWindow.h"
#include "MainWindow/SubWindowManager.h"
#include "MeshOperator.h"
#include "MainWidgets/MeshViewProvider.h"
// auto meshData = MeshData::MeshData::getInstance();
namespace MainWidget {
DialogMeshOptimizationOCCT::DialogMeshOptimizationOCCT(GUI::MainWindow* parent)
: QFDialog(parent)
, _ui(new Ui::DialogMeshOptimizationOCCT)
, _mw(parent)
, _selectdlg(new DialogSelectComponents(parent))
{
_ui->setupUi(this);
_ui->geoSelectPoint->setToolTip(tr("Clicked Button Selected "));
setWindowTitle(tr("网格优化OCCT"));
// _ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu);
_preWindow=parent->getSubWindowManager()->getPreWindow(); // 处理选择
// connect(_ui->geoSelectPoint, &QPushButton::clicked, [=]() {
// _selectdlg->clearSelectItems();
// _selectdlg->exec();
// });
connect(_selectdlg, SIGNAL(selectedComponentsSig(QList<MeshData::MeshSet*>)), this,
SLOT(selectedComponentsSlot(QList<MeshData::MeshSet*>)));
// connect(_ui->listWidget, SIGNAL(customContextMenuRequested(const QPoint&)), this,
// SLOT(customContextMenuRequestedSlot(const QPoint&)));
connect(_preWindow,SIGNAL(highLighSet(QMultiHash<int, int> *)),this,SLOT(Select_HighLightItem(QMultiHash<int, int> *)));
}
DialogMeshOptimizationOCCT::~DialogMeshOptimizationOCCT()
{
delete _ui;
_ui = NULL;
delete _selectdlg;
_selectdlg = NULL;
}
void DialogMeshOptimizationOCCT::accept()
{
// 网格参数优化
if (this->_selectItems->isEmpty())
return;
ModuleBase::SelectModel _selectModel= _preWindow->getSelectModel();
QList<int> datasetList = _selectItems->uniqueKeys(); // 获取所有的key
vtkPolyData *polyData = vtkPolyData::New();// 创建新的对象
vtkSmartPointer<vtkAppendFilter> appf = vtkSmartPointer<vtkAppendFilter>::New();
MeshData::MeshData* _meshData= MeshData::MeshData::getInstance();
MainWidget::MeshViewProvider* _meshProvider = _preWindow->getMeshViewProvider();
QMultiHash<int, int>* items=this->_selectItems;
MeshData::MeshOperator* operatorMesh=new MeshData::MeshOperator(_mw);
for (auto dataset : datasetList)
{
auto k = _meshData->getKernalByID(dataset); // 获取对应的kernal
auto vObjs = _meshProvider->getViewObjects(k); // 获取对应的view对象
if(!(k->isVisible())){
continue;
}
vtkSmartPointer<vtkGeometryFilter> geofilter=vtkSmartPointer<vtkGeometryFilter>::New();
geofilter->AddInputData(k->getMeshData());
geofilter->Update();
vtkSmartPointer<vtkPolyData> searchData=vtkSmartPointer<vtkPolyData>::New();
searchData->DeepCopy(geofilter->GetOutput());
QList<int> members = items->values(); //
if (vObjs == nullptr)
continue;
if(members.isEmpty()){
continue;
}
// 初始化
for(int i=0;i<searchData->GetNumberOfPoints();i++){
searchData->GetPointData()->GetArray("SHOW")->SetComponent(i,0,0);
}
for(int i=0;i<searchData->GetNumberOfCells();i++){
searchData->GetCellData()->GetArray("SHOW")->SetComponent(i,0,0);
}
if(_selectModel == ModuleBase::BoxMeshNode || _selectModel == ModuleBase::MeshNode||_selectModel==ModuleBase::BoxMeshSurfaceNode) { // 复制Points
continue;
} else if(_selectModel == ModuleBase::BoxMeshCell || _selectModel == ModuleBase::MeshCell||_selectModel==ModuleBase::BoxMeshSurfaceCell) { // 绘制cell
//this->SearchPoints(searchData,members,1);
operatorMesh->SearchCells(searchData,members,1);
// 复制单元
vtkSmartPointer<vtkThreshold> threshold = vtkSmartPointer<vtkThreshold>::New();
threshold->SetInputArrayToProcess(0, 0, 0, vtkDataObject::FIELD_ASSOCIATION_CELLS, "SHOW");
threshold->SetInputData(searchData);
threshold->SetLowerThreshold(0.5); // 设置筛选条件,大于 0.5 的面将被保留
threshold->SetUpperThreshold(1.5);
threshold->Update();
appf->AddInputData(threshold->GetOutput());
}
}
appf->Update();
vtkDataSet* copyVtkdata=appf->GetOutput(); // 获取需要优化的面片网格
// 参数
double linearDeflection = _ui->linearDeflection->value();
bool relativeMode = _ui->checkBox_relativeMode->isChecked();
double angularDeflection = _ui->angularDeflection->value();
QString stl_path=operatorMesh->actionMeshOptimizationOCCT(copyVtkdata,linearDeflection ,relativeMode ,angularDeflection );
emit _mainWindow->importMesh(stl_path,"STL(*.stl)",-1);
// // 启动线程
// auto pclfilter =
// new MeshData::MeshOptimizationOCCTThreadTask( _mainWindow, componentIds,linearDeflection,relativeMode,angularDeflection);
// ModuleBase::ThreadControl* tc = new ModuleBase::ThreadControl(pclfilter);
// emit tc->threadStart();
QFDialog::accept();
}
void DialogMeshOptimizationOCCT::selectedComponentsSlot(QList<MeshData::MeshSet*> components)
{
// 选择模型表面
emit _mainWindow->selectModelChanged((int)ModuleBase::SelectModel::BoxMeshSurfaceCell); // 修改界面
}
void DialogMeshOptimizationOCCT::Select_HighLightItem(QMultiHash<int, int>* items) {
// cell 分析共有节点
QList<int> datasetList = items->uniqueKeys(); // 获取所有的key
if(items->isEmpty()){
return;
}
if(datasetList.count()==0){
return ;
}
if(datasetList.count()!=1){
QMessageBox::warning(this, tr("Warning"), tr(u8"请选择一个模型的表面集合"));
}else{
this->_selectItems=items; // 设置徐泽
this->_ui->SelectFace->setText(QString(u8"选择面片数量 (%1) ").arg(items->values().count()));
}
}
} // namespace MainWidget
void MeshData::MeshOptimizationOCCTThreadTask::run() {
ModuleBase::ThreadTask::run();
bool result = false;
QString componentIds = _componentIds;
emit _mainwindow->printMessage(Common::Message::Normal, "PCLGPMeshAlg");
// 获取vtdataset
QStringList qCompontIds = QString(componentIds).split(',');
MeshSet* meshSet = NULL;
MeshKernal* meshKernal = NULL;
MeshData* meshData = MeshData::MeshData::getInstance();
QString kernalName, transformedName, setType, ids;
// 创建 vtkCellDataToPointData 过滤器
vtkSmartPointer<vtkGeometryFilter> cellToPointFilter = vtkSmartPointer<vtkGeometryFilter>::New();
vtkSmartPointer<vtkPolyData> inpolyData=vtkSmartPointer<vtkPolyData>::New();
vtkSmartPointer<vtkPolyData> polydata = vtkSmartPointer<vtkPolyData>::New();
for (QString compontId: qCompontIds) {
meshSet = meshData->getMeshSetByID(compontId.toInt());
DebugInfo("point count %d : %d \n", compontId.toInt(), meshSet == nullptr);
if (!meshSet)
continue;
QString outfilename = meshSet->getName();
cellToPointFilter->SetInputData(PointCloudOperator::PointCloudCommon::meshSetToVtkDataset(meshSet));
DebugInfo("point count %d \n", compontId.toInt());
}
// 执行过滤操作
cellToPointFilter->Update();
DebugInfo("cellToPointFilter \n");
// 获取过滤后的 vtkPolyData
inpolyData = cellToPointFilter->GetOutput();
MeshOperator* _meshOperator = new MeshOperator(_mainwindow);
QString tempStl_path=_meshOperator->actionMeshOptimizationOCCT(inpolyData,_linearDeflection,_relativeMode,_angularDeflection);
_fileName=tempStl_path;
setThreadRunState(QFile(tempStl_path).exists());
DebugInfo("run ok _success %d _threadRuning %d \n", _success, _threadRuning);
defaultMeshFinished();
}
void MeshData::MeshOptimizationOCCTThreadTask::defaultMeshFinished() {
ModuleBase::ThreadTask::threadTaskFinished();
Py::PythonAgent::getInstance()->unLock();
if (_threadRuning) {
QString information{};
ModuleBase::Message msg;
// 使用程序加载并读取stl
QString stdPath=_fileName;
QFileInfo info(stdPath);
if (_success&&info.exists() ){
QString name = info.fileName();
QString path = info.filePath();
QString suffix = "STL(*.stl)"; // 这里应该与 MeshDataExchangePlugin::install() 中的一致
emit _mainwindow->importMeshSIGN(stdPath,suffix,-1);
information = QString("Successful resurface Mesh From \"%1\"").arg(_fileName);
msg.type = Common::Message::Normal;
msg.message = information;
qDebug() << "Successful Import Mesh From " << _fileName;
} else {
information = QString("Failed resurface From \"%1\"").arg(_fileName);
msg.type = Common::Message::Error;
msg.message = information;
qDebug() << "Failed resurface Mesh From " << _fileName;
}
emit _mainwindow->printMessageToMessageWindow(msg);
}
qDebug()<<"PCLGPMesh::defaultMeshFinished ModuleBase::ThreadTask::threadTaskFinished";
// Py::PythonAgent::getInstance()->unLock();
}
void MeshData::MeshOptimizationOCCTThreadTask::setThreadRunState(bool flag) {
_success = flag;
}
MeshData::MeshOptimizationOCCTThreadTask::MeshOptimizationOCCTThreadTask(GUI::MainWindow* mw, QString componentIds, double linearDeflection,
bool relativeMode, double angularDeflection): ModuleBase::ThreadTask(mw),
_componentIds(componentIds),_linearDeflection(linearDeflection),_relativeMode(relativeMode),_angularDeflection(angularDeflection)
{
}
MeshData::MeshOptimizationOCCTThreadTask::~MeshOptimizationOCCTThreadTask() {
}

View File

@ -0,0 +1,97 @@
/**
* @file DialogPCLGuassFilter.h
* @brief
* @author (3045316072@qq.com)
* @version 2.5.0
* @date 2024/4/5
* @copyright Copyright (c) Since 2024 All rights reserved.
*/
#ifndef LAMPCAE_DIALOGPCLGUASSFILTER_H
#define LAMPCAE_DIALOGPCLGUASSFILTER_H
#include "meshDataExchangePluginAPI.h"
#include "SelfDefObject/QFDialog.h"
#include "MainWidgets/DialogVTKTransform.h"
#include "MeshThreadBase.h"
#include "MainWidgets/preWindow.h"
namespace MeshData{
class PointCloudThreadBase;
}
class QListWidgetItem;
namespace Ui
{
class DialogMeshOptimizationOCCT;
}
namespace MeshData
{
class MeshSet;
}
namespace MainWidget{
class PreWindow;
}
namespace MeshData{
class MeshOptimizationOCCTThreadTask : public ModuleBase::ThreadTask
{
public:
MeshOptimizationOCCTThreadTask(GUI::MainWindow *mw, QString componentIds, double linearDeflection, bool relativeMode , double angularDeflection);
virtual ~MeshOptimizationOCCTThreadTask();
virtual void run();
void defaultMeshFinished();
void setThreadRunState(bool);
private:
bool _success{false};
QString _fileName;
double _linearDeflection;
bool _relativeMode ;
double _angularDeflection;
QString _componentIds;
};
}
namespace MainWidget {
class DialogSelectComponents;
class DialogMeshOptimizationOCCT : public QFDialog {
Q_OBJECT
public:
DialogMeshOptimizationOCCT(GUI::MainWindow* parent);
~DialogMeshOptimizationOCCT() ;
private:
//void removeCurrentItem(QListWidgetItem* curItem);
signals: // 这里采用信号来直接与 主界面通信,避免参数浪费
void excuteAlg(QString componentIds,double sigma,double threshold,double radius);
private slots:
virtual void accept();
void selectedComponentsSlot(QList<MeshData::MeshSet*> components);
void Select_HighLightItem(QMultiHash<int, int> *item);
private:
GUI::MainWindow* _mw;
DialogSelectComponents* _selectdlg;
MainWidget::PreWindow* _preWindow;
QMultiHash<int, int>* _selectItems;
private:
Ui::DialogMeshOptimizationOCCT* _ui;
};
} // namespace MainWidget
#endif // LAMPCAE_DIALOGPCLGUASSFILTER_H

View File

@ -0,0 +1,298 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogMeshOptimizationOCCT</class>
<widget class="QDialog" name="DialogMeshOptimizationOCCT">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>600</width>
<height>340</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>375</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>600</width>
<height>16777215</height>
</size>
</property>
<property name="windowTitle">
<string>网格优化</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="3" column="0">
<widget class="QDialogButtonBox" name="btBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="minimumSize">
<size>
<width>357</width>
<height>120</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>600</width>
<height>200</height>
</size>
</property>
<property name="title">
<string>params</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="1">
<widget class="QCheckBox" name="checkBox_relativeMode">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="angularDeflection">
<property name="minimumSize">
<size>
<width>238</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>238</width>
<height>25</height>
</size>
</property>
<property name="minimum">
<double>-360.000000000000000</double>
</property>
<property name="maximum">
<double>360.000000000000000</double>
</property>
<property name="value">
<double>0.500000000000000</double>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="thresholdLabel">
<property name="minimumSize">
<size>
<width>91</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>220</width>
<height>25</height>
</size>
</property>
<property name="text">
<string>relativeMode : </string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="SigmaLabel">
<property name="minimumSize">
<size>
<width>91</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>220</width>
<height>25</height>
</size>
</property>
<property name="text">
<string>linearDeflection : </string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="linearDeflection">
<property name="minimumSize">
<size>
<width>238</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>238</width>
<height>25</height>
</size>
</property>
<property name="minimum">
<double>-360.000000000000000</double>
</property>
<property name="maximum">
<double>360.000000000000000</double>
</property>
<property name="singleStep">
<double>0.020000000000000</double>
</property>
<property name="value">
<double>1.000000000000000</double>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="radiusLabel">
<property name="minimumSize">
<size>
<width>91</width>
<height>25</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>220</width>
<height>25</height>
</size>
</property>
<property name="text">
<string>angularDeflection : </string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox_4">
<property name="minimumSize">
<size>
<width>357</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>600</width>
<height>200</height>
</size>
</property>
<property name="title">
<string>Selected Component</string>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="0">
<widget class="QLabel" name="SelectFace">
<property name="text">
<string>选择面片数量 (0) </string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="geoSelectPoint">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="toolTip">
<string extracomment="Clicked Button Selected Components"/>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../qrc/qianfan.qrc">
<normaloff>:/QUI/geometry/selectface.png</normaloff>:/QUI/geometry/selectface.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>8</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources>
<include location="../qrc/qianfan.qrc"/>
</resources>
<connections>
<connection>
<sender>btBox</sender>
<signal>accepted()</signal>
<receiver>DialogMeshOptimizationOCCT</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>299</x>
<y>314</y>
</hint>
<hint type="destinationlabel">
<x>299</x>
<y>169</y>
</hint>
</hints>
</connection>
<connection>
<sender>btBox</sender>
<signal>rejected()</signal>
<receiver>DialogMeshOptimizationOCCT</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>299</x>
<y>314</y>
</hint>
<hint type="destinationlabel">
<x>299</x>
<y>169</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -0,0 +1,23 @@
//
// Created by wuxiaxin on 24-7-18.
//
// You may need to build the project (run Qt uic code generator) to get
// "ui_Automated3DVegetationScanningSystem.h" resolved
#include "automated3dvegetationscanningsystem.h"
#include "ui_Automated3DVegetationScanningSystem.h"
namespace WBFZEquipment {
Automated3DVegetationScanningSystem::Automated3DVegetationScanningSystem(QWidget* parent)
: QDialog(parent)
, ui(new Ui::Automated3DVegetationScanningSystem)
{
ui->setupUi(this);
}
Automated3DVegetationScanningSystem::~Automated3DVegetationScanningSystem()
{
delete ui;
}
} // namespace WBFZEquipment

View File

@ -0,0 +1,29 @@
//
// Created by wuxiaxin on 24-7-18.
//
#ifndef LAMPCAE_AUTOMATED3DVEGETATIONSCANNINGSYSTEM_H
#define LAMPCAE_AUTOMATED3DVEGETATIONSCANNINGSYSTEM_H
#include <QDialog>
namespace WBFZEquipment {
QT_BEGIN_NAMESPACE
namespace Ui {
class Automated3DVegetationScanningSystem;
}
QT_END_NAMESPACE
class Automated3DVegetationScanningSystem : public QDialog {
Q_OBJECT
public:
explicit Automated3DVegetationScanningSystem(QWidget* parent = nullptr);
~Automated3DVegetationScanningSystem() override;
private:
Ui::Automated3DVegetationScanningSystem* ui;
};
} // namespace WBFZEquipment
#endif // LAMPCAE_AUTOMATED3DVEGETATIONSCANNINGSYSTEM_H

View File

@ -0,0 +1,191 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>WBFZEquipment::Automated3DVegetationScanningSystem</class>
<widget class="QDialog" name="WBFZEquipment::Automated3DVegetationScanningSystem">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>883</width>
<height>644</height>
</rect>
</property>
<property name="windowTitle">
<string>Automated3DVegetationScanningSystem</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>190</x>
<y>20</y>
<width>481</width>
<height>81</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>36</pointsize>
</font>
</property>
<property name="text">
<string>植被三维自动扫描系统</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>110</x>
<y>400</y>
<width>161</width>
<height>51</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>水平扫描点个数:</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_5">
<property name="geometry">
<rect>
<x>580</x>
<y>430</y>
<width>181</width>
<height>71</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>22</pointsize>
</font>
</property>
<property name="text">
<string>开始扫描</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_4">
<property name="geometry">
<rect>
<x>480</x>
<y>230</y>
<width>211</width>
<height>71</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>22</pointsize>
</font>
</property>
<property name="text">
<string>平台后退</string>
</property>
</widget>
<widget class="QTextEdit" name="textEdit_2">
<property name="geometry">
<rect>
<x>300</x>
<y>480</y>
<width>171</width>
<height>51</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="pushButton_3">
<property name="geometry">
<rect>
<x>170</x>
<y>230</y>
<width>211</width>
<height>71</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>22</pointsize>
</font>
</property>
<property name="text">
<string>垂直向上运动</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>170</x>
<y>140</y>
<width>211</width>
<height>71</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>22</pointsize>
</font>
</property>
<property name="text">
<string>垂直向下运动</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_2">
<property name="geometry">
<rect>
<x>480</x>
<y>140</y>
<width>211</width>
<height>71</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>22</pointsize>
</font>
</property>
<property name="text">
<string>平台前进</string>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>110</x>
<y>480</y>
<width>161</width>
<height>51</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>垂直扫描点个数:</string>
</property>
</widget>
<widget class="QTextEdit" name="textEdit">
<property name="geometry">
<rect>
<x>300</x>
<y>400</y>
<width>171</width>
<height>51</height>
</rect>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,23 @@
//
// Created by wuxiaxin on 24-7-18.
//
// You may need to build the project (run Qt uic code generator) to get
// "ui_RoughnessGenerationSystem.h" resolved
#include "roughnessgenerationsystem.h"
#include "ui_RoughnessGenerationSystem.h"
namespace WBFZEquipment {
RoughnessGenerationSystem::RoughnessGenerationSystem(QWidget* parent)
: QDialog(parent)
, ui(new Ui::RoughnessGenerationSystem)
{
ui->setupUi(this);
}
RoughnessGenerationSystem::~RoughnessGenerationSystem()
{
delete ui;
}
} // namespace WBFZEquipment

View File

@ -0,0 +1,29 @@
//
// Created by wuxiaxin on 24-7-18.
//
#ifndef LAMPCAE_ROUGHNESSGENERATIONSYSTEM_H
#define LAMPCAE_ROUGHNESSGENERATIONSYSTEM_H
#include <QDialog>
namespace WBFZEquipment {
QT_BEGIN_NAMESPACE
namespace Ui {
class RoughnessGenerationSystem;
}
QT_END_NAMESPACE
class RoughnessGenerationSystem : public QDialog {
Q_OBJECT
public:
explicit RoughnessGenerationSystem(QWidget* parent = nullptr);
~RoughnessGenerationSystem() override;
private:
Ui::RoughnessGenerationSystem* ui;
};
} // namespace WBFZEquipment
#endif // LAMPCAE_ROUGHNESSGENERATIONSYSTEM_H

View File

@ -0,0 +1,532 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>WBFZEquipment::RoughnessGenerationSystem</class>
<widget class="QDialog" name="WBFZEquipment::RoughnessGenerationSystem">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>983</width>
<height>697</height>
</rect>
</property>
<property name="windowTitle">
<string>RoughnessGenerationSystem</string>
</property>
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>70</x>
<y>160</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>F1</string>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>220</x>
<y>40</y>
<width>341</width>
<height>71</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>36</pointsize>
</font>
</property>
<property name="text">
<string>粗糙度生成系统</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_2">
<property name="geometry">
<rect>
<x>70</x>
<y>210</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>F2</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_3">
<property name="geometry">
<rect>
<x>70</x>
<y>310</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>F4</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_4">
<property name="geometry">
<rect>
<x>70</x>
<y>260</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>F3</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_5">
<property name="geometry">
<rect>
<x>70</x>
<y>390</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>返回</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_6">
<property name="geometry">
<rect>
<x>130</x>
<y>390</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>⇈</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_7">
<property name="geometry">
<rect>
<x>180</x>
<y>390</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>14</pointsize>
</font>
</property>
<property name="text">
<string>⇊</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_8">
<property name="geometry">
<rect>
<x>230</x>
<y>390</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>输入</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_9">
<property name="geometry">
<rect>
<x>280</x>
<y>390</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>←</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_10">
<property name="geometry">
<rect>
<x>330</x>
<y>390</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>→</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_11">
<property name="geometry">
<rect>
<x>380</x>
<y>390</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>↑</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_12">
<property name="geometry">
<rect>
<x>430</x>
<y>390</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>↓</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_13">
<property name="geometry">
<rect>
<x>480</x>
<y>390</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>删除</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_14">
<property name="geometry">
<rect>
<x>530</x>
<y>390</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>确认</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_15">
<property name="geometry">
<rect>
<x>600</x>
<y>160</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>1</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_16">
<property name="geometry">
<rect>
<x>650</x>
<y>160</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>2</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_17">
<property name="geometry">
<rect>
<x>700</x>
<y>160</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>3</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_18">
<property name="geometry">
<rect>
<x>600</x>
<y>210</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>4</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_19">
<property name="geometry">
<rect>
<x>650</x>
<y>210</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>5</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_20">
<property name="geometry">
<rect>
<x>700</x>
<y>210</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>6</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_21">
<property name="geometry">
<rect>
<x>600</x>
<y>260</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>7</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_22">
<property name="geometry">
<rect>
<x>650</x>
<y>260</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>8</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_23">
<property name="geometry">
<rect>
<x>700</x>
<y>260</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>9</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_24">
<property name="geometry">
<rect>
<x>600</x>
<y>310</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>-</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_25">
<property name="geometry">
<rect>
<x>650</x>
<y>310</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>0</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_26">
<property name="geometry">
<rect>
<x>700</x>
<y>310</y>
<width>41</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>.</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,23 @@
//
// Created by wuxiaxin on 24-7-18.
//
// You may need to build the project (run Qt uic code generator) to get
// "ui_SoilSurface3DMeasurementSystem.h" resolved
#include "soilsurface3dmeasurementsystem.h"
#include "ui_SoilSurface3DMeasurementSystem.h"
namespace WBFZEquipment {
SoilSurface3DMeasurementSystem::SoilSurface3DMeasurementSystem(QWidget* parent)
: QDialog(parent)
, ui(new Ui::SoilSurface3DMeasurementSystem)
{
ui->setupUi(this);
}
SoilSurface3DMeasurementSystem::~SoilSurface3DMeasurementSystem()
{
delete ui;
}
} // namespace WBFZEquipment

View File

@ -0,0 +1,29 @@
//
// Created by wuxiaxin on 24-7-18.
//
#ifndef LAMPCAE_SOILSURFACE3DMEASUREMENTSYSTEM_H
#define LAMPCAE_SOILSURFACE3DMEASUREMENTSYSTEM_H
#include <QDialog>
namespace WBFZEquipment {
QT_BEGIN_NAMESPACE
namespace Ui {
class SoilSurface3DMeasurementSystem;
}
QT_END_NAMESPACE
class SoilSurface3DMeasurementSystem : public QDialog {
Q_OBJECT
public:
explicit SoilSurface3DMeasurementSystem(QWidget* parent = nullptr);
~SoilSurface3DMeasurementSystem() override;
private:
Ui::SoilSurface3DMeasurementSystem* ui;
};
} // namespace WBFZEquipment
#endif // LAMPCAE_SOILSURFACE3DMEASUREMENTSYSTEM_H

View File

@ -0,0 +1,306 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>WBFZEquipment::SoilSurface3DMeasurementSystem</class>
<widget class="QDialog" name="WBFZEquipment::SoilSurface3DMeasurementSystem">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>896</width>
<height>686</height>
</rect>
</property>
<property name="windowTitle">
<string>SoilSurface3DMeasurementSystem</string>
</property>
<widget class="QTextEdit" name="textEdit_4">
<property name="geometry">
<rect>
<x>340</x>
<y>500</y>
<width>441</width>
<height>41</height>
</rect>
</property>
</widget>
<widget class="QTextEdit" name="textEdit_3">
<property name="geometry">
<rect>
<x>230</x>
<y>310</y>
<width>141</width>
<height>41</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>110</x>
<y>310</y>
<width>91</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>采样间隔</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_5">
<property name="geometry">
<rect>
<x>640</x>
<y>310</y>
<width>141</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>Y轴负向运动</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>110</x>
<y>210</y>
<width>91</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>开始位置</string>
</property>
</widget>
<widget class="QTextEdit" name="textEdit_2">
<property name="geometry">
<rect>
<x>230</x>
<y>260</y>
<width>141</width>
<height>41</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>490</x>
<y>210</y>
<width>291</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>紧急停止</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_7">
<property name="geometry">
<rect>
<x>490</x>
<y>360</y>
<width>141</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>X轴归零</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_9">
<property name="geometry">
<rect>
<x>110</x>
<y>500</y>
<width>161</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>文件保存位置</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_6">
<property name="geometry">
<rect>
<x>110</x>
<y>370</y>
<width>261</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>从当前位置开始测量</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_2">
<property name="geometry">
<rect>
<x>490</x>
<y>260</y>
<width>141</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>X轴正向运动</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_8">
<property name="geometry">
<rect>
<x>640</x>
<y>360</y>
<width>141</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>Y轴归零</string>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>110</x>
<y>260</y>
<width>91</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>结束位置</string>
</property>
</widget>
<widget class="QTextEdit" name="textEdit">
<property name="geometry">
<rect>
<x>230</x>
<y>210</y>
<width>141</width>
<height>41</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="pushButton_3">
<property name="geometry">
<rect>
<x>640</x>
<y>260</y>
<width>141</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>Y轴正向运动</string>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>200</x>
<y>70</y>
<width>491</width>
<height>71</height>
</rect>
</property>
<property name="font">
<font>
<family>AcadEref</family>
<pointsize>36</pointsize>
</font>
</property>
<property name="text">
<string>土壤表面三维测量系统</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_4">
<property name="geometry">
<rect>
<x>490</x>
<y>310</y>
<width>141</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>Times New Roman</family>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>X轴负向运动</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>