ソースを参照

0705 修改读取动画多个dat文件bug

caizm 2 年 前
コミット
43f5a19bad

+ 12 - 6
CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.cpp

@@ -1213,6 +1213,7 @@ void handlePool::animation_render(string filename,int step,QVTKRenderer* rendere
     }
 
     ResultManager* rsManager = NULL;
+    set<string> zonename_set;
     if(type_ == "one_plt_ascii_file"||type_ == "one_plt_binary_file"){
         renderer_->widgetFlag = QVTKRenderer::WidgetModel::ResultModel;
         bool flag = true;
@@ -1225,6 +1226,10 @@ void handlePool::animation_render(string filename,int step,QVTKRenderer* rendere
             string fname_ = object_->filePath+"/"+temp[i];
 #endif
             bool f =rsManager->LoadData(QString::fromStdString(fname_));
+            for(int j=0;j<rsManager->meshObj_->GetZoneNumber();j++){
+                zonename_set.insert(rsManager->meshObj_->GetZoneName()[j]);
+            }
+
             if(f){
                 rsManager->SetSaveIndex(0);
                 if(renderer_){
@@ -1281,7 +1286,7 @@ void handlePool::animation_render(string filename,int step,QVTKRenderer* rendere
         }
     }
     if(!hidezonenames_tmp.empty()){
-        set_hidezone_animation(hidezonenames_tmp,rsManager);
+        set_hidezone_animation(hidezonenames_tmp,rsManager,zonename_set);
     }
 
     renderer_->camera_->TransformToIsometric();
@@ -1356,17 +1361,18 @@ void handlePool::animation_render(string filename,int step,QVTKRenderer* rendere
  * @ret: void
  * @birth: created by czm in 20230627
  */
-void handlePool::set_hidezone_animation(vector<string> &hidezonename, ResultManager *cmanager)
+void handlePool::set_hidezone_animation(vector<string> &hidezonename, ResultManager *cmanager,set<string> zonename_set)
 {
-    int num = cmanager->meshObj_->GetZoneNumber();
-    vector<string> zonename_ = cmanager->meshObj_->GetZoneName();
+    int num = zonename_set.size();
     vector<bool> vec_bool;
     vec_bool.resize(num,true);
+    int j=0;
     for(int i =0;i<hidezonename.size();i++){
-        for(int j =0;j<zonename_.size();j++){
-            if(hidezonename[i]==zonename_[j]){
+        for(set<string>::iterator iter=zonename_set.begin();iter!=zonename_set.end();iter++){
+            if(hidezonename[i]==(*iter)){
                 vec_bool[j] = false;
             }
+            ++j;
         }
     }
     cmanager->SetShowHideState(vec_bool);

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

@@ -75,7 +75,7 @@ public:
     void clear_map_pid(string);
     void get_init_scalar_range(ResultManager*);
     void animation_render(string,int,QVTKRenderer*,boostJsonObject*);
-    void set_hidezone_animation(vector<string>&,ResultManager*);
+    void set_hidezone_animation(vector<string>&,ResultManager*,set<string>);
 
 private:
     QMap<string,QVTKRenderer*> qmapRender;