Ver código fonte

0616 单个plt文件加载

caizm 2 anos atrás
pai
commit
5d2e720b15

+ 50 - 5
CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.cpp

@@ -296,13 +296,29 @@ bool handlePool::resultImport(boostJsonObject *object_, QVTKRenderer *renderer_)
     size_t found = object_->fileName.find_first_of(',');
     if(found==string::npos){//单个文件
         vector<string> tmp = stringSplit(object_->fileName,'.');
-        if(tmp[1]!="vtk"){
+        if(tmp[1]=="vtk"){
+            type_ = "vtkfile";
+        }else if(tmp[1]=="dat"){
+            type_ = "one_plt_ascii_file";
+        }else if(tmp[1]=="plt"){
+            type_ = "one_plt_binary_file";
+        }else{
             emit sendImg_handlePoolToSendstate(object_->ToJson("exception",buildError_msg("please open vtk file")));
+            type_ = "";
             return false;
         }
-        type_ = "vtkfile";
     }else{
-        type_ = "notvtkfile";
+        vector<string> tmp = stringSplit(object_->fileName,',');
+        vector<string> tmp_file_name=stringSplit(tmp[0],'.');
+        if(tmp_file_name[1]=="vtk"){
+            emit sendImg_handlePoolToSendstate(object_->ToJson("exception",buildError_msg("please open one vtk file")));
+            type_ = "";
+            return false;
+        }else if(tmp_file_name[1]=="dat"){
+            type_ = "plt_ascii_files";
+        }else if(tmp_file_name[1]=="plt"){
+            type_ = "plt_binary_files";
+        }
     }
 
     //判断有无窗口
@@ -343,7 +359,7 @@ bool handlePool::resultImport(boostJsonObject *object_, QVTKRenderer *renderer_)
 
     ResultManager* rsManager = NULL;
     //rsManager->Clear();
-    if(type_ == "notvtkfile"){
+    if(type_ == "plt_ascii_files"||type_=="plt_binary_files"){
 
         vector<string> tmp = stringSplit(object_->fileName,',');
         QStringList fileName_list;
@@ -365,7 +381,7 @@ bool handlePool::resultImport(boostJsonObject *object_, QVTKRenderer *renderer_)
         for(int i =0;i<fileName_list.size();i++){
             bool f =rsManager->LoadData(QString::fromStdString(object_->filePath)+"/"+fileName_list[0]);//加载
             if(f){
-                rsManager->SetSaveIndex(0);
+                rsManager->SetSaveIndex(i);
                 if(renderer_){
                     rsManager->DisplayMesh(renderer_);
                 }
@@ -385,6 +401,35 @@ bool handlePool::resultImport(boostJsonObject *object_, QVTKRenderer *renderer_)
         }else {
             return false;
         }
+    }else if(type_ == "one_plt_ascii_file"||type_ == "one_plt_binary_file"){
+        bool flag = true;
+        rsManager = new ResultMeshManager();
+        rsManager->Clear();
+        if(object_->fileType == "ascii"){
+            rsManager->fileType ="plt_ascii";
+        }else if(object_->fileType == "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;
+            }
+        if(flag)
+        {
+            rsManager->HideAllActors();
+            rsManager->ShowAll();
+            rsManager->DisplayMeshByIndex(0);
+            rsManager->SetNameTypeMap();
+            rsManager->InitWidgetsParameter();
+            renderer_->ZoomToExtents();
+        }else {
+            return false;
+        }
     }else if(type_ == "vtkfile"){
         //object_->fileName = "dynamicResponse-transient36.vtk";//测试
         rsManager = new ResultVTKManager();