|  | @@ -67,20 +67,16 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
 | 
											
												
													
														|  |          delete object;
 |  |          delete object;
 | 
											
												
													
														|  |          object = NULL;
 |  |          object = NULL;
 | 
											
												
													
														|  |          return;
 |  |          return;
 | 
											
												
													
														|  | -        //render_->init();
 |  | 
 | 
											
												
													
														|  | -        //emit sendWidget_handlePoolToWidget(render_->GetWidget());
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |      }else if(object->action == "loaddata"){
 |  |      }else if(object->action == "loaddata"){
 | 
											
												
													
														|  |          if(!map_render.contains(object->proId)){
 |  |          if(!map_render.contains(object->proId)){
 | 
											
												
													
														|  |              render_ = new QVTKRenderer();
 |  |              render_ = new QVTKRenderer();
 | 
											
												
													
														|  |              map_render.insert(object->proId,render_);
 |  |              map_render.insert(object->proId,render_);
 | 
											
												
													
														|  |              render_->init();
 |  |              render_->init();
 | 
											
												
													
														|  |              w->addTab(render_->GetWidget(),object->proId);
 |  |              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 = object->filePath;
 | 
											
												
													
														|  | -        //QString m_filePath="F:\\czm\\vtkfile\\tf.ugrid";
 |  | 
 | 
											
												
													
														|  | -        //QString m_filePath = "/cephfs/hcfd/solverdown/31f117acb7e74232a3267b091391eab2/hcfd/data_in";
 |  | 
 | 
											
												
													
														|  |          if(m_filePath.isEmpty()){
 |  |          if(m_filePath.isEmpty()){
 | 
											
												
													
														|  |              cout<<"file path is Empty!"<<endl;
 |  |              cout<<"file path is Empty!"<<endl;
 | 
											
												
													
														|  |              return;
 |  |              return;
 | 
											
										
											
												
													
														|  | @@ -98,18 +94,6 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |          }else{
 |  |          }else{
 | 
											
												
													
														|  |              meshmanager = map_manager.value(object->proId);
 |  |              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();
 |  |              render_->CaptureWindowImages();
 | 
											
												
													
														|  |              if(!render_->img.isEmpty()){
 |  |              if(!render_->img.isEmpty()){
 | 
											
												
													
														|  |                  std::string img_ = render_->img.toStdString();
 |  |                  std::string img_ = render_->img.toStdString();
 | 
											
										
											
												
													
														|  | @@ -120,11 +104,6 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
 | 
											
												
													
														|  |              object = NULL;
 |  |              object = NULL;
 | 
											
												
													
														|  |              return;
 |  |              return;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | -        //MeshManager *meshmanager = MeshManager::getInstance();
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -        //cout<<"action:"<<action.toStdString()<<endl;
 |  | 
 | 
											
												
													
														|  | -        //render_->CaptureWindowImages();
 |  | 
 | 
											
												
													
														|  |      }else if(object->action == "zoomout"){//缩小
 |  |      }else if(object->action == "zoomout"){//缩小
 | 
											
												
													
														|  |          if(!map_render.contains(object->proId))return;
 |  |          if(!map_render.contains(object->proId))return;
 | 
											
												
													
														|  |          render_ = map_render.value(object->proId);
 |  |          render_ = map_render.value(object->proId);
 | 
											
										
											
												
													
														|  | @@ -161,6 +140,13 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
 | 
											
												
													
														|  |          if(!map_render.contains(object->proId))return;
 |  |          if(!map_render.contains(object->proId))return;
 | 
											
												
													
														|  |          render_ = map_render.value(object->proId);
 |  |          render_ = map_render.value(object->proId);
 | 
											
												
													
														|  |          render_->camera_->RelocateToCenter();
 |  |          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();
 |  |      render_->CaptureWindowImages();
 | 
											
												
													
														|  |      if(!render_->img.isEmpty()){
 |  |      if(!render_->img.isEmpty()){
 | 
											
										
											
												
													
														|  | @@ -172,33 +158,158 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
 | 
											
												
													
														|  |      object = NULL;
 |  |      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;
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 |