|
@@ -67,20 +67,16 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
|
|
|
delete object;
|
|
|
object = NULL;
|
|
|
return;
|
|
|
- //render_->init();
|
|
|
- //emit sendWidget_handlePoolToWidget(render_->GetWidget());
|
|
|
-
|
|
|
}else if(object->action == "loaddata"){
|
|
|
if(!map_render.contains(object->proId)){
|
|
|
render_ = new QVTKRenderer();
|
|
|
map_render.insert(object->proId,render_);
|
|
|
render_->init();
|
|
|
w->addTab(render_->GetWidget(),object->proId);
|
|
|
+ }else{
|
|
|
+ render_ = map_render.value(object->proId);
|
|
|
}
|
|
|
- render_ = map_render.value(object->proId);
|
|
|
QString m_filePath = object->filePath;
|
|
|
- //QString m_filePath="F:\\czm\\vtkfile\\tf.ugrid";
|
|
|
- //QString m_filePath = "/cephfs/hcfd/solverdown/31f117acb7e74232a3267b091391eab2/hcfd/data_in";
|
|
|
if(m_filePath.isEmpty()){
|
|
|
cout<<"file path is Empty!"<<endl;
|
|
|
return;
|
|
@@ -98,18 +94,6 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
|
|
|
}
|
|
|
}else{
|
|
|
meshmanager = map_manager.value(object->proId);
|
|
|
-// vtkActorCollection *allActor=render_->GetRenderer()->GetActors();
|
|
|
-// vtkCollectionSimpleIterator pit;
|
|
|
-// vtkActor *currActor = nullptr;
|
|
|
-// for(allActor->InitTraversal(pit);(currActor = allActor->GetNextActor(pit));)
|
|
|
-// {
|
|
|
-// render_->GetRenderer()->RemoveActor(currActor);
|
|
|
-// render_->GetRenderer()->GetRenderWindow()->Render();
|
|
|
-// }
|
|
|
-// //meshmanager->Clear();
|
|
|
-// meshmanager =NULL;
|
|
|
-// //delete meshmanager;
|
|
|
-// meshmanager = new MeshManager();
|
|
|
render_->CaptureWindowImages();
|
|
|
if(!render_->img.isEmpty()){
|
|
|
std::string img_ = render_->img.toStdString();
|
|
@@ -120,11 +104,6 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
|
|
|
object = NULL;
|
|
|
return;
|
|
|
}
|
|
|
- //MeshManager *meshmanager = MeshManager::getInstance();
|
|
|
-
|
|
|
-
|
|
|
- //cout<<"action:"<<action.toStdString()<<endl;
|
|
|
- //render_->CaptureWindowImages();
|
|
|
}else if(object->action == "zoomout"){//缩小
|
|
|
if(!map_render.contains(object->proId))return;
|
|
|
render_ = map_render.value(object->proId);
|
|
@@ -161,6 +140,13 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
|
|
|
if(!map_render.contains(object->proId))return;
|
|
|
render_ = map_render.value(object->proId);
|
|
|
render_->camera_->RelocateToCenter();
|
|
|
+ }else if(object->action == "ResultImport"){//导入结果
|
|
|
+ if(!resultImport(object,render_))return;
|
|
|
+ }else if(object->action == "ContourDisplay"){
|
|
|
+ if(!result_contourdisplay(object,render_)){
|
|
|
+ cout<<"please import tecplot result!"<<endl;
|
|
|
+ }
|
|
|
+ return;
|
|
|
}
|
|
|
render_->CaptureWindowImages();
|
|
|
if(!render_->img.isEmpty()){
|
|
@@ -172,33 +158,158 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
|
|
|
object = NULL;
|
|
|
}
|
|
|
|
|
|
-void handlePool::loadTecplotFile(QString fileName)
|
|
|
+//void handlePool::loadTecplotFile(QString fileName)
|
|
|
+//{
|
|
|
+// vtkNew<vtkTecplotReader> reader;
|
|
|
+// if (fileName == "") return;
|
|
|
+// reader->SetFileName(fileName.toStdString().c_str());
|
|
|
+// reader->Update();
|
|
|
+
|
|
|
+// vtkNew<vtkAppendFilter> filter;
|
|
|
+// filter->AddInputData(reader->GetOutput()->GetBlock(0));
|
|
|
+// filter->Update();
|
|
|
+
|
|
|
+// vtkUnstructuredGrid* grid = filter->GetOutput();
|
|
|
+// vtkPoints* points = grid->GetPoints();
|
|
|
+// vtkCellArray* cells = grid->GetCells();
|
|
|
+
|
|
|
+// vtkNew<vtkPolyData> polydata;
|
|
|
+// polydata->SetPoints(points);
|
|
|
+// polydata->SetPolys(cells);
|
|
|
+
|
|
|
+// vtkNew<vtkPolyDataMapper> mapper;
|
|
|
+// mapper->SetInputData(polydata);
|
|
|
+// mapper->Update();
|
|
|
+
|
|
|
+// //to do
|
|
|
+// vtkActor* actor_ = vtkActor::New();
|
|
|
+// actor_->SetMapper(mapper);
|
|
|
+// actor_->GetProperty()->SetColor(1, 1, 1);
|
|
|
+// this->actor = actor_;
|
|
|
+//}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: import result file
|
|
|
+ * @param: vtkobject* and renderer
|
|
|
+ * @ret: void
|
|
|
+ * @birth: created by czm in 20230420
|
|
|
+ */
|
|
|
+bool handlePool::resultImport(vtkJsonObject *object_, QVTKRenderer *renderer_)
|
|
|
+{
|
|
|
+ QStringList fileName_list=getFileNameList(object_->filePath);
|
|
|
+ if(fileName_list.isEmpty()){
|
|
|
+ cout<< "No Tecplot file is ready to read!"<<endl;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ ResultMeshManager* rsMeshManager = NULL;
|
|
|
+ if(map_resultmanager.contains(object_->proId)){
|
|
|
+ rsMeshManager = map_resultmanager.value(object_->proId);
|
|
|
+ return true;//同一个proid加载不同的file或结果,要销毁上一个结果和记录
|
|
|
+ //怎样判断和上次加载的file或结果不同?//to do
|
|
|
+ }else{
|
|
|
+ rsMeshManager = new ResultMeshManager();
|
|
|
+ map_resultmanager.insert(object_->proId,rsMeshManager);
|
|
|
+ for(int i =0;i<fileName_list.size();i++){
|
|
|
+ bool f =rsMeshManager->LoadData(fileName_list[i]);
|
|
|
+ if(f){
|
|
|
+ rsMeshManager->SetSaveIndex(i);
|
|
|
+ if(renderer_){
|
|
|
+ rsMeshManager->DisplayMesh(renderer_);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ rsMeshManager->ShowAll();
|
|
|
+ rsMeshManager->DisplayMeshByIndex(0);
|
|
|
+ rsMeshManager->SetNameTypeMap();
|
|
|
+ renderer_->ZoomToExtents();
|
|
|
+ }
|
|
|
+ renderer_->CaptureWindowImages();
|
|
|
+ if(!renderer_->img.isEmpty()){
|
|
|
+ std::string img_ = renderer_->img.toStdString();
|
|
|
+ std::string json_ = object_->ToJson(img_);
|
|
|
+ emit sendImg_handlePoolToSendstate(json_);//信号
|
|
|
+ }
|
|
|
+ delete object_;
|
|
|
+ object_ = NULL;
|
|
|
+ return true;
|
|
|
+}
|
|
|
+/*
|
|
|
+ * @brief: analysis msg about contourdisplay
|
|
|
+ * @param: object and render
|
|
|
+ * @ret: bool
|
|
|
+ * @birth: created by czm in 20230421
|
|
|
+ */
|
|
|
+bool handlePool::result_contourdisplay(vtkJsonObject *object_, QVTKRenderer *renderer_)
|
|
|
+{
|
|
|
+ ContourDisplay* condis = NULL;
|
|
|
+ if(map_resultmanager.contains(object_->proId)) return false;
|
|
|
+ if(map_contourdisplay.contains(object_->proId)){
|
|
|
+ condis = map_contourdisplay.value(object_->proId);
|
|
|
+ //condis->contourdisplay_execute();//需传入参数
|
|
|
+ }else{
|
|
|
+ condis = new ContourDisplay(map_resultmanager.value(object_->proId));
|
|
|
+ std::string json_= object_->ToJson(condis->buildContourMsg().toStdString());
|
|
|
+ emit sendImg_handlePoolToSendstate(json_);
|
|
|
+ }
|
|
|
+ delete object_;
|
|
|
+ object_ = NULL;
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: save the tecplot filename into QStringList
|
|
|
+ * @param: filePath
|
|
|
+ * @ret: QStringList
|
|
|
+ * @birth: created by czm in 20230420
|
|
|
+ */
|
|
|
+QStringList handlePool::getFileNameList(QString filePath)
|
|
|
+{
|
|
|
+ QStringList string_list;
|
|
|
+ QDir dir(filePath); //需不需要加"\\"?
|
|
|
+ if(!dir.exists()){
|
|
|
+ cout <<"filePath error!please check again!"<<endl;
|
|
|
+ return string_list;
|
|
|
+ }
|
|
|
+ dir.setFilter(QDir::Files);
|
|
|
+ QStringList list = dir.entryList(QDir::Files);
|
|
|
+ foreach (QFileInfo file, list) {
|
|
|
+ if(file.fileName().split(".").back() == "plt"){
|
|
|
+ string_list.append(file.fileName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return string_list;
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: get map which save render
|
|
|
+ * @param: void
|
|
|
+ * @ret: QMap<QString, QVTKRenderer *>
|
|
|
+ * @birth: created by czm in 20230420
|
|
|
+ */
|
|
|
+QMap<QString, QVTKRenderer *> handlePool::getMapRender()
|
|
|
+{
|
|
|
+ return this->map_render;
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: get map which save ResultMeshManager
|
|
|
+ * @param: void
|
|
|
+ * @ret: QMap<QString, ResultMeshManager *>
|
|
|
+ * @birth: created by czm in 20230420
|
|
|
+ */
|
|
|
+QMap<QString, ResultMeshManager *> handlePool::getMapResultManager()
|
|
|
+{
|
|
|
+ return this->map_resultmanager;
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * @brief: get map which save meshmanager
|
|
|
+ * @param: void
|
|
|
+ * @ret: QMap<QString, MeshManager *>
|
|
|
+ * @birth: created by czm in 20230420
|
|
|
+ */
|
|
|
+QMap<QString, MeshManager *> handlePool::getMapManager()
|
|
|
{
|
|
|
- vtkNew<vtkTecplotReader> reader;
|
|
|
- if (fileName == "") return;
|
|
|
- reader->SetFileName(fileName.toStdString().c_str());
|
|
|
- reader->Update();
|
|
|
-
|
|
|
- vtkNew<vtkAppendFilter> filter;
|
|
|
- filter->AddInputData(reader->GetOutput()->GetBlock(0));
|
|
|
- filter->Update();
|
|
|
-
|
|
|
- vtkUnstructuredGrid* grid = filter->GetOutput();
|
|
|
- vtkPoints* points = grid->GetPoints();
|
|
|
- vtkCellArray* cells = grid->GetCells();
|
|
|
-
|
|
|
- vtkNew<vtkPolyData> polydata;
|
|
|
- polydata->SetPoints(points);
|
|
|
- polydata->SetPolys(cells);
|
|
|
-
|
|
|
- vtkNew<vtkPolyDataMapper> mapper;
|
|
|
- mapper->SetInputData(polydata);
|
|
|
- mapper->Update();
|
|
|
-
|
|
|
- //to do
|
|
|
- vtkActor* actor_ = vtkActor::New();
|
|
|
- actor_->SetMapper(mapper);
|
|
|
- actor_->GetProperty()->SetColor(1, 1, 1);
|
|
|
- this->actor = actor_;
|
|
|
+ return this->map_manager;
|
|
|
}
|
|
|
|