Prechádzať zdrojové kódy

0424 修改handlepool

caizm 2 rokov pred
rodič
commit
0dab743168

+ 7 - 57
CAE_Solution/src/VTK/display/contourdisplay.cpp

@@ -14,17 +14,6 @@ ContourDisplay::ContourDisplay(ResultMeshManager* rs)
     //ResultMeshManager::getInstance()->SetWidgetScalarName();   //获取页面上的combox的scalarname
 
     this->Cmanager = rs;
-    if(this->Cmanager->getMeshObj_()!=NULL){
-        //this->Cmanager->SetNameTypeMap();//从mesh中获得(已调用)
-        nametype_map=this->Cmanager->GetNameTypeMap();//获取下面的判断ldt_name和ldt_type的容器
-        //ldt_name->setText(cbo_scalar->currentText()); //通过cbo_scalar的消息设置ldt里面的内容
-        //迭代nametype_map 根据cbo_scalar的内容找出int值,0-设置为"point scalar"  1-设置为"cell scalar"
-
-        scalarname_vector = this->Cmanager->GetMeshScalarNameVec();//容器 cbo_scalar combox下拉框的选项
-        //range 需要设置窗口的minrange 和 maxrange 初始值为 0 0  range有值
-
-        //this->Cmanager->scalarName_  把cbo_scalar的值设置为scalarName_
-    }
 }
 
 /*
@@ -36,8 +25,6 @@ ContourDisplay::ContourDisplay(ResultMeshManager* rs)
 ContourDisplay::~ContourDisplay()
 {
     this->Cmanager = NULL;
-    nametype_map.clear();
-    scalarname_vector.clear();
 }
 
 /*
@@ -46,7 +33,7 @@ ContourDisplay::~ContourDisplay()
  * @ret:void
  * @birth: created by czm in 20230420
  */
-void ContourDisplay::contourdisplay_execute(QString str)
+void ContourDisplay::contourdisplay_execute(vtkJsonObject* jsonObj_)
 {
 
     //apply setting data.
@@ -56,51 +43,14 @@ void ContourDisplay::contourdisplay_execute(QString str)
 
     //ResultMeshManager::getInstance()->SetDisplayType(0);
     //ResultMeshManager::getInstance()->DisplayMeshByIndex(ResultMeshManager::getInstance()->GetCurrIndex());
-#if 0
-    Cmanager->ModifyScalarDisplay(str);//传入参数combox的current text(scalar name)
-    Cmanager->SetLevel(str);//传level的值,初始默认值为10
-    double* range;
-    Cmanager->SetRange(range);//传入云图的maxrange和minrange
+
+    Cmanager->HideAllActors();
+    Cmanager->ShowAll();
+    Cmanager->ModifyScalarDisplay(jsonObj_->getScalarname().toStdString());//传入参数combox的current text(scalar name)
+    Cmanager->SetLevel(jsonObj_->getLevel());//传level的值,初始默认值为10
+    Cmanager->SetRange(jsonObj_->getRange());//传入云图的maxrange和minrange
     Cmanager->SetDisplayType(0);//0 is contour; 2 is line; 3 is vector
     Cmanager->DisplayMeshByIndex(Cmanager->GetCurrIndex());
-#endif
-}
-
-/*
- * @brief: build contourMsg which need to be sent to java
- * @param: void
- * @ret: msgs
- * @birth: created by czm in 20230421
- */
-QString ContourDisplay::buildContourMsg()
-{
-    QString msg;
-    msg+="NameTypeMap(";
-    for(map<string,int>::iterator it=nametype_map.begin();it!=nametype_map.end();it++){
-        msg+=QString::fromStdString(it->first);
-        msg+=" ";
-        msg+=QString::number(it->second);
-        msg+=",";
-    }
-    msg.replace(msg.size()-1,1,")");
-    msg+="ScalarName_vector(";
-    for(int i=0;i<scalarname_vector.size();i++){
-        if(i == scalarname_vector.size()-1){
-            msg+=QString::fromStdString(scalarname_vector[i]);
-            msg+=")";
-        }
-        msg += QString::fromStdString(scalarname_vector[i]);
-        msg+=",";
-    }
-    msg += "MinRange(";
-    msg += QString::number(this->Cmanager->getRange()[0]);
-    msg += ")MaxRange(";
-    msg += QString::number(this->Cmanager->getRange()[1]);
-    msg += ")scalarName(";
-    msg +=  QString::fromStdString(this->Cmanager->getScalarName());
-    msg += ")";
-
-    return msg;
 }
 
 /*

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

@@ -5,6 +5,7 @@
 #include <map>
 #include <string>
 #include "../Manager/ResultMeshManager.h"
+#include "../../threadPool_and_statemachine/dealWith/vtkjsonobject.h"
 
 
 class ContourDisplay
@@ -15,14 +16,11 @@ public:
     QString getName() {
         return QObject::tr("Contour");
     }
-    virtual void contourdisplay_execute(QString);
-    QString buildContourMsg();
+    virtual void contourdisplay_execute(vtkJsonObject*);
 
     ResultMeshManager* getResultMeshManager();
 private:
     ResultMeshManager* Cmanager;
-     map<string,int> nametype_map;
-     vector<string> scalarname_vector;
 };
 
 #endif

+ 7 - 51
CAE_Solution/src/VTK/display/linedisplay.cpp

@@ -11,10 +11,6 @@ LineDisplay::LineDisplay(ResultMeshManager* rs)
 {
     //ResultMeshManager::getInstance()->SetLineWidget(static_cast<LineDisplayW*>(m_pWidget));
     this->Cmanager = rs;
-    if(this->Cmanager->getMeshObj_()!=NULL){
-        nametype_map = this->Cmanager->GetNameTypeMap();
-        scalarname_vector = this->Cmanager->GetMeshScalarNameVec();
-    }
 }
 
 /*
@@ -26,8 +22,6 @@ LineDisplay::LineDisplay(ResultMeshManager* rs)
 LineDisplay::~LineDisplay()
 {
     this->Cmanager = NULL;
-    nametype_map.clear();
-    scalarname_vector.clear();
 }
 
 /*
@@ -36,7 +30,7 @@ LineDisplay::~LineDisplay()
  * @ret: void
  * @birth: created by czm in 20230424
  */
-void LineDisplay::linedisplay_execute(QString str)
+void LineDisplay::linedisplay_execute(vtkJsonObject* jsonObj_)
 { 
     //string str = static_cast<LineDisplayW*>(m_pWidget)->GetScalarName();
     //if (!str.empty())
@@ -47,14 +41,14 @@ void LineDisplay::linedisplay_execute(QString str)
     //ResultMeshManager::getInstance()->SetDisplayType(2);
     //ResultMeshManager::getInstance()->DisplayMeshByIndex(ResultMeshManager::getInstance()->GetCurrIndex());
     //}
-#if 0
-    Cmanager->ModifyScalarDisplay(str);//传入combox的current text(scalar name)
-    Cmanager->SetLevel(str);//传level的值,初始默认值为10
-    double* range;
-    Cmanager->SetRange(range);
+
+    Cmanager->HideAllActors();
+    Cmanager->ShowAll();
+    Cmanager->ModifyScalarDisplay(jsonObj_->getScalarname().toStdString());//传入combox的current text(scalar name)
+    Cmanager->SetLevel(jsonObj_->getLevel());//传level的值,初始默认值为10
+    Cmanager->SetRange(jsonObj_->getRange());
     Cmanager->SetDisplayType(2);//0-contour 2-line 3-vector
     Cmanager->DisplayMeshByIndex(Cmanager->GetCurrIndex());
-#endif
 }
 
 /*
@@ -67,41 +61,3 @@ ResultMeshManager *LineDisplay::getResultMeshManager()
 {
     return this->Cmanager;
 }
-
-/*
- * @brief: build line message
- * @param: void
- * @ret: msg(QString)
- * @birth: created by czm in 20230424
- */
-QString LineDisplay::buildLineMsg()
-{
-    QString msg;
-    msg+="NameTypeMap(";
-    for(auto it = nametype_map.begin();it!=nametype_map.end();it++){
-        msg+=QString::fromStdString(it->first);
-        msg+=" ";
-        msg+=QString::number(it->second);
-        msg+=",";
-    }
-    msg.replace(msg.size()-1,1,")");
-    msg+="ScalarName_vector(";
-    for(int i=0;i<scalarname_vector.size();i++){
-        if(i == scalarname_vector.size()-1){
-            msg+=QString::fromStdString(scalarname_vector[i]);
-            msg+=")";
-        }
-        msg += QString::fromStdString(scalarname_vector[i]);
-        msg+=",";
-    }
-    msg += "MinRange(";
-    msg += QString::number(this->Cmanager->getRange()[0]);
-    msg += ")MaxRange(";
-    msg += QString::number(this->Cmanager->getRange()[1]);
-    msg += ")scalarName(";
-    msg +=  QString::fromStdString(this->Cmanager->getScalarName());
-    msg += ")";
-
-    return msg;
-}
-

+ 5 - 5
CAE_Solution/src/VTK/display/linedisplay.h

@@ -4,6 +4,7 @@
 #include <map>
 #include <string>
 #include "../manager/ResultMeshManager.h"
+#include "../../threadPool_and_statemachine/dealWith/vtkjsonobject.h"
 
 
 class LineDisplay
@@ -11,14 +12,13 @@ class LineDisplay
 public:
     LineDisplay(ResultMeshManager* rs);
     virtual ~LineDisplay();
-    virtual QString getName() { return QObject::tr("Line"); }
-    virtual void linedisplay_execute(QString);
+    virtual QString getName() {
+        return QObject::tr("Line");
+    }
+    virtual void linedisplay_execute(vtkJsonObject*);
 
     ResultMeshManager* getResultMeshManager();
-    QString buildLineMsg();
 private:
     ResultMeshManager* Cmanager;
-    map<string,int> nametype_map;
-    vector<string> scalarname_vector;
 };
 

+ 75 - 27
CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.cpp

@@ -105,7 +105,7 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
             render_->CaptureWindowImages();
             if(!render_->img.isEmpty()){
                 std::string img_ = render_->img.toStdString();
-                std::string json_ = object->ToJson(img_);
+                std::string json_ = object->ToJson("img",img_);
                 emit sendImg_handlePoolToSendstate(json_);//信号
             }
             delete object;
@@ -151,12 +151,12 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
     }else if(object->action == "ResultImport"){//导入结果
         if(!resultImport(object,render_))return;
     }else if(object->action == "ContourDisplay"){//显示云图
-        if(!result_contourdisplay(object)){
+        if(!result_contourdisplay(object,render_)){
             cout<<"please import tecplot result first!"<<endl;
         }
         return;
     }else if(object->action == "LineDisplay"){//显示等值线图
-        if(!result_linedisplay(object)){
+        if(!result_linedisplay(object,render_)){
             cout<<"please import tecplot result first!"<<endl;
         }
         return;
@@ -164,7 +164,7 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
     render_->CaptureWindowImages();
     if(!render_->img.isEmpty()){
         std::string img_ = render_->img.toStdString();
-        std::string json_ = object->ToJson(img_);
+        std::string json_ = object->ToJson("img",img_);
         emit sendImg_handlePoolToSendstate(json_);//信号
     }
     delete object;
@@ -209,7 +209,7 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
  */
 bool handlePool::resultImport(vtkJsonObject *object_, QVTKRenderer *renderer_)
 {
-    QStringList fileName_list=getFileNameList(object_->filePath);
+    QStringList fileName_list=object_->getFileName().split(",");
     if(fileName_list.isEmpty()){
         cout<< "No Tecplot file is ready to read!"<<endl;
         return false;
@@ -223,7 +223,8 @@ bool handlePool::resultImport(vtkJsonObject *object_, QVTKRenderer *renderer_)
         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(fileName_list[i]);
+            bool f =rsMeshManager->LoadData(object_->filePath+"/"+fileName_list[i]);
             if(f){
                 rsMeshManager->SetSaveIndex(i);
                 if(renderer_){
@@ -236,12 +237,14 @@ bool handlePool::resultImport(vtkJsonObject *object_, QVTKRenderer *renderer_)
         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_);
+        std::string json_ = object_->ToJson("img",img_);
         emit sendImg_handlePoolToSendstate(json_);//信号
     }
+
     delete object_;
     object_ = NULL;
     return true;
@@ -252,7 +255,7 @@ bool handlePool::resultImport(vtkJsonObject *object_, QVTKRenderer *renderer_)
  * @ret: bool
  * @birth: created by czm in 20230421
  */
-bool handlePool::result_contourdisplay(vtkJsonObject *object_)
+bool handlePool::result_contourdisplay(vtkJsonObject *object_,QVTKRenderer* render_)
 {
     ContourDisplay* condis = NULL;
     if(map_resultmanager.contains(object_->proId)) return false;
@@ -261,9 +264,13 @@ bool handlePool::result_contourdisplay(vtkJsonObject *object_)
     }else{
         condis = new ContourDisplay(map_resultmanager.value(object_->proId));
         map_contourdisplay.insert(object_->proId,condis);
-        //condis->contourdisplay_execute();//需传入参数
-        std::string json_= object_->ToJson(condis->buildContourMsg().toStdString());
-        emit sendImg_handlePoolToSendstate(json_);
+        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;
@@ -276,7 +283,7 @@ bool handlePool::result_contourdisplay(vtkJsonObject *object_)
  * @ret: bool
  * @birth: created by czm in 20230424
  */
-bool handlePool::result_linedisplay(vtkJsonObject *object_)
+bool handlePool::result_linedisplay(vtkJsonObject *object_,QVTKRenderer* render_)
 {
     LineDisplay* linedis = NULL;
     if(map_resultmanager.contains(object_->proId))return false;
@@ -285,9 +292,13 @@ bool handlePool::result_linedisplay(vtkJsonObject *object_)
     }else{
         linedis = new LineDisplay(map_resultmanager.value(object_->proId));
         map_linedisplay.insert(object_->proId,linedis);
-        //linedis->linedisplay_execute();//需传入参数
-        std::string json_ = object_->ToJson(linedis->buildLineMsg().toStdString());
-        emit sendImg_handlePoolToSendstate(json_);
+        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;
@@ -300,22 +311,59 @@ bool handlePool::result_linedisplay(vtkJsonObject *object_)
  * @ret: QStringList
  * @birth: created by czm in 20230420
  */
-QStringList handlePool::getFileNameList(QString filePath)
+//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
+ */
+QString handlePool::buildResultImport_msg(ResultMeshManager *cmanager)
 {
-    QStringList string_list;
-    QDir dir(filePath); //需不需要加"\\"?
-    if(!dir.exists()){
-       cout <<"filePath error!please check again!"<<endl;
-       return string_list;
+    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);
+        msg+=",";
     }
-    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());
+    msg.replace(msg.size()-1,1,")");
+    msg+="ScalarName_vector(";
+    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+=",";
     }
-    return string_list;
+    msg += "MinRange(";
+    msg += QString::number(cmanager->getRange()[0]);
+    msg += ")MaxRange(";
+    msg += QString::number(cmanager->getRange()[1]);
+    msg += ")scalarName(";
+    msg +=  QString::fromStdString(cmanager->getScalarName());
+    msg += ")";
+
+    return msg;
 }
 
 /*

+ 4 - 3
CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.h

@@ -26,9 +26,10 @@ public:
     void operateRender(vtkJsonObject*,QVTKRenderer*);
     //void loadTecplotFile(QString);
     bool resultImport(vtkJsonObject*,QVTKRenderer*);
-    bool result_contourdisplay(vtkJsonObject*);
-    bool result_linedisplay(vtkJsonObject*);
-    QStringList getFileNameList(QString);
+    bool result_contourdisplay(vtkJsonObject*, QVTKRenderer *);
+    bool result_linedisplay(vtkJsonObject*, QVTKRenderer *);
+    //QStringList getFileNameList(QString);
+    QString buildResultImport_msg(ResultMeshManager*);
 
 
     QMap<QString,QVTKRenderer*> getMapRender();

+ 91 - 5
CAE_Solution/src/threadPool_and_statemachine/dealWith/vtkjsonobject.cpp

@@ -8,7 +8,7 @@
  */
 vtkJsonObject::vtkJsonObject()
 {
-
+    range = new double[2];
 }
 
 /*
@@ -19,7 +19,10 @@ vtkJsonObject::vtkJsonObject()
  */
 vtkJsonObject::~vtkJsonObject()
 {
-
+    if(range){
+        delete[] range;
+        range = NULL;
+    }
 }
 
 /*
@@ -99,6 +102,37 @@ void vtkJsonObject::FromJSON(std::string msg)
                         this->fileType = value.toString();
                         qDebug() << "fileType:" << this->fileType;
                     }
+                }//0424 append
+                if(object_.contains("fileName")){
+                    QJsonValue value = object_.value("fileName");
+                    if (value.isString()) {
+                        this->fileName = value.toString();
+                        qDebug() << "fileName:" << this->fileName;
+                    }
+                }
+                if(object_.contains("level")){
+                    QJsonValue value = object_.value("level");
+                    if (value.isDouble()) {
+                        this->level = value.toInt();
+                        qDebug() << "level:" << this->level;
+                    }
+                }
+                if(object_.contains("range")){
+                    QJsonValue value = object_.value("range");
+                    if (value.isString()) {
+                         QString range_= value.toString();
+                         QStringList range_list= range_.split(",");
+                         this->range[0] = range_list[0].toDouble();
+                         this->range[1] = range_list[1].toDouble();
+                        qDebug() << "Minrange:" << this->range[0]<<" Maxrange:"<<this->range[1];
+                    }
+                }
+                if(object_.contains("fileName")){
+                    QJsonValue value = object_.value("fileName");
+                    if (value.isString()) {
+                        this->fileName = value.toString();
+                        qDebug() << "fileName:" << this->fileName;
+                    }
                 }
             }
         }
@@ -122,6 +156,10 @@ vtkJsonObject *vtkJsonObject::operator=(vtkJsonObject *object)
     this->fileType = object->fileType;
     this->action = object->action;
     this->paramJson = object->paramJson;
+    this->fileName = object->getFileName();
+    this->level = object->getLevel();
+    this->range = object->getRange();
+    this->scalarName = object->getScalarname();
     return this;
 }
 
@@ -131,9 +169,9 @@ vtkJsonObject *vtkJsonObject::operator=(vtkJsonObject *object)
  * @brief: josn msg
  * @birth: created by czm in 20230404
  */
-std::string vtkJsonObject::ToJson(std::string imgfile)
+std::string vtkJsonObject::ToJson(std::string type,std::string file)
 {
-    qDebug()<<"imgfile"<<QString::fromStdString(imgfile);
+    qDebug()<<"imgfile"<<QString::fromStdString(file);
     QJsonObject pageObject;
     pageObject.insert("filePath",this->filePath);
     pageObject.insert("fileType",this->fileType);
@@ -148,7 +186,11 @@ std::string vtkJsonObject::ToJson(std::string imgfile)
         json.insert("paramJson",pageObject);
     }
     json.insert("action",this->action);
-    json.insert("img",QString::fromStdString(imgfile));
+    if(type == "img"){
+        json.insert("img",QString::fromStdString(file));
+    }else if(type == "importResult"){
+        json.insert("importResult",QString::fromStdString(file));
+    }
 
     QJsonDocument document;
     document.setObject(json);
@@ -158,6 +200,50 @@ std::string vtkJsonObject::ToJson(std::string imgfile)
     return strJson.toStdString();
 }
 
+/*
+ * @brief: get filename
+ * @param: void
+ * @ret: filename
+ * @birth: created by czm in 20230424
+ */
+QString vtkJsonObject::getFileName()
+{
+    return this->fileName;
+}
+
+/*
+ * @brief: get level
+ * @param: void
+ * @ret: level
+ * @birth: created by czm in 20230424
+ */
+int vtkJsonObject::getLevel()
+{
+    return this->level;
+}
+
+/*
+ * @brief: get range
+ * @param: void
+ * @ret: range
+ * @birth: created by czm in 20230424
+ */
+double *vtkJsonObject::getRange()
+{
+    return this->range;
+}
+
+/*
+ * @brief: get scalarname
+ * @param: void
+ * @ret: scalarname
+ * @birth: created by czm in 20230424
+ */
+QString vtkJsonObject::getScalarname()
+{
+    return this->scalarName;
+}
+
 
 
 

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

@@ -10,6 +10,8 @@
 #include <string>
 #include <iostream>
 #include <QDebug>
+#include <QStringList>
+
 
 
 class vtkJsonObject
@@ -19,7 +21,12 @@ public:
     ~vtkJsonObject();
     void FromJSON(std::string msg);
     vtkJsonObject* operator=(vtkJsonObject* object);
-    std::string ToJson(std::string imgfile);
+    std::string ToJson(std::string type,std::string file);
+
+    QString getFileName();
+    int getLevel();
+    double* getRange();
+    QString getScalarname();
 
 public:
      QString usrId;
@@ -30,6 +37,11 @@ public:
      QString fileType;
      QString action;
 
+private:
+     QString fileName;
+     int level;
+     double* range;
+     QString scalarName;
 };
 
 #endif // VTKJSONOBJECT_H