|  | @@ -25,9 +25,9 @@ handlePool::handlePool(QTabWidget *w)
 | 
	
		
			
				|  |  |      this->w=w;
 | 
	
		
			
				|  |  |      map_contourdisplay.clear();
 | 
	
		
			
				|  |  |      map_linedisplay.clear();
 | 
	
		
			
				|  |  | -    map_manager.clear();
 | 
	
		
			
				|  |  | -    map_render.clear();
 | 
	
		
			
				|  |  | -    map_resultmanager.clear();
 | 
	
		
			
				|  |  | +    qmapManager.clear();
 | 
	
		
			
				|  |  | +    qmapRender.clear();
 | 
	
		
			
				|  |  | +    qmapResultmanager.clear();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -39,11 +39,11 @@ handlePool::handlePool(QTabWidget *w)
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  handlePool::~handlePool()
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -    qDeleteAll(map_render);
 | 
	
		
			
				|  |  | -    qDeleteAll(map_manager);
 | 
	
		
			
				|  |  | +    qDeleteAll(qmapRender);
 | 
	
		
			
				|  |  | +    qDeleteAll(qmapManager);
 | 
	
		
			
				|  |  |      qDeleteAll(map_contourdisplay);
 | 
	
		
			
				|  |  |      qDeleteAll(map_linedisplay);
 | 
	
		
			
				|  |  | -    qDeleteAll(map_resultmanager);
 | 
	
		
			
				|  |  | +    qDeleteAll(qmapResultmanager);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /*
 | 
	
	
		
			
				|  | @@ -76,80 +76,47 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
 | 
	
		
			
				|  |  |          object = NULL;
 | 
	
		
			
				|  |  |          return;
 | 
	
		
			
				|  |  |      }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);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        QString m_filePath = object->filePath;
 | 
	
		
			
				|  |  | -        if(m_filePath.isEmpty()){
 | 
	
		
			
				|  |  | -            cout<<"file path is Empty!"<<endl;
 | 
	
		
			
				|  |  | -            return;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        MeshManager* meshmanager = NULL;
 | 
	
		
			
				|  |  | -        if(!map_manager.contains(object->proId)){
 | 
	
		
			
				|  |  | -            meshmanager = new MeshManager();
 | 
	
		
			
				|  |  | -            map_manager.insert(object->proId,meshmanager);
 | 
	
		
			
				|  |  | -            bool f = meshmanager->LoadData(m_filePath);
 | 
	
		
			
				|  |  | -            if(f){
 | 
	
		
			
				|  |  | -                if(render_){
 | 
	
		
			
				|  |  | -                    meshmanager->DisplayMesh(render_);
 | 
	
		
			
				|  |  | -                    render_->ZoomToExtents();
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }else{
 | 
	
		
			
				|  |  | -            meshmanager = map_manager.value(object->proId);
 | 
	
		
			
				|  |  | -            render_->CaptureWindowImages();
 | 
	
		
			
				|  |  | -            if(!render_->img.isEmpty()){
 | 
	
		
			
				|  |  | -                std::string img_ = render_->img.toStdString();
 | 
	
		
			
				|  |  | -                std::string json_ = object->ToJson("img",img_);
 | 
	
		
			
				|  |  | -                emit sendImg_handlePoolToSendstate(json_);//信号
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            delete object;
 | 
	
		
			
				|  |  | -            object = NULL;
 | 
	
		
			
				|  |  | -            return;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +        judgeLoaddata(object,render_);
 | 
	
		
			
				|  |  | +        return;
 | 
	
		
			
				|  |  |      }else if(object->action == "zoomout"){//缩小
 | 
	
		
			
				|  |  | -        if(!map_render.contains(object->proId))return;
 | 
	
		
			
				|  |  | -        render_ = map_render.value(object->proId);
 | 
	
		
			
				|  |  | +        if(!qmapRender.contains(object->proId))return;
 | 
	
		
			
				|  |  | +        render_ = qmapRender.value(object->proId);
 | 
	
		
			
				|  |  |          render_->camera_->ZoomOut();
 | 
	
		
			
				|  |  |      }else if(object->action == "zoomin"){
 | 
	
		
			
				|  |  | -        if(!map_render.contains(object->proId))return;
 | 
	
		
			
				|  |  | -        render_ = map_render.value(object->proId);
 | 
	
		
			
				|  |  | +        if(!qmapRender.contains(object->proId))return;
 | 
	
		
			
				|  |  | +        render_ = qmapRender.value(object->proId);
 | 
	
		
			
				|  |  |          render_->camera_->ZoomIn();
 | 
	
		
			
				|  |  |      }else if(object->action == "AlignToPlusAxisX"){//正x轴对齐
 | 
	
		
			
				|  |  | -        if(!map_render.contains(object->proId))return;
 | 
	
		
			
				|  |  | -        render_ = map_render.value(object->proId);
 | 
	
		
			
				|  |  | +        if(!qmapRender.contains(object->proId))return;
 | 
	
		
			
				|  |  | +        render_ = qmapRender.value(object->proId);
 | 
	
		
			
				|  |  |          render_->camera_->AlignToPlusAxisX();
 | 
	
		
			
				|  |  |      }else if(object->action == "AlignToPlusAxisY"){//正y轴对齐
 | 
	
		
			
				|  |  | -        if(!map_render.contains(object->proId))return;
 | 
	
		
			
				|  |  | -        render_ = map_render.value(object->proId);
 | 
	
		
			
				|  |  | +        if(!qmapRender.contains(object->proId))return;
 | 
	
		
			
				|  |  | +        render_ = qmapRender.value(object->proId);
 | 
	
		
			
				|  |  |          render_->camera_->AlignToPlusAxisY();
 | 
	
		
			
				|  |  |      }else if(object->action == "AlignToPlusAxisZ"){//正z轴对齐
 | 
	
		
			
				|  |  | -        if(!map_render.contains(object->proId))return;
 | 
	
		
			
				|  |  | -        render_ = map_render.value(object->proId);
 | 
	
		
			
				|  |  | +        if(!qmapRender.contains(object->proId))return;
 | 
	
		
			
				|  |  | +        render_ = qmapRender.value(object->proId);
 | 
	
		
			
				|  |  |          render_->camera_->AlignToPlusAxisZ();
 | 
	
		
			
				|  |  |      }else if(object->action == "AlignToMinusAxisX"){//负x轴对齐
 | 
	
		
			
				|  |  | -        if(!map_render.contains(object->proId))return;
 | 
	
		
			
				|  |  | -        render_ = map_render.value(object->proId);
 | 
	
		
			
				|  |  | +        if(!qmapRender.contains(object->proId))return;
 | 
	
		
			
				|  |  | +        render_ = qmapRender.value(object->proId);
 | 
	
		
			
				|  |  |          render_->camera_->AlignToMinusAxisX();
 | 
	
		
			
				|  |  |      }else if(object->action == "AlignToMinusAxisY"){//负y轴对齐
 | 
	
		
			
				|  |  | -        if(!map_render.contains(object->proId))return;
 | 
	
		
			
				|  |  | -        render_ = map_render.value(object->proId);
 | 
	
		
			
				|  |  | +        if(!qmapRender.contains(object->proId))return;
 | 
	
		
			
				|  |  | +        render_ = qmapRender.value(object->proId);
 | 
	
		
			
				|  |  |          render_->camera_->AlignToMinusAxisY();
 | 
	
		
			
				|  |  |      }else if(object->action == "AlignToMinusAxisZ"){//负z轴对齐
 | 
	
		
			
				|  |  | -        if(!map_render.contains(object->proId))return;
 | 
	
		
			
				|  |  | -        render_ = map_render.value(object->proId);
 | 
	
		
			
				|  |  | +        if(!qmapRender.contains(object->proId))return;
 | 
	
		
			
				|  |  | +        render_ = qmapRender.value(object->proId);
 | 
	
		
			
				|  |  |          render_->camera_->AlignToMinusAxisZ();
 | 
	
		
			
				|  |  | -    }else if(object->action == "TransformToIsometric"){
 | 
	
		
			
				|  |  | -        if(!map_render.contains(object->proId))return;
 | 
	
		
			
				|  |  | -        render_ = map_render.value(object->proId);
 | 
	
		
			
				|  |  | +    }else if(object->action == "TransformToIsometric"){//等距视图
 | 
	
		
			
				|  |  | +        if(!qmapRender.contains(object->proId))return;
 | 
	
		
			
				|  |  | +        render_ = qmapRender.value(object->proId);
 | 
	
		
			
				|  |  |          render_->camera_->TransformToIsometric();
 | 
	
		
			
				|  |  |      }else if(object->action == "ResultImport"){//导入结果
 | 
	
		
			
				|  |  | -        if(!resultImport(object,render_))return;
 | 
	
		
			
				|  |  | +        resultImport(object,render_);
 | 
	
		
			
				|  |  | +        return;
 | 
	
		
			
				|  |  |      }else if(object->action == "ContourDisplay"){//显示云图
 | 
	
		
			
				|  |  |          if(!result_contourdisplay(object,render_)){
 | 
	
		
			
				|  |  |              cout<<"please import tecplot result first!"<<endl;
 | 
	
	
		
			
				|  | @@ -161,45 +128,67 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    render_->CaptureWindowImages();
 | 
	
		
			
				|  |  | -    if(!render_->img.isEmpty()){
 | 
	
		
			
				|  |  | -        std::string img_ = render_->img.toStdString();
 | 
	
		
			
				|  |  | -        std::string json_ = object->ToJson("img",img_);
 | 
	
		
			
				|  |  | -        emit sendImg_handlePoolToSendstate(json_);//信号
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    delete object;
 | 
	
		
			
				|  |  | -    object = NULL;
 | 
	
		
			
				|  |  | +    send_picture(object,render_);//发送图片
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -//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();
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * @brief: deal with msg about loaddata
 | 
	
		
			
				|  |  | + * @param: vtkJsonObject QVTKRenderer
 | 
	
		
			
				|  |  | + * @ret: bool
 | 
	
		
			
				|  |  | + * @birth: created by czm in 20230425
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +void handlePool::judgeLoaddata(vtkJsonObject *object, QVTKRenderer *render_)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    if(!qmapRender.contains(object->proId)){//判断有无窗口
 | 
	
		
			
				|  |  | +        render_ = new QVTKRenderer();
 | 
	
		
			
				|  |  | +        qmapRender.insert(object->proId,render_);
 | 
	
		
			
				|  |  | +        render_->init();
 | 
	
		
			
				|  |  | +        w->addTab(render_->GetWidget(),object->proId);
 | 
	
		
			
				|  |  | +    }else{
 | 
	
		
			
				|  |  | +        render_ = qmapRender.value(object->proId);
 | 
	
		
			
				|  |  | +        auto flag = render_->widgetFlag;
 | 
	
		
			
				|  |  | +        if(flag == QVTKRenderer::WidgetModel::NoModel){
 | 
	
		
			
				|  |  | +        }else if(flag == QVTKRenderer::WidgetModel::UgridModel){//判断窗口当前模型
 | 
	
		
			
				|  |  | +            if(qmapManager.value(object->proId)->filePath == object->filePath){
 | 
	
		
			
				|  |  | +                send_picture(object,render_);
 | 
	
		
			
				|  |  | +                return;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            render_->HideAllActors();
 | 
	
		
			
				|  |  | +            render_->RemoveAllActors();
 | 
	
		
			
				|  |  | +        }else if(flag == QVTKRenderer::WidgetModel::ResultModel){
 | 
	
		
			
				|  |  | +            render_->HideAllActors();
 | 
	
		
			
				|  |  | +            render_->RemoveAllActors();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    //QString m_filePath = object->filePath;//测试路径
 | 
	
		
			
				|  |  | +    QString m_filePath = "F:\\czm\\vtkfile\\tfg.ugrid";
 | 
	
		
			
				|  |  | +    QFileInfo fileinfo_(m_filePath);
 | 
	
		
			
				|  |  | +    if(!fileinfo_.isFile()){
 | 
	
		
			
				|  |  | +        cout<<"file path is Empty!"<<endl;
 | 
	
		
			
				|  |  | +        send_picture(object,render_);
 | 
	
		
			
				|  |  | +        return;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    MeshManager* meshmanager = NULL;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -//    vtkNew<vtkPolyData> polydata;
 | 
	
		
			
				|  |  | -//    polydata->SetPoints(points);
 | 
	
		
			
				|  |  | -//    polydata->SetPolys(cells);
 | 
	
		
			
				|  |  | +    meshmanager = new MeshManager();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -//    vtkNew<vtkPolyDataMapper> mapper;
 | 
	
		
			
				|  |  | -//    mapper->SetInputData(polydata);
 | 
	
		
			
				|  |  | -//    mapper->Update();
 | 
	
		
			
				|  |  | +    bool f = meshmanager->LoadData(m_filePath);
 | 
	
		
			
				|  |  | +    if(f){
 | 
	
		
			
				|  |  | +        if(render_){
 | 
	
		
			
				|  |  | +            meshmanager->DisplayMesh(render_);
 | 
	
		
			
				|  |  | +            render_->ZoomToExtents();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    qmapRender.value(object->proId)->widgetFlag = QVTKRenderer::WidgetModel::UgridModel;//设置widget中有模型
 | 
	
		
			
				|  |  | +    if(!qmapManager.contains(object->proId)){//判断加载模型和当前模型是不是一样
 | 
	
		
			
				|  |  | +        qmapManager.insert(object->proId,set_map_meshManager(object,meshmanager));
 | 
	
		
			
				|  |  | +    }else{
 | 
	
		
			
				|  |  | +        delete qmapManager.value(object->proId);//析构原来的
 | 
	
		
			
				|  |  | +        qmapManager[object->proId] = (set_map_meshManager(object,meshmanager));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    send_picture(object,render_);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -//    //to do
 | 
	
		
			
				|  |  | -//    vtkActor* actor_ = vtkActor::New();
 | 
	
		
			
				|  |  | -//    actor_->SetMapper(mapper);
 | 
	
		
			
				|  |  | -//    actor_->GetProperty()->SetColor(1, 1, 1);
 | 
	
		
			
				|  |  | -//    this->actor = actor_;
 | 
	
		
			
				|  |  | -//}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /*
 | 
	
		
			
				|  |  |   * @brief: import result file
 | 
	
	
		
			
				|  | @@ -214,39 +203,75 @@ bool handlePool::resultImport(vtkJsonObject *object_, QVTKRenderer *renderer_)
 | 
	
		
			
				|  |  |          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
 | 
	
		
			
				|  |  | +    //判断有无窗口
 | 
	
		
			
				|  |  | +    if(!qmapRender.contains(object_->proId)){
 | 
	
		
			
				|  |  | +        renderer_ = new QVTKRenderer();
 | 
	
		
			
				|  |  | +        qmapRender.insert(object_->proId,renderer_);
 | 
	
		
			
				|  |  | +        renderer_->init();
 | 
	
		
			
				|  |  | +        w->addTab(renderer_->GetWidget(),object_->proId);
 | 
	
		
			
				|  |  | +        renderer_->widgetFlag = QVTKRenderer::WidgetModel::NoModel;
 | 
	
		
			
				|  |  |      }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]);
 | 
	
		
			
				|  |  | -            bool f =rsMeshManager->LoadData(object_->filePath+"/"+fileName_list[i]);
 | 
	
		
			
				|  |  | -            if(f){
 | 
	
		
			
				|  |  | -                rsMeshManager->SetSaveIndex(i);
 | 
	
		
			
				|  |  | -                if(renderer_){
 | 
	
		
			
				|  |  | -                    rsMeshManager->DisplayMesh(renderer_);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | +        renderer_ = qmapRender[object_->proId];
 | 
	
		
			
				|  |  | +        auto flag = renderer_->widgetFlag;
 | 
	
		
			
				|  |  | +        if(flag==QVTKRenderer::WidgetModel::UgridModel){
 | 
	
		
			
				|  |  | +            renderer_ = qmapRender.value(object_->proId);
 | 
	
		
			
				|  |  | +            renderer_->HideAllActors();
 | 
	
		
			
				|  |  | +            renderer_->RemoveAllActors();
 | 
	
		
			
				|  |  | +        }else if(flag ==QVTKRenderer::WidgetModel::ResultModel){
 | 
	
		
			
				|  |  | +            if(qmapResultmanager.value(object_->proId)->fileName == object_->getFileName()){//to do 详细比对文件名
 | 
	
		
			
				|  |  | +                send_picture(object_,renderer_);
 | 
	
		
			
				|  |  | +                return true;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            //qmapResultmanager.value(object_->proId)->resultMeshManager_->HideAllActors();
 | 
	
		
			
				|  |  | +//            renderer_->HideAllActors();
 | 
	
		
			
				|  |  | +//            renderer_->RemoveAllActors();
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        rsMeshManager->ShowAll();
 | 
	
		
			
				|  |  | -        rsMeshManager->DisplayMeshByIndex(0);
 | 
	
		
			
				|  |  | -        rsMeshManager->SetNameTypeMap();
 | 
	
		
			
				|  |  | -        renderer_->ZoomToExtents();
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    emit sendImg_handlePoolToSendstate(object_->ToJson("importResult",buildResultImport_msg(rsMeshManager).toStdString()));
 | 
	
		
			
				|  |  | -    renderer_->CaptureWindowImages();
 | 
	
		
			
				|  |  | -    if(!renderer_->img.isEmpty()){
 | 
	
		
			
				|  |  | -        std::string img_ = renderer_->img.toStdString();
 | 
	
		
			
				|  |  | -        std::string json_ = object_->ToJson("img",img_);
 | 
	
		
			
				|  |  | -        emit sendImg_handlePoolToSendstate(json_);//信号
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    ResultMeshManager* rsMeshManager = new ResultMeshManager(); 
 | 
	
		
			
				|  |  | +    rsMeshManager->Clear();
 | 
	
		
			
				|  |  | +    bool flag = true;
 | 
	
		
			
				|  |  | +    for(int i =0;i<fileName_list.size();i++){
 | 
	
		
			
				|  |  | +        bool f =rsMeshManager->LoadData(object_->filePath+"/"+fileName_list[i]);
 | 
	
		
			
				|  |  | +        if(f){
 | 
	
		
			
				|  |  | +            rsMeshManager->SetSaveIndex(i);
 | 
	
		
			
				|  |  | +            if(renderer_){
 | 
	
		
			
				|  |  | +                rsMeshManager->DisplayMesh(renderer_);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }else{
 | 
	
		
			
				|  |  | +            flag = false;
 | 
	
		
			
				|  |  | +            break;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +    if(flag)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            rsMeshManager->HideAllActors();
 | 
	
		
			
				|  |  | +            rsMeshManager->ShowAll();
 | 
	
		
			
				|  |  | +            rsMeshManager->DisplayMeshByIndex(0);
 | 
	
		
			
				|  |  | +            rsMeshManager->SetNameTypeMap();
 | 
	
		
			
				|  |  | +            rsMeshManager->InitWidgetsParameter();
 | 
	
		
			
				|  |  | +            renderer_->ZoomToExtents();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    ContourDisplayW *contourdw = new ContourDisplayW();//云图窗口参数初始化
 | 
	
		
			
				|  |  | +    rsMeshManager->SetCotourWidget(contourdw);
 | 
	
		
			
				|  |  | +    rsMeshManager->SetWidgetRange();
 | 
	
		
			
				|  |  | +    rsMeshManager->SetWidgetScalarName();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    delete object_;
 | 
	
		
			
				|  |  | -    object_ = NULL;
 | 
	
		
			
				|  |  | +    LineDisplayW *linedw = new LineDisplayW();
 | 
	
		
			
				|  |  | +    rsMeshManager->SetLineWidget(linedw);
 | 
	
		
			
				|  |  | +    rsMeshManager->SetWidgetRange();
 | 
	
		
			
				|  |  | +    rsMeshManager->SetWidgetScalarName();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    renderer_->widgetFlag = QVTKRenderer::WidgetModel::ResultModel;//设置当前窗口模型状态
 | 
	
		
			
				|  |  | +    if(qmapResultmanager.contains(object_->proId)){//加载不同的结果文件
 | 
	
		
			
				|  |  | +        delete qmapResultmanager.value(object_->proId);
 | 
	
		
			
				|  |  | +        qmapResultmanager[object_->proId] = (set_map_resultManager(object_,rsMeshManager));
 | 
	
		
			
				|  |  | +    }else{
 | 
	
		
			
				|  |  | +        qmapResultmanager[object_->proId]=(set_map_resultManager(object_,rsMeshManager));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    emit sendImg_handlePoolToSendstate(object_->ToJson("importResult",buildResultImport_msg(rsMeshManager)));//发送结果数据
 | 
	
		
			
				|  |  | +    send_picture(object_,renderer_);
 | 
	
		
			
				|  |  |      return true;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  /*
 | 
	
	
		
			
				|  | @@ -258,22 +283,17 @@ bool handlePool::resultImport(vtkJsonObject *object_, QVTKRenderer *renderer_)
 | 
	
		
			
				|  |  |  bool handlePool::result_contourdisplay(vtkJsonObject *object_,QVTKRenderer* render_)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      ContourDisplay* condis = NULL;
 | 
	
		
			
				|  |  | -    if(map_resultmanager.contains(object_->proId)) return false;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if(!qmapResultmanager.contains(object_->proId)) return false;
 | 
	
		
			
				|  |  | +    render_ = qmapRender[object_->proId];
 | 
	
		
			
				|  |  |      if(map_contourdisplay.contains(object_->proId)){
 | 
	
		
			
				|  |  | -       condis = map_contourdisplay.value(object_->proId);
 | 
	
		
			
				|  |  | +        condis = map_contourdisplay.value(object_->proId);//to do
 | 
	
		
			
				|  |  |      }else{
 | 
	
		
			
				|  |  | -        condis = new ContourDisplay(map_resultmanager.value(object_->proId));
 | 
	
		
			
				|  |  | +        condis = new ContourDisplay(qmapResultmanager[object_->proId]->resultMeshManager_);
 | 
	
		
			
				|  |  |          map_contourdisplay.insert(object_->proId,condis);
 | 
	
		
			
				|  |  |          condis->contourdisplay_execute(object_);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    render_->CaptureWindowImages();
 | 
	
		
			
				|  |  | -    if(!render_->img.isEmpty()){
 | 
	
		
			
				|  |  | -        std::string img_ = render_->img.toStdString();
 | 
	
		
			
				|  |  | -        std::string json_ = object_->ToJson("img",img_);
 | 
	
		
			
				|  |  | -        emit sendImg_handlePoolToSendstate(json_);//信号
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    delete object_;
 | 
	
		
			
				|  |  | -    object_ = NULL;
 | 
	
		
			
				|  |  | +    send_picture(object_,render_);
 | 
	
		
			
				|  |  |      return true;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -286,22 +306,16 @@ bool handlePool::result_contourdisplay(vtkJsonObject *object_,QVTKRenderer* rend
 | 
	
		
			
				|  |  |  bool handlePool::result_linedisplay(vtkJsonObject *object_,QVTKRenderer* render_)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      LineDisplay* linedis = NULL;
 | 
	
		
			
				|  |  | -    if(map_resultmanager.contains(object_->proId))return false;
 | 
	
		
			
				|  |  | +    if(!qmapResultmanager.contains(object_->proId))return false;
 | 
	
		
			
				|  |  | +    render_ = qmapRender[object_->proId];
 | 
	
		
			
				|  |  |      if(map_linedisplay.contains(object_->proId)){
 | 
	
		
			
				|  |  |          linedis = map_linedisplay.value(object_->proId);
 | 
	
		
			
				|  |  |      }else{
 | 
	
		
			
				|  |  | -        linedis = new LineDisplay(map_resultmanager.value(object_->proId));
 | 
	
		
			
				|  |  | +        linedis = new LineDisplay(qmapResultmanager.value(object_->proId)->resultMeshManager_);
 | 
	
		
			
				|  |  |          map_linedisplay.insert(object_->proId,linedis);
 | 
	
		
			
				|  |  |          linedis->linedisplay_execute(object_);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    render_->CaptureWindowImages();
 | 
	
		
			
				|  |  | -    if(!render_->img.isEmpty()){
 | 
	
		
			
				|  |  | -        std::string img_ = render_->img.toStdString();
 | 
	
		
			
				|  |  | -        std::string json_ = object_->ToJson("img",img_);
 | 
	
		
			
				|  |  | -        emit sendImg_handlePoolToSendstate(json_);//信号
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -    delete object_;
 | 
	
		
			
				|  |  | -    object_ = NULL;
 | 
	
		
			
				|  |  | +    send_picture(object_,render_);
 | 
	
		
			
				|  |  |      return true;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -335,46 +349,85 @@ bool handlePool::result_linedisplay(vtkJsonObject *object_,QVTKRenderer* render_
 | 
	
		
			
				|  |  |   * @ret: msg(QString)
 | 
	
		
			
				|  |  |   * @birth: created by czm in 20230424
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -QString handlePool::buildResultImport_msg(ResultMeshManager *cmanager)
 | 
	
		
			
				|  |  | +QMap<QString,string> handlePool::buildResultImport_msg(ResultMeshManager *cmanager)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -    QString msg;
 | 
	
		
			
				|  |  | -    msg+="NameTypeMap(";
 | 
	
		
			
				|  |  | -    for(auto it=cmanager->GetNameTypeMap().begin();it!=cmanager->GetNameTypeMap().end();it++){
 | 
	
		
			
				|  |  | -        msg+=QString::fromStdString(it->first);
 | 
	
		
			
				|  |  | -        msg+=" ";
 | 
	
		
			
				|  |  | -        msg+=QString::number(it->second);
 | 
	
		
			
				|  |  | +    QMap<QString,string> map_tmp;
 | 
	
		
			
				|  |  | +    cmanager->SetNameTypeMap();
 | 
	
		
			
				|  |  | +    map<string,int> map_ = cmanager->GetNameTypeMap();
 | 
	
		
			
				|  |  | +    string msg;
 | 
	
		
			
				|  |  | +    for(map<string,int>::iterator it=map_.begin();it!=map_.end();it++){
 | 
	
		
			
				|  |  | +        msg+=removeSpaces(it->first);
 | 
	
		
			
				|  |  | +        msg+="#";
 | 
	
		
			
				|  |  | +        msg+=to_string(it->second);//0-point scalar 1-cell scalar
 | 
	
		
			
				|  |  |          msg+=",";
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    msg.replace(msg.size()-1,1,")");
 | 
	
		
			
				|  |  | -    msg+="ScalarName_vector(";
 | 
	
		
			
				|  |  | +    msg = msg.erase(msg.size()-1);
 | 
	
		
			
				|  |  | +    map_tmp.insert("nameTypes",msg);
 | 
	
		
			
				|  |  | +    msg.clear();
 | 
	
		
			
				|  |  |      for(int i=0;i<cmanager->GetMeshScalarNameVec().size();i++){
 | 
	
		
			
				|  |  | -        if(i == cmanager->GetMeshScalarNameVec().size()-1){
 | 
	
		
			
				|  |  | -            msg+=QString::fromStdString(cmanager->GetMeshScalarNameVec()[i]);
 | 
	
		
			
				|  |  | -            msg+=")";
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        msg += QString::fromStdString(cmanager->GetMeshScalarNameVec()[i]);
 | 
	
		
			
				|  |  | -        msg+=",";
 | 
	
		
			
				|  |  | +        msg += removeSpaces(cmanager->GetMeshScalarNameVec()[i]);
 | 
	
		
			
				|  |  | +        msg += ",";
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    msg += "MinRange(";
 | 
	
		
			
				|  |  | -    msg += QString::number(cmanager->getRange()[0]);
 | 
	
		
			
				|  |  | -    msg += ")MaxRange(";
 | 
	
		
			
				|  |  | -    msg += QString::number(cmanager->getRange()[1]);
 | 
	
		
			
				|  |  | -    msg += ")scalarName(";
 | 
	
		
			
				|  |  | -    msg +=  QString::fromStdString(cmanager->getScalarName());
 | 
	
		
			
				|  |  | -    msg += ")";
 | 
	
		
			
				|  |  | +    msg = msg.erase(msg.size()-1);
 | 
	
		
			
				|  |  | +    map_tmp.insert("scalarNames",msg);
 | 
	
		
			
				|  |  | +    msg.clear();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    return msg;
 | 
	
		
			
				|  |  | +    msg = to_string(cmanager->getRange()[0]);
 | 
	
		
			
				|  |  | +    map_tmp.insert("range0",msg);
 | 
	
		
			
				|  |  | +    msg.clear();
 | 
	
		
			
				|  |  | +    msg = to_string(cmanager->getRange()[1]);
 | 
	
		
			
				|  |  | +    map_tmp.insert("range1",msg);
 | 
	
		
			
				|  |  | +    msg.clear();
 | 
	
		
			
				|  |  | +    msg = cmanager->GetMeshScalarNameVec()[0];
 | 
	
		
			
				|  |  | +    map_tmp.insert("scalarName",removeSpaces(msg));
 | 
	
		
			
				|  |  | +    return map_tmp;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /*
 | 
	
		
			
				|  |  | - * @brief: get map which save render
 | 
	
		
			
				|  |  | + * @brief: send picture
 | 
	
		
			
				|  |  | + * @param: vtkJsonObject QVTKRenderer
 | 
	
		
			
				|  |  | + * @ret: void
 | 
	
		
			
				|  |  | + * @birth: created by czm in 20230425
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +void handlePool::send_picture(vtkJsonObject *object, QVTKRenderer *render_)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    render_->CaptureWindowImages();
 | 
	
		
			
				|  |  | +    if(!render_->img.isEmpty()){
 | 
	
		
			
				|  |  | +        std::string img_ = render_->img.toStdString();
 | 
	
		
			
				|  |  | +        QMap<QString,string> map;
 | 
	
		
			
				|  |  | +        map["img"] = img_;
 | 
	
		
			
				|  |  | +        std::string json_ = object->ToJson("img",map);
 | 
	
		
			
				|  |  | +        emit sendImg_handlePoolToSendstate(json_);//信号
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    delete object;
 | 
	
		
			
				|  |  | +    object = NULL;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * @brief: remove string's spaces
 | 
	
		
			
				|  |  | + * @param: string
 | 
	
		
			
				|  |  | + * @ret: string
 | 
	
		
			
				|  |  | + * @birth: created by czm in 20230426
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +string handlePool::removeSpaces(string str)//删除字符串中的\u0000
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    QChar h0 = 0x00;
 | 
	
		
			
				|  |  | +    QString str_;
 | 
	
		
			
				|  |  | +    if(QString::fromStdString(str).contains(h0)){
 | 
	
		
			
				|  |  | +        str_=QString::fromStdString(str).replace(h0,"");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    return str_.toStdString();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * @brief: get map which save qvtkrender
 | 
	
		
			
				|  |  |   * @param: void
 | 
	
		
			
				|  |  |   * @ret: QMap<QString, QVTKRenderer *>
 | 
	
		
			
				|  |  |   * @birth: created by czm in 20230420
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  QMap<QString, QVTKRenderer *> handlePool::getMapRender()
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -    return this->map_render;
 | 
	
		
			
				|  |  | +    return this->qmapRender;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /*
 | 
	
	
		
			
				|  | @@ -383,9 +436,39 @@ QMap<QString, QVTKRenderer *> handlePool::getMapRender()
 | 
	
		
			
				|  |  |   * @ret: QMap<QString, ResultMeshManager *>
 | 
	
		
			
				|  |  |   * @birth: created by czm in 20230420
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -QMap<QString, ResultMeshManager *> handlePool::getMapResultManager()
 | 
	
		
			
				|  |  | +QMap<QString, pid_resultManager *> handlePool::getMapResultManager()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    return this->qmapResultmanager;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * @brief: create a pid_meshManager
 | 
	
		
			
				|  |  | + * @param: vtkJsonObject MeshManager
 | 
	
		
			
				|  |  | + * @ret: map_meshManager
 | 
	
		
			
				|  |  | + * @birth: created by czm in 20230425
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +pid_meshManager *handlePool::set_map_meshManager(vtkJsonObject *object, MeshManager *mmanager_)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    pid_meshManager* meshManager_p = new pid_meshManager();
 | 
	
		
			
				|  |  | +    meshManager_p->meshManager_ = mmanager_;
 | 
	
		
			
				|  |  | +    meshManager_p->fileName = object->getFileName();
 | 
	
		
			
				|  |  | +    meshManager_p->filePath = object->filePath;
 | 
	
		
			
				|  |  | +    return meshManager_p;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + * @brief: create a pid_resultManager
 | 
	
		
			
				|  |  | + * @param: vtkJsonObject ResultMeshManager
 | 
	
		
			
				|  |  | + * @ret: pid_resultManager
 | 
	
		
			
				|  |  | + * @birth: created by czm in 20230425
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +pid_resultManager *handlePool::set_map_resultManager(vtkJsonObject *object, ResultMeshManager *rmanager_)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -    return this->map_resultmanager;
 | 
	
		
			
				|  |  | +    pid_resultManager *resultManager_p = new pid_resultManager();
 | 
	
		
			
				|  |  | +    resultManager_p->resultMeshManager_ = rmanager_;
 | 
	
		
			
				|  |  | +    resultManager_p->fileName = object->getFileName();
 | 
	
		
			
				|  |  | +    resultManager_p->filePath = object->filePath;
 | 
	
		
			
				|  |  | +    return resultManager_p;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /*
 | 
	
	
		
			
				|  | @@ -394,8 +477,8 @@ QMap<QString, ResultMeshManager *> handlePool::getMapResultManager()
 | 
	
		
			
				|  |  |   * @ret: QMap<QString, MeshManager *>
 | 
	
		
			
				|  |  |   * @birth: created by czm in 20230420
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -QMap<QString, MeshManager *> handlePool::getMapManager()
 | 
	
		
			
				|  |  | +QMap<QString, pid_meshManager *> handlePool::getMapManager()
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -    return this->map_manager;
 | 
	
		
			
				|  |  | +    return this->qmapManager;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |