1. 增加 点云选择处理窗口

2. 增加 修改cmake文件配置
pull/3/head
陈增辉 2024-08-05 10:25:28 +08:00
parent 1923492cbe
commit 88e8fda6d8
9 changed files with 527 additions and 17 deletions

View File

@ -7,16 +7,16 @@
<entry key="Debug">
<value>
<PerProfileState>
<option name="myQmlPath" value="$PROJECT_DIR$/../../../vcpkg/installed/x64-windows/qml" />
<option name="myQtBinPath" value="$PROJECT_DIR$/../../../vcpkg/installed/x64-windows/tools/qt5/bin" />
<option name="myQmlPath" value="C:/vcpkg/installed/x64-windows/qml" />
<option name="myQtBinPath" value="C:/vcpkg/installed/x64-windows/tools/qt5/bin" />
</PerProfileState>
</value>
</entry>
<entry key="Release">
<value>
<PerProfileState>
<option name="myQmlPath" value="$PROJECT_DIR$/../../../vcpkg/installed/x64-windows/qml" />
<option name="myQtBinPath" value="$PROJECT_DIR$/../../../vcpkg/installed/x64-windows/tools/qt5/bin" />
<option name="myQmlPath" value="C:/vcpkg/installed/x64-windows/qml" />
<option name="myQtBinPath" value="C:/vcpkg/installed/x64-windows/tools/qt5/bin" />
</PerProfileState>
</value>
</entry>

View File

@ -1,11 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<option name="RIGHT_MARGIN" value="1000" />
<clangFormatSettings>
<option name="ENABLED" value="true" />
</clangFormatSettings>
<codeStyleSettings language="ObjectiveC">
<option name="RIGHT_MARGIN" value="1000" />
</codeStyleSettings>
</code_scheme>
</component>

6
.idea/editor.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="BackendCodeEditorSettings">
<option name="/Default/Housekeeping/GlobalSettingsUpgraded/IsUpgraded/@EntryValue" value="true" type="bool" />
</component>
</project>

View File

@ -39,7 +39,7 @@ find_path(CGNS_DIRS
NAMES
include/cgnslib.h
PATHS
D:/vcpkg/installed/x64-windows
C:/vcpkg/installed/x64-windows
NO_SYSTEM_ENVIRONMENT_PATH
NO_CMAKE_SYSTEM_PATH
)

View File

@ -35,7 +35,7 @@ if(LAMPCAE_OpenCASCADE_ALREADY_INCLUDED)
endif()
set(LAMPCAE_OpenCASCADE_ALREADY_INCLUDED 1)
set(OpenCASCADE_DIRS "C:/OCCT")
set(OpenCASCADE_DIRS ${CMAKE_SOURCE_DIR}/extlib/OCCT)
set(OpenCASCADE_VERSION_MAJOR 7)
set(OpenCASCADE_VERSION_MINOR 6)
@ -101,10 +101,10 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set_property(TARGET OpenCASCADE::Tcl86 APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
set_property(TARGET OpenCASCADE::Tk86 APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(OpenCASCADE::Freetype PROPERTIES
IMPORTED_IMPLIB_RELEASE "D:/vcpkg/installed/x64-windows/lib/freetype.lib"
IMPORTED_LOCATION_RELEASE "D:/vcpkg/installed/x64-windows/bin/freetype.dll"
IMPORTED_IMPLIB_DEBUG "D:/vcpkg/installed/x64-windows/debug/lib/freetyped.lib"
IMPORTED_LOCATION_DEBUG "D:/vcpkg/installed/x64-windows/debug/bin/freetyped.dll"
IMPORTED_IMPLIB_RELEASE "C:/vcpkg/installed/x64-windows/lib/freetype.lib"
IMPORTED_LOCATION_RELEASE "C:/vcpkg/installed/x64-windows/bin/freetype.dll"
IMPORTED_IMPLIB_DEBUG "C:/vcpkg/installed/x64-windows/debug/lib/freetyped.lib"
IMPORTED_LOCATION_DEBUG "C:/vcpkg/installed/x64-windows/debug/bin/freetyped.dll"
)
set_target_properties(OpenCASCADE::Tcl86 PROPERTIES
IMPORTED_IMPLIB_RELEASE "${OpenCASCADE_LIBRARY_DIRS}/tcl86.lib"

View File

@ -36,7 +36,7 @@ endif()
set(LAMPCAE_VTK_ALREADY_INCLUDED 1)
#set(VTK_DIRS "${CMAKE_SOURCE_DIR}/extlib/VTK")
set(VTK_DIRS "C:/VTK")
set(VTK_DIRS ${CMAKE_SOURCE_DIR}/extlib/VTK)
set(VTK_VERSION_MAJOR 9)
set(VTK_VERSION_MINOR 3)

View File

@ -0,0 +1,284 @@
#include <QMessageBox>
#include "SelectNodeShow.h"
#include "ui_SelectNodeShow.h"
#include <QtSql/QSqlError>
#include <QHeaderView>
#include <QtSql/QSqlTableModel>
#include <QtSql/QSqlRecord>
#include <QtSql/QSqlField>
#include "MeshData/meshSingleton.h"
#include "MeshData/meshKernal.h"
#include "preWindow.h"
#include "vtkMeshSelectTableModel.h"
#include "Settings/busAPI.h" // 获取高亮颜色
#include "Settings/GraphOption.h" // 获取高亮颜色
namespace MainWidget {
SelectNodeShow::SelectNodeShow(PreWindow* preWindow,QWidget* parent)
: QDialog(parent)
, ui(new Ui::SelectNodeShow)
,_preWindow(preWindow)
{
ui->setupUi(this);
init();
}
SelectNodeShow::~SelectNodeShow()
{
delete ui;
}
void SelectNodeShow::search()
{
on_btnSearch_clicked();
}
void SelectNodeShow::revert()
{
on_btnCancel_clicked();
}
void SelectNodeShow::submit()
{
on_btnSubmit_clicked();
}
bool SelectNodeShow::editable()
{
return true;
}
void SelectNodeShow::init()
{
//m_editMode = false;
// m_access = new AccessDB(nullptr, "Threshold");
// m_access->initDB();
this->setAttribute(Qt::WA_StyledBackground);
initTableView();
}
void SelectNodeShow::initTableView()
{
this->_model=new vtkMeshSelectTableModel(_preWindow,this);
this->_model->clear();
this->ui->tableView->setModel(this->_model);
selectionModel = this->ui->tableView->selectionModel();
connect(selectionModel,SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)),this,SLOT(currentChanged(const QModelIndex&, const QModelIndex&)));
// m_sqlModel = new QSqlTableModel(this, m_access);
//
// m_sqlModel->setTable("XXX");
//
// m_sqlModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
//
// if (!m_sqlModel->select()) {
// qDebug() << "查询失败";
// qDebug() << m_sqlModel->lastError();
// return;
// }
//
// ui->tableView->setModel(m_sqlModel);
//
// ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
// ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
//
// ui->tableView->setShowGrid(false);
//
// ui->tableView->verticalHeader()->setVisible(false);
//
// ui->tableView->setEditTriggers(QTableView::NoEditTriggers);
}
bool SelectNodeShow::editMode()
{
return false;
}
void SelectNodeShow::on_btnEdit_clicked()
{
// // TODO
// // 将其余按键状态置灰
// // 将表格的编辑模式打开
// m_editMode = true;
//
// ui->tableView->setEditTriggers(QAbstractItemView::DoubleClicked);
//
// ui->btnNew->setDisabled(true);
// ui->btnNew->setDisabled(true);
// ui->btnDelete->setDisabled(true);
// ui->btnCancel->setEnabled(true);
// ui->btnSubmit->setEnabled(true);
}
void SelectNodeShow::on_btnNew_clicked()
{
// 删除指定行数
QItemSelectionModel* selectionModel = this->ui->tableView->selectionModel();
QModelIndexList selectedIndexes = selectionModel->selectedIndexes();
if (selectedIndexes.count() == 0) {
return;
}
QList<int> rows;
for (int i = 0; i < selectedIndexes.count(); i++) {
rows.push_back(selectedIndexes[i].row());
this->_model->setRemoveFlag(selectedIndexes[i].row(),false);
}
ModuleBase::SelectModel _selectModel=this->_model->getSelectModel();
if( _selectModel== ModuleBase::BoxMeshNode || _selectModel == ModuleBase::MeshNode||_selectModel==ModuleBase::BoxMeshSurfaceNode) {
this->_model->HightlightRows(rows,Setting::BusAPI::instance()->getGraphOption()->getHighLightColor());
} else if(_selectModel == ModuleBase::BoxMeshCell || _selectModel == ModuleBase::MeshCell||_selectModel==ModuleBase::BoxMeshSurfaceCell) {
this->_model->HightlightRows(rows,Setting::BusAPI::instance()->getGraphOption()->getHighLightColor());
}
_preWindow->reRender();
this->ui->tableView->show();
}
void SelectNodeShow::on_btnSubmit_clicked()
{
// 更新items
QMultiHash<int, int> selectItems = this->_model->getSelectItems();
this->_preWindow->setSelectItems(selectItems,this->_model->getSelectModel());
}
void SelectNodeShow::on_btnCancel_clicked()
{
}
void SelectNodeShow::on_btnDelete_clicked()
{
// 删除指定行数
QItemSelectionModel* selectionModel = this->ui->tableView->selectionModel();
QModelIndexList selectedIndexes = selectionModel->selectedIndexes();
if (selectedIndexes.count() == 0) {
return;
}
QList<int> rows;
for (int i = 0; i < selectedIndexes.count(); i++) {
rows.push_back(selectedIndexes[i].row());
this->_model->setRemoveFlag(selectedIndexes[i].row(),true);
}
ModuleBase::SelectModel _selectModel=this->_model->getSelectModel();
if( _selectModel== ModuleBase::BoxMeshNode || _selectModel == ModuleBase::MeshNode||_selectModel==ModuleBase::BoxMeshSurfaceNode) {
this->_model->HightlightRows(rows,Setting::BusAPI::instance()->getGraphOption()->getMeshNodeColor());
} else if(_selectModel == ModuleBase::BoxMeshCell || _selectModel == ModuleBase::MeshCell||_selectModel==ModuleBase::BoxMeshSurfaceCell) {
this->_model->HightlightRows(rows,Setting::BusAPI::instance()->getGraphOption()->getMeshFaceColor());
}
_preWindow->reRender();
this->ui->tableView->show();
}
void SelectNodeShow::on_btnSearch_clicked()
{
// m_sqlModel->setSort(0, Qt::AscendingOrder);
//
// int result = m_sqlModel->select();
// if (!result) {
// qDebug() << u8"查询失败: " << m_sqlModel->lastError().text();
// return;
// }
//
// ui->btnNew->setEnabled(true);
// ui->btnEdit->setEnabled(true);
// ui->btnDelete->setEnabled(true);
// ui->btnCancel->setDisabled(true);
// ui->btnSubmit->setDisabled(true);
//
// ui->tableView->scrollToTop();
}
void SelectNodeShow::initSelectNodeShow(QMultiHash<int, int>* selectItems,ModuleBase::SelectModel _selectModel)
{
this->_model->SetData(selectItems,_selectModel);
//
if (this->_model->rowCount() > 1e4) {
this->ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive);
}else{
this->ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
}
this->ui->tableView->show();
}
void SelectNodeShow::currentChanged(const QModelIndex& current,
const QModelIndex& previous)
{
if (current.isValid()) {
// 处理当前行的逻辑,比如更新界面或者执行其他操作
this->_model->setCurrentRowIndex(current);
}
}
void SelectNodeShow::on_btnHightlightSelect_clicked() {
ModuleBase::SelectModel _selectModel=this->_model->getSelectModel();
// 清除选中行
QList<int> deleterows;
QList<int> highrows;
deleterows.clear();
highrows.clear();
for(int i=0;i<selectRows.size();i++) {
if(this->_model->getRemoveFlag(selectRows[i])) {
deleterows.push_back(selectRows[i]);
} else {
highrows.push_back(selectRows[i]);
}
}
if( _selectModel== ModuleBase::BoxMeshNode || _selectModel == ModuleBase::MeshNode||_selectModel==ModuleBase::BoxMeshSurfaceNode) {
this->_model->HightlightRows(deleterows,Setting::BusAPI::instance()->getGraphOption()->getMeshNodeColor());
this->_model->HightlightRows(highrows,Setting::BusAPI::instance()->getGraphOption()->getHighLightColor());
} else if(_selectModel == ModuleBase::BoxMeshCell || _selectModel == ModuleBase::MeshCell||_selectModel==ModuleBase::BoxMeshSurfaceCell) {
this->_model->HightlightRows(deleterows,Setting::BusAPI::instance()->getGraphOption()->getMeshFaceColor());
this->_model->HightlightRows(highrows,Setting::BusAPI::instance()->getGraphOption()->getHighLightColor());
}
// 删除指定行数
QItemSelectionModel* selectionModel = this->ui->tableView->selectionModel();
QModelIndexList selectedIndexes = selectionModel->selectedIndexes();
if (selectedIndexes.count() == 0) {
return;
}
QList<int> rows;
for (int i = 0; i < selectedIndexes.count(); i++) {
rows.push_back(selectedIndexes[i].row());
}
// ModuleBase::SelectModel _selectModel=this->_model->getSelectModel();
if( _selectModel== ModuleBase::BoxMeshNode || _selectModel == ModuleBase::MeshNode||_selectModel==ModuleBase::BoxMeshSurfaceNode) {
this->_model->HightlightRows(rows,Setting::BusAPI::instance()->getGraphOption()->getPreHighLightColor());
} else if(_selectModel == ModuleBase::BoxMeshCell || _selectModel == ModuleBase::MeshCell||_selectModel==ModuleBase::BoxMeshSurfaceCell) {
this->_model->HightlightRows(rows,Setting::BusAPI::instance()->getGraphOption()->getPreHighLightColor());
}
_preWindow->reRender();
selectRows=rows;
// this->ui->tableView->show();
}
void SelectNodeShow::on_btnShowSelect_clicked() {
QList<int> deleterows;
QList<int> highrows;
deleterows.clear();
highrows.clear();
// 针对所有行进行操作
for(int i=0;i<this->_model->rowCount();i++) {
if(this->_model->getRemoveFlag(i)) {
deleterows.push_back(i);
} else {
highrows.push_back(i);
}
}
ModuleBase::SelectModel _selectModel=this->_model->getSelectModel();
if( _selectModel== ModuleBase::BoxMeshNode || _selectModel == ModuleBase::MeshNode||_selectModel==ModuleBase::BoxMeshSurfaceNode) {
this->_model->HightlightRows(deleterows,Setting::BusAPI::instance()->getGraphOption()->getMeshNodeColor());
this->_model->HightlightRows(highrows,Setting::BusAPI::instance()->getGraphOption()->getHighLightColor());
} else if(_selectModel == ModuleBase::BoxMeshCell || _selectModel == ModuleBase::MeshCell||_selectModel==ModuleBase::BoxMeshSurfaceCell) {
this->_model->HightlightRows(deleterows,Setting::BusAPI::instance()->getGraphOption()->getMeshFaceColor());
this->_model->HightlightRows(highrows,Setting::BusAPI::instance()->getGraphOption()->getHighLightColor());
}
_preWindow->reRender();
}
}

View File

@ -0,0 +1,81 @@
#ifndef THRESHOLDMANAGE_H
#define THRESHOLDMANAGE_H
#include "mainWidgetsAPI.h"
#include <QWidget>
#include <QDebug>
#include <QDialog>
#include <QtSql/QSqlTableModel>
#include <QtSql/QSqlDatabase>
#include <QItemSelectionModel>
#include "MeshData/meshSingleton.h"
#include "MeshData/meshKernal.h"
#include "preWindow.h"
#include "meshViewProvider.h"
#include "meshKernalViewObject.h"
#include "vtkMeshSelectTableModel.h"
#include "preWindow.h"
#include "MeshData/meshKernal.h"
#include "meshViewProvider.h"
#include "meshKernalViewObject.h"
#include "MeshData/meshSet.h"
namespace Ui {
class SelectNodeShow;
}
namespace MainWidget {
class MAINWIDGETSAPI SelectNodeShow : public QDialog {
Q_OBJECT
public:
explicit SelectNodeShow(PreWindow* preWindow,QWidget* parent = nullptr);
~SelectNodeShow();
void search();
void revert();
void submit();
bool editable();
bool editMode();
void initSelectNodeShow(QMultiHash<int, int>* selectItems,ModuleBase::SelectModel _selectModel);
private:
void init();
void initTableView();
private slots:
void on_btnEdit_clicked();
void on_btnNew_clicked();
void on_btnSubmit_clicked();
void on_btnCancel_clicked();
void on_btnDelete_clicked();
void on_btnSearch_clicked();
void on_btnShowSelect_clicked();
void on_btnHightlightSelect_clicked();
void currentChanged(const QModelIndex& current, const QModelIndex& previous) ;
private:
Ui::SelectNodeShow* ui;
vtkMeshSelectTableModel* _model;
PreWindow* _preWindow;
QItemSelectionModel *selectionModel;
QList<int> selectRows;
};
} // namespace MainWidget
#endif // THRESHOLDMANAGE_H

View File

@ -0,0 +1,145 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SelectNodeShow</class>
<widget class="QDialog" name="SelectNodeShow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>840</width>
<height>782</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QWidget" name="widget" native="true">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>50</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Maximum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="btnSubmit">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>提交</string>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnDelete">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>删除</string>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnNew">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>新增</string>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnHightlightSelect">
<property name="text">
<string>高亮选择</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnShowSelect">
<property name="text">
<string>显示点集</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>1598</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QTableView" name="tableView"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>