caizm 2 жил өмнө
parent
commit
65d08cda5a

+ 0 - 6
CAE_Solution/src/VTK/Manager/ResultMeshManager.cpp

@@ -2753,9 +2753,3 @@ string ResultMeshManager::deleteSpaces(string str)
     }
     return str_.toStdString();
 }
-
-
-
-
-
-

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

@@ -204,6 +204,7 @@ public:
     vtkVISUnShadeMesh* solidSurfaceMesh;
 
     string fileType;
+
 };
 
 #endif // RESULTMANAGER_H

+ 2 - 0
CAE_Solution/src/threadPool_and_statemachine/dealWith/boostjsonobject.cpp

@@ -163,6 +163,7 @@ std::string boostJsonObject::ToJson(std::string type, QMap<QString, std::string>
         item.put("nameTypes",map_["nameTypes"]);
         item.put("range0",map_["range0"]);
         item.put("range1",map_["range1"]);
+        item.put("scalarrange",map_["scalarrange"]);
     }else if(type == "importResult_line"){
         item.put("msgType","line_param");
         item.put("scalarName",map_["scalarName"]);
@@ -170,6 +171,7 @@ std::string boostJsonObject::ToJson(std::string type, QMap<QString, std::string>
         item.put("nameTypes",map_["nameTypes"]);
         item.put("range0",map_["range0"]);
         item.put("range1",map_["range1"]);
+        item.put("scalarrange",map_["scalarrange"]);
     }else if(type == "contourDisplay"){
         item.put("msgType","contourDisplay_range");
         item.put("minRange",map_["minRange"]);

+ 73 - 17
CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.cpp

@@ -248,10 +248,10 @@ void handlePool::judgeLoaddata(boostJsonObject *object, QVTKRenderer *render_)
     }
     QString m_filePath = QString::fromStdString(object->filePath);//测试路径
     //QString m_filePath = "F:\\czm\\vtkfile\\tfg.ugrid";
-//    if(object->solverConfigid=="b867ebb4a49d4c7a8ce66d6b07b6f333"){
-//        m_filePath = "F:\\czm\\vtkfile\\f.vtk";
-//        //m_filePath = "F:\\czm\\vtkfile\\forward.ugrid";
-//    }
+    //    if(object->solverConfigid=="b867ebb4a49d4c7a8ce66d6b07b6f333"){
+    //        m_filePath = "F:\\czm\\vtkfile\\f.vtk";
+    //        //m_filePath = "F:\\czm\\vtkfile\\forward.ugrid";
+    //    }
 
     //QString m_filePath = "C:\\Users\\Administrator\\Desktop\\VTK\\f.vtk";
     QFileInfo fileinfo_(m_filePath);
@@ -378,7 +378,7 @@ bool handlePool::resultImport(boostJsonObject *object_, QVTKRenderer *renderer_)
         if(object_->fileType == "ascii"){
             rsManager->fileType ="plt_ascii";
         }else if(object_->fileType == "binary"){
-           rsManager->fileType = "plt_binary";
+            rsManager->fileType = "plt_binary";
         }
         for(int i =0;i<fileName_list.size();i++){
             bool f =rsManager->LoadData(QString::fromStdString(object_->filePath)+"/"+fileName_list[i]);//加载
@@ -410,17 +410,17 @@ bool handlePool::resultImport(boostJsonObject *object_, QVTKRenderer *renderer_)
         if(object_->fileType == "ascii"){
             rsManager->fileType ="plt_ascii";
         }else if(object_->fileType == "binary"){
-           rsManager->fileType = "plt_binary";
+            rsManager->fileType = "plt_binary";
         }
-            bool f =rsManager->LoadData(QString::fromStdString(object_->filePath)+"/"+QString::fromStdString(object_->fileName));//加载
-            if(f){
-                rsManager->SetSaveIndex(0);
-                if(renderer_){
-                    rsManager->DisplayMesh(renderer_);
-                }
-            }else{
-                flag = false;
+        bool f =rsManager->LoadData(QString::fromStdString(object_->filePath)+"/"+QString::fromStdString(object_->fileName));//加载
+        if(f){
+            rsManager->SetSaveIndex(0);
+            if(renderer_){
+                rsManager->DisplayMesh(renderer_);
             }
+        }else{
+            flag = false;
+        }
         if(flag)
         {
             rsManager->HideAllActors();
@@ -496,6 +496,7 @@ bool handlePool::resultImport(boostJsonObject *object_, QVTKRenderer *renderer_)
     contour_sendrange_flag = true;//标志位,第一次加载result,即为真,云图发送range
     line_sendrange_flag = true;//标志位,第一次加载result,即为真,等值线发送range
 
+    get_init_scalar_range(rsManager);
     emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_contour",buildResultImport_msg("Contour",rsManager)));//发送云图结果数据
     emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_line",buildResultImport_msg("Line",rsManager)));//发送等值线结果数据
     emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_vector",buildResultImport_msg("Vector",rsManager)));//发送矢量结果数据
@@ -834,6 +835,26 @@ QMap<QString,string> handlePool::buildResultImport_msg(QString type,ResultManage
         }else{
             map_tmp.insert("scalarName",msg);
         }
+        msg.clear();
+        vector<string> temp_scalar = cmanager->GetMeshScalarNameVec();
+        if(cmanager->fileType=="plt_binary"){
+            for(int i=0;i<temp_scalar.size();i++){
+                temp_scalar[i] = removeSpaces(temp_scalar[i]);
+            }
+        }
+        set<double>::iterator iter;
+        for(int i =0;i<temp_scalar.size();i++){
+            msg+=temp_scalar[i];
+            msg+="#";
+            iter = allscalarrange[temp_scalar[i]].begin();
+            msg+=to_string(*iter);
+            iter = --allscalarrange[temp_scalar[i]].end();
+            msg+="#";
+            msg+=to_string(*iter);
+            msg+=",";
+        }
+        msg = msg.erase(msg.size()-1);
+        map_tmp.insert("scalarrange",msg);
     }else if(type == "Vector"){
         string msg;
         vector<string> vec_u = cmanager->vectorWidget_->dataU;
@@ -969,9 +990,9 @@ QMap<QString, string> handlePool::buildResultImport_msg(QString type, ResultMana
         map_tmp.insert("max_position_z",to_string(sdwidget->GetPositionRange()[5]));
         for(int i =0; i<sdwidget->GetVariableName_vector().size();i++){
             if(cmanager->fileType=="plt_binary"){
-               msg+= removeSpaces(sdwidget->GetVariableName_vector()[i]);
+                msg+= removeSpaces(sdwidget->GetVariableName_vector()[i]);
             }else{
-               msg+= sdwidget->GetVariableName_vector()[i];
+                msg+= sdwidget->GetVariableName_vector()[i];
             }
             msg+=",";
         }
@@ -1044,6 +1065,12 @@ void handlePool::send_picture(boostJsonObject *object, QVTKRenderer *render_)
     object = NULL;
 }
 
+/*
+ * @brief: send picture
+ * @param: boostJsonObject QVTKRenderer
+ * @ret: void
+ * @birth: created by czm in 20230425
+ */
 void handlePool::send_picture(boostJsonObject *object, QVTKRenderer *render_, int step)
 {
     render_->CaptureWindowImages();
@@ -1164,7 +1191,6 @@ void handlePool::clear_map_pid(string pid)
     map_slicedisplay.erase(iter5);
     QMap<string,StreamWidget*>::iterator iter6 = map_streamdisplay.find(pid);
     map_streamdisplay.erase(iter6);
-
 }
 
 /*
@@ -1195,3 +1221,33 @@ vector<string> handlePool::stringSplit(const string& str, char delim) {
     }
     return elems;
 }
+
+
+/*
+ * @brief: get all scalar range
+ * @param: void
+ * @ret: void
+ * @birth: created by czm in 20230625
+ */
+void handlePool::get_init_scalar_range(ResultManager* cmanager)
+{
+    if(cmanager->solveTimes_.size()>1)return;
+    double sltime = *(cmanager->solveTimes_.begin());
+    map<double,map<string,vtkVISUnContour*>>::iterator it1 = cmanager->vtkVisZoneMeshMap_.find(sltime);
+    vector<string> temp_scalar = cmanager->GetMeshScalarNameVec();
+    if(cmanager->fileType == "plt_binary"){
+        for(int i =0;i<temp_scalar.size();i++){
+            temp_scalar[i] = removeSpaces(temp_scalar[i]);
+        }
+    }
+    for(int i =0;i<temp_scalar.size();i++){
+        set<double> temp;
+        for(map<string,vtkVISUnContour*>::iterator unIt = it1->second.begin();unIt!=it1->second.end();unIt++){
+            double range[2];
+            unIt->second->GetScalarRange(range,(char*)temp_scalar[i].c_str());
+            temp.insert(range[0]);
+            temp.insert(range[1]);
+        }
+        allscalarrange[temp_scalar[i]] = temp;
+    }
+}

+ 2 - 0
CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.h

@@ -74,6 +74,7 @@ public:
     pid_resultManager* set_map_resultManager(boostJsonObject*,ResultManager*);
     void animationSliderChanged(QString);
     void clear_map_pid(string);
+    void get_init_scalar_range(ResultManager*);
 
 
 private:
@@ -90,6 +91,7 @@ private:
     QTabWidget* w;
     bool contour_sendrange_flag;
     bool line_sendrange_flag;
+    map<string,set<double>> allscalarrange;
 
 signals:
     void sendImg_handlePoolToSendstate(std::string);