瀏覽代碼

0627 更新动画

caizm 2 年之前
父節點
當前提交
28bc8ee6f1

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

@@ -12,7 +12,6 @@
 #include "../display/solidsurfacewidget.h"
 #include "../display/streamwidget.h"
 #include "../display/vectordisplay.h"
-#include "../display/contourinimationdisplay.h"
 #include "../visualization_VTK/vtkVISUnContour.h"
 #include "../visualization_VTK/vtkvisunstructuredgridsource.h"
 #include "ResultMeshManager.h"
@@ -38,7 +37,6 @@
 #include "../widget/Sslicewidget.h"
 #include "../widget/streamDisplaywidget.h"
 #include "../widget/vectorDisplaywidget.h"
-#include "../widget/contourinimationw.h"
 
 
 //ResultMeshManager* ResultMeshManager::m_pInstance = 0;
@@ -1136,17 +1134,6 @@ void ResultMeshManager::SetVectorWidget(VectorW* w)
     }
 }
 
-void ResultMeshManager::SetAnimationWidget(ContourInimationW *w)
-{
-    animationWidget_ = w;
-    if (meshObj_ != NULL)
-    {
-        w->SetTypeEnable(HaveModalMeshFlag);
-        animationWidget_->SetSolveTime(GetSolveTime());
-        animationWidget_->SetZoneNameVector(zoneNameVec_);
-    }
-}
-
 void ResultMeshManager::SetSurfaceSolidWidget(SolidSurfaceWidget* w)
 {
     solidSurfaceW_ = w;
@@ -1388,12 +1375,6 @@ void ResultMeshManager::SetDisplayType(int type)
   */
 void ResultMeshManager::InitWidgetsParameter()
 {
-    if (animationWidget_ != NULL)
-    {
-        animationWidget_->SetTypeEnable(HaveModalMeshFlag);
-        animationWidget_->SetSolveTime(GetSolveTime());
-        animationWidget_->SetZoneNameVector(zoneNameVec_);
-    }
     if (contourWidget_ != NULL)
     {
         contourWidget_->SetNameTypeMap(GetNameTypeMap());
@@ -2177,7 +2158,6 @@ void ResultMeshManager::UpdataZoomModel(double factor)
     DisplayMesh(render_);
     HideAllActors();
     DisplayMeshByIndex(0);
-    animationWidget_->SlotStart();
     render_->ZoomToExtents();
 }
 
@@ -2333,8 +2313,6 @@ void ResultMeshManager::ChangeMeshType(int type)
             DisplayMeshByIndex(0);
             SetNameTypeMap();
             InitWidgetsParameter();
-            animationWidget_->SlotStart();
-            animationWidget_->InitScaleFactor();
             render_->ZoomToExtents();
         }else if (type == 1)
         {
@@ -2345,8 +2323,6 @@ void ResultMeshManager::ChangeMeshType(int type)
             DisplayMeshByIndex(0);
             SetNameTypeMap();
             InitWidgetsParameter();
-            animationWidget_->SlotStart();
-            animationWidget_->InitScaleFactor();
             render_->ZoomToExtents();
         }
     }

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

@@ -40,7 +40,6 @@ public:
     void SetCotourWidget(ContourDisplayW* w);
     void SetLineWidget(LineDisplayW* w);
     void SetVectorWidget(VectorW* w);
-    void SetAnimationWidget(ContourInimationW* w);
     void SetSurfaceSolidWidget(SolidSurfaceWidget* w);
     void SetSliceWidget(SsliceWidget* w);
     void SetStremWidget(StreamDisplayWidget* w);

+ 0 - 5
CAE_Solution/src/VTK/Manager/resultmanager.cpp

@@ -136,11 +136,6 @@ void ResultManager::SetVectorWidget(VectorW *w)
     vectorWidget_ = w;
 }
 
-void ResultManager::SetAnimationWidget(ContourInimationW *w)
-{
-    animationWidget_ = w;
-}
-
 void ResultManager::SetSurfaceSolidWidget(SolidSurfaceWidget *w)
 {
     solidSurfaceW_ = w;

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

@@ -63,7 +63,6 @@ public:
     virtual void SetCotourWidget(ContourDisplayW* w);
     virtual void SetLineWidget(LineDisplayW* w);
     virtual void SetVectorWidget(VectorW* w);
-    virtual void SetAnimationWidget(ContourInimationW* w);
     virtual void SetSurfaceSolidWidget(SolidSurfaceWidget* w);
     virtual void SetSliceWidget(SsliceWidget* w);
     virtual void SetStremWidget(StreamDisplayWidget* w);

+ 0 - 13
CAE_Solution/src/VTK/Manager/resultvtkmanager.cpp

@@ -20,7 +20,6 @@
 #include "../widget/streamDisplaywidget.h"
 #include "../widget/vectorDisplaywidget.h"
 #include "../visualization_VTK/vtkVISUnGlyph.h"
-#include "../widget/contourinimationw.h"
 
 /*
  * @brief: the constructor
@@ -551,18 +550,6 @@ void ResultVTKManager::SetVectorWidget(VectorW *w)
     vectorWidget_->SetScaleFactor(scaleFactor_);
 }
 
-
-void ResultVTKManager::SetAnimationWidget(ContourInimationW *w)
-{
-    animationWidget_ = w;
-    if (meshObj_ != NULL)
-    {
-        //w->SetTypeEnable(HaveModalMeshFlag);
-        animationWidget_->SetSolveTime(GetSolveTime());
-        animationWidget_->SetZoneNameVector(zoneNameVec_);
-    }
-}
-
 void ResultVTKManager::SetSurfaceSolidWidget(SolidSurfaceWidget *w)
 {
     solidSurfaceW_ = w;

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

@@ -38,7 +38,6 @@ public:
     void SetCotourWidget(ContourDisplayW* w);
     void SetLineWidget(LineDisplayW* w);
     void SetVectorWidget(VectorW* w);
-    void SetAnimationWidget(ContourInimationW* w);
     void SetSurfaceSolidWidget(SolidSurfaceWidget* w);
     void SetSliceWidget(SsliceWidget* w);
     void SetStremWidget(StreamDisplayWidget* w);

+ 0 - 56
CAE_Solution/src/VTK/display/contourinimationdisplay.cpp

@@ -1,56 +0,0 @@
-#include "contourinimationdisplay.h"
-
-/*
- * @brief: the constructor
- * @param:
- * @ret:
- * @birth: created by czm in 20230607
- */
-contourinimationDisplay::contourinimationDisplay(ResultManager* c)
-{
-    this->Cmanager = c;
-}
-
-/*
- * @brief: the destructor
- * @param:
- * @ret:
- * @birth: created by czm in 20230607
- */
-contourinimationDisplay::~contourinimationDisplay()
-{
-    this->Cmanager = NULL;
-}
-
-/*
- * @brief: update from inters
- * @param:void
- * @ret:void
- * @birth: created by czm in 20230607
- */
-void contourinimationDisplay::updateFromInters()
-{
-    //update setting data from widgets.
-}
-
-/*
- * @brief: update from params
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230607
- */
-void contourinimationDisplay::updateFromParams()
-{
-    //update setting data from params.
-}
-
-/*
- * @brief: execute
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230607
- */
-void contourinimationDisplay::execute()
-{
-    //apply setting data.
-}

+ 0 - 22
CAE_Solution/src/VTK/display/contourinimationdisplay.h

@@ -1,22 +0,0 @@
-#ifndef CONTOURINIMATIONDISPLAY_H
-#define CONTOURINIMATIONDISPLAY_H
-#include <QString>
-#include <QObject>
-#include "../widget/contourinimationw.h"
-class ResultManager;
-
-class contourinimationDisplay
-{
-public:
-    contourinimationDisplay(ResultManager* c);
-    virtual ~contourinimationDisplay();
-    virtual QString getName() { return QObject::tr("Contour"); }
-
-    virtual void updateFromInters();
-    virtual void updateFromParams();
-    virtual void execute();
-private:
-    ResultManager* Cmanager;
-};
-
-#endif // CONTOURINIMATIONDISPLAY_H

+ 0 - 260
CAE_Solution/src/VTK/widget/contourinimationw.cpp

@@ -1,260 +0,0 @@
-#include "contourinimationw.h"
-
-/*
- * @brief: the constructor
- * @param:
- * @ret:
- * @birth: created by czm in 20230605
- */
-ContourInimationW::ContourInimationW()
-{
-    max = 0;
-    flag = true;
-    m_time.clear();
-    ZoneNameVec.clear();
-    m_speed = 25.0;
-    slider = 0;
-}
-
-/*
- * @brief: the destructor
- * @param:
- * @ret:
- * @birth: created by czm in 20230605
- */
-ContourInimationW::~ContourInimationW(){
-    m_time.clear();
-}
-
-/*
- * @brief: set solve time
- * @param: time
- * @ret: void
- * @birth: created by czm in 20230605
- */
-void ContourInimationW::SetSolveTime(set<double> time)
-{
-    //slider->setSingleStep(1);
-    // slider->setMinimum(0);
-    max = time.size();
-    //slider->setMaximum(max - 1);
-    m_time.clear();
-    for (set<double>::iterator it = time.begin(); it != time.end(); it ++)
-    {
-        m_time.append(*it);
-    }
-    //InitTimer();
-    le_firstStep = 1;
-    le_endStep = max;
-    SetLeText();
-}
-
-void ContourInimationW::SetScaleFactor(double factor)
-{
-    ldt_scale = QString::number(factor);
-}
-
-double ContourInimationW::GetScaleFactor()
-{
-    if(!ldt_scale.isEmpty()){
-        double factor = ldt_scale.toDouble();
-        return factor;
-    }else{
-        return 0;
-    }
-}
-
-/*
- * @brief: slot start
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230605
- */
-void ContourInimationW::SlotStart()
-{
-    slider = 0;
-}
-
-/*
- * @brief: slot end
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230605
- */
-void ContourInimationW::SlotEnd()
-{
-    slider = max-1;
-}
-
-/*
- * @brief: slot last
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230605
- */
-void ContourInimationW::SlotLast()
-{
-    slider = slider - 1;
-}
-
-/*
- * @brief: slot next
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230605
- */
-void ContourInimationW::SlotNext()
-{
-    slider = slider + 1;
-}
-
-/*
- * @brief: slot quick
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230605
- */
-void ContourInimationW::SlotQuick()
-{
-    m_speed /= 2;
-    le_time = 1000.0/m_speed;//interval后的值
-}
-
-/*
- * @brief: slot low
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230605
- */
-void ContourInimationW::SlotLow()
-{
-    m_speed *= 2;
-    le_time = 1000.0/m_speed;
-}
-
-void ContourInimationW::SlotChange()
-{
-    if(!m_time.isEmpty()){
-        SetLeText();
-        if(slider ==0){
-            pb_start = true;
-            pb_last = true;
-            pb_end = false;
-            pb_next = false;
-        }else if(slider == (max-1)){
-            pb_start = false;
-            pb_last = false;
-            pb_end = true;
-            pb_next = true;
-            flag = false;
-            //SlotPlay();
-        }else{
-            pb_start = false;
-            pb_last = false;
-            pb_end = false;
-            pb_next = false;
-        }
-    }
-}
-
-//void ContourInimationW::SlotPlay()
-//{
-//    if (flag)
-//    {
-//        flag = false;
-//        timer->start(m_speed);
-//    }else
-//    {
-//        flag = true;
-//        timer->stop();
-//    }
-//}
-
-/*
- * @brief: set letext
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230605
- */
-void ContourInimationW::SetLeText()
-{
-    if(!m_time.isEmpty()){
-        le_currStep=slider+1;
-        lb_solveTime=m_time.at(slider);
-    }
-}
-
-/*
- * @brief: get index
- * @param: void
- * @ret: index
- * @birth: created by czm in 20230605
- */
-int ContourInimationW::GetIndex()
-{
-    return le_currStep-1;
-}
-
-void ContourInimationW::FrameNumberEdit()
-{
-    le_time_state = true;
-}
-
-void ContourInimationW::InitScaleFactor(double factor)
-{
-    if(factor == 1.0){
-        ldt_scale = "1";
-    }else{
-        ldt_scale =QString::number(factor);
-    }
-}
-
-/*
- * @brief: set frame number
- * @param: void
- * @ret: void
- * @birth: created by czm in 20230605
- */
-void ContourInimationW::SetFrameNumber()
-{
-    m_speed = 1000/le_time;
-    le_time_state = false;
-}
-
-/*
- * @brief: get vector m_time
- * @param: void
- * @ret: vector
- * @birth: created by czm in 20230607
- */
-QVector<double> ContourInimationW::getm_time()
-{
-    return m_time;
-}
-
-int ContourInimationW::getSlider()
-{
-    return slider;
-}
-
-void ContourInimationW::SetTypeEnable(bool flag)
-{
-    cbx_type = flag;
-}
-
-/*
- * @brief: set zone name vector
- * @param: vector
- * @ret: void
- * @birth: created by czm in 20230605
- */
-void ContourInimationW::SetZoneNameVector(vector<string> Zone)
-{
-    ZoneNameVec.clear();
-    for (vector<string>::iterator it = Zone.begin(); it != Zone.end(); it ++)
-    {
-        ZoneNameVec.push_back(*it);
-    }
-}
-
-

+ 0 - 57
CAE_Solution/src/VTK/widget/contourinimationw.h

@@ -1,57 +0,0 @@
-#ifndef CONTOURINIMATIONW_H
-#define CONTOURINIMATIONW_H
-#include <vector>
-#include <QObject>
-#include <set>
-#include <QVector>
-
-using namespace std;
-
-class ContourInimationW
-{
-public:
-    ContourInimationW();
-    ~ContourInimationW();
-
-    void SetSolveTime(set<double> time);
-    void SetScaleFactor(double factor);
-    double GetScaleFactor();
-    void SetZoneNameVector(vector<string> Zone);
-    void SetLeText();
-    int GetIndex();
-    void FrameNumberEdit();
-    void InitScaleFactor(double factor = 1);
-    void SlotStart();
-    void SlotEnd();
-    void SlotLast();
-    void SlotNext();
-    void SlotQuick();
-    void SlotLow();
-    void SlotChange();
-    //void SlotPlay();
-    void SetFrameNumber();
-    QVector<double> getm_time();
-    int getSlider();
-    void SetTypeEnable(bool flag);
-public:
-    QVector<double> m_time;
-    int max;
-    bool flag;
-    double m_speed;
-    vector<string> ZoneNameVec;
-    int le_firstStep;
-    int le_endStep;
-    int slider;
-    int le_time;
-    int le_currStep;
-    int lb_solveTime;
-    QString ldt_scale;
-    bool pb_start;
-    bool pb_end;
-    bool pb_last;
-    bool pb_next;
-    bool le_time_state;
-    bool cbx_type;
-};
-
-#endif // CONTOURINIMATIONW_H

+ 46 - 19
CAE_Solution/src/threadPool_and_statemachine/dealWith/boostjsonobject.cpp

@@ -219,27 +219,11 @@ std::string boostJsonObject::ToJson(std::string type, QMap<QString, std::string>
         item.put("dataU",map_["dataU"]);
         item.put("dataV",map_["dataV"]);
         item.put("dataW",map_["dataW"]);
-    }else if(type == "exception"){
-        item.put("Error",map_["Error"]);
-    }else if(type == "animation_quick"){
-        item.put("msgType","animation_quick");
-        item.put("le_time",map_["le_time"]);
-    }else if(type == "animation_low"){
-        item.put("msgType","animation_low");
-        item.put("le_time",map_["le_time"]);
-    }else if(type == "animation_slider"){
-        item.put("msgType","animation_slider");
-        item.put("slider",map_["slider"]);
     }else if(type == "importResult_animation"){
         item.put("msgType","animation_param");
-        item.put("min_slider",map_["min_slider"]);
-        item.put("slider",map_["slider"]);
-        item.put("max_slider",map_["max_slider"]);
-        item.put("firststep",map_["firststep"]);
-        item.put("endstep",map_["endstep"]);
-        item.put("currstep",map_["currstep"]);
-        item.put("zone",map_["zone"]);
-        item.put("le_time",map_[""]);
+        item.put("zonename",map_["zonename"]);
+    }else if(type == "exception"){
+        item.put("Error",map_["Error"]);
     }
     stringstream tmp;
     boost::property_tree::json_parser::write_json(tmp,item);
@@ -338,6 +322,48 @@ void boostJsonObject::FromParamJson(string param)
         sm_struct->minimumstep = root.get<double>("minimumstep");
         sm_struct->showstate = root.get<bool>("showstate");
         sm_struct->toolstate = root.get<bool>("toolstate");
+    }else if(this->action == "animation"){
+        this->fileType = root.get<std::string>("fileType");
+        this->filePath = root.get<std::string>("filePath");
+        ci_struct = new contourinimationw_struct();
+        ci_struct->displaytype = root.get<std::string>("animationType");
+        boost::property_tree::ptree items = root.get_child("fileNames");
+        boost::property_tree::ptree::iterator pos = items.begin();
+        for(;pos!=items.end();pos++){
+            ci_struct->filenames.push_back(pos->second.get<std::string>("fileName"));
+            ci_struct->steps.push_back(pos->second.get<int>("step"));
+        }
+        if(ci_struct->displaytype=="ContourDisplay"){
+            cd_struct = new contourDisplay_struct();
+            cd_struct->level = root.get<int>("level");
+            QString range = QString::fromStdString(root.get<std::string>("range"));
+            QStringList range_list = range.split(",");
+            cd_struct->range[0] = range_list[0].toDouble();
+            cd_struct->range[1] = range_list[1].toDouble();
+            cd_struct->scalarName = root.get<std::string>("scalarName");
+        }else if(ci_struct->displaytype=="LineDisplay"){
+            ld_struct = new contourDisplay_struct();
+            ld_struct->level = root.get<int>("level");
+            QString range = QString::fromStdString(root.get<std::string>("range"));
+            QStringList range_list = range.split(",");
+            ld_struct->range[0] = range_list[0].toDouble();
+            ld_struct->range[1] = range_list[1].toDouble();
+            ld_struct->scalarName = root.get<std::string>("scalarName");
+        }else if(ci_struct->displaytype == "VectorDisplay"){
+            vc_struct = new vectorDisplay_struct();
+            vc_struct->dataU = root.get<std::string>("dataU");
+            vc_struct->dataV = root.get<std::string>("dataV");
+            vc_struct->dataW = root.get<std::string>("dataW");
+            vc_struct->scaleFactor = root.get<double>("scaleFactor");
+        }else if(ci_struct->displaytype == "SolidSurfaceDisplay"){
+            sf_struct = new solidsurfaceDisplay_struct();
+            sf_struct->r = root.get<double>("r");
+            sf_struct->g = root.get<double>("g");
+            sf_struct->b = root.get<double>("b");
+            sf_struct->transparency = root.get<double>("transparency");
+            sf_struct->showhidestate = root.get<bool>("showHideState");
+        }
+        ci_struct->hideZones = root.get<std::string>("hideZones");
     }
 }
 
@@ -387,6 +413,7 @@ string boostJsonObject::ToJson(string type, QMap<QString, string> map_, int num)
     if(type == "img"){
         root.put("img",map_["img"]);
         root.put("step",num);
+        root.put("animationType",map_["animationType"]);
     }
     root.put("paramJson","");
     stringstream mmsg;

+ 10 - 5
CAE_Solution/src/threadPool_and_statemachine/dealWith/display_struct.h

@@ -1,6 +1,7 @@
 #ifndef DISPLAY_STRUCT_H
 #define DISPLAY_STRUCT_H
 #include <string>
+#include <vector>
 using namespace std;
 //云图/等值线msg结构体
 class contourDisplay_struct
@@ -87,11 +88,15 @@ public:
 class contourinimationw_struct
 {
 public:
-    contourinimationw_struct(){}
-    ~contourinimationw_struct(){}
-    string order;
-    int type;
-    int slider;
+    contourinimationw_struct(){
+    }
+    ~contourinimationw_struct(){
+    }
+    string displaytype;
+    vector<int> steps;
+    vector<string> filenames;
+    string filepath;
+    string hideZones;
 };
 
 #endif // DISPLAY_STRUCT_H

+ 205 - 120
CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.cpp

@@ -201,10 +201,8 @@ void handlePool::operateRender(boostJsonObject* object,QVTKRenderer* render_)
             cout<<"please import tecplot result first!"<<endl;
         }
         return;
-    }else if(object->action == "ContourInimationwDisplay"){
-        if(!result_contourinimationdisplay(object,render_)){
-            cout<<"please import tecplot result forst!"<<endl;
-        }
+    }else if(object->action == "animation"){
+        result_contourinimationdisplay(object,render_);
         return;
     }
     send_picture(object,render_);//发送图片
@@ -291,7 +289,7 @@ void handlePool::judgeLoaddata(boostJsonObject *object, QVTKRenderer *render_)
 bool handlePool::resultImport(boostJsonObject *object_, QVTKRenderer *renderer_)
 {
     string type_;
-    //object_->fileName = "test1.dat";
+    //object_->ci_struct->filenames.push_back();
     //object_->fileName = "hcfd_tec_boundary_timestep100.dat";
     //object_->fileName = "whole_part1.plt,whole_part2.plt";
     size_t found = object_->fileName.find_first_of(',');
@@ -334,19 +332,16 @@ bool handlePool::resultImport(boostJsonObject *object_, QVTKRenderer *renderer_)
         auto flag_ = renderer_->widgetFlag;
         if(flag_==QVTKRenderer::WidgetModel::UgridModel){
             renderer_ = qmapRender.value(object_->proId);
-            renderer_->HideAllActors();//to do 有bug 先导入结果,在loaddata,再导入,会报错
+            renderer_->HideAllActors();
             renderer_->RemoveAllActors();
         }else if(flag_ ==QVTKRenderer::WidgetModel::ResultModel){
-            if(qmapResultmanager.value(object_->proId)->fileName == (object_->fileName)){//to do 详细比对文件名
+            if(qmapResultmanager.value(object_->proId)->fileName == (object_->fileName)){
                 send_picture(object_,renderer_);
                 return true;
             }
-            //qmapResultmanager.value(object_->proId)->resultMeshManager_->HideAllActors();
-            //            renderer_->HideAllActors();
-            //            renderer_->RemoveAllActors();
         }else if(flag_==QVTKRenderer::WidgetModel::VTKModel){
             renderer_ = qmapRender.value(object_->proId);
-            renderer_->HideAllActors();//to do 有bug 先导入结果,在loaddata,再导入,会报错
+            renderer_->HideAllActors();
             renderer_->RemoveAllActors();
         }
     }
@@ -482,9 +477,6 @@ bool handlePool::resultImport(boostJsonObject *object_, QVTKRenderer *renderer_)
 
     StreamDisplayWidget* streamW = new StreamDisplayWidget();//流线窗口初始化参数
     rsManager->SetStremWidget(streamW);
-
-    ContourInimationW* cinimationW = new ContourInimationW();
-    rsManager->SetAnimationWidget(cinimationW);
     /********************************************/
     renderer_->widgetFlag = QVTKRenderer::WidgetModel::ResultModel;//设置当前窗口模型状态
     if(qmapResultmanager.contains(object_->proId)){//加载不同的结果文件
@@ -502,7 +494,9 @@ bool handlePool::resultImport(boostJsonObject *object_, QVTKRenderer *renderer_)
     emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_vector",buildResultImport_msg("Vector",rsManager)));//发送矢量结果数据
     emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_solidsurface",buildResultImport_msg("Solidsurface",rsManager)));//发送实体表面结果数据
     emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_stream",buildResultImport_msg("Stream",rsManager)));//发送流线结果数据
-    emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_animation",buildResultImport_msg("animation",rsManager)));
+    if(type_!="vtkfile"){
+        emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_animation",buildResultImport_msg("animation",rsManager)));//发送动画所需的zonename
+    }
     send_picture(object_,renderer_);
     return true;
 }
@@ -719,67 +713,39 @@ bool handlePool::result_streamdisplay(boostJsonObject *object_, QVTKRenderer *re
  */
 bool handlePool::result_contourinimationdisplay(boostJsonObject *object_, QVTKRenderer *render_)
 {
-    contourinimationDisplay* cidisplay = NULL;
-    string order_ = object_->ci_struct->order;
-    if(!qmapResultmanager.contains(object_->proId))return false;
-    render_ = qmapRender[object_->proId];
-    ResultManager* resultmm = qmapResultmanager[object_->proId]->resultManager_;
-    if(map_cinimationDisplay.contains(object_->proId)){
-        cidisplay = map_cinimationDisplay[object_->proId];
+    if(!qmapRender.contains(object_->proId)){
+        render_ = new QVTKRenderer();
+        qmapRender.insert(object_->proId,render_);
+        render_->init();
+        w->addTab(render_->GetWidget(),QString::fromStdString(object_->proId));
+        render_->widgetFlag = QVTKRenderer::WidgetModel::NoModel;
     }else{
-        cidisplay = new contourinimationDisplay(resultmm);
-        map_cinimationDisplay.insert(object_->proId,cidisplay);
-    }
-
-    ContourInimationW* ciw = resultmm->animationWidget_;
-    if(order_ == "quick"){
-        ciw->SlotQuick();
-        emit sendImg_handlePoolToSendstate(object_->ToJson("animation_quick",buildResultImport_msg("animation_quick",resultmm,object_)));
-        return true;
-    }else if(order_ == "low"){
-        ciw->SlotLow();
-        emit sendImg_handlePoolToSendstate(object_->ToJson("animation_low",buildResultImport_msg("animation_low",resultmm,object_)));
-        return true;
-    }else if(order_ == "play"){
-        ciw->slider = object_->ci_struct->slider;
-        for(int i = ciw->slider;i<ciw->max;i++){
-            animationSliderChanged(QString::fromStdString(object_->proId));
-            send_picture(object_,render_,i);
+        render_ = qmapRender[object_->proId];
+        auto flag_ = render_->widgetFlag;
+        if(flag_==QVTKRenderer::WidgetModel::UgridModel){
+            render_ = qmapRender.value(object_->proId);
+            render_->HideAllActors();
+            render_->RemoveAllActors();
+        }else if(flag_ ==QVTKRenderer::WidgetModel::ResultModel){
+            render_ = qmapRender.value(object_->proId);
+            render_->HideAllActors();
+            render_->RemoveAllActors();
+        }else if(flag_==QVTKRenderer::WidgetModel::VTKModel){
+            render_ = qmapRender.value(object_->proId);
+            render_->HideAllActors();
+            render_->RemoveAllActors();
         }
-        return true;
-    }else if(order_ == "start"){
-        ciw->SlotStart();
-        animationSliderChanged(QString::fromStdString(object_->proId));
-        emit sendImg_handlePoolToSendstate(object_->ToJson("animation_slider",buildResultImport_msg("animation_slider",resultmm,object_)));
-    }else if(order_ == "end"){
-        ciw->SlotEnd();
-        animationSliderChanged(QString::fromStdString(object_->proId));
-        emit sendImg_handlePoolToSendstate(object_->ToJson("animation_slider",buildResultImport_msg("animation_slider",resultmm,object_)));
-    }else if(order_ == "next"){
-        ciw->SlotNext();
-        animationSliderChanged(QString::fromStdString(object_->proId));
-        emit sendImg_handlePoolToSendstate(object_->ToJson("animation_slider",buildResultImport_msg("animation_slider",resultmm,object_)));
-    }else if(order_ == "last"){
-        ciw->SlotLast();
-        animationSliderChanged(QString::fromStdString(object_->proId));
-        emit sendImg_handlePoolToSendstate(object_->ToJson("animation_slider",buildResultImport_msg("animation_slider",resultmm,object_)));
-    }else if(order_ == "edit"){//interval apply
-        ciw->FrameNumberEdit();
-        return true;
-    }else if(order_ == "apply"){//interval apply
-        ciw->SetFrameNumber();
-        return true;
-    }else if(order_ == "scaleApply"){//scale apply
-        resultmm->UpdataZoomModel(ciw->GetScaleFactor());
-        emit sendImg_handlePoolToSendstate(object_->ToJson("animation_slider",buildResultImport_msg("animation_slider",resultmm,object_)));
-    }else if(order_ == "typeChange"){//下拉框改变
-        resultmm->ChangeMeshType(object_->ci_struct->type);
-        emit sendImg_handlePoolToSendstate(object_->ToJson("animation_slider",buildResultImport_msg("animation_slider",resultmm,object_)));
-    }else if(order_ == "checkboxchange"){//checkbox选择
-        //resultmm->SetShowHideState(vec);
-        resultmm->DisplayMeshByIndex(resultmm->animationWidget_->GetIndex());
     }
-    send_picture(object_,render_);
+    for(int i =0;i<object_->ci_struct->filenames.size();i++){
+#ifdef _WIN32
+        string filename = object_->filePath+"\\"+object_->ci_struct->filenames[i];
+#else
+        string filename = object_->filePath+"/"+object_->ci_struct->filenames[i];
+#endif
+        animation_render(filename,object_->ci_struct->steps[i],render_,object_);
+    }
+    delete object_;
+    object_ = NULL;
     return true;
 }
 
@@ -942,25 +908,16 @@ QMap<QString,string> handlePool::buildResultImport_msg(QString type,ResultManage
         msg = msg.erase(msg.size()-1);
         map_tmp.insert("dataW",msg);
         msg.clear();
-    }else if(type=="Animation"){
+    }else if(type == "animation"){
         string msg;
-        ContourInimationW* ciw = cmanager->animationWidget_;
-        map_tmp.insert("min_slider","0");
-        map_tmp.insert("slider","0");
-        map_tmp.insert("max_slider",to_string(ciw->max-1));
-        map_tmp.insert("firststep",to_string(ciw->le_firstStep));
-        map_tmp.insert("endstep",to_string(ciw->le_endStep));
-        map_tmp.insert("currstep",to_string(ciw->le_currStep));
-        for(int i =0;i<ciw->ZoneNameVec.size();i++){
-            msg+=ciw->ZoneNameVec[i];
+        vector<string> zonename=cmanager->GetZoneNameVec();
+        for(int i =0;i<zonename.size();i++){
+            msg+=zonename[i];
             msg+=",";
         }
-        msg=msg.erase(msg.size()-1);
-        map_tmp.insert("zone",msg);
+        msg = msg.erase(msg.size()-1);
+        map_tmp.insert("zonename",msg);
         msg.clear();
-        map_tmp.insert("le_time","40");
-        map_tmp.insert("ldt_scale","1");
-        map_tmp.insert("lb_solvtime",to_string(ciw->m_time[0]));//time后的值
     }
     return map_tmp;
 }
@@ -1016,18 +973,6 @@ QMap<QString, string> handlePool::buildResultImport_msg(QString type, ResultMana
         map_tmp.insert("initialStep",to_string(smdW->initialStep));
         map_tmp.insert("maxPropagation",to_string(smdW->MaxPropagation));
         map_tmp.insert("minimumStep",to_string(smdW->MinimumStep));
-    }else if(type == "animation_quick")
-    {
-        ContourInimationW* ciw = cmanager->animationWidget_;
-        map_tmp.insert("le_time",to_string(ciw->le_time));
-    }else if(type == "animation_low")
-    {
-        ContourInimationW* ciw = cmanager->animationWidget_;
-        map_tmp.insert("le_time",to_string(ciw->le_time));
-    }else if(type == "animation_slider")
-    {
-        ContourInimationW* ciw = cmanager->animationWidget_;
-        map_tmp.insert("slider",to_string(ciw->slider));
     }
     return map_tmp;
 }
@@ -1078,11 +1023,10 @@ void handlePool::send_picture(boostJsonObject *object, QVTKRenderer *render_, in
         std::string img_ = render_->img.toStdString();
         QMap<QString,string> map;
         map["img"] = img_;
+        map["animationType"] = object->ci_struct->displaytype;
         std::string json_ = object->ToJson("img",map,step);
         emit sendImg_handlePoolToSendstate(json_);//信号
     }
-    delete object;
-    object = NULL;
 }
 
 /*
@@ -1153,24 +1097,6 @@ pid_resultManager *handlePool::set_map_resultManager(boostJsonObject *object, Re
     return resultManager_p;
 }
 
-/*
- * @brief: animation slider change
- * @param: proid
- * @ret: void
- * @birth: created by czm in 20230608
- */
-void handlePool::animationSliderChanged(QString str)
-{
-    if(qmapResultmanager[str.toStdString()]->resultManager_!=NULL){
-        ResultManager* resultmm = qmapResultmanager[str.toStdString()]->resultManager_;
-        if(!resultmm->animationWidget_->getm_time().isEmpty()){
-            resultmm->HideAllActors();
-            resultmm->DisplayMeshByIndex(resultmm->animationWidget_->getSlider());
-            resultmm->animationWidget_->SlotChange();
-        }
-    }
-}
-
 /*
  * @brief: clear map when resultimported anew
  * @param: void
@@ -1251,3 +1177,162 @@ void handlePool::get_init_scalar_range(ResultManager* cmanager)
         allscalarrange[temp_scalar[i]] = temp;
     }
 }
+
+/*
+ * @brief: render animation picture
+ * @param: filename and displaytype and step
+ * @ret: void
+ * @birth: created by czm in 20230626
+ */
+void handlePool::animation_render(string filename,int step,QVTKRenderer* renderer_,boostJsonObject* object_)
+{
+    string type_;
+    vector<string> tmp = stringSplit(filename,'.');
+    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";
+    }
+    vector<string> hidezonenames_tmp;
+    if(type_!="vtkfile"){
+
+        if(object_->ci_struct->hideZones.find_first_of(",")==string::npos){
+            hidezonenames_tmp.push_back(object_->ci_struct->hideZones);
+        }else{
+            hidezonenames_tmp=stringSplit(object_->ci_struct->hideZones,',');
+        }
+    }
+
+    renderer_->widgetFlag = QVTKRenderer::WidgetModel::ResultModel;
+    ResultManager* rsManager = NULL;
+    if(type_ == "one_plt_ascii_file"||type_ == "one_plt_binary_file"){
+        bool flag = true;
+        rsManager = new ResultMeshManager();
+        rsManager->Clear();
+        bool f =rsManager->LoadData(QString::fromStdString(filename));
+        set_hidezone_animation(hidezonenames_tmp,rsManager);
+        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 if(type_ == "vtkfile"){
+        rsManager = new ResultVTKManager();
+        rsManager->Clear();
+        rsManager->fileType = "VTK";
+        bool flag = true;
+        bool f = rsManager->LoadData(QString::fromStdString(filename));//加载
+        rsManager->uncontourVec_.clear();
+        if(f){
+            if(renderer_){
+                rsManager->DisplayMesh(renderer_);
+            }
+        }else{
+            flag = false;
+        }
+        if(flag){
+            rsManager->InitWidgetsParameter();
+            rsManager->SetNameTypeMap();
+            renderer_->ZoomToExtents();
+        }
+    }
+    if(object_->ci_struct->displaytype=="ContourDisplay"){
+        ContourDisplayW *contourdw = new ContourDisplayW();//云图窗口参数初始化
+        rsManager->SetCotourWidget(contourdw);
+        rsManager->SetWidgetRange();
+        rsManager->SetWidgetScalarName();
+        ContourDisplay* condis=new ContourDisplay(rsManager);
+        condis->contourdisplay_execute(object_);
+        send_picture(object_,renderer_,step);
+        if(contourdw!=NULL){
+            delete contourdw;
+            contourdw = NULL;
+        }
+        if(condis!=NULL){
+            delete condis;
+            condis = NULL;
+        }
+    }else if(object_->ci_struct->displaytype=="LineDisplay"){
+        LineDisplayW *linedw = new LineDisplayW();//等值线窗口初始化参数
+        rsManager->SetLineWidget(linedw);
+        LineDisplay* linedis = new LineDisplay(rsManager);
+        linedis->linedisplay_execute(object_);
+        send_picture(object_,renderer_,step);
+        if(linedw!=NULL){
+            delete linedw;
+            linedw = NULL;
+        }
+        if(linedis!=NULL){
+            delete linedis;
+            linedis = NULL;
+        }
+    }else if(object_->ci_struct->displaytype=="VectorDisplay"){
+        VectorW *vecdW = new VectorW();//矢量窗口初始化参数
+        rsManager->SetVectorWidget(vecdW);
+        Vectordisplay *vecdis = new Vectordisplay(rsManager);
+        vecdis->vectordisplay_execute(object_);
+        send_picture(object_,renderer_,step);
+        if(vecdW!=NULL){
+            delete vecdW;
+            vecdW = NULL;
+        }
+        if(vecdis!=NULL){
+            delete vecdis;
+            vecdis = NULL;
+        }
+    }else if(object_->ci_struct->displaytype=="SolidSurfaceDisplay"){
+        SolidSurfaceWidget* solidfW = new SolidSurfaceWidget();//实体表面窗口初始化参数
+        rsManager->SetSurfaceSolidWidget(solidfW);
+        SolidSurface *solidfdis = new SolidSurface(rsManager);
+        solidfdis->solidsurfce_execute(object_);
+        send_picture(object_,renderer_,step);
+        if(solidfW!=NULL){
+            delete solidfW;
+            solidfW = NULL;
+        }
+        if(solidfdis!=NULL){
+            delete solidfdis;
+            solidfdis = NULL;
+        }
+    }
+    if(rsManager!=NULL){
+        delete rsManager;
+        rsManager = NULL;
+    }
+}
+
+/*
+ * @brief: set animation hide zone in resultmanager
+ * @param: hidezone,resultmanager
+ * @ret: void
+ * @birth: created by czm in 20230627
+ */
+void handlePool::set_hidezone_animation(vector<string> &hidezonename, ResultManager *cmanager)
+{
+    int num = cmanager->meshObj_->GetZoneNumber();
+    vector<string> zonename_ = cmanager->meshObj_->GetZoneName();
+    vector<bool> vec_bool;
+    vec_bool.resize(num,true);
+    for(int i =0;i<hidezonename.size();i++){
+        for(int j =0;j<zonename_.size();j++){
+            if(hidezonename[i]==zonename_[j]){
+                vec_bool[j] = false;
+            }
+        }
+    }
+    cmanager->SetShowHideState(vec_bool);
+}

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

@@ -19,7 +19,6 @@
 #include "../../VTK/display/solidsurfacewidget.h"
 #include "../../VTK/display/slicewidget.h"
 #include "../../VTK/display/streamwidget.h"
-#include "../../VTK/display/contourinimationdisplay.h"
 #include "../../VTK/widget/contourdispalyWidget.h"
 #include "../../VTK/widget/linedisplayWidget.h"
 #include "../../VTK/widget/slicedisplaywidget.h"
@@ -32,6 +31,7 @@
 #include "../../VTK/visualization_VTK/vtkvisunstructuredgridsource.h"
 #include "../../VTK/visualization_VTK/vtkvisunstructuredgridmanager.h"
 #include "../../VTK/visualization_VTK/vtkvismanager.h"
+#include "../../VTK/mesh/Mesh.h"
 #include <map>
 #include <QMap>
 #include <string>
@@ -72,10 +72,10 @@ public:
     QMap<string,pid_resultManager*> getMapResultManager();
     pid_meshManager* set_map_meshManager(boostJsonObject*,MeshManager*);
     pid_resultManager* set_map_resultManager(boostJsonObject*,ResultManager*);
-    void animationSliderChanged(QString);
     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*);
 
 private:
     QMap<string,QVTKRenderer*> qmapRender;
@@ -87,7 +87,6 @@ private:
     QMap<string,SolidSurface*> map_solidsdisplay;
     QMap<string,SliceWidget*> map_slicedisplay;
     QMap<string,StreamWidget*> map_streamdisplay;
-    QMap<string,contourinimationDisplay*> map_cinimationDisplay;
     QTabWidget* w;
     bool contour_sendrange_flag;
     bool line_sendrange_flag;