#ifndef POST_THREEDIMENSIONGRAPH_H #define POST_THREEDIMENSIONGRAPH_H #include #include "PostWindowBase.h" #include "FieldGraphGenerator.h" #include "WidgetCutter.h" #include #include 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 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 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 数据类型 /// 0:360*360.txt 远场 /// 1: 4列.txt 近场 /// 2: .vtk数据 int m_dataType; vtkSmartPointer m_dataActor; //vtkSmartPointer m_renderWindow3D; vtkSmartPointer m_renderWindow3D; vtkSmartPointer m_interactor; vtkSmartPointer m_render3D; std::shared_ptr m_widgetCutter; std::shared_ptr < pst::MutiVTKFilesReader> m_mutiReader; //std::shared_ptr m_fieldGraphGenerator; //int m_caseID; //int m_iD; vtkSmartPointer m_leftDownCornerAxes; vtkSmartPointer m_leftDownCornerWidget; //int m_viewResultDataID; vtkSmartPointer m_dataSet; vtkSmartPointer m_dataMapper; vtkSmartPointer m_scalarBarActor; vtkSmartPointer m_scalarBarWidget; vtkSmartPointer m_lookupTable; double m_scalarBarAutoDataRange[2]; vtkSmartPointer 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 m_cutterInputData; vtkSmartPointer m_emptyData; QList> m_preWDmeshActorsList; QString m_filePathToRead; /// @brief 原始数据R的范围 double m_originalRRange[2]; double m_logDefautFactory; /// @brief 取对数后R的范围 double m_logDataRRange[2]; }; } #endif