소스 검색

0505 矢量图

caizm 2 년 전
부모
커밋
c8705161d7

+ 26 - 3
CAE_Solution/src/VTK/Manager/ResultMeshManager.cpp

@@ -1061,9 +1061,13 @@ void ResultMeshManager::SetVectorWidget(VectorW* w)
     vectorWidget_ = w;
     if (meshObj_ != NULL)
     {
-        vectorWidget_->GetData_u(GetMeshScalarNameVec());
-        vectorWidget_->GetData_v(GetMeshScalarNameVec());
-        vectorWidget_->GetData_w(GetMeshScalarNameVec());
+        vector<string> tmp = GetMeshScalarNameVec();//0504 append去除容器里元素的"\0000"
+        for(auto &p:tmp){
+            p=deleteSpaces(p);
+        }
+        vectorWidget_->GetData_u(tmp);
+        vectorWidget_->GetData_v(tmp);
+        vectorWidget_->GetData_w(tmp);
         vectorWidget_->SetScaleFactor(scaleFactor_);
     }
 }
@@ -2651,5 +2655,24 @@ QVTKRenderer *ResultMeshManager::GetQVtkRender()
     return render_;
 }
 
+/*
+ * @brief: remove string's spaces
+ * @param: string
+ * @ret: string
+ * @birth: created by czm in 20230504
+ */
+string ResultMeshManager::deleteSpaces(string str)
+{
+    QChar h0 = 0x00;
+    QString str_;
+    if(QString::fromStdString(str).contains(h0)){
+        str_=QString::fromStdString(str).replace(h0,"");
+    }
+    return str_.toStdString();
+}
+
+
+
+
 
 

+ 1 - 0
CAE_Solution/src/VTK/Manager/ResultMeshManager.h

@@ -49,6 +49,7 @@ public:
     void DisplayMesh(QVTKRenderer *qvtkRenderer = 0);
     void DisplayMeshByIndex(int index = 0);
     QVTKRenderer *GetQVtkRender();
+    string deleteSpaces(string);
 
     void SetSaveIndex(int index);
     int GetCurrIndex();

+ 19 - 1
CAE_Solution/src/VTK/display/contourdisplay.cpp

@@ -14,6 +14,8 @@ ContourDisplay::ContourDisplay(ResultMeshManager* rs)
     //ResultMeshManager::getInstance()->SetWidgetScalarName();   //获取页面上的combox的scalarname
 
     this->Cmanager = rs;
+    this->range[0] = 0;
+    this->range[1] = 0;
 }
 
 /*
@@ -24,7 +26,9 @@ ContourDisplay::ContourDisplay(ResultMeshManager* rs)
  */
 ContourDisplay::~ContourDisplay()
 {
-    this->Cmanager = NULL;
+    this->Cmanager = NULL;//不析构,Cmanager存在handPool中map,调用handPool析构函数时析构
+    this->range[0] = 0;
+    this->range[1] = 0;
 }
 
 /*
@@ -53,6 +57,8 @@ void ContourDisplay::contourdisplay_execute(vtkJsonObject* jsonObj_)
 
     Cmanager->ModifyScalarDisplay(Cmanager->contourWidget_->GetScalarName());//传入参数combox的current text(scalar name)
     qDebug()<<"range:"<<QString::number(Cmanager->contourWidget_->GetRange()[0])<<" "<<QString::number(Cmanager->contourWidget_->GetRange()[1]);
+    this->range[0] = Cmanager->contourWidget_->GetRange()[0];
+    this->range[1] = Cmanager->contourWidget_->GetRange()[1];
 
     Cmanager->SetLevel(Cmanager->contourWidget_->GetLevel());//传level的值,初始默认值为10
     qDebug()<<"level:"<<QString::number(jsonObj_->cd_struct->level);
@@ -62,6 +68,7 @@ void ContourDisplay::contourdisplay_execute(vtkJsonObject* jsonObj_)
     qDebug()<<"scalarname:"<<QString::fromStdString(tmp_scalarname);
     Cmanager->SetDisplayType(0);//0 is contour; 2 is line; 3 is vector  判断显示
     Cmanager->DisplayMeshByIndex(0);//只显示实体、云图、等值线、矢量
+    //Cmanager->HideAllUnshadeMeshActors();//隐藏实体调hideallunshademeshactors接口
     Cmanager->SetNameTypeMap();
 }
 
@@ -76,3 +83,14 @@ ResultMeshManager* ContourDisplay::getResultMeshManager()
     return this->Cmanager;
 }
 
+/*
+ * @brief: get range
+ * @param: void
+ * @ret: double*
+ * @birth: created by czm in 20230428
+ */
+double *ContourDisplay::getRange()
+{
+    return this->range;
+}
+

+ 2 - 0
CAE_Solution/src/VTK/display/contourdisplay.h

@@ -20,9 +20,11 @@ public:
     virtual void contourdisplay_execute(vtkJsonObject*);
 
     ResultMeshManager* getResultMeshManager();
+    double* getRange();
 private:
     ResultMeshManager* Cmanager;
     //ContourDisplayW* m_pWidget;
+    double range[2];
 };
 
 #endif

+ 21 - 1
CAE_Solution/src/VTK/display/linedisplay.cpp

@@ -11,6 +11,8 @@ LineDisplay::LineDisplay(ResultMeshManager* rs)
 {
     //ResultMeshManager::getInstance()->SetLineWidget(static_cast<LineDisplayW*>(m_pWidget));
     this->Cmanager = rs;
+    this->range[0] = 0;
+    this->range[1] = 1;
 }
 
 /*
@@ -22,6 +24,8 @@ LineDisplay::LineDisplay(ResultMeshManager* rs)
 LineDisplay::~LineDisplay()
 {
     this->Cmanager = NULL;
+    this->range[0] = 0;
+    this->range[1] = 0;
 }
 
 /*
@@ -51,13 +55,18 @@ void LineDisplay::linedisplay_execute(vtkJsonObject* jsonObj_)
     Cmanager->lineWidget_->SetRange(jsonObj_->ld_struct->range);
 
     Cmanager->ModifyScalarDisplay(Cmanager->lineWidget_->GetScalarName());//传入combox的current text(scalar name)
+    this->range[0] = Cmanager->lineWidget_->GetRange()[0];
+    this->range[1] = Cmanager->lineWidget_->GetRange()[1];
 
     Cmanager->SetLevel(Cmanager->lineWidget_->GetLevel());//传level的值,初始默认值为10
     Cmanager->SetRange(jsonObj_->ld_struct->range);
+
     Cmanager->SetDisplayType(2);//0-contour 2-line 3-vector
-    Cmanager->DisplayMeshByIndex(0);
 
+    Cmanager->DisplayMeshByIndex(0);
+    //Cmanager->HideAllUnshadeMeshActors();//隐藏实体调hideallunshademeshactors接口
     Cmanager->SetNameTypeMap();
+
 }
 
 /*
@@ -70,3 +79,14 @@ ResultMeshManager *LineDisplay::getResultMeshManager()
 {
     return this->Cmanager;
 }
+
+/*
+ * @brief: get range
+ * @param: void
+ * @ret: double*
+ * @birth: created by czm in 20230428
+ */
+double *LineDisplay::getRange()
+{
+    return this->range;
+}

+ 2 - 0
CAE_Solution/src/VTK/display/linedisplay.h

@@ -18,7 +18,9 @@ public:
     virtual void linedisplay_execute(vtkJsonObject*);
 
     ResultMeshManager* getResultMeshManager();
+    double* getRange();
 private:
     ResultMeshManager* Cmanager;
+    double range[2];
 };
 

+ 48 - 12
CAE_Solution/src/VTK/display/vectordisplay.cpp

@@ -1,29 +1,65 @@
 #include "vectordisplay.h"
 
-Vectordisplay::Vectordisplay()
+/*
+ * @brief: the constructor
+ * @param:
+ * @ret:
+ * @birth: created by czm in 20230504
+ */
+Vectordisplay::Vectordisplay(ResultMeshManager* rs)
 {
     //ResultMeshManager::getInstance()->SetVectorWidget(static_cast<VectorW*>(m_pWidget));
-}
-Vectordisplay::~Vectordisplay()
-{
-}
-
-void Vectordisplay::updateFromInters()
-{
-    //update setting data from widgets.
+    this->Cmanager = rs;
 }
 
-void Vectordisplay::updateFromParams()
+/*
+ * @brief: the destructor
+ * @param:
+ * @ret:
+ * @birth: created by czm in 20230504
+ */
+Vectordisplay::~Vectordisplay()
 {
-
+    this->Cmanager = NULL;//不析构,Cmanager存在handPool中map,调用handPool析构函数时析构
 }
 
-void Vectordisplay::vectordisplay_execute()
+/*
+ * @brief: get param for recvmsg and display vector
+ * @param: void
+ * @ret: void
+ * @birth: created by czm in 20230504
+ */
+void Vectordisplay::vectordisplay_execute(vtkJsonObject* object)
 {
 
     //apply setting data.
     //ResultMeshManager::getInstance()->SetDisplayType(3);
     //ResultMeshManager::getInstance()->SetVectorScaleFactor(static_cast<VectorW*>(m_pWidget)->GetScaleFactor());
     //ResultMeshManager::getInstance()->SetVectorScalarIndex(static_cast<VectorW*>(m_pWidget)->GetUVWIndex());
+    Cmanager->vectorWidget_->SetScaleFactor(object->vc_struct->scaleFactor);
+    string value_U = object->vc_struct->dataU;
+    string value_V = object->vc_struct->dataV;
+    string value_W = object->vc_struct->dataW;
+    int index_u = find(Cmanager->vectorWidget_->dataU.begin(),Cmanager->vectorWidget_->dataU.end(),value_U)-Cmanager->vectorWidget_->dataU.begin();
+    int index_v = find(Cmanager->vectorWidget_->dataV.begin(),Cmanager->vectorWidget_->dataV.end(),value_V)-Cmanager->vectorWidget_->dataV.begin();
+    int index_w = find(Cmanager->vectorWidget_->dataW.begin(),Cmanager->vectorWidget_->dataW.end(),value_W)-Cmanager->vectorWidget_->dataW.begin();
+    Cmanager->vectorWidget_->current_u = index_u;  
+    Cmanager->vectorWidget_->current_v = index_v;    
+    Cmanager->vectorWidget_->current_w = index_w;
+
+    Cmanager->SetDisplayType(3);
+    Cmanager->SetVectorScaleFactor(Cmanager->vectorWidget_->GetScaleFactor());
+    Cmanager->SetVectorScalarIndex(Cmanager->vectorWidget_->GetUVWIndex());
+}
+
+/*
+ * @brief: get resultManager(private)
+ * @param: void
+ * @ret: resultmeshmanager
+ * @birth: created by czm in 20230504
+ */
+ResultMeshManager *Vectordisplay::getResultMeshManager()
+{
+    return this->Cmanager;
 }
 

+ 7 - 5
CAE_Solution/src/VTK/display/vectordisplay.h

@@ -1,18 +1,20 @@
 #pragma once
 #include <QObject>
+#include <vector>
 #include "../Manager/ResultMeshManager.h"
+#include "../../threadPool_and_statemachine/dealWith/vtkjsonobject.h"
 
 class Vectordisplay
 {
 public:
-    Vectordisplay();
+    Vectordisplay(ResultMeshManager* rs);
     virtual ~Vectordisplay();
     virtual QString getName() { return QObject::tr("Contour"); }
 
-    virtual void updateFromInters();
-    virtual void updateFromParams();
-    virtual void vectordisplay_execute();
-private:
+    virtual void vectordisplay_execute(vtkJsonObject*);
 
+    ResultMeshManager* getResultMeshManager();
+private:
+    ResultMeshManager* Cmanager;
 };
 

+ 81 - 80
CAE_Solution/src/main.cpp

@@ -36,105 +36,106 @@ int main(int argc, char *argv[])
     QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());//必需
     qRegisterMetaType<std::string>("std::string");
     QApplication a(argc, argv);
-        Widget w;
+    Widget w;
 
-        w.resize(QApplication::desktop()->availableGeometry().size());//最大化
-        //w.resize(1750,620);
-        w.move(0,0);
-        w.show();
-//    //初始化状态机
-        stateMachine* recvstate= new stateMachine("recvClient");
-        QThread *thread_recvsate = new QThread();
-        QThread *thread_sendstate = new QThread();
+    w.resize(QApplication::desktop()->availableGeometry().size());//最大化
+    //w.resize(1750,620);
+    w.move(0,0);
+    w.show();
+    //    //初始化状态机
+            stateMachine* recvstate= new stateMachine("recvClient");
+            QThread *thread_recvsate = new QThread();
+            QThread *thread_sendstate = new QThread();
 
-        stateMachine* sendstate= new stateMachine("sendClient") ;
-        handlePool *handle = new handlePool(&w);
+            stateMachine* sendstate= new stateMachine("sendClient") ;
+            handlePool *handle = new handlePool(&w);
 
-        recvstate->moveToThread(thread_recvsate);
-        thread_recvsate->start();
-        sendstate->moveToThread(thread_sendstate);
-        thread_sendstate->start();
+            recvstate->moveToThread(thread_recvsate);
+            thread_recvsate->start();
+            sendstate->moveToThread(thread_sendstate);
+            thread_sendstate->start();
 
 
 
-        QObject::connect(handle,SIGNAL(sendImg_handlePoolToSendstate(std::string)),sendstate,SLOT(getImg_handlePoolToSendstate(std::string)));
-        QObject::connect(recvstate,SIGNAL(sendmsg_recvstateTohandlePool(std::string)),handle,SLOT(getmsg_recvstateTohandlePool(std::string)));
+            QObject::connect(handle,SIGNAL(sendImg_handlePoolToSendstate(std::string)),sendstate,SLOT(getImg_handlePoolToSendstate(std::string)));
+            QObject::connect(recvstate,SIGNAL(sendmsg_recvstateTohandlePool(std::string)),handle,SLOT(getmsg_recvstateTohandlePool(std::string)));
     /*******************************************************************************/
-//        QVTKRenderer* render_ = new QVTKRenderer();
-//        render_->init();
-
-//        QString m_filePath="F:\\czm\\vtkfile\\tfg.ugrid";
-
-//        MeshManager *meshmanager = new MeshManager();
-
-//        bool f = meshmanager->LoadData(m_filePath);
-
-//        cout<<"f:"<<f<<endl;
-//        if(f){
-//            if(render_){
-//                meshmanager->DisplayMesh(render_);
-//                render_->ZoomToExtents();
-//            }
-//        }
-//        w.addTab(render_->GetWidget(),"test");
-//        w.SetMeshManager(meshmanager);
-//        w.SetQVTKRenderer(render_);
-/************************************************************************************/
-//                QVTKRenderer* render_ = new QVTKRenderer();
-//                render_->init();
-//        QString filePath = "C:\\Users\\Administrator\\Desktop\\Postprocess_Binary\\";
-//        QDir dir("C:\\Users\\Administrator\\Desktop\\Postprocess_Binary");
-//        dir.setFilter(QDir::Files);
-//        QStringList list = dir.entryList(QDir::Files);
-//        QStringList string_list;
-//        foreach (QFileInfo file, list) {
-//            if(file.fileName().split(".").back() == "plt"){
-//                string_list.append(file.fileName());
-//            }
+    //        QVTKRenderer* render_ = new QVTKRenderer();
+    //        render_->init();
+
+    //        QString m_filePath="F:\\czm\\vtkfile\\tfg.ugrid";
+
+    //        MeshManager *meshmanager = new MeshManager();
+
+    //        bool f = meshmanager->LoadData(m_filePath);
+
+    //        cout<<"f:"<<f<<endl;
+    //        if(f){
+    //            if(render_){
+    //                meshmanager->DisplayMesh(render_);
+    //                render_->ZoomToExtents();
+    //            }
+    //        }
+    //        w.addTab(render_->GetWidget(),"test");
+    //        w.SetMeshManager(meshmanager);
+    //        w.SetQVTKRenderer(render_);
+    /************************************************************************************/
+//    QVTKRenderer* render_ = new QVTKRenderer();
+//    render_->init();
+//    QString filePath = "C:\\Users\\Administrator\\Desktop\\Postprocess_Binary\\";
+//    QDir dir("C:\\Users\\Administrator\\Desktop\\Postprocess_Binary");
+//    dir.setFilter(QDir::Files);
+//    QStringList list = dir.entryList(QDir::Files);
+//    QStringList string_list;
+//    foreach (QFileInfo file, list) {
+//        if(file.fileName().split(".").back() == "plt"){
+//            string_list.append(file.fileName());
 //        }
+//    }
 
-//        ResultMeshManager* meshmanager =new ResultMeshManager();
-//        for(int i =0;i<string_list.size();i++){
-//            meshmanager->LoadData(filePath+string_list[i]);
-//            meshmanager->SetSaveIndex(i);
-//            meshmanager->DisplayMesh(render_);
-//        }
+//    ResultMeshManager* meshmanager =new ResultMeshManager();
+//    //for(int i =0;i<string_list.size();i++){
+//    for(int i =0;i<4;i++){
+//        meshmanager->LoadData(filePath+string_list[i]);
+//        meshmanager->SetSaveIndex(i);
+//        meshmanager->DisplayMesh(render_);
+//    }
 
 
 //    meshmanager->HideAllActors();
 //    meshmanager->ShowAll();
-//    double t =0.111;
-//    meshmanager->SetLevel(5);
+//    double t =0.001;
+//    meshmanager->SetLevel(10);
 //    meshmanager->SetRange(&t);
 //    meshmanager->ModifyScalarDisplay("r");
-//    meshmanager->SetDisplayType(0);
+//    meshmanager->SetDisplayType(2); //0----contour 2----line 3----vector
 
 
 //    meshmanager->DisplayMeshByIndex(0);
 //    meshmanager->SetNameTypeMap();
-//           w.addTab(render_->GetWidget(),"test");
-///////////////////////////////////////////////////////////////////////////////////
-      ///加载tecplot
-//      QVTKRenderer* render_ = new QVTKRenderer();
-//     render_->init();
-//    handlePool* hand = new handlePool();
-//    QString filePath = "C:\\Users\\Administrator\\Desktop\\Postprocess_Binary\\";
-//    QStringList fileName_list = hand->getFileNameList(filePath);
-//    ResultMeshManager *rsMeshManager = new ResultMeshManager();
 //    w.addTab(render_->GetWidget(),"test");
-
-//    for(int i =0;i<fileName_list.size();i++){
-//        bool f =rsMeshManager->LoadData(filePath+fileName_list[i]);
-//        if(f){
-//            rsMeshManager->SetSaveIndex(i);
-//            if(render_){
-//                rsMeshManager->DisplayMesh(render_);
-//            }
-//        }
-//    }
-//    rsMeshManager->ShowAll();
-//    rsMeshManager->DisplayMeshByIndex(0);
-//    rsMeshManager->SetNameTypeMap();
-//    render_->ZoomToExtents();
+    ///////////////////////////////////////////////////////////////////////////////////
+    ///加载tecplot
+    //      QVTKRenderer* render_ = new QVTKRenderer();
+    //     render_->init();
+    //    handlePool* hand = new handlePool();
+    //    QString filePath = "C:\\Users\\Administrator\\Desktop\\Postprocess_Binary\\";
+    //    QStringList fileName_list = hand->getFileNameList(filePath);
+    //    ResultMeshManager *rsMeshManager = new ResultMeshManager();
+    //    w.addTab(render_->GetWidget(),"test");
+
+    //    for(int i =0;i<fileName_list.size();i++){
+    //        bool f =rsMeshManager->LoadData(filePath+fileName_list[i]);
+    //        if(f){
+    //            rsMeshManager->SetSaveIndex(i);
+    //            if(render_){
+    //                rsMeshManager->DisplayMesh(render_);
+    //            }
+    //        }
+    //    }
+    //    rsMeshManager->ShowAll();
+    //    rsMeshManager->DisplayMeshByIndex(0);
+    //    rsMeshManager->SetNameTypeMap();
+    //    render_->ZoomToExtents();
     return a.exec();
 }

+ 138 - 55
CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.cpp

@@ -28,6 +28,8 @@ handlePool::handlePool(QTabWidget *w)
     qmapManager.clear();
     qmapRender.clear();
     qmapResultmanager.clear();
+    contour_sendrange_flag = false;
+    line_sendrange_flag = false;
 }
 
 
@@ -44,6 +46,8 @@ handlePool::~handlePool()
     qDeleteAll(map_contourdisplay);
     qDeleteAll(map_linedisplay);
     qDeleteAll(qmapResultmanager);
+    contour_sendrange_flag = false;
+    line_sendrange_flag = false;
 }
 
 /*
@@ -82,7 +86,7 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
         if(!qmapRender.contains(object->proId))return;
         render_ = qmapRender.value(object->proId);
         render_->camera_->ZoomOut();
-    }else if(object->action == "zoomin"){
+    }else if(object->action == "zoomin"){//放大
         if(!qmapRender.contains(object->proId))return;
         render_ = qmapRender.value(object->proId);
         render_->camera_->ZoomIn();
@@ -127,6 +131,11 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
             cout<<"please import tecplot result first!"<<endl;
         }
         return;
+    }else if(object->action == "VectorDisplay"){//显示矢量图
+        if(!result_vectordisplay(object,render_)){
+            cout<<"please import tecplot result first!"<<endl;
+        }
+        return;
     }
     send_picture(object,render_);//发送图片
 }
@@ -215,7 +224,7 @@ bool handlePool::resultImport(vtkJsonObject *object_, QVTKRenderer *renderer_)
         auto flag = renderer_->widgetFlag;
         if(flag==QVTKRenderer::WidgetModel::UgridModel){
             renderer_ = qmapRender.value(object_->proId);
-            renderer_->HideAllActors();
+            renderer_->HideAllActors();//to do 有bug 先导入结果,在loaddata,再导入,会报错
             renderer_->RemoveAllActors();
         }else if(flag ==QVTKRenderer::WidgetModel::ResultModel){
             if(qmapResultmanager.value(object_->proId)->fileName == object_->getFileName()){//to do 详细比对文件名
@@ -223,8 +232,8 @@ bool handlePool::resultImport(vtkJsonObject *object_, QVTKRenderer *renderer_)
                 return true;
             }
             //qmapResultmanager.value(object_->proId)->resultMeshManager_->HideAllActors();
-//            renderer_->HideAllActors();
-//            renderer_->RemoveAllActors();
+            //            renderer_->HideAllActors();
+            //            renderer_->RemoveAllActors();
         }
     }
     object_->filePath = "C:\\Users\\Administrator\\Desktop\\Postprocess_Binary";//测试路径
@@ -234,7 +243,7 @@ bool handlePool::resultImport(vtkJsonObject *object_, QVTKRenderer *renderer_)
     }
 
 
-    ResultMeshManager* rsMeshManager = new ResultMeshManager(); 
+    ResultMeshManager* rsMeshManager = new ResultMeshManager();
     rsMeshManager->Clear();
     bool flag = true;
     for(int i =0;i<fileName_list.size();i++){
@@ -250,33 +259,38 @@ bool handlePool::resultImport(vtkJsonObject *object_, QVTKRenderer *renderer_)
         }
     }
     if(flag)
-        {
-            rsMeshManager->HideAllActors();
-            rsMeshManager->ShowAll();
-            rsMeshManager->DisplayMeshByIndex(0);
-            rsMeshManager->SetNameTypeMap();
-            rsMeshManager->InitWidgetsParameter();
-            renderer_->ZoomToExtents();
-        }
+    {
+        rsMeshManager->HideAllActors();
+        rsMeshManager->ShowAll();
+        rsMeshManager->DisplayMeshByIndex(0);
+        rsMeshManager->SetNameTypeMap();
+        rsMeshManager->InitWidgetsParameter();
+        renderer_->ZoomToExtents();
+    }
 
-//    ContourDisplayW *contourdw = new ContourDisplayW();//云图窗口参数初始化
-//   rsMeshManager->SetCotourWidget(contourdw);
-//    rsMeshManager->SetWidgetRange();
-//    rsMeshManager->SetWidgetScalarName();
+    ContourDisplayW *contourdw = new ContourDisplayW();//云图窗口参数初始化
+    rsMeshManager->SetCotourWidget(contourdw);
+    rsMeshManager->SetWidgetRange();
+    rsMeshManager->SetWidgetScalarName();
 
-    LineDisplayW *linedw = new LineDisplayW();//等值线
+    LineDisplayW *linedw = new LineDisplayW();//等值线窗口初始化参数
     rsMeshManager->SetLineWidget(linedw);
 
+    VectorW *vecdW = new VectorW();//矢量窗口初始化参数
+    rsMeshManager->SetVectorWidget(vecdW);
+
     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_contour",buildResultImport_msg(rsMeshManager)));//发送结果数据
-    emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_line",buildResultImport_msg(rsMeshManager)));//发送结果数据
+    }
+    qmapResultmanager[object_->proId]=(set_map_resultManager(object_,rsMeshManager));
+
+    contour_sendrange_flag = true;//标志位,第一次加载result,即为真,云图发送range
+    line_sendrange_flag = true;//标志位,第一次加载result,即为真,等值线发送range
 
+    emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_contour",buildResultImport_msg("Contour",rsMeshManager)));//发送云图结果数据
+    emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_line",buildResultImport_msg("Line",rsMeshManager)));//发送等值线结果数据
+    emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_vector",buildResultImport_msg("Vector",rsMeshManager)));//发送矢量结果数据
     send_picture(object_,renderer_);
     return true;
 }
@@ -296,16 +310,23 @@ bool handlePool::result_contourdisplay(vtkJsonObject *object_,QVTKRenderer* rend
         condis = map_contourdisplay.value(object_->proId);//to do
     }else{
         condis = new ContourDisplay(qmapResultmanager[object_->proId]->resultMeshManager_);
-        map_contourdisplay.insert(object_->proId,condis);  
+        map_contourdisplay.insert(object_->proId,condis);
     }
     condis->contourdisplay_execute(object_);
+    if(contour_sendrange_flag){
+        QMap<QString,string> range_tmp;
+        range_tmp.insert("minRange",to_string(condis->getRange()[0]));
+        range_tmp.insert("maxRange",to_string(condis->getRange()[1]));
+        emit sendImg_handlePoolToSendstate(object_->ToJson("contourDisplay_range",range_tmp));
+        contour_sendrange_flag = false;//发送后标志位为假,避免重复云图display后每次发送
+    }
     send_picture(object_,render_);
     return true;
 }
 
 /*
  * @brief: analysis msg about linedisplay
- * @param: object
+ * @param: object and render
  * @ret: bool
  * @birth: created by czm in 20230424
  */
@@ -315,12 +336,43 @@ bool handlePool::result_linedisplay(vtkJsonObject *object_,QVTKRenderer* render_
     if(!qmapResultmanager.contains(object_->proId))return false;
     render_ = qmapRender[object_->proId];
     if(map_linedisplay.contains(object_->proId)){
-        linedis = map_linedisplay.value(object_->proId);
+        linedis = map_linedisplay.value(object_->proId);//to do
     }else{
         linedis = new LineDisplay(qmapResultmanager[object_->proId]->resultMeshManager_);
         map_linedisplay.insert(object_->proId,linedis);
     }
     linedis->linedisplay_execute(object_);
+
+    if(line_sendrange_flag){
+        QMap<QString,string> range_tmp;
+        range_tmp.insert("minRange",to_string(linedis->getRange()[0]));
+        range_tmp.insert("maxRange",to_string(linedis->getRange()[1]));
+        emit sendImg_handlePoolToSendstate(object_->ToJson("lineDisplay_range",range_tmp));
+        line_sendrange_flag = false;//发送后标志位为假,避免重复云图display后每次发送
+    }
+    send_picture(object_,render_);
+    return true;
+}
+
+/*
+ * @brief: analysis msg about vectordisplay
+ * @param: object and render
+ * @ret: bool
+ * @birth: created by czmm in 20230504
+ */
+bool handlePool::result_vectordisplay(vtkJsonObject *object_, QVTKRenderer *render_)
+{
+    Vectordisplay *vecdis = NULL;
+    if(!qmapResultmanager.contains(object_->proId))return false;
+    render_ = qmapRender[object_->proId];
+    if(map_vectordisplay.contains(object_->proId)){
+        vecdis = map_vectordisplay[object_->proId];//to do
+    }else{
+        vecdis = new Vectordisplay(qmapResultmanager[object_->proId]->resultMeshManager_);
+        map_vectordisplay.insert(object_->proId,vecdis);
+    }
+    vecdis->vectordisplay_execute(object_);
+
     send_picture(object_,render_);
     return true;
 }
@@ -355,37 +407,68 @@ bool handlePool::result_linedisplay(vtkJsonObject *object_,QVTKRenderer* render_
  * @ret: msg(QString)
  * @birth: created by czm in 20230424
  */
-QMap<QString,string> handlePool::buildResultImport_msg(ResultMeshManager *cmanager)
+QMap<QString,string> handlePool::buildResultImport_msg(QString type,ResultMeshManager *cmanager)
 {
     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 = msg.erase(msg.size()-1);
-    map_tmp.insert("nameTypes",msg);
-    msg.clear();
-    for(int i=0;i<cmanager->GetMeshScalarNameVec().size();i++){
-        msg += removeSpaces(cmanager->GetMeshScalarNameVec()[i]);
-        msg += ",";
+    if((type == "Line")||(type == "Contour")){
+        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 = msg.erase(msg.size()-1);
+        map_tmp.insert("nameTypes",msg);
+        msg.clear();
+        for(int i=0;i<cmanager->GetMeshScalarNameVec().size();i++){
+            msg += removeSpaces(cmanager->GetMeshScalarNameVec()[i]);
+            msg += ",";
+        }
+        msg = msg.erase(msg.size()-1);
+        map_tmp.insert("scalarNames",msg);
+        msg.clear();
+
+        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));
+    }else if(type == "Vector"){
+        string msg;
+        vector<string> vec_u = cmanager->vectorWidget_->dataU;
+        for(int i = 0;i<vec_u.size();i++){
+            msg+=removeSpaces(vec_u[i]);
+            msg+=",";
+        }
+        msg = msg.erase(msg.size()-1);
+        map_tmp.insert("dataU",msg);
+        msg.clear();
+        vector<string> vec_v = cmanager->vectorWidget_->dataV;
+        for(int i =0;i<vec_v.size();i++){
+            msg+=removeSpaces(vec_v[i]);
+            msg+=",";
+        }
+        msg = msg.erase(msg.size()-1);
+        map_tmp.insert("dataV",msg);
+        msg.clear();
+        vector<string> vec_w = cmanager->vectorWidget_->dataW;
+        for(int i =0;i<vec_w.size();i++){
+            msg+=removeSpaces(vec_w[i]);
+            msg+=",";
+        }
+        msg = msg.erase(msg.size()-1);
+        map_tmp.insert("dataW",msg);
+        msg.clear();
+        msg = to_string(cmanager->vectorWidget_->current_scalefactor);
+        map_tmp.insert("ScaleFactor",msg);
+        msg.clear();
     }
-    msg = msg.erase(msg.size()-1);
-    map_tmp.insert("scalarNames",msg);
-    msg.clear();
-
-    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;
 }
 

+ 0 - 491
CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.cpp.autosave

@@ -1,491 +0,0 @@
-#include "handlepool.h"
-#include <iostream>
-#include <vtkTecplotReader.h>
-#include <vtkAppendFilter.h>
-#include <vtkMultiBlockDataSet.h>
-#include <vtkUnstructuredGrid.h>
-#include <vtkNew.h>
-#include <vtkSphereSource.h>
-#include <vtkPolyDataMapper.h>
-#include <vtkActor.h>
-
-
-/*
- * @brief:the constructor
- * @param:
- * @ret:
- * @birth: creadted by czm in 20230406
- */
-handlePool::handlePool(QObject *parent) : QObject(parent)
-{
-}
-
-handlePool::handlePool(QTabWidget *w)
-{
-    this->w=w;
-    map_contourdisplay.clear();
-    map_linedisplay.clear();
-    qmapManager.clear();
-    qmapRender.clear();
-    qmapResultmanager.clear();
-}
-
-
-/*
- * @brief:the destructor
- * @param:
- * @ret:
- * @birth: creadted by czm in 20230406
- */
-handlePool::~handlePool()
-{
-    qDeleteAll(qmapRender);
-    qDeleteAll(qmapManager);
-    qDeleteAll(map_contourdisplay);
-    qDeleteAll(map_linedisplay);
-    qDeleteAll(qmapResultmanager);
-}
-
-/*
- * @brief: handle msg from recvstate(slot)(处理来自接收状态机的消息,槽函数)
- * @param:recv msg
- * @ret:void
- * @birth: creadted by czm in 20230406
- */
-void handlePool::getmsg_recvstateTohandlePool(std::string recvmsg)
-{
-    std::cout<<"recvmsg"<<recvmsg<<std::endl;
-    vtkJsonObject* json_object = new vtkJsonObject();
-    QVTKRenderer* render_=NULL;
-    json_object->FromJSON(recvmsg);
-
-    operateRender(json_object,render_);//解析命令
-
-}
-
-/*
- * @brief: Operate render according to commands(根据命令操作render)
- * @param: jsonObject->action render
- * @ret:void
- * @birth: creadted by czm in 20230406
- */
-void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
-{
-    if(object->action == "init"){
-        delete object;
-        object = NULL;
-        return;
-    }else if(object->action == "loaddata"){
-        judgeLoaddata(object,render_);
-        return;
-    }else if(object->action == "zoomout"){//缩小
-        if(!qmapRender.contains(object->proId))return;
-        render_ = qmapRender.value(object->proId);
-        render_->camera_->ZoomOut();
-    }else if(object->action == "zoomin"){
-        if(!qmapRender.contains(object->proId))return;
-        render_ = qmapRender.value(object->proId);
-        render_->camera_->ZoomIn();
-    }else if(object->action == "AlignToPlusAxisX"){//正x轴对齐
-        if(!qmapRender.contains(object->proId))return;
-        render_ = qmapRender.value(object->proId);
-        render_->camera_->AlignToPlusAxisX();
-    }else if(object->action == "AlignToPlusAxisY"){//正y轴对齐
-        if(!qmapRender.contains(object->proId))return;
-        render_ = qmapRender.value(object->proId);
-        render_->camera_->AlignToPlusAxisY();
-    }else if(object->action == "AlignToPlusAxisZ"){//正z轴对齐
-        if(!qmapRender.contains(object->proId))return;
-        render_ = qmapRender.value(object->proId);
-        render_->camera_->AlignToPlusAxisZ();
-    }else if(object->action == "AlignToMinusAxisX"){//负x轴对齐
-        if(!qmapRender.contains(object->proId))return;
-        render_ = qmapRender.value(object->proId);
-        render_->camera_->AlignToMinusAxisX();
-    }else if(object->action == "AlignToMinusAxisY"){//负y轴对齐
-        if(!qmapRender.contains(object->proId))return;
-        render_ = qmapRender.value(object->proId);
-        render_->camera_->AlignToMinusAxisY();
-    }else if(object->action == "AlignToMinusAxisZ"){//负z轴对齐
-        if(!qmapRender.contains(object->proId))return;
-        render_ = qmapRender.value(object->proId);
-        render_->camera_->AlignToMinusAxisZ();
-    }else if(object->action == "TransformToIsometric"){//等距视图
-        if(!qmapRender.contains(object->proId))return;
-        render_ = qmapRender.value(object->proId);
-        render_->camera_->TransformToIsometric();
-    }else if(object->action == "ResultImport"){//导入结果
-        resultImport(object,render_);
-        return;
-    }else if(object->action == "ContourDisplay"){//显示云图
-        if(!result_contourdisplay(object,render_)){
-            cout<<"please import tecplot result first!"<<endl;
-        }
-        return;
-    }else if(object->action == "LineDisplay"){//显示等值线图
-        if(!result_linedisplay(object,render_)){
-            cout<<"please import tecplot result first!"<<endl;
-        }
-        return;
-    }
-    send_picture(object,render_);//发送图片
-}
-
-/*
- * @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;
-
-    meshmanager = new MeshManager();
-
-    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_);
-}
-
-
-/*
- * @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=object_->getFileName().split(",");
-    if(fileName_list.isEmpty()){
-        cout<< "No Tecplot file is ready to read!"<<endl;
-        return false;
-    }
-    //判断有无窗口
-    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{
-        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();
-        }
-    }
-    object_->filePath = "C:\\Users\\Administrator\\Desktop\\Postprocess_Binary";//测试路径
-    QDir dir(object_->filePath);
-    if(!dir.exists()){
-        return false;
-    }
-
-
-    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();
-
-    LineDisplayW *linedw = new LineDisplayW();//等值线
-    rsMeshManager->SetLineWidget(linedw);
-
-    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_contour",buildResultImport_msg(rsMeshManager)));//发送结果数据
-    emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_line",buildResultImport_msg(rsMeshManager)));//发送结果数据
-
-    send_picture(object_,renderer_);
-    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* render_)
-{
-    ContourDisplay* condis = NULL;
-
-    if(!qmapResultmanager.contains(object_->proId)) return false;
-    render_ = qmapRender[object_->proId];
-    if(map_contourdisplay.contains(object_->proId)){
-        condis = map_contourdisplay.value(object_->proId);//to do
-    }else{
-        condis = new ContourDisplay(qmapResultmanager[object_->proId]->resultMeshManager_);
-        map_contourdisplay.insert(object_->proId,condis);  
-    }
-    condis->contourdisplay_execute(object_);
-    send_picture(object_,render_);
-    
-    return true;
-}
-
-/*
- * @brief: analysis msg about linedisplay
- * @param: object
- * @ret: bool
- * @birth: created by czm in 20230424
- */
-bool handlePool::result_linedisplay(vtkJsonObject *object_,QVTKRenderer* render_)
-{
-    LineDisplay* linedis = NULL;
-    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(qmapResultmanager[object_->proId]->resultMeshManager_);
-        map_linedisplay.insert(object_->proId,linedis);
-    }
-    linedis->linedisplay_execute(object_);
-    send_picture(object_,render_);
-    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: build result file mash which need to be sent to java
- * @param: resultmeshManager
- * @ret: msg(QString)
- * @birth: created by czm in 20230424
- */
-QMap<QString,string> handlePool::buildResultImport_msg(ResultMeshManager *cmanager)
-{
-    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 = msg.erase(msg.size()-1);
-    map_tmp.insert("nameTypes",msg);
-    msg.clear();
-    for(int i=0;i<cmanager->GetMeshScalarNameVec().size();i++){
-        msg += removeSpaces(cmanager->GetMeshScalarNameVec()[i]);
-        msg += ",";
-    }
-    msg = msg.erase(msg.size()-1);
-    map_tmp.insert("scalarNames",msg);
-    msg.clear();
-
-    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: 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->qmapRender;
-}
-
-/*
- * @brief: get map which save ResultMeshManager
- * @param: void
- * @ret: QMap<QString, ResultMeshManager *>
- * @birth: created by czm in 20230420
- */
-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_)
-{
-    pid_resultManager *resultManager_p = new pid_resultManager();
-    resultManager_p->resultMeshManager_ = rmanager_;
-    resultManager_p->fileName = object->getFileName();
-    resultManager_p->filePath = object->filePath;
-    return resultManager_p;
-}
-
-/*
- * @brief: get map which save meshmanager
- * @param: void
- * @ret: QMap<QString, MeshManager *>
- * @birth: created by czm in 20230420
- */
-QMap<QString, pid_meshManager *> handlePool::getMapManager()
-{
-    return this->qmapManager;
-}
-

+ 6 - 1
CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.h

@@ -20,6 +20,7 @@
 #include "../../VTK/widget/solidsurfaceDisplaywidget.h"
 #include "../../VTK/widget/streamDisplaywidget.h"
 #include "../../VTK/widget/vectorDisplaywidget.h"
+#include "../../VTK/display/vectordisplay.h"
 #include <map>
 #include <QMap>
 #include <string>
@@ -41,8 +42,9 @@ public:
     bool resultImport(vtkJsonObject*,QVTKRenderer*);
     bool result_contourdisplay(vtkJsonObject*, QVTKRenderer *);
     bool result_linedisplay(vtkJsonObject*, QVTKRenderer *);
+    bool result_vectordisplay(vtkJsonObject*, QVTKRenderer *);
     //QStringList getFileNameList(QString);
-    QMap<QString,string> buildResultImport_msg(ResultMeshManager*);
+    QMap<QString,string> buildResultImport_msg(QString,ResultMeshManager*);
     void send_picture(vtkJsonObject*,QVTKRenderer*);
     string removeSpaces(string);
 
@@ -59,7 +61,10 @@ private:
     QMap<QString,pid_resultManager*> qmapResultmanager;
     QMap<QString,ContourDisplay*> map_contourdisplay;
     QMap<QString,LineDisplay*> map_linedisplay;
+    QMap<QString,Vectordisplay*> map_vectordisplay;
     QTabWidget* w;
+    bool contour_sendrange_flag;
+    bool line_sendrange_flag;
 
 signals:
     void sendImg_handlePoolToSendstate(std::string);

+ 47 - 2
CAE_Solution/src/threadPool_and_statemachine/dealWith/vtkjsonobject.cpp

@@ -10,6 +10,7 @@ vtkJsonObject::vtkJsonObject()
 {
     cd_struct = NULL;
     ld_struct = NULL;
+    vc_struct = NULL;
 }
 
 /*
@@ -28,6 +29,10 @@ vtkJsonObject::~vtkJsonObject()
         free(ld_struct);
         ld_struct = NULL;
     }
+    if(vc_struct){
+        free(vc_struct);
+        vc_struct = NULL;
+    }
 }
 
 /*
@@ -105,6 +110,7 @@ vtkJsonObject *vtkJsonObject::operator=(vtkJsonObject *object)
     this->paramJson = object->paramJson;
     this->fileName = object->getFileName();
     this->cd_struct = object->cd_struct;
+    this->vc_struct = object->vc_struct;
     return this;
 }
 
@@ -149,7 +155,14 @@ std::string vtkJsonObject::ToJson(std::string type,QMap<QString,string> file)
         json.insert("range1",QString::fromStdString(file["range1"]));
     }else if(type == "contourDisplay"){
         json.insert("msgType","contourDisplay_range");
-
+        json.insert("minRange",QString::fromStdString(file["minRange"]));
+        json.insert("maxRange",QString::fromStdString(file["maxRange"]));
+    }else if(type == "importResult_vector"){
+        json.insert("msgType","vector_param");
+        json.insert("dataU",QString::fromStdString(file["dataU"]));
+        json.insert("dataV",QString::fromStdString(file["dataV"]));
+        json.insert("dataW",QString::fromStdString(file["dataW"]));
+        json.insert("scaleFactor",QString::fromStdString(file["scaleFactor"]));
     }
 
     QJsonDocument document;
@@ -229,7 +242,8 @@ void vtkJsonObject::FromParamJson(string param)
                     if(object_.contains("level")){
                         QJsonValue value = object_.value("level");
                         if (value.isString()) {
-                            ld_struct->level = value.toInt();
+                            QString level = value.toString();
+                            ld_struct->level = level.toInt();
                         }
                     }
                     if(object_.contains("range")){
@@ -250,6 +264,37 @@ void vtkJsonObject::FromParamJson(string param)
                         }
                     }
                 }
+                if(this->action == "VectorDisplay"){
+                    this->vc_struct = (struct vectorDisplay_struct*)malloc(sizeof(struct vectorDisplay_struct));
+                    if(object_.contains("dataU")){
+                        QJsonValue value = object_.value("dataU");
+                        if(value.isString()){
+                            QString value_U = value.toString();
+                            strcpy(vc_struct->dataU,value_U.toStdString().c_str());
+                        }
+                    }
+                    if(object_.contains("dataV")){
+                        QJsonValue value = object_.value("dataV");
+                        if(value.isString()){
+                            QString value_V = value.toString();
+                            strcpy(vc_struct->dataV,value_V.toStdString().c_str());
+                        }
+                    }
+                    if(object_.contains("dataW")){
+                        QJsonValue value = object_.value("dataW");
+                        if(value.isString()){
+                            QString value_W = value.toString();
+                            strcpy(vc_struct->dataW,value_W.toStdString().c_str());
+                        }
+                    }
+                    if(object_.contains("scaleFactor")){
+                        QJsonValue value = object_.value("scaleFactor");
+                        if(value.isString()){
+                            QString scalefactor = value.toString();
+                            this->vc_struct->scaleFactor = scalefactor.toDouble();
+                        }
+                    }
+                }
             }
         }
     }

+ 14 - 1
CAE_Solution/src/threadPool_and_statemachine/dealWith/vtkjsonobject.h

@@ -15,7 +15,7 @@
 
 using namespace std;
 struct contourDisplay_struct;
-//struct lineDisplay_struct;
+struct vectorDisplay_struct;
 class vtkJsonObject
 {
 public:
@@ -38,10 +38,12 @@ public:
     QString action;
     struct contourDisplay_struct *cd_struct;//contour
     struct contourDisplay_struct *ld_struct;//line
+    struct vectorDisplay_struct *vc_struct;//vector
 private:
     QString fileName;
 };
 
+//云图/等值线msg结构体
 struct contourDisplay_struct
 //typedef struct contourDisplay_struct_
 {
@@ -52,4 +54,15 @@ public:
     double range[2];
 //}contourDisplay_struct,lineDisplay_struct;
 };
+
+//矢量msg结构体
+struct vectorDisplay_struct
+{
+public:
+    double scaleFactor;
+    char dataU[2];
+    char dataV[2];
+    char dataW[2];
+};
+
 #endif // VTKJSONOBJECT_H