|
@@ -0,0 +1,1039 @@
|
|
|
+#include "resultvtkmanager.h"
|
|
|
+#include <string>
|
|
|
+#include <QString>
|
|
|
+#include <QFileInfo>
|
|
|
+#include "../visualization_VTK/vtkVISUnContour.h"
|
|
|
+#include "../visualization_VTK/vtkvisunshademesh.h"
|
|
|
+#include "../visualization_VTK/vtkVISAddUnGridDataSource.h"
|
|
|
+#include "../visualization_VTK/vtkvisunstructuredgridsource.h"
|
|
|
+#include "../display/contourdisplay.h"
|
|
|
+#include "../display/linedisplay.h"
|
|
|
+#include "../display/slicewidget.h"
|
|
|
+#include "../display/solidsurfacewidget.h"
|
|
|
+#include "../display/streamwidget.h"
|
|
|
+#include "../display/vectordisplay.h"
|
|
|
+#include "../widget/contourdispalyWidget.h"
|
|
|
+#include "../widget/linedisplayWidget.h"
|
|
|
+#include "../widget/slicedisplaywidget.h"
|
|
|
+#include "../widget/solidsurfaceDisplaywidget.h"
|
|
|
+#include "../widget/Sslicewidget.h"
|
|
|
+#include "../widget/streamDisplaywidget.h"
|
|
|
+#include "../widget/vectorDisplaywidget.h"
|
|
|
+#include "../visualization_VTK/vtkVISUnGlyph.h"
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: the constructor
|
|
|
+ * @param:
|
|
|
+ * @ret:
|
|
|
+ * @birth: created by czm in 20230519
|
|
|
+ */
|
|
|
+ResultVTKManager::ResultVTKManager()
|
|
|
+{
|
|
|
+ meshObj_ = 0;
|
|
|
+ m_currId = -1;
|
|
|
+ scalarIndex = -1;
|
|
|
+ range_[0] = 0;
|
|
|
+ range_[1] = 0;
|
|
|
+ scalarLeave = 10;
|
|
|
+ titleSize_ = 6;
|
|
|
+ labelSize_ = 5;
|
|
|
+
|
|
|
+// animationWidget_ = NULL;
|
|
|
+ contourWidget_ = NULL;
|
|
|
+ lineWidget_ = NULL;
|
|
|
+ vectorWidget_ = NULL;
|
|
|
+ solidSurfaceW_ = NULL;
|
|
|
+ sliceW_ = NULL;
|
|
|
+ streamW_ = NULL;
|
|
|
+// xyplot2dW_ = NULL;
|
|
|
+
|
|
|
+ changeRangeFlag = false;
|
|
|
+ surfaceHideFlag = true;
|
|
|
+ displayType = -1;
|
|
|
+ scaleFactor_ = 0.02;
|
|
|
+
|
|
|
+ solveTimes_.clear();
|
|
|
+ zoneNameVec_.clear();
|
|
|
+ currShowZoneNameSet_.clear();
|
|
|
+ surfaceActorColor_.clear();
|
|
|
+ scalarName_.clear();
|
|
|
+ allZoneScalarName_.clear();
|
|
|
+
|
|
|
+ surfaceActorColor_.push_back(0);
|
|
|
+ surfaceActorColor_.push_back(0);
|
|
|
+ surfaceActorColor_.push_back(1);
|
|
|
+ surfaceActorTransparency_ = 1;
|
|
|
+
|
|
|
+ addDataSource_ = NULL;
|
|
|
+ currAddDataSource_ = NULL;
|
|
|
+ unSliceVec_.clear();
|
|
|
+
|
|
|
+ streamLine_ = NULL;
|
|
|
+ render_ = NULL;
|
|
|
+ titleText_ = NULL;
|
|
|
+ MeshVec_.clear();
|
|
|
+ ModalMeshVec_.clear();
|
|
|
+ initPointsData = NULL;
|
|
|
+ dispNameVec.clear();
|
|
|
+ HaveModalMeshFlag = false;
|
|
|
+ meshType = 0;
|
|
|
+ xyplot2dSlice_ = NULL;
|
|
|
+ currentVISGridVec_.clear();
|
|
|
+
|
|
|
+ showHideVec_.clear();
|
|
|
+ vectorScalarIndexVec.clear();
|
|
|
+ TimeMeshVec_.clear();
|
|
|
+ source = NULL;
|
|
|
+ unmesh = NULL;
|
|
|
+ uncontour = NULL;
|
|
|
+ uncontourVec_.clear();
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: the destructor
|
|
|
+ * @param:
|
|
|
+ * @ret:
|
|
|
+ * @birth: created by czm in 20230519
|
|
|
+ */
|
|
|
+ResultVTKManager::~ResultVTKManager()
|
|
|
+{
|
|
|
+ this->Clear();
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: load vtk file
|
|
|
+ * @param: path
|
|
|
+ * @ret: bool
|
|
|
+ * @birth: created by czm in 20230519
|
|
|
+ */
|
|
|
+bool ResultVTKManager::LoadData(QString name)
|
|
|
+{
|
|
|
+ QFileInfo fileinfo_(name);
|
|
|
+ if(!fileinfo_.isFile()){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ source =vtkVISUnstructuredGridSource::New();
|
|
|
+ source->LoadData((char*)name.toStdString().c_str());
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: render mesh
|
|
|
+ * @param: renderer
|
|
|
+ * @ret: void
|
|
|
+ * @birth: created by czm in 20230519
|
|
|
+ */
|
|
|
+void ResultVTKManager::DisplayMesh(QVTKRenderer *qvtkRenderer)
|
|
|
+{
|
|
|
+ unmesh = vtkVISUnShadeMesh::New();
|
|
|
+ this->render_ = qvtkRenderer;
|
|
|
+ unmesh->SetRenderTo(qvtkRenderer->GetRenderer());
|
|
|
+ unmesh->SetDataSource(source);
|
|
|
+ //unmesh->CreateShadeMeshDisplay(false);//线框图
|
|
|
+ unmesh->CreateShadeMeshDisplay(true);//阴影图
|
|
|
+ uncontour = vtkVISUnContour::New();
|
|
|
+ uncontour->SetDataSource(source);
|
|
|
+ uncontour->SetRenderTo(qvtkRenderer->GetRenderer());
|
|
|
+ uncontourVec_.push_back(uncontour);
|
|
|
+ unglyph = vtkVISUnGlyph::New();
|
|
|
+ unglyph->SetDataSource(source);
|
|
|
+ unglyph->SetRenderTo(qvtkRenderer->GetRenderer());
|
|
|
+// solidSurfaceMesh = vtkVISUnShadeMesh::New();
|
|
|
+// solidSurfaceMesh->SetDataSource(source);
|
|
|
+// solidSurfaceMesh->SetRenderTo(qvtkRenderer->GetRenderer());
|
|
|
+ streamLine_ = vtkVISUnStreamTrace::New();
|
|
|
+ streamLine_->SetDataSource(source);
|
|
|
+ streamLine_->SetRenderTo(qvtkRenderer->GetRenderer());
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: display mesh by index
|
|
|
+ * @param: index
|
|
|
+ * @ret: void
|
|
|
+ * @birth: created by czm in 20230522
|
|
|
+ */
|
|
|
+void ResultVTKManager::DisplayMeshByIndex(int index)
|
|
|
+{
|
|
|
+ bool scalarBarState = true;
|
|
|
+ m_currId = index;
|
|
|
+ HideSliceActors();
|
|
|
+ HideXyplot2dSliceActors();
|
|
|
+ if(surfaceHideFlag)
|
|
|
+ {
|
|
|
+ if(unmesh!=NULL){
|
|
|
+ unmesh->SetColor(surfaceActorColor_[0],surfaceActorColor_[1],surfaceActorColor_[2]);
|
|
|
+ unmesh->SetOpacity(surfaceActorTransparency_);
|
|
|
+ unmesh->ShowOn();
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ unmesh->ShowOff();
|
|
|
+ }
|
|
|
+ if(displayType == 0 || displayType == 2){//contour
|
|
|
+ HideAllGlyphActors();
|
|
|
+ InitRange(index);
|
|
|
+ if(uncontour!=NULL){
|
|
|
+ uncontour->SetContourType(displayType);
|
|
|
+ uncontour->SetContourLevel(scalarLeave);
|
|
|
+ uncontour->ModifyContourDisplay((char*)scalarName_.c_str());
|
|
|
+ uncontour->DeleteScalarBar();
|
|
|
+ uncontour->CreateScalarBar();
|
|
|
+ uncontour->ModifyDisplayScalarRange(range_[0],range_[1]);
|
|
|
+ //uncontour->ShowOffScalarBar();
|
|
|
+ uncontour->ShowOn();
|
|
|
+ if(scalarBarState) // to do
|
|
|
+ {
|
|
|
+ scalarBarState != uncontour->UpdataScalarBar();
|
|
|
+ if(!scalarBarState)
|
|
|
+ {
|
|
|
+ uncontour->ShowOnScalarBar();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if(displayType == 3)
|
|
|
+ {
|
|
|
+ HideAllContourActors();
|
|
|
+ if(unglyph!=NULL){
|
|
|
+ unglyph->InitGlyphDisplay(vectorScalarIndexVec[0],vectorScalarIndexVec[1],vectorScalarIndexVec[2]);
|
|
|
+ unglyph->SetGlyphScaleFactor(scaleFactor_);
|
|
|
+ unglyph->ShowOn();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ render_->ZoomToExtents();
|
|
|
+}
|
|
|
+
|
|
|
+QVTKRenderer *ResultVTKManager::GetQVtkRender()
|
|
|
+{
|
|
|
+ return this->render_;
|
|
|
+}
|
|
|
+
|
|
|
+string ResultVTKManager::deleteSpaces(string str)
|
|
|
+{
|
|
|
+ QChar h0 = 0x00;
|
|
|
+ QString str_;
|
|
|
+ if(QString::fromStdString(str).contains(h0)){
|
|
|
+ str_=QString::fromStdString(str).replace(h0,"");
|
|
|
+ }
|
|
|
+ return str_.toStdString();
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetSaveIndex(int index)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+int ResultVTKManager::GetCurrIndex()
|
|
|
+{
|
|
|
+ return m_currId;
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: set name type map
|
|
|
+ * @param: void
|
|
|
+ * @ret: void
|
|
|
+ * @birth: created by czm in 20230519
|
|
|
+ */
|
|
|
+void ResultVTKManager::SetNameTypeMap()
|
|
|
+{
|
|
|
+ source->LoadScalarData();
|
|
|
+ for(int i = 0;i<source->GetScalarNumber();i++){
|
|
|
+ string name = source->GetScalarName(i);
|
|
|
+ if(source->scalarSource[i]->GetDataSize()>0){//判断是cell还是point
|
|
|
+ nameTypeMap_[name] = 0;
|
|
|
+ }else{
|
|
|
+ nameTypeMap_[name] = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: get name type map
|
|
|
+ * @param: void
|
|
|
+ * @ret: map
|
|
|
+ * @birth: created by czm in 20230519
|
|
|
+ */
|
|
|
+map<string, int> ResultVTKManager::GetNameTypeMap()
|
|
|
+{
|
|
|
+ return nameTypeMap_;
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::Clear()
|
|
|
+{
|
|
|
+ if (meshObj_)
|
|
|
+ {
|
|
|
+ //delete meshObj_;
|
|
|
+ meshObj_ = NULL;
|
|
|
+ }
|
|
|
+ m_currId = -1;
|
|
|
+ scalarIndex = -1;
|
|
|
+ range_[0] = 0;
|
|
|
+ range_[1] = 0;
|
|
|
+ scalarLeave = 10;
|
|
|
+ titleSize_ = 6;
|
|
|
+ labelSize_ = 5;
|
|
|
+ changeRangeFlag = false;
|
|
|
+ surfaceHideFlag = true;
|
|
|
+ displayType = -1;
|
|
|
+ scaleFactor_ = 0.02;
|
|
|
+
|
|
|
+ solveTimes_.clear();
|
|
|
+ zoneNameVec_.clear();
|
|
|
+ currShowZoneNameSet_.clear();
|
|
|
+ nameTypeMap_.clear();
|
|
|
+ showHideVec_.clear();
|
|
|
+ surfaceActorColor_.clear();
|
|
|
+ scalarName_.clear();
|
|
|
+ allZoneScalarName_.clear();
|
|
|
+
|
|
|
+ //vtk vis procs.
|
|
|
+ for(map<double, map<string, vtkVISUnContour*>>::iterator it = vtkVisZoneMeshMap_.begin(); it != vtkVisZoneMeshMap_.end(); ++it)
|
|
|
+ {
|
|
|
+ for(map<string, vtkVISUnContour*>::iterator itin = it->second.begin(); itin != it->second.end(); ++itin)
|
|
|
+ {
|
|
|
+ itin->second->Delete();
|
|
|
+ }
|
|
|
+ it->second.clear();
|
|
|
+ }
|
|
|
+ vtkVisZoneMeshMap_.clear();
|
|
|
+
|
|
|
+ for(map<double, map<string, vtkVISUnShadeMesh*>>::iterator it = vtkVisZoneUnShadeMeshMap_.begin(); it != vtkVisZoneUnShadeMeshMap_.end(); ++it)
|
|
|
+ {
|
|
|
+ for(map<string, vtkVISUnShadeMesh*>::iterator itin = it->second.begin(); itin != it->second.end(); ++itin)
|
|
|
+ {
|
|
|
+ itin->second->Delete();
|
|
|
+ }
|
|
|
+ it->second.clear();
|
|
|
+ }
|
|
|
+ vtkVisZoneUnShadeMeshMap_.clear();
|
|
|
+ for(map<double, map<string, vtkVISUnGlyph*>>::iterator it = vtkVisZoneGlyphMap_.begin(); it != vtkVisZoneGlyphMap_.end(); ++it)
|
|
|
+ {
|
|
|
+ for(map<string, vtkVISUnGlyph*>::iterator itin = it->second.begin(); itin != it->second.end(); ++itin)
|
|
|
+ {
|
|
|
+ itin->second->Delete();
|
|
|
+ }
|
|
|
+ it->second.clear();
|
|
|
+ }
|
|
|
+ vtkVisZoneGlyphMap_.clear();
|
|
|
+
|
|
|
+ if (!unSliceVec_.empty())
|
|
|
+ {
|
|
|
+ for (int i = 0; i < unSliceVec_.size(); i ++)
|
|
|
+ {
|
|
|
+ if(unSliceVec_.at(i) != NULL)
|
|
|
+ {
|
|
|
+ unSliceVec_.at(i)->Delete();
|
|
|
+ unSliceVec_.at(i) = NULL;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ unSliceVec_.clear();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (currentVISGridVec_.size() != 0)
|
|
|
+ {
|
|
|
+ /*for (int i = 0; i < currentVISGridVec_.size(); i ++)
|
|
|
+ {
|
|
|
+ delete currentVISGridVec_.at(i);
|
|
|
+ }*/
|
|
|
+ currentVISGridVec_.clear();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (addDataSource_ != NULL)
|
|
|
+ {
|
|
|
+
|
|
|
+ delete addDataSource_;
|
|
|
+ addDataSource_ = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (currAddDataSource_ != NULL)
|
|
|
+ {
|
|
|
+ delete currAddDataSource_;
|
|
|
+ currAddDataSource_ = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ DeleteAllStream();
|
|
|
+ if (streamLine_ != NULL)
|
|
|
+ {
|
|
|
+ streamLine_->Delete();
|
|
|
+ streamLine_ = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (xyplot2dSlice_ != NULL)
|
|
|
+ {
|
|
|
+ xyplot2dSlice_->Delete();
|
|
|
+ xyplot2dSlice_ = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ surfaceActorColor_.push_back(0);
|
|
|
+ surfaceActorColor_.push_back(0);
|
|
|
+ surfaceActorColor_.push_back(1);
|
|
|
+ surfaceActorTransparency_ = 1;
|
|
|
+
|
|
|
+// if (animationWidget_ != NULL)
|
|
|
+// {
|
|
|
+// animationWidget_->RestoreWidget();
|
|
|
+// }
|
|
|
+ if (contourWidget_ != NULL)
|
|
|
+ {
|
|
|
+ contourWidget_->RestoreWidget();
|
|
|
+ }
|
|
|
+ if (lineWidget_ != NULL)
|
|
|
+ {
|
|
|
+ lineWidget_->RestoreWidget();
|
|
|
+ }
|
|
|
+ if (vectorWidget_ != NULL)
|
|
|
+ {
|
|
|
+ //vectorWidget_->RestoreWidget();
|
|
|
+ }
|
|
|
+ if (solidSurfaceW_ != NULL)
|
|
|
+ {
|
|
|
+ //solidSurfaceW_->RestoreWidget();
|
|
|
+ }
|
|
|
+// if (sliceW_ != NULL)
|
|
|
+// {
|
|
|
+// sliceW_->RestoreWidget();
|
|
|
+// }
|
|
|
+ if (streamW_ != NULL)
|
|
|
+ {
|
|
|
+ //streamW_->RestoreWidget();
|
|
|
+ }
|
|
|
+// if (xyplot2dW_ != NULL)
|
|
|
+// {
|
|
|
+// xyplot2dW_->RestoreWidget();
|
|
|
+// }
|
|
|
+ if (render_ != NULL)
|
|
|
+ {
|
|
|
+ render_->HideAllActors();
|
|
|
+ render_ = NULL;
|
|
|
+ }
|
|
|
+ MeshVec_.clear();
|
|
|
+ TimeMeshVec_.clear();
|
|
|
+ ModalMeshVec_.clear();
|
|
|
+ if (initPointsData != NULL)
|
|
|
+ {
|
|
|
+ delete initPointsData;
|
|
|
+ }
|
|
|
+ initPointsData = NULL;
|
|
|
+ dispNameVec.clear();
|
|
|
+ HaveModalMeshFlag = false;
|
|
|
+ meshType = 0;
|
|
|
+ if(source!=NULL){
|
|
|
+ source->Delete();
|
|
|
+ source = NULL;
|
|
|
+ }
|
|
|
+ if(unmesh!=NULL){
|
|
|
+ unmesh->Delete();
|
|
|
+ unmesh = NULL;
|
|
|
+ }
|
|
|
+ if(uncontour!=NULL){
|
|
|
+ uncontour->Delete();
|
|
|
+ uncontour = NULL;
|
|
|
+ }
|
|
|
+ qDeleteAll(uncontourVec_);
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: get mesh scalar name vector
|
|
|
+ * @param: void
|
|
|
+ * @ret: vector
|
|
|
+ * @birth: created by czm in 20230519
|
|
|
+ */
|
|
|
+vector<string> ResultVTKManager::GetMeshScalarNameVec()
|
|
|
+{
|
|
|
+ vector<string> scalar_vec;
|
|
|
+ for(int i =0;i<source->scalarNumber_;i++){
|
|
|
+ scalar_vec.push_back(source->scalarName[i]);
|
|
|
+ }
|
|
|
+ return scalar_vec;
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetShowHideState(vector<bool> vec)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::ShowAll()
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: init widget scalar range
|
|
|
+ * @param: void
|
|
|
+ * @ret: void
|
|
|
+ * @birth: created by czm in 20230519
|
|
|
+ */
|
|
|
+void ResultVTKManager::InitRange(int index)
|
|
|
+{
|
|
|
+ Q_UNUSED(index);
|
|
|
+ int index_ = source->GetScalarIndex(scalarName_.data());
|
|
|
+ source->LoadOneScalarData(scalarName_.c_str());
|
|
|
+ range_[0] = source->scalarRange[index_][0];
|
|
|
+ range_[1] = source->scalarRange[index_][1];
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: get private range
|
|
|
+ * @param: void
|
|
|
+ * @ret: range
|
|
|
+ * @birth: created by czm in 20230421
|
|
|
+ */
|
|
|
+double *ResultVTKManager::GetScalarRange()
|
|
|
+{
|
|
|
+ return range_;
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::ModifyScalarDisplay(int index)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: change scalar display
|
|
|
+ * @param: scalarname
|
|
|
+ * @ret: void
|
|
|
+ * @birth: created by czm in 20230519
|
|
|
+ */
|
|
|
+void ResultVTKManager::ModifyScalarDisplay(string name)
|
|
|
+{
|
|
|
+ if(scalarName_!=name && !(name.empty()))
|
|
|
+ {
|
|
|
+ scalarName_ = name;
|
|
|
+ SetWidgetScalarName();
|
|
|
+ InitRange(m_currId);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+int ResultVTKManager::GetScalarIndex()
|
|
|
+{
|
|
|
+ return scalarIndex;
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetContourLevel(int level)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+int ResultVTKManager::GetContourLevel()
|
|
|
+{
|
|
|
+ return scalarLeave;
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: init contourwidget pointer
|
|
|
+ * @param: contourwidget
|
|
|
+ * @ret: void
|
|
|
+ * @birth: created by czm in 20230519
|
|
|
+ */
|
|
|
+void ResultVTKManager::SetCotourWidget(ContourDisplayW *w)
|
|
|
+{
|
|
|
+ contourWidget_ = w;
|
|
|
+ contourWidget_->SetNameTypeMap(GetNameTypeMap());
|
|
|
+ contourWidget_->SetScalarNameVec(GetMeshScalarNameVec());
|
|
|
+// SetWidgetRange();
|
|
|
+// SetWidgetScalarName();
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetLineWidget(LineDisplayW *w)
|
|
|
+{
|
|
|
+ lineWidget_ = w;
|
|
|
+ lineWidget_->SetNameTypeMap(GetNameTypeMap());
|
|
|
+ lineWidget_->SetScalarNameVec(GetMeshScalarNameVec());
|
|
|
+ SetWidgetRange();
|
|
|
+ SetWidgetScalarName();
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetVectorWidget(VectorW *w)
|
|
|
+{
|
|
|
+ vectorWidget_ = w;
|
|
|
+ vectorWidget_->GetData_u(GetMeshScalarNameVec());
|
|
|
+ vectorWidget_->GetData_v(GetMeshScalarNameVec());
|
|
|
+ vectorWidget_->GetData_w(GetMeshScalarNameVec());
|
|
|
+ vectorWidget_->SetScaleFactor(scaleFactor_);
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetSurfaceSolidWidget(SolidSurfaceWidget *w)
|
|
|
+{
|
|
|
+ solidSurfaceW_ = w;
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetSliceWidget(SsliceWidget *w)
|
|
|
+{
|
|
|
+ sliceW_ = w;
|
|
|
+ sliceW_->GetScalarName(GetMeshScalarNameVec());
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetStremWidget(StreamDisplayWidget *w)
|
|
|
+{
|
|
|
+ streamW_ = w;
|
|
|
+ streamW_->SetData_u(GetMeshScalarNameVec());
|
|
|
+ streamW_->SetData_v(GetMeshScalarNameVec());
|
|
|
+ streamW_->SetData_w(GetMeshScalarNameVec());
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetXyplotWidget(XYPlot_2D *w)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: init widgets range parameter
|
|
|
+ * @param: void
|
|
|
+ * @ret: void
|
|
|
+ * @birth: created by czm in 20230519
|
|
|
+ */
|
|
|
+void ResultVTKManager::SetWidgetRange()
|
|
|
+{
|
|
|
+ if(contourWidget_){
|
|
|
+ contourWidget_->SetRange(range_);
|
|
|
+ }
|
|
|
+ if(lineWidget_){
|
|
|
+ lineWidget_->SetRange(range_);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: init widget scalar name
|
|
|
+ * @param: void
|
|
|
+ * @ret: void
|
|
|
+ * @birth: created by czm in 20230519
|
|
|
+ */
|
|
|
+void ResultVTKManager::SetWidgetScalarName()
|
|
|
+{
|
|
|
+ if(!scalarName_.empty()){
|
|
|
+ string name = scalarName_;
|
|
|
+ if(contourWidget_){
|
|
|
+ contourWidget_->SetCurrScalar(name);
|
|
|
+ }
|
|
|
+ if(lineWidget_){
|
|
|
+ lineWidget_->SetCurrScalar(name);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetLevel(int level)
|
|
|
+{
|
|
|
+ scalarLeave = level;
|
|
|
+ SetWidgetLevel();
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetWidgetLevel()
|
|
|
+{
|
|
|
+ if (contourWidget_ != NULL)
|
|
|
+ {
|
|
|
+ contourWidget_->SetLevel(scalarLeave);
|
|
|
+ }
|
|
|
+ if (lineWidget_ != NULL)
|
|
|
+ {
|
|
|
+ lineWidget_->SetLevel(scalarLeave);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetRange(double *range)
|
|
|
+{
|
|
|
+ range_[0] = range[0];
|
|
|
+ range_[1] = range[1];
|
|
|
+ changeRangeFlag = true;
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetDisplayType(int type)
|
|
|
+{
|
|
|
+ displayType = type;
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: init widgets param
|
|
|
+ * @param: void
|
|
|
+ * @ret: void
|
|
|
+ * @birth: created by czm in 20230519
|
|
|
+ */
|
|
|
+void ResultVTKManager::InitWidgetsParameter()
|
|
|
+{
|
|
|
+ if(contourWidget_){
|
|
|
+
|
|
|
+ contourWidget_->SetScalarNameVec(GetMeshScalarNameVec());
|
|
|
+ SetWidgetRange();
|
|
|
+ SetWidgetScalarName();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetVectorScalarIndex(vector<int> indexVec)
|
|
|
+{
|
|
|
+ vectorScalarIndexVec.clear();
|
|
|
+ if (indexVec.at(0) == -1 ||
|
|
|
+ indexVec.at(1) == -1 ||
|
|
|
+ indexVec.at(2) == -1)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ vectorScalarIndexVec = indexVec;
|
|
|
+ DisplayMeshByIndex(m_currId);
|
|
|
+ unmesh->ShowOff();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetVectorScaleFactor(double factor)
|
|
|
+{
|
|
|
+ scaleFactor_ = factor;
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetSurfaceColor(vector<double> color)
|
|
|
+{
|
|
|
+ surfaceActorColor_ = color;
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetSurfaceTransparency(double value)
|
|
|
+{
|
|
|
+ surfaceActorTransparency_ = value;
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetSurfaceShowHideFlag(bool flag)
|
|
|
+{
|
|
|
+ surfaceHideFlag = flag;
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetScalarName(string name)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::MakeVISUnStructGrid()
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::DisplayUnstructGrid()
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::InitSliceWidget()
|
|
|
+{
|
|
|
+ HideAllUnshadeMeshActors();
|
|
|
+ HideAllGlyphActors();
|
|
|
+ HideAllContourActors();
|
|
|
+ HideStreamActors();
|
|
|
+ HideXyplot2dSliceActors();
|
|
|
+
|
|
|
+ if (solidSurfaceW_ != NULL)
|
|
|
+ {
|
|
|
+ solidSurfaceW_->SetShowHideState(true);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+vector<double> ResultVTKManager::GetUnslicePosition(int index)
|
|
|
+{
|
|
|
+ double* data2;
|
|
|
+ data2 = unSliceVec_.at(index)->GetSlicePlaneOrigin();
|
|
|
+ vector<double> origin;
|
|
|
+ origin.push_back(data2[0]);
|
|
|
+ origin.push_back(data2[1]);
|
|
|
+ origin.push_back(data2[2]);
|
|
|
+ return origin;
|
|
|
+}
|
|
|
+
|
|
|
+vector<double> ResultVTKManager::GetUnsliceSourceBounds(int index)
|
|
|
+{
|
|
|
+ vector<double> bounds;
|
|
|
+
|
|
|
+ if (unSliceVec_.at(index) != NULL)
|
|
|
+ {
|
|
|
+ double b[6];
|
|
|
+ unSliceVec_.at(index)->GetSourceBounds_FD(b);
|
|
|
+ for (int i = 0; i < 6; i ++)
|
|
|
+ {
|
|
|
+ bounds.push_back(b[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return bounds;
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetAllSliceState(vector<int> sliceId, vector<bool> solidState, vector<bool> planeWidgetState, vector<vector<double> > nomal, vector<vector<double> > posision, vector<string> type, vector<string> contourName, vector<int> level, vector<bool> planeState, vector<bool> labelState)
|
|
|
+{
|
|
|
+ for (int i = 0; i < sliceId.size(); i ++)
|
|
|
+ {
|
|
|
+ if (solidState.at(i))
|
|
|
+ {
|
|
|
+ unSliceVec_.at(sliceId.at(i))->ShowOnUnshadeMesh();
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ unSliceVec_.at(sliceId.at(i))->ShowOffUnShadeMesh();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (planeWidgetState.at(i))
|
|
|
+ {
|
|
|
+ unSliceVec_.at(sliceId.at(i))->ShowOnSlicePlane();
|
|
|
+ unSliceVec_.at(sliceId.at(i))->ShowOnSlicePlaneWidget();
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ unSliceVec_.at(sliceId.at(i))->ShowOffSlicePlane();
|
|
|
+ unSliceVec_.at(sliceId.at(i))->ShowOffSlicePlaneWidget();
|
|
|
+ }
|
|
|
+ unSliceVec_.at(sliceId.at(i))->SetSlicePlaneNormal(nomal.at(i).at(0), nomal.at(i).at(1),nomal.at(i).at(2));
|
|
|
+ unSliceVec_.at(sliceId.at(i))->SetSlicePlaneOrigin(posision.at(i).at(0), posision.at(i).at(1),posision.at(i).at(2));
|
|
|
+
|
|
|
+ if (type.at(i) == "contour")
|
|
|
+ {
|
|
|
+ unSliceVec_.at(sliceId.at(i))->ShowOnUnSliceContourDisplay();
|
|
|
+ unSliceVec_.at(sliceId.at(i))->ShowOffUnSliceContourLinesDisplay();
|
|
|
+ }else if(type.at(i) == "line")
|
|
|
+ {
|
|
|
+ unSliceVec_.at(sliceId.at(i))->ShowOnUnSliceContourLinesDisplay();
|
|
|
+ unSliceVec_.at(sliceId.at(i))->ShowOffUnSliceContourDisplay();
|
|
|
+ }
|
|
|
+
|
|
|
+ char* name = (char*)(contourName.at(i).c_str());
|
|
|
+ unSliceVec_.at(sliceId.at(i))->ModifySliceSourceScalar_FD(name);
|
|
|
+
|
|
|
+ unSliceVec_.at(sliceId.at(i))->ModifyUnSliceContourLevel(level.at(i));
|
|
|
+
|
|
|
+ if (planeState.at(i))
|
|
|
+ {
|
|
|
+ //unSliceVec_.at(sliceId.at(i))->ShowOnSlicePlane();
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ unSliceVec_.at(sliceId.at(i))->ShowOffCutActor();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (labelState.at(i))
|
|
|
+ {
|
|
|
+ unSliceVec_.at(sliceId.at(i))->ShowOnUnSliceContourLinesLabelDisplay();
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ unSliceVec_.at(sliceId.at(i))->ShowOffUnSliceContourLinesLabelDisplay();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 0; i < unSliceVec_.size(); i ++)
|
|
|
+ {
|
|
|
+ if (find(sliceId.begin(), sliceId.end(), i) == sliceId.end())
|
|
|
+ {
|
|
|
+ if (unSliceVec_.at(i) != NULL)
|
|
|
+ {
|
|
|
+ unSliceVec_.at(i)->ShowOffSlicePlane();
|
|
|
+ unSliceVec_.at(i)->ShowOffSlicePlaneWidget();
|
|
|
+ unSliceVec_.at(i)->ShowOffUnShadeMesh();
|
|
|
+ unSliceVec_.at(i)->ShowOffUnSliceMesh();
|
|
|
+ unSliceVec_.at(i)->ShowOffUnSliceShade();
|
|
|
+ unSliceVec_.at(i)->ShowOffCutActor();
|
|
|
+ unSliceVec_.at(i)->Delete();
|
|
|
+ unSliceVec_.at(i) = NULL;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ render_->Update();
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::UpdataSliceWidgetParameter()
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::UpdataCurrUnstructSource()
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::CreatVectorSource(string u, string v, string w, double x, double y, double z)
|
|
|
+{
|
|
|
+ char* v1 = (char*)(u.c_str());
|
|
|
+ char* v2 = (char*)(v.c_str());
|
|
|
+ char* v3 = (char*)(w.c_str());
|
|
|
+
|
|
|
+ if (streamLine_ != NULL)
|
|
|
+ {
|
|
|
+ streamLine_->ShowOffStreamWidget();
|
|
|
+ streamLine_->ShowOffStreamTraceLines();
|
|
|
+ streamLine_->Delete();
|
|
|
+ streamLine_ = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (currAddDataSource_ != NULL)
|
|
|
+ {
|
|
|
+ streamLine_ = vtkVISUnStreamTrace::New();
|
|
|
+ streamLine_->SetRenderTo(render_->GetRenderer());
|
|
|
+ streamLine_->SetDataSource(currAddDataSource_->GetSource());
|
|
|
+ streamLine_->SetStreamTraceSource(v1,v2,v3);
|
|
|
+ string type = "line";
|
|
|
+ streamLine_->SetSeedsType(type);
|
|
|
+ streamLine_->CreateStreamTraceDisplayByVector();
|
|
|
+
|
|
|
+ if (streamW_ != NULL)
|
|
|
+ {
|
|
|
+ streamW_->SetInitStepData(streamLine_->GetInitialStep());
|
|
|
+ streamW_->SetMaxPropgationData(streamLine_->GetMaxPropagation());
|
|
|
+ streamW_->SetMinStepData(streamLine_->GetMinimumStep());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Q_UNUSED(x);
|
|
|
+ Q_UNUSED(y);
|
|
|
+ Q_UNUSED(z);
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::DisplayStreamLine(string direction, string type, double initStrp, double maxPropgation, double minStep, bool showState, bool ToolState)
|
|
|
+{
|
|
|
+ if(streamLine_!=NULL)
|
|
|
+ {
|
|
|
+ char* direc = (char*)(direction.c_str());
|
|
|
+ streamLine_->ModifyIntegraDirection(direc);
|
|
|
+
|
|
|
+ //type
|
|
|
+ streamLine_->ShowOffStreamTraceLines();
|
|
|
+ char* streamType = (char*)type.c_str();
|
|
|
+ streamLine_->ModifyStreamStyle(streamType);
|
|
|
+
|
|
|
+
|
|
|
+ streamLine_->ModifyInitialStep(initStrp);
|
|
|
+ streamLine_->ModifyMaxPropagation(maxPropgation);
|
|
|
+ streamLine_->ModifyMinimumStep(minStep);
|
|
|
+
|
|
|
+ if (showState)
|
|
|
+ {
|
|
|
+ streamLine_->ShowOnStreamTraceLines();
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ streamLine_->ShowOffStreamTraceLines();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ToolState)
|
|
|
+ {
|
|
|
+ streamLine_->ShowOnStreamWidget();
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ streamLine_->ShowOffStreamWidget();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ render_->Update();
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetStreamSelectState(bool flag)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::DeleteAllStream()
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: hide all actors in th renderer
|
|
|
+ * @param: void
|
|
|
+ * @ret: void
|
|
|
+ * @birth: created by czm in 20230519
|
|
|
+ */
|
|
|
+void ResultVTKManager::HideAllActors()
|
|
|
+{
|
|
|
+ render_->HideAllActors();
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::HideAllUnshadeMeshActors()
|
|
|
+{
|
|
|
+ if(unmesh!=NULL){
|
|
|
+ unmesh->ShowOff();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::HideAllContourActors()
|
|
|
+{
|
|
|
+ if(uncontour!=NULL){
|
|
|
+ uncontour->ShowOff();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::HideAllGlyphActors()
|
|
|
+{
|
|
|
+ if(unglyph!=NULL)
|
|
|
+ {
|
|
|
+ unglyph->ShowOff();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::HideSliceActors()
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::HideStreamActors()
|
|
|
+{
|
|
|
+ if(streamLine_!=NULL)
|
|
|
+ {
|
|
|
+ streamLine_->ShowOff();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::HideXyplot2dSliceActors()
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::GetActorText(string text_, vector<double> position_XY, double fontsize, vector<double> color)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::UpdataZoomModel(double factor)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::ChangeMeshType(int type)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::DisplayXyplot2dSlice(int meshIndex, int scalarIndex)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+vector<double> ResultVTKManager::GetXyplot2dUnslicePosition()
|
|
|
+{
|
|
|
+ double* data2;
|
|
|
+ vector<double> origin;
|
|
|
+ if (xyplot2dSlice_ != NULL)
|
|
|
+ {
|
|
|
+ data2 = xyplot2dSlice_->GetSlicePlaneOrigin();
|
|
|
+ origin.push_back(data2[0]);
|
|
|
+ origin.push_back(data2[1]);
|
|
|
+ origin.push_back(data2[2]);
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ origin.push_back(0);
|
|
|
+ origin.push_back(0);
|
|
|
+ origin.push_back(0);
|
|
|
+ }
|
|
|
+ return origin;
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetXyplot2dSliceNormal(int normalIndex)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetXyplot2dSliceScalarIndex(int index)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::SetXyplot2dSlicePosition(vector<double> p)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/*
|
|
|
+ *@brief: get private scalar name
|
|
|
+ * @param: void
|
|
|
+ * @ret: scalarName
|
|
|
+ * @birth: created by czm in 20230519
|
|
|
+ */
|
|
|
+string ResultVTKManager::getScalarName()
|
|
|
+{
|
|
|
+ return this->scalarName_;
|
|
|
+}
|
|
|
+
|
|
|
+void ResultVTKManager::create_streamTrace(double x, double y, double z)
|
|
|
+{
|
|
|
+
|
|
|
+}
|