comac_desk_app/PostProcessing/ThreeDimensionDiagraph.h

189 lines
6.2 KiB
C
Raw Normal View History

2024-11-21 11:50:43 +08:00
#ifndef POST_THREEDIMENSIONGRAPH_H
#define POST_THREEDIMENSIONGRAPH_H
#include <QWidget>
#include "PostWindowBase.h"
#include "FieldGraphGenerator.h"
#include "WidgetCutter.h"
#include <vtkSmartPointer.h>
#include <vtkDelimitedTextReader.h>
QT_BEGIN_NAMESPACE
namespace Ui { class ThreeDimensionDiagraph; };
QT_END_NAMESPACE
class vtkGenericOpenGLRenderWindow;
class vtkCamera;
class vtkRenderer;
class vtkAxesActor;
class vtkDataSet;
class vtkRenderWindow;
class vtkPolyDataMapper;
class vtkPropAssembly;
class vtkDataSetMapper;
class vtkOrientationMarkerWidget;
namespace pst
{
class NearFieldDataGenerator;
class FieldGraphGenerator;
class WidgetCutter;
class UnstructuredGridReader;
class TableViewWidget;
class MutiVTKFilesReader;
}
namespace DataModel
{
class PostThreeDimensionGraphData;
}
namespace MainWindow
{
class MainWindow;
}
namespace DataModel
{
class IdaIGeometrySet;
}
namespace pst
{
class NearFieldDataGenerator;
class FarFieldDataGenerator;
class PostUsualInteractionStyle;
class ThreeDimensionDiagraph : public PostWindowBase
{
Q_OBJECT
public:
ThreeDimensionDiagraph(QWidget* parent);
~ThreeDimensionDiagraph();
bool ReadFieldData(QString filePath);
public slots:
void on_comboBoxFrequency_currentIndexChanged(int index);
void on_pushBtnApply_clicked();
void on_checkBox_normalization_stateChanged(int state);
void on_checkBox_logarithm_stateChanged(int state);
void on_pushButton_fitView_clicked();
void on_btnTopView_clicked();
void on_btnBottomView_clicked();
void on_btnFrontView_clicked();
void on_btnBackView_clicked();
void on_btnLeftView_clicked();
void on_btnRightView_clicked();
void on_lineEditSBTitleString_editingFinished();
void on_comboBoxSBTitleColor_activated(int index);
void on_comboBoxSBFontSize_currentIndexChanged(int index);
void on_checkBoxScalarBarRangeAutomatic_stateChanged(int state);
void on_doubleSpinBox_SBMinRange_valueChanged(double value);
void on_doubleSpinBox_SBMaxRange_valueChanged(double value);
void on_slider_meshTransparency_valueChanged(int value);
//void on_slider_meshTransparency_sliderReleased();
void on_slider_ResultTransparency_valueChanged(int value);
//void on_doubleSpinBox_scaleGraph_valueChanged(int value);
void on_checkBox_enableSlice_stateChanged(int state);
void AddCutter();
void on_comboBox_sliceDirection_currentIndexChanged(int index);
void on_comboBox_slicePosition_currentIndexChanged(int index);
void on_pb_exportData_clicked();
void on_doubleSpinBox_resultScale_valueChanged(double value);
/// @brief 刷新窗口标题
/// @param caseID 算例ID
/// @param resultType 查看结果类型BaseModul::ResultType
/// @param viewResultDataID 查看结果数据ID
void slot_refreshWindowTitle(int caseID, int resultType, int viewResultDataID);
private:
QString generateFilePath(const QString& fileName, int index);
QList<QString> getFreqFromSetting();
bool readerDelimitedTextFromLocal(const QString& fileName);
void resetCameraViewDirection(vtkCamera* camera, double look_x,
double look_y, double look_z, double up_x, double up_y, double up_z);
void copyActor(vtkActor* sourceActor, vtkSmartPointer<vtkActor> desActor);
void setScalarBarRange();
void initUI();
void checkDataType(const QString& filePath);
void decideLogFactory();
/// @brief
void setLogNormalButtonState(bool state);
void setSlicePositionButtonState();
bool readData(const QString& filePath);
void generateResultActor();
void InitDefaultLookupTable();
void initScalarBarPipeLine();
void activeButtonAfterReadData();
void generateSlicePosition(int index);
//void writeMOMData();
void readDataFromDataManager();
void restoreLogic();
//void importPreProcessWindowData();
private:
Ui::ThreeDimensionDiagraph* ui;
/// @brief 数据类型
/// 0360*360.txt 远场
/// 1: 4列.txt 近场
/// 2: .vtk数据
int m_dataType;
vtkSmartPointer<vtkActor> m_dataActor;
//vtkSmartPointer<vtkGenericOpenGLRenderWindow> m_renderWindow3D;
vtkSmartPointer<vtkRenderWindow> m_renderWindow3D;
vtkSmartPointer<vtkRenderWindowInteractor> m_interactor;
vtkSmartPointer<vtkRenderer> m_render3D;
std::shared_ptr <pst::WidgetCutter> m_widgetCutter;
std::shared_ptr < pst::MutiVTKFilesReader> m_mutiReader;
//std::shared_ptr <pst::FieldGraphGenerator> m_fieldGraphGenerator;
//int m_caseID;
//int m_iD;
vtkSmartPointer<vtkAxesActor> m_leftDownCornerAxes;
vtkSmartPointer<vtkOrientationMarkerWidget> m_leftDownCornerWidget;
//int m_viewResultDataID;
vtkSmartPointer<vtkDataSet> m_dataSet;
vtkSmartPointer<vtkDataSetMapper> m_dataMapper;
vtkSmartPointer<vtkScalarBarActor> m_scalarBarActor;
vtkSmartPointer<vtkScalarBarWidget> m_scalarBarWidget;
vtkSmartPointer<vtkLookupTable> m_lookupTable;
double m_scalarBarAutoDataRange[2];
vtkSmartPointer<vtkDelimitedTextReader> m_delimitedTextReader;
vtkTable* m_originalTable;
vtkTable* logTable;
bool m_shouldLogTheData;
bool m_shouldNormalizeTheData;
FarFieldDataGenerator* m_farFieldDataGenerator;
NearFieldDataGenerator* m_nearFieldDataGenerator;
//QString m_fileName;
bool m_isReadDataSuc;
QString m_scalarBarTitle;
bool m_isCutterAdded;
DataModel::PostThreeDimensionGraphData* m_gain3DData;
vtkSmartPointer<vtkDataSet> m_cutterInputData;
vtkSmartPointer<vtkPolyData> m_emptyData;
QList<vtkSmartPointer<vtkActor>> m_preWDmeshActorsList;
QString m_filePathToRead;
/// @brief 原始数据R的范围
double m_originalRRange[2];
double m_logDefautFactory;
/// @brief 取对数后R的范围
double m_logDataRRange[2];
};
}
#endif