Bläddra i källkod

0428 等值线图//to do

caizm 2 år sedan
förälder
incheckning
89dd675930
36 ändrade filer med 2580 tillägg och 529 borttagningar
  1. 2 2
      CAE_Solution/conf/conf_recv.txt
  2. 2 2
      CAE_Solution/conf/conf_send.txt
  3. 152 151
      CAE_Solution/src/VTK/Manager/ResultMeshManager.cpp
  4. 24 21
      CAE_Solution/src/VTK/Manager/ResultMeshManager.h
  5. 5 4
      CAE_Solution/src/VTK/Manager/meshmanager.cpp
  6. 15 1
      CAE_Solution/src/VTK/QVTKRenderer/qvtkrenderer.cpp
  7. 12 4
      CAE_Solution/src/VTK/QVTKRenderer/qvtkrenderer.h
  8. 1 0
      CAE_Solution/src/VTK/VTK.pri
  9. 19 7
      CAE_Solution/src/VTK/display/contourdisplay.cpp
  10. 2 0
      CAE_Solution/src/VTK/display/contourdisplay.h
  11. 13 3
      CAE_Solution/src/VTK/display/linedisplay.cpp
  12. 1 0
      CAE_Solution/src/VTK/visualization_VTK/vtkvismanager.h
  13. 4 4
      CAE_Solution/src/VTK/visualization_VTK/vtkvisunshademesh.cpp
  14. 5 0
      CAE_Solution/src/VTK/visualization_VTK/vtkvisunstructuredgridmanager.cpp
  15. 204 0
      CAE_Solution/src/VTK/widget/contourdispalyWidget.cpp
  16. 36 0
      CAE_Solution/src/VTK/widget/contourdispalyWidget.h
  17. 203 0
      CAE_Solution/src/VTK/widget/linedisplayWidget.cpp
  18. 37 0
      CAE_Solution/src/VTK/widget/linedisplayWidget.h
  19. 435 0
      CAE_Solution/src/VTK/widget/slicedisplaywidget.cpp
  20. 51 0
      CAE_Solution/src/VTK/widget/slicedisplaywidget.h
  21. 162 0
      CAE_Solution/src/VTK/widget/solidsurfaceDisplaywidget.cpp
  22. 26 0
      CAE_Solution/src/VTK/widget/solidsurfaceDisplaywidget.h
  23. 383 0
      CAE_Solution/src/VTK/widget/streamDisplaywidget.cpp
  24. 64 0
      CAE_Solution/src/VTK/widget/streamDisplaywidget.h
  25. 144 0
      CAE_Solution/src/VTK/widget/vectorDisplaywidget.cpp
  26. 27 0
      CAE_Solution/src/VTK/widget/vectorDisplaywidget.h
  27. 7 0
      CAE_Solution/src/VTK/widget/widget.pri
  28. 20 18
      CAE_Solution/src/main.cpp
  29. 2 1
      CAE_Solution/src/threadPool_and_statemachine/dealWith/dealWith.pri
  30. 256 173
      CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.cpp
  31. 24 9
      CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.h
  32. 55 0
      CAE_Solution/src/threadPool_and_statemachine/dealWith/map_manager.h
  33. 113 101
      CAE_Solution/src/threadPool_and_statemachine/dealWith/vtkjsonobject.cpp
  34. 26 18
      CAE_Solution/src/threadPool_and_statemachine/dealWith/vtkjsonobject.h
  35. 1 7
      CAE_Solution/src/widget.cpp
  36. 47 3
      CAE_Solution/src/widget.h

+ 2 - 2
CAE_Solution/conf/conf_recv.txt

@@ -4,6 +4,6 @@ userName:admin
 password:admin
 
 channel_id:1
-queue_name:BLOCKcaein
+queue_name:BLOCKcaeint
 exchange_name:BLOCKMQ-EXCHANGE
-keys_name:caein
+keys_name:caeint

+ 2 - 2
CAE_Solution/conf/conf_send.txt

@@ -4,6 +4,6 @@ userName:admin
 password:admin
 
 channel_id:1
-queue_name:BLOCKcaeout
+queue_name:BLOCKcaeoutt
 exchange_name:BLOCKMQ-EXCHANGE
-keys_name:caeout
+keys_name:caeoutt

+ 152 - 151
CAE_Solution/src/VTK/Manager/ResultMeshManager.cpp

@@ -67,12 +67,12 @@ ResultMeshManager::ResultMeshManager()
     labelSize_ = 5;
 
 //    animationWidget_ = NULL;
-//    contourWidget_ = NULL;
-//    lineWidget_ = NULL;
-//    vectorWidget_ = NULL;
-//    solidSurfaceW_ = NULL;
-//    sliceW_ = NULL;
-//    streamW_ = NULL;
+    contourWidget_ = NULL;
+    lineWidget_ = NULL;
+    vectorWidget_ = NULL;
+    solidSurfaceW_ = NULL;
+    //sliceW_ = NULL;
+    streamW_ = NULL;
 //    xyplot2dW_ = NULL;
 
     changeRangeFlag = false;
@@ -244,30 +244,30 @@ void ResultMeshManager::Clear()
 //    {
 //        animationWidget_->RestoreWidget();
 //    }
-//    if (contourWidget_ != NULL)
-//    {
-//        contourWidget_->RestoreWidget();
-//    }
-//    if (lineWidget_ != NULL)
-//    {
-//        lineWidget_->RestoreWidget();
-//    }
-//    if (vectorWidget_ != NULL)
-//    {
-//        vectorWidget_->RestoreWidget();
-//    }
-//    if (solidSurfaceW_ != NULL)
-//    {
-//        solidSurfaceW_->RestoreWidget();
-//    }
+    if (contourWidget_ != NULL)
+    {
+        contourWidget_->RestoreWidget();
+    }
+    if (lineWidget_ != NULL)
+    {
+        lineWidget_->RestoreWidget();
+    }
+    if (vectorWidget_ != NULL)
+    {
+        //vectorWidget_->RestoreWidget();
+    }
+    if (solidSurfaceW_ != NULL)
+    {
+        //solidSurfaceW_->RestoreWidget();
+    }
 //    if (sliceW_ != NULL)
 //    {
 //        sliceW_->RestoreWidget();
 //    }
-//    if (streamW_ != NULL)
-//    {
-//        streamW_->RestoreWidget();
-//    }
+    if (streamW_ != NULL)
+    {
+        //streamW_->RestoreWidget();
+    }
 //    if (xyplot2dW_ != NULL)
 //    {
 //        xyplot2dW_->RestoreWidget();
@@ -919,7 +919,7 @@ void ResultMeshManager::InitRange(int index)
         }
     }
 
-    //SetWidgetRange();//init widget range parameter*/
+    SetWidgetRange();//init widget range parameter*/
 }
 
 /**
@@ -964,7 +964,7 @@ void ResultMeshManager::ModifyScalarDisplay(string name)
     if (scalarName_ != name && !(name.empty()))
     {
         scalarName_ = name;
-        //SetWidgetScalarName();
+        SetWidgetScalarName();
         InitRange(m_currId);
     }
 }
@@ -1016,17 +1016,17 @@ int ResultMeshManager::GetContourLevel()
   * @author zhaoyu
   * @date 20221213
   */
-//void ResultMeshManager::SetCotourWidget(ContourDisplayW* w)
-//{
-//    contourWidget_ = w;
-//    if (meshObj_ != NULL)
-//    {
-//        contourWidget_->SetNameTypeMap(GetNameTypeMap());
-//        contourWidget_->SetScalarNameVec(GetMeshScalarNameVec());
-//        SetWidgetRange();
-//        SetWidgetScalarName();
-//    }
-//}
+void ResultMeshManager::SetCotourWidget(ContourDisplayW* w)
+{
+    contourWidget_ = w;
+    if (meshObj_ != NULL)
+    {
+        contourWidget_->SetNameTypeMap(GetNameTypeMap());
+        contourWidget_->SetScalarNameVec(GetMeshScalarNameVec());
+        SetWidgetRange();
+        SetWidgetScalarName();
+    }
+}
 
 /**
   * @brief init lineWidget pointer
@@ -1036,17 +1036,17 @@ int ResultMeshManager::GetContourLevel()
   * @author zhaoyu
   * @date 20221213
   */
-//void ResultMeshManager::SetLineWidget(LineDisplayW* w)
-//{
-//    lineWidget_ = w;
-//    if (meshObj_ != NULL)
-//    {
-//        lineWidget_->SetNameTypeMap(GetNameTypeMap());
-//        lineWidget_->SetScalarNameVec(GetMeshScalarNameVec());
-//        SetWidgetRange();
-//        SetWidgetScalarName();
-//    }//
-//}
+void ResultMeshManager::SetLineWidget(LineDisplayW* w)
+{
+    lineWidget_ = w;
+    if (meshObj_ != NULL)
+    {
+        lineWidget_->SetNameTypeMap(GetNameTypeMap());
+        lineWidget_->SetScalarNameVec(GetMeshScalarNameVec());
+        SetWidgetRange();
+        SetWidgetScalarName();
+    }//
+}
 
 /**
   * @brief init vector Widget pointer
@@ -1056,17 +1056,17 @@ int ResultMeshManager::GetContourLevel()
   * @author zhaoyu
   * @date 20221226
   */
-//void ResultMeshManager::SetVectorWidget(VectorW* w)
-//{
-//    vectorWidget_ = w;
-//    if (meshObj_ != NULL)
-//    {
-//        vectorWidget_->GetData_u(GetMeshScalarNameVec());
-//        vectorWidget_->GetData_v(GetMeshScalarNameVec());
-//        vectorWidget_->GetData_w(GetMeshScalarNameVec());
-//        vectorWidget_->SetScaleFactor(scaleFactor_);
-//    }
-//}
+void ResultMeshManager::SetVectorWidget(VectorW* w)
+{
+    vectorWidget_ = w;
+    if (meshObj_ != NULL)
+    {
+        vectorWidget_->GetData_u(GetMeshScalarNameVec());
+        vectorWidget_->GetData_v(GetMeshScalarNameVec());
+        vectorWidget_->GetData_w(GetMeshScalarNameVec());
+        vectorWidget_->SetScaleFactor(scaleFactor_);
+    }
+}
 
 //void ResultMeshManager::SetAnimationWidget(ContourInimationW *w)
 //{
@@ -1079,10 +1079,10 @@ int ResultMeshManager::GetContourLevel()
 //    }
 //}
 
-//void ResultMeshManager::SetSurfaceSolidWidget(SolidSurfaceWidget* w)
-//{
-//    solidSurfaceW_ = w;
-//}
+void ResultMeshManager::SetSurfaceSolidWidget(SolidSurfaceWidget* w)
+{
+    solidSurfaceW_ = w;
+}
 
 /**
   * @brief init slice Widget pointer
@@ -1110,16 +1110,17 @@ int ResultMeshManager::GetContourLevel()
   * @author zhaoyu
   * @date 20230303
   */
-//void ResultMeshManager::SetStremWidget(StreamWidget* w)
-//{
-//    streamW_ = w;
-//    if (meshObj_ != NULL)
-//    {
-//        streamW_->SetData_u(GetMeshScalarNameVec());
-//        streamW_->SetData_v(GetMeshScalarNameVec());
-//        streamW_->SetData_w(GetMeshScalarNameVec());
-//    }
-//}
+void ResultMeshManager::SetStremWidget(StreamDisplayWidget* w)
+{
+    streamW_ = w;
+
+    if (meshObj_ != NULL)
+    {
+        streamW_->SetData_u(GetMeshScalarNameVec());
+        streamW_->SetData_v(GetMeshScalarNameVec());
+        streamW_->SetData_w(GetMeshScalarNameVec());
+    }
+}
 /**
   * @brief init xyplot2d Widget pointer
   *
@@ -1146,17 +1147,17 @@ int ResultMeshManager::GetContourLevel()
   * @author zhaoyu
   * @date 20221213
   */
-//void ResultMeshManager::SetWidgetRange()
-//{
-//    if (contourWidget_ != NULL)
-//    {
-//        contourWidget_->SetRange(range_);
-//    }
-//    if (lineWidget_ != NULL)
-//    {
-//        lineWidget_->SetRange(range_);
-//    }
-//}
+void ResultMeshManager::SetWidgetRange()
+{
+    if (contourWidget_ != NULL)
+    {
+        contourWidget_->SetRange(range_);
+    }
+    if (lineWidget_ != NULL)
+    {
+        lineWidget_->SetRange(range_);
+    }
+}
 
 /**
   * @brief init widgets scalar name
@@ -1166,21 +1167,21 @@ int ResultMeshManager::GetContourLevel()
   * @author zhaoyu
   * @date 20221213
   */
-//void ResultMeshManager::SetWidgetScalarName()
-//{
-//    if (meshObj_ != NULL && (!scalarName_.empty()))
-//    {
-//        string name = scalarName_;
-//        if (contourWidget_ != NULL)
-//        {
-//            contourWidget_->SetCurrScalar(name);
-//        }
-//        if (lineWidget_ != NULL)
-//        {
-//            lineWidget_->SetCurrScalar(name);
-//        }
-//    }
-//}
+void ResultMeshManager::SetWidgetScalarName()
+{
+    if (meshObj_ != NULL && (!scalarName_.empty()))
+    {
+        string name = scalarName_;
+        if (contourWidget_ != NULL)
+        {
+            contourWidget_->SetCurrScalar(name);
+        }
+        if (lineWidget_ != NULL)
+        {
+            lineWidget_->SetCurrScalar(name);
+        }
+    }
+}
 
 /**
   * @brief set title size
@@ -1253,7 +1254,7 @@ void ResultMeshManager::SetLabelSize(double size)
 void ResultMeshManager::SetLevel(int level)
 {
     scalarLeave = level;
-//    /SetWidgetLevel();
+    SetWidgetLevel();
 }
 /**
   * @brief set widget level
@@ -1263,17 +1264,17 @@ void ResultMeshManager::SetLevel(int level)
   * @author zhaoyu
   * @date 20221213
   */
-//void ResultMeshManager::SetWidgetLevel()
-//{
-//    if (contourWidget_ != NULL)
-//    {
-//        contourWidget_->SetLevel(scalarLeave);
-//    }
-//    if (lineWidget_ != NULL)
-//    {
-//        lineWidget_->SetLevel(scalarLeave);
-//    }
-//}
+void ResultMeshManager::SetWidgetLevel()
+{
+    if (contourWidget_ != NULL)
+    {
+        contourWidget_->SetLevel(scalarLeave);
+    }
+    if (lineWidget_ != NULL)
+    {
+        lineWidget_->SetLevel(scalarLeave);
+    }
+}
 
 /**
   * @brief user set range
@@ -1312,52 +1313,52 @@ void ResultMeshManager::SetDisplayType(int type)
   * @author zhaoyu
   * @date 20230110
   */
-//void ResultMeshManager::InitWidgetsParameter()
-//{
+void ResultMeshManager::InitWidgetsParameter()
+{
 //    if (animationWidget_ != NULL)
 //    {
 //        animationWidget_->SetTypeEnable(HaveModalMeshFlag);
 //        animationWidget_->SetSolveTime(GetSolveTime());
 //        animationWidget_->SetZoneNameVector(zoneNameVec_);
 //    }
-//    if (contourWidget_ != NULL)
-//    {
-//        contourWidget_->SetNameTypeMap(GetNameTypeMap());
-//        contourWidget_->SetScalarNameVec(GetMeshScalarNameVec());
-//        SetWidgetRange();
-//        SetWidgetScalarName();
-//    }
-//    if (lineWidget_ != NULL)
-//    {
-//        lineWidget_->SetNameTypeMap(GetNameTypeMap());
-//        lineWidget_->SetScalarNameVec(GetMeshScalarNameVec());
-//        SetWidgetRange();
-//        SetWidgetScalarName();
-//    }
-//    if (vectorWidget_ != NULL)
-//    {
-//        vectorWidget_->GetData_u(GetMeshScalarNameVec());
-//        vectorWidget_->GetData_v(GetMeshScalarNameVec());
-//        vectorWidget_->GetData_w(GetMeshScalarNameVec());
-//        vectorWidget_->SetScaleFactor(scaleFactor_);
-//    }
+    if (contourWidget_ != NULL)
+    {
+        contourWidget_->SetNameTypeMap(GetNameTypeMap());
+        contourWidget_->SetScalarNameVec(GetMeshScalarNameVec());
+        SetWidgetRange();
+        SetWidgetScalarName();
+    }
+    if (lineWidget_ != NULL)
+    {
+        lineWidget_->SetNameTypeMap(GetNameTypeMap());
+        lineWidget_->SetScalarNameVec(GetMeshScalarNameVec());
+        SetWidgetRange();
+        SetWidgetScalarName();
+    }
+    if (vectorWidget_ != NULL)
+    {
+        vectorWidget_->GetData_u(GetMeshScalarNameVec());
+        vectorWidget_->GetData_v(GetMeshScalarNameVec());
+        vectorWidget_->GetData_w(GetMeshScalarNameVec());
+        vectorWidget_->SetScaleFactor(scaleFactor_);
+    }
 //    if (sliceW_ != NULL)
 //    {
 //        sliceW_->GetScalarName(GetMeshScalarNameVec());
 //        sliceW_->GetZoneId(GetShowZoneId());
 //    }
-//    if (streamW_ != NULL)
-//    {
-//        streamW_->SetData_u(GetMeshScalarNameVec());
-//        streamW_->SetData_v(GetMeshScalarNameVec());
-//        streamW_->SetData_w(GetMeshScalarNameVec());
-//    }
+    if (streamW_ != NULL)
+    {
+        streamW_->SetData_u(GetMeshScalarNameVec());
+        streamW_->SetData_v(GetMeshScalarNameVec());
+        streamW_->SetData_w(GetMeshScalarNameVec());
+    }
 //    if (xyplot2dW_ != NULL)
 //    {
 //        xyplot2dW_->SetArea(zoneNameVec_);
 //        xyplot2dW_->SetYAxis(GetMeshScalarNameVec());
 //    }
-//}
+}
 
 /**
   * @brief init contour widget and line widget parameter
@@ -1834,12 +1835,12 @@ void ResultMeshManager::CreatVectorSource(string u, string v, string w)
         streamLine_->SetSeedsType(type);
         streamLine_->CreateStreamTraceDisplayByVector();
 
-//        if (streamW_ != NULL)
-//        {
-//            streamW_->SetInitStepData(streamLine_->GetInitialStep());
-//            streamW_->SetMaxPropgationData(streamLine_->GetMaxPropagation());
-//            streamW_->SetMinStepData(streamLine_->GetMinimumStep());
-//        }
+        if (streamW_ != NULL)
+        {
+            streamW_->SetInitStepData(streamLine_->GetInitialStep());
+            streamW_->SetMaxPropgationData(streamLine_->GetMaxPropagation());
+            streamW_->SetMinStepData(streamLine_->GetMinimumStep());
+        }
     }
 }
 
@@ -2257,7 +2258,7 @@ void ResultMeshManager::ChangeMeshType(int type)
             ShowAll();
             DisplayMeshByIndex(0);
             SetNameTypeMap();
-            //InitWidgetsParameter();
+            InitWidgetsParameter();
 //            animationWidget_->SlotStart();
 //            animationWidget_->InitScaleFactor();
             render_->ZoomToExtents();
@@ -2269,7 +2270,7 @@ void ResultMeshManager::ChangeMeshType(int type)
             ShowAll();
             DisplayMeshByIndex(0);
             SetNameTypeMap();
-            //InitWidgetsParameter();
+            InitWidgetsParameter();
 //            animationWidget_->SlotStart();
 //            animationWidget_->InitScaleFactor();
             render_->ZoomToExtents();

+ 24 - 21
CAE_Solution/src/VTK/Manager/ResultMeshManager.h

@@ -4,13 +4,15 @@
 #include <vector>
 #include <map>
 #include <QStringList>
-//#include "../display/contourdisplay.h"
-//#include "../display/linedisplay.h"
-//#include "vectorwidget.h"
+#include "../widget/contourdispalyWidget.h"
+#include "../widget/linedisplayWidget.h"
+#include "../widget/slicedisplaywidget.h"
+#include "../widget/solidsurfaceDisplaywidget.h"
+#include "../widget/streamdisplaywidget.h"
+#include "../widget/vectorDisplaywidget.h"
 #include "../QVTKRenderer/qvtkrenderer.h"
 #include "../visualization_VTK/vtkVISAddUnGridDataSource.h"
 #include "../visualization_VTK/vtkVISUnSlice.h"
-//#include "../display/solidsurfacewidget.h"
 #include "../visualization_VTK/vtkVISUnStreamTrace.h"
 
 
@@ -66,26 +68,26 @@ public:
     void SetContourLevel(int level);
     int GetContourLevel();
 
-    //void SetCotourWidget(ContourDisplayW* w);
-    //void SetLineWidget(LineDisplayW* w);
-    //void SetVectorWidget(VectorW* w);
+    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(StreamWidget* w);
+    void SetSurfaceSolidWidget(SolidSurfaceWidget* w);
+    //void SetSliceWidget(SsliceWidget* w);
+    void SetStremWidget(StreamDisplayWidget* w);
     //void SetTextWidget(TextWidget* w);
     void SetXyplotWidget(XYPlot_2D* w);
-    //void SetWidgetRange();
-    //void SetWidgetScalarName();
+    void SetWidgetRange();
+    void SetWidgetScalarName();
     void SetTitleSize(double size);
     //void SetWidgetTitleSize();
     void SetLabelSize(double size);
     //void SetWidgetLabelSize();
     void SetLevel(int level);
-    //void SetWidgetLevel();
+    void SetWidgetLevel();
     void SetRange(double* range);
     void SetDisplayType(int type);
-    //void InitWidgetsParameter();
+    void InitWidgetsParameter();
     vector<int> GetShowZoneId();
 
     void SetVectorScalarIndex(vector<int> indexVec);
@@ -138,11 +140,12 @@ public:
     string getScalarName();
     double* getRange();
     Mesh* getMeshObj_();
-private:
+    map<double, map<string, vtkVISUnContour*>>  vtkVisZoneMeshMap_;  //id, <zoneid, mesh>.
+public:
     int m_currId;
     Mesh *meshObj_;  //mesh object.
     //mesh vis objects.  vtk vis functions.
-    map<double, map<string, vtkVISUnContour*>>  vtkVisZoneMeshMap_;  //id, <zoneid, mesh>.
+
     map<double, map<string, vtkVISUnGlyph*>> vtkVisZoneGlyphMap_; //id, <zoneid, mesh>.
     map<double, map<string, vtkVISUnShadeMesh*>> vtkVisZoneUnShadeMeshMap_;//solveTime zoneName unShadeMesh
     set<double> solveTimes_;
@@ -158,13 +161,13 @@ private:
     int scalarLeave;
     vtkVISUnStreamTrace* streamLine_;
 
-    //ContourDisplayW* contourWidget_;
-    //LineDisplayW* lineWidget_;
-    //VectorW* vectorWidget_;
+    ContourDisplayW* contourWidget_;
+    LineDisplayW* lineWidget_;
+    VectorW* vectorWidget_;
     //ContourInimationW* animationWidget_;
-    //SolidSurfaceWidget* solidSurfaceW_;
+    SolidSurfaceWidget* solidSurfaceW_;
     //SsliceWidget* sliceW_;
-   // StreamWidget* streamW_;
+    StreamDisplayWidget* streamW_;
     //TextWidget* textW_;
     //XYPlot_2D* xyplot2dW_;
     double titleSize_;

+ 5 - 4
CAE_Solution/src/VTK/Manager/meshmanager.cpp

@@ -96,18 +96,19 @@ void MeshManager::Clear()
     //vtk vis procs.
     for(map<size_t, vtkVISUnShadeMesh*>::iterator it = vtkVisZoneMeshMap_.begin(); it != vtkVisZoneMeshMap_.end(); ++it)
     {
-        delete it->second;
+       it->second->Delete();
     }
-    //visZoneMeshMap_.clear();
+    vtkVisZoneMeshMap_.clear();
 
     for (map<size_t, map<int, vtkVISUnShadeMesh*> >::iterator it = vtkVisZonePatchesMap_.begin(); it != vtkVisZonePatchesMap_.end(); ++it)
     {
         for(map<int, vtkVISUnShadeMesh*>::iterator itin = it->second.begin(); itin != it->second.end(); ++itin)
         {
-            delete itin->second;
+            itin->second->Delete();
+            itin->second = NULL;
         }
     }
-    //visZonePatchesMap_.clear();
+    vtkVisZonePatchesMap_.clear();
 }
 
 /**

+ 15 - 1
CAE_Solution/src/VTK/QVTKRenderer/qvtkrenderer.cpp

@@ -78,6 +78,8 @@ void QVTKRenderer::init()
     omWidget->SetInteractor(renderWin->GetInteractor());
     omWidget->SetEnabled(1);
     omWidget->InteractiveOn();
+
+    widgetFlag = WidgetModel::NoModel;
 }
 
 /*
@@ -519,6 +521,9 @@ void QVTKRenderer::HideAllActors()
         {
             pc->GetNextProp()->VisibilityOff();
         }
+        //0425 append
+        renderer->ResetCamera();
+        renderWin->Render();
 }
 
 /*
@@ -529,7 +534,16 @@ void QVTKRenderer::HideAllActors()
  */
 void QVTKRenderer::RemoveAllActors()
 {
-    this->renderer->RemoveAllViewProps();
+    //this->renderer->RemoveAllViewProps();
+    vtkActorCollection * allActor = renderer->GetActors();
+
+    vtkCollectionSimpleIterator pit;
+    vtkActor *currActor = nullptr;
+    for (allActor->InitTraversal(pit);(currActor = allActor->GetNextActor(pit)); )
+    {
+        renderer->RemoveActor(currActor);
+    }
+
 }
 
 

+ 12 - 4
CAE_Solution/src/VTK/QVTKRenderer/qvtkrenderer.h

@@ -25,6 +25,7 @@
 #include <QBuffer>
 #include <vtkAxesActor.h>
 #include <vtkOrientationMarkerWidget.h>
+#include <vtkRendererCollection.h>
 
 
 class QVTKRenderer
@@ -32,11 +33,14 @@ class QVTKRenderer
 public:
     QVTKRenderer();
     virtual ~QVTKRenderer();
-
+    //202304 append
     void init();
     void CaptureWindowImages();
     QWidget* GetWidget();
     vtkRenderer* GetRenderer();
+
+
+
     void Show();
     void Update();
     void EnableSmoothTransition(bool onOff);
@@ -94,11 +98,15 @@ private:
     vtkAxesActor* axes;
     vtkOrientationMarkerWidget* omWidget;
 
-//signals:
-//    void sendImgFile(QString img);
-
 public:
     QString img;//保存图片内容
+    enum class WidgetModel//用以判断屏幕中加载的是什么模型
+    {
+        NoModel = 0,
+        UgridModel,
+        ResultModel
+    };
+    WidgetModel widgetFlag;
 };
 
 #endif // QVTKRENDERER_H

+ 1 - 0
CAE_Solution/src/VTK/VTK.pri

@@ -4,3 +4,4 @@ include( $$PWD/QVTKRenderer/QVTKRenderer.pri)#封装vtkrenderer的渲染类
 include( $$PWD/visualization_VTK/visualization_VTK.pri)#接口,切片,管理相机,数据存储,捕获渲染图等
 include( $$PWD/display/display.pri)#等值线、标量等
 include( $$PWD/MeshDS/MeshDS.pri)
+include( $$PWD/widget/widget.pri)

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

@@ -44,13 +44,25 @@ void ContourDisplay::contourdisplay_execute(vtkJsonObject* jsonObj_)
     //ResultMeshManager::getInstance()->SetDisplayType(0);
     //ResultMeshManager::getInstance()->DisplayMeshByIndex(ResultMeshManager::getInstance()->GetCurrIndex());
 
-    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());
+//    Cmanager->HideAllActors();
+//    Cmanager->ShowAll();
+    string tmp_scalarname = jsonObj_->cd_struct->scalarName;
+    Cmanager->contourWidget_->SetCurrScalar(tmp_scalarname);
+    Cmanager->contourWidget_->SetLevel(jsonObj_->cd_struct->level);
+    Cmanager->contourWidget_->SetRange(jsonObj_->cd_struct->range);
+
+    Cmanager->ModifyScalarDisplay(Cmanager->contourWidget_->GetScalarName());//传入参数combox的current text(scalar name)
+    qDebug()<<"range:"<<QString::number(Cmanager->contourWidget_->GetRange()[0])<<" "<<QString::number(Cmanager->contourWidget_->GetRange()[1]);
+
+    Cmanager->SetLevel(Cmanager->contourWidget_->GetLevel());//传level的值,初始默认值为10
+    qDebug()<<"level:"<<QString::number(jsonObj_->cd_struct->level);
+    Cmanager->SetRange(jsonObj_->cd_struct->range);//传入云图的maxrange和minrange
+    qDebug()<<"range:"<<QString::number(jsonObj_->cd_struct->range[0])<<"  "<<QString::number(jsonObj_->cd_struct->range[1]);
+
+    qDebug()<<"scalarname:"<<QString::fromStdString(tmp_scalarname);
+    Cmanager->SetDisplayType(0);//0 is contour; 2 is line; 3 is vector  判断显示
+    Cmanager->DisplayMeshByIndex(0);//只显示实体、云图、等值线、矢量
+    Cmanager->SetNameTypeMap();
 }
 
 /*

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

@@ -6,6 +6,7 @@
 #include <string>
 #include "../Manager/ResultMeshManager.h"
 #include "../../threadPool_and_statemachine/dealWith/vtkjsonobject.h"
+#include "../widget/contourdispalyWidget.h"
 
 
 class ContourDisplay
@@ -21,6 +22,7 @@ public:
     ResultMeshManager* getResultMeshManager();
 private:
     ResultMeshManager* Cmanager;
+    ContourDisplayW* m_pWidget;
 };
 
 #endif

+ 13 - 3
CAE_Solution/src/VTK/display/linedisplay.cpp

@@ -44,11 +44,21 @@ void LineDisplay::linedisplay_execute(vtkJsonObject* jsonObj_)
 
     Cmanager->HideAllActors();
     Cmanager->ShowAll();
-    Cmanager->ModifyScalarDisplay(jsonObj_->getScalarname().toStdString());//传入combox的current text(scalar name)
-    Cmanager->SetLevel(jsonObj_->getLevel());//传level的值,初始默认值为10
-    Cmanager->SetRange(jsonObj_->getRange());
+
+    string tmp_scalarname = jsonObj_->ld_struct->scalarName;
+    Cmanager->lineWidget_->SetCurrScalar(tmp_scalarname);
+    Cmanager->lineWidget_->SetLevel(jsonObj_->ld_struct->level);
+    Cmanager->lineWidget_->SetRange(jsonObj_->ld_struct->range);
+
+    Cmanager->ModifyScalarDisplay(Cmanager->lineWidget_->GetScalarName());//传入combox的current text(scalar name)
+
+    Cmanager->SetLevel(Cmanager->lineWidget_->GetLevel());//传level的值,初始默认值为10
+    Cmanager->SetRange(jsonObj_->ld_struct->range);
     Cmanager->SetDisplayType(2);//0-contour 2-line 3-vector
     Cmanager->DisplayMeshByIndex(Cmanager->GetCurrIndex());
+
+
+        Cmanager->SetNameTypeMap();
 }
 
 /*

+ 1 - 0
CAE_Solution/src/VTK/visualization_VTK/vtkvismanager.h

@@ -8,6 +8,7 @@ using namespace std;
 
 
 
+
 #define MAXLEVEL 50
 class vtkRenderer;
 class vtkRenderWindow;

+ 4 - 4
CAE_Solution/src/VTK/visualization_VTK/vtkvisunshademesh.cpp

@@ -23,10 +23,10 @@ vtkVISUnShadeMesh::vtkVISUnShadeMesh()
 }
 vtkVISUnShadeMesh::~vtkVISUnShadeMesh()
 {
-	//if(cellActor_)
-	//{
-	//	 cellActor_->Delete();
-	// }
+    if(cellActor_)
+    {
+         cellActor_->Delete();
+     }
 }
 
 void vtkVISUnShadeMesh::CreateShadeMeshDisplay(bool flag)//真则阴影图,假则线框图

+ 5 - 0
CAE_Solution/src/VTK/visualization_VTK/vtkvisunstructuredgridmanager.cpp

@@ -55,6 +55,11 @@ vtkVISUnstructuredGridManager::~vtkVISUnstructuredGridManager()
 	//	}
 	//	
 	//	ErrorInfo(0, "destructure func 2");
+    DeleteObjects();
+    if(this->_source){
+        this->_source->Delete();
+        this->_source = NULL;
+    }
 }
 
 void vtkVISUnstructuredGridManager::SetDataSource(vtkVISUnstructuredGridSource *object)

+ 204 - 0
CAE_Solution/src/VTK/widget/contourdispalyWidget.cpp

@@ -0,0 +1,204 @@
+#include "contourdispalyWidget.h"
+#include <qdebug.h>
+
+ContourDisplayW::ContourDisplayW()
+/**
+* @brief the constructor.
+*
+* @param[in]
+* @param[out]
+* @return
+* @author HeJingJing
+* @date 20221130
+*/
+{
+
+}
+
+/**
+ * @brief the destructor.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20221130
+ */
+ContourDisplayW::~ContourDisplayW()
+{
+
+}
+
+
+/**
+ * @brief  init nameTypeMap
+ *
+ * @param[in]
+ * @param[out] get range
+ * @return
+ * @author hejingjing
+ * @date 20221207
+ */
+void ContourDisplayW::SetNameTypeMap(map<string, int> map1)
+{
+    this->nameTypeMap = map1;
+}
+
+
+/**
+ * @brief  set scalar range
+ *
+ * @param[in] min and max
+ * @param[out]
+ * @return
+ * @author hejingjing
+ * @date 20221207
+ */
+void ContourDisplayW::SetRange(double *range)
+{
+//    ldt_rangemin->setText(QString::number(range[0]));
+//    ldt_rangemax->setText(QString::number(range[1]));
+    this->range[0] = range[0];
+    this->range[1] = range[1];
+}
+/**
+ * @brief  get scalar range
+ *
+ * @param[in]
+ * @param[out] get range
+ * @return
+ * @author hejingjing
+ * @date 20221207
+ */
+double *ContourDisplayW::GetRange()
+{
+//    range[0] = ldt_rangemin->text().toDouble();
+//    range[1] = ldt_rangemax->text().toDouble();
+    return this->range;
+}
+
+
+/**
+ * @brief  set level
+ *
+ * @param[in]  int level
+ * @param[out]
+ * @return
+ * @author zhaoyu
+ * @date 20221213
+ */
+void ContourDisplayW::SetLevel(int level)
+{
+    this->level = level;
+}
+/**
+ * @brief  get level
+ *
+ * @param[in]
+ * @param[out] level
+ * @return
+ * @author zhaoyu
+ * @date 20221213
+ */
+int ContourDisplayW::GetLevel()
+{
+//    if (ldt_level->text().isNull())
+//    {
+//        return 0;
+//    }else
+//    {
+//        int size = ldt_level->text().toInt();
+//        return size;
+//    }
+    return this->level;
+}
+
+/**
+ * @brief  add scalar name
+ *
+ * @param[in] vector<string> nameVec
+ * @param[out]
+ * @return
+ * @author zhaoyu
+ * @date 20221208
+ */
+void ContourDisplayW::SetScalarNameVec(vector<string> vec)
+{
+    this->scalarNameVec = vec;
+}
+
+/**
+ * @brief get scalar combobox index
+ *
+ * @param[in]
+ * @param[out] scalar combobox index
+ * @return
+ * @author zhaoyu
+ * @date 20221213
+ */
+int ContourDisplayW::GetScalarIndex()
+{
+    //return cbo_scalar->currentIndex();
+    return this->scalarIndex;
+}
+
+/**
+ * @brief get scalar name
+ *
+ * @param[in]
+ * @param[out] scalar name
+ * @return
+ * @author zhaoyu
+ * @date 20230111
+ */
+string ContourDisplayW::GetScalarName()
+{
+//    int index = cbo_scalar->currentIndex();
+//    if (index != -1)
+//    {
+//        QString qstr = cbo_scalar->currentText();
+//        string sstr = qstr.toStdString();
+//        return sstr;
+//    }else
+//    {
+//        string str;
+//        str.clear();
+//        return str;
+//    }
+    return this->ScalarName;
+}
+
+/**
+ * @brief restore initial widget
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author zhaoyu
+ * @date 20230316
+ */
+void ContourDisplayW::RestoreWidget()
+{
+//    ldt_name->clear();
+//    ldt_type->clear();
+//    ldt_level->setText("10");
+//    ldt_rangemax->setText("0");
+//    ldt_rangemin->setText("0");
+//    cbo_scalar->setCurrentIndex(-1);
+//    cbo_scalar->clear();
+    range[0] = 0;
+    range[1] = 0;
+    nameTypeMap.clear();
+}
+
+
+void ContourDisplayW::SetCurrScalar(string name)
+{
+//    QString scalarName = QString::fromStdString(name);
+//    int index = cbo_scalar->findText(scalarName);
+//    if (index != cbo_scalar->currentIndex())
+//    {
+//        cbo_scalar->setCurrentIndex(index);
+//    }
+    this->ScalarName = name;
+}

+ 36 - 0
CAE_Solution/src/VTK/widget/contourdispalyWidget.h

@@ -0,0 +1,36 @@
+#ifndef CONTOURDISPALY_H
+#define CONTOURDISPALY_H
+
+#include <string>
+#include <iostream>
+#include <map>
+#include <vector>
+
+
+using namespace std;
+class ContourDisplayW
+{
+public:
+    ContourDisplayW();
+    ~ContourDisplayW();
+     void SetRange(double *range);
+
+     void SetLevel(int level);
+     int GetLevel();
+     double *GetRange();
+     void SetNameTypeMap(map<string,int> map);
+     void SetScalarNameVec(vector<string> vec);
+     int GetScalarIndex();
+     string GetScalarName();
+     void SetCurrScalar(string name);
+     void RestoreWidget();
+
+     int scalarIndex;
+     string ScalarName;
+private:
+    double range[2];
+    int level;
+    map<string,int> nameTypeMap;
+    vector<string> scalarNameVec;
+};
+#endif // CONTOURDISPALY_H

+ 203 - 0
CAE_Solution/src/VTK/widget/linedisplayWidget.cpp

@@ -0,0 +1,203 @@
+#include "linedisplaywidget.h"
+#include <QDebug>
+using namespace std;
+LineDisplayW::LineDisplayW()
+    /**
+     * @brief the constructor.
+     *
+     * @param[in]
+     * @param[out]
+     * @return
+     * @author HeJingJing
+     * @date 20221201
+     */
+{
+
+}
+
+/**
+ * @brief the destructor.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20221201
+ */
+LineDisplayW::~LineDisplayW()
+{
+}
+
+/**
+ * @brief  set scalar range
+ *
+ * @param[in] min and max
+ * @param[out]
+ * @return
+ * @author zhaoyu
+ * @date 20221207
+ */
+void LineDisplayW::SetRange(double* range)
+{
+//    ldt_rangemin->setText(QString::number(range[0]));
+//    ldt_rangemax->setText(QString::number(range[1]));
+    this->range_[0] = range[0];
+    this->range_[1] = range[1];
+}
+
+/**
+ * @brief  get scalar range
+ *
+ * @param[in]
+ * @param[out] get range_
+ * @return
+ * @author zhaoyu
+ * @date 20221207
+ */
+double* LineDisplayW::GetRange()
+{
+//    range_[0] = ldt_rangemin->text().toDouble();
+//    range_[1] = ldt_rangemax->text().toDouble();
+    return this->range_;
+}
+
+/**
+ * @brief  init nameTypeMap
+ *
+ * @param[in]
+ * @param[out] get range_
+ * @return
+ * @author zhaoyu
+ * @date 20221207
+ */
+void LineDisplayW::SetNameTypeMap(map<string, int> map1)
+{
+    this->nameTypeMap_ = map1;
+}
+
+/**
+ * @brief  add scalar name
+ *
+ * @param[in] vector<string> nameVec
+ * @param[out]
+ * @return
+ * @author zhaoyu
+ * @date 20221208
+ */
+void LineDisplayW::SetScalarNameVec(vector<string> vec)
+{
+//    cbo_scalar->clear();
+//    for (int i = 0; i < vec.size(); i ++)
+//    {
+//        QString str = QString::fromStdString(vec.at(i));
+//        cbo_scalar->addItem(str);
+//    }
+//    cbo_scalar->setCurrentIndex(-1);
+    this->ScalarNameVec = vec;
+}
+
+/**
+ * @brief get scalar combobox index
+ *
+ * @param[in]
+ * @param[out] scalar combobox index
+ * @return
+ * @author zhaoyu
+ * @date 20221213
+ */
+int LineDisplayW::GetScalarIndex()
+{
+//    return cbo_scalar->currentIndex();
+    return this->scalar_index;
+}
+
+/**
+ * @brief set level
+ *
+ * @param[in] int level
+ * @param[out]
+ * @return
+ * @author zhaoyu
+ * @date 20221213
+ */
+void LineDisplayW::SetLevel(int level)
+{
+//    ldt_level->setText(QString::number(level));
+    this->level = level;
+}
+
+/**
+ * @brief get level
+ *
+ * @param[in]
+ * @param[out] int level
+ * @return
+ * @author zhaoyu
+ * @date 20221213
+ */
+int LineDisplayW::GetLevel()
+{
+//    if (ldt_level->text().isNull())
+//    {
+//        return 0;
+//    }else
+//    {
+//        int level = ldt_level->text().toInt();
+//        return level;
+//    }
+    return this->level;
+}
+
+/**
+ * @brief get scalar name
+ *
+ * @param[in]
+ * @param[out] scalar name
+ * @return
+ * @author zhaoyu
+ * @date 20230111
+ */
+string LineDisplayW::GetScalarName()
+{
+//    int index = cbo_scalar->currentIndex();
+//    if (index != -1)
+//    {
+//        QString qstr = cbo_scalar->currentText();
+//        string sstr = qstr.toStdString();
+//        return sstr;
+//    }else
+//    {
+//        string str;
+//        str.clear();
+//        return str;
+//    }
+    return this->scalarName;
+}
+
+/**
+ * @brief restore initial widget
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author zhaoyu
+ * @date 20230316
+ */
+void LineDisplayW::RestoreWidget()
+{
+    range_[0] = 0;
+    range_[1] = 0;
+    nameTypeMap_.clear();
+}
+
+
+void LineDisplayW::SetCurrScalar(string name)
+{
+//    QString scalarName = QString::fromStdString(name);
+//    int index = cbo_scalar->findText(scalarName);
+//    if (cbo_scalar->currentIndex() != index)
+//    {
+//        cbo_scalar->setCurrentIndex(index);
+//    }
+    this->scalarName = name;
+}

+ 37 - 0
CAE_Solution/src/VTK/widget/linedisplayWidget.h

@@ -0,0 +1,37 @@
+#ifndef LINEDISPLAY_H
+#define LINEDISPLAY_H
+
+#include <iostream>
+#include <map>
+#include <string>
+#include <vector>
+
+using namespace std;
+class LineDisplayW
+{
+public:
+    LineDisplayW();
+    ~LineDisplayW();
+
+     void SetRange(double* range);
+     double* GetRange();
+     void SetNameTypeMap(map<string, int> map);
+     void SetScalarNameVec(vector<string> vec);
+     int GetScalarIndex();
+     void SetLevel(int level);
+     int GetLevel();
+     string GetScalarName();
+     void RestoreWidget();
+     void SetCurrScalar(string name);
+private:
+    double range_[2];
+    map<string, int> nameTypeMap_;
+    vector<string> ScalarNameVec;
+
+public:
+    int scalar_index;
+    int level;
+    string scalarName;
+};
+
+#endif // LINEDISPLAY_H

+ 435 - 0
CAE_Solution/src/VTK/widget/slicedisplaywidget.cpp

@@ -0,0 +1,435 @@
+#include "SliceDisplayWidget.h"
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QFormLayout>
+SliceDisplayWidget::SliceDisplayWidget()
+/**
+* @brief the constructor.
+*
+* @param[in]
+* @param[out]
+* @return
+* @author HeJingJing
+* @date 20230214
+*/
+{
+}
+
+/**
+ * @brief accept data from AreaRange_vector.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+void SliceDisplayWidget::SetAreaRange(vector<int> AreaRange)
+{
+    QStringList list;
+    for(int i = 0 ;i < AreaRange.size() ; i++)
+    {
+        QString range = QString::number(AreaRange.at(i));
+        list << range;
+    }
+    QString str = list.join(",");
+    //ldt_range->setText(str);
+    this->AreaRange = str;
+}
+/**
+ * @brief accept data from Normal_vector.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+void SliceDisplayWidget::SetNormal(vector<double> setnormal)
+{
+    //  ldt_x->setText(QString::number(setnormal.at(0)));
+    //  ldt_y->setText(QString::number(setnormal.at(1)));
+    //  ldt_z->setText(QString::number(setnormal.at(2)));
+      normal_x = setnormal.at(0);
+      normal_y = setnormal.at(1);
+      normal_z = setnormal.at(2);
+}
+/**
+ * @brief get normal and save to the vector.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+vector<double> SliceDisplayWidget::GetNormal()
+{
+    vector<double> Getnormal;
+    //    Getnormal.push_back(ldt_x->text().toDouble());
+    //    Getnormal.push_back(ldt_y->text().toDouble());
+    //    Getnormal.push_back(ldt_z->text().toDouble());
+    Getnormal.push_back(normal_x);
+    Getnormal.push_back(normal_y);
+    Getnormal.push_back(normal_z);
+    return Getnormal;
+}
+/**
+ * @brief accept data from Position_vector.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+void SliceDisplayWidget::SetPosition(vector<double> setPosition)
+{
+//    ldt_xp->setText(QString::number(setPosition.at(0)));
+//    ldt_yp->setText(QString::number(setPosition.at(1)));
+//    ldt_zp->setText(QString::number(setPosition.at(2)));
+    this->Position_x = setPosition.at(0);
+    this->Position_y = setPosition.at(1);
+    this->Position_z = setPosition.at(2);
+}
+/**
+ * @brief get position and save to the vector.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+vector<double> SliceDisplayWidget::GetPosition()
+{
+    vector<double> Getposition;
+//    Getposition.push_back(ldt_xp->text().toDouble());
+//    Getposition.push_back(ldt_yp->text().toDouble());
+//    Getposition.push_back(ldt_zp->text().toDouble());
+    Getposition.push_back(Position_x);
+    Getposition.push_back(Position_y);
+    Getposition.push_back(Position_z);
+    return Getposition;
+}
+/**
+ * @brief accept data from PositionRange_vector.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+void SliceDisplayWidget::SetPositionRange(vector<double> PositionRange)
+{
+//    QString strx = (QString("(%1, %2)").arg(PositionRange.at(0)).arg(PositionRange.at(1)));
+//    lbl_xs->setText(strx);
+//    QString stry = (QString("(%1, %2)").arg(PositionRange.at(2)).arg(PositionRange.at(3)));
+//    lbl_ys->setText(stry);
+//    QString strz = (QString("(%1, %2)").arg(PositionRange.at(4)).arg(PositionRange.at(5)));
+//    lbl_zs->setText(strz);
+    this->Position_x_range[0] = PositionRange.at(0);
+    this->Position_x_range[1] = PositionRange.at(1);
+    this->Position_y_range[0] = PositionRange.at(2);
+    this->Position_y_range[1] = PositionRange.at(3);
+    this->Position_z_range[0] = PositionRange.at(4);
+    this->Position_z_range[1] = PositionRange.at(5);
+}
+/**
+ * @brief get positionrange and save to the vector.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+vector<double> SliceDisplayWidget::GetPositionRange()
+{
+    vector<double> positionrange;
+//    positionrange.push_back(lbl_xs->text().toDouble());
+//    positionrange.push_back(lbl_ys->text().toDouble());
+//    positionrange.push_back(lbl_zs->text().toDouble());
+    positionrange.push_back(Position_x_range[0]);
+    positionrange.push_back(Position_x_range[1]);
+    positionrange.push_back(Position_y_range[0]);
+    positionrange.push_back(Position_y_range[1]);
+    positionrange.push_back(Position_z_range[0]);
+    positionrange.push_back(Position_z_range[1]);
+    return positionrange;
+}
+/**
+ * @brief set solid_checkbox condition is true/false.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+void SliceDisplayWidget::SetSolidCondition(bool SoildC)
+{
+//    if(SoildC)
+//    {
+//        ckx_soild->setChecked(true);
+//    }
+//    else
+//    {
+//        ckx_soild->setChecked(false);
+//    }
+    //是否选择实线的复选框
+}
+bool SliceDisplayWidget::GetSoildCondition()
+{
+//    if(ckx_soild->isChecked())
+//    {
+        return true;//to do
+//    }
+//    else
+//    {
+//        return false;
+//    }
+}
+/**
+ * @brief set plane_checkbox condition is true/false.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+void SliceDisplayWidget::SetPlaneCondition(bool PlaneC)
+{
+//    if(PlaneC)
+//    {
+//        ckx_plane->setChecked(true);
+//    }
+//    else
+//    {
+//        ckx_plane->setChecked(false);
+//    }
+    //设置plane是否选择
+}
+/**
+ * @brief get plane_checkbox condition is true/false.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+bool SliceDisplayWidget::GetPlaneCondition()
+{
+//    if(ckx_plane->isChecked())
+//    {
+        return true;// to do
+//    }
+//    else
+//    {
+//        return false;
+//    }
+}
+/**
+ * @brief set scalarvalue_checkbox condition is true/false.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+void SliceDisplayWidget::SetScalarValueCondition(bool ScalarVC)
+{
+//    if(ScalarVC)
+//    {
+//        ckx_valueshow->setChecked(true);
+//    }
+//    else
+//    {
+//        ckx_valueshow->setChecked(false);
+//    }
+    //设置scalarValue是否选中
+}
+/**
+ * @brief get scalarvalue_checkbox condition is true/false.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+bool SliceDisplayWidget::GetScalarValueCondition()
+{
+//    if(ckx_valueshow->isChecked())
+//    {
+        return true;//to do
+//    }
+//    else
+//    {
+//        return false;
+//    }
+}
+/**
+ * @brief set sectionalplanecondiyion_checkbox condition is true/false.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+void SliceDisplayWidget::SetSectionalPlaneCondition(bool SPlaneC)
+{
+//    if(SPlaneC)
+//    {
+//        ckx_planeshow->setChecked(true);
+//    }
+//    else
+//    {
+//        ckx_planeshow->setChecked(false);
+//    }
+}
+/**
+ * @brief get sectionalplanecondiyion_checkbox condition is true/false.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+bool SliceDisplayWidget::GetSectionalPlaneCondition()
+{
+//    if(ckx_planeshow->isChecked())
+//    {
+       return true;//to do
+//    }
+//    else
+//    {
+//        return false;
+//    }
+}
+/**
+ * @brief set colorlevel.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+void SliceDisplayWidget::SetColorLevel(int level)
+{
+    //sbx_color->setValue(level);
+    this->colorLevel = level;
+}
+/**
+ * @brief get colorlevel.
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+vector<int> SliceDisplayWidget::GetColorLevel()
+{
+    vector<int> level;
+    //level.push_back(sbx_color->value());
+    level.push_back(this->colorLevel);
+    return level;
+}
+/**
+ * @brief accept data from variable_vector.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+void SliceDisplayWidget::SetVariableName(vector<string> variableName)
+{
+//    cbx_name->clear();
+//    for(int i = 0 ; i < variableName.size() ;i++)
+//    {
+//        QString str = QString::fromStdString(variableName.at(i));
+//        cbx_name->addItem(str);
+//    }
+//    cbx_name->setCurrentIndex(0);
+    this->variableName = variableName;
+    current_variablename = this->variableName[0];
+}
+/**
+ * @brief get variabledata and save to vector.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+vector<string> SliceDisplayWidget::GetVariableName()
+{
+    vector<string> variablename;
+    //variablename.push_back(cbx_name->currentText().toStdString());
+    variablename.push_back(current_variablename);
+    return variablename;
+}
+/**
+ * @brief get type.
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230227
+ */
+vector<string> SliceDisplayWidget::GetType()
+{
+    vector<string> type;
+    //type.push_back(cbx_type->currentText().toStdString());
+    type.push_back(current_type);
+    return type;
+}
+/**
+ * @brief the destructor.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230214
+ */
+SliceDisplayWidget::~SliceDisplayWidget()
+{
+
+}
+///**
+//* @brief set Text function
+//*
+//* detail data information
+//* @param[in/out]
+//* @return
+//* @author hejingjing
+//* @date 20230324
+//*/
+//void SliceDisplayWidget::initText()
+//{
+//    gbx_slice->setTitle(QApplication::translate("SliceDisplayWidget","Slice"));
+//    lbl_range->setText(QApplication::translate("SliceDisplayWidget","Area_range"));
+//    ckx_soild->setText(QApplication::translate("SliceDisplayWidget","Solid"));
+//    ckx_plane->setText(QApplication::translate("SliceDisplayWidget","Sectional plane"));
+//    gbx_normal->setTitle(QApplication::translate("SliceDisplayWidget","Normal"));
+//    gbx_position->setTitle(QApplication::translate("SliceDisplayWidget","Position"));
+//    gbx_contour->setTitle(QApplication::translate("SliceDisplayWidget","Contour"));
+//    lbl_type->setText(QApplication::translate("SliceDisplayWidget","Type"));
+//    cbx_type->addItem(QApplication::translate("SliceDisplayWidget","contour"));
+//    cbx_type->addItem(QApplication::translate("SliceDisplayWidget","line"));
+//    lbl_name->setText(QApplication::translate("SliceDisplayWidget","variable name"));
+//    lbl_color->setText(QApplication::translate("SliceDisplayWidget","color_level"));
+//    ckx_planeshow->setText(QApplication::translate("SliceDisplayWidget","Sectional Contour"));
+//    ckx_valueshow->setText(QApplication::translate("SliceDisplayWidget","Scalar Value"));
+//}
+

+ 51 - 0
CAE_Solution/src/VTK/widget/slicedisplaywidget.h

@@ -0,0 +1,51 @@
+#ifndef SLICEWIDGET_H
+#define SLICEWIDGET_H
+
+#include <vector>
+#include <QString>
+using namespace std;
+class SliceDisplayWidget
+{
+public:
+    SliceDisplayWidget();
+    ~SliceDisplayWidget();
+
+    void SetAreaRange(vector<int> AreaRange);
+    void SetSolidCondition(bool SolidC);
+    bool GetSoildCondition();
+    void SetPlaneCondition(bool PlaneC);
+    bool GetPlaneCondition();
+    void SetScalarValueCondition(bool ScalarVC);
+    bool GetScalarValueCondition();
+    void SetSectionalPlaneCondition(bool SPlaneC);
+    bool GetSectionalPlaneCondition();
+    void SetNormal(vector<double> setNormal);
+    vector<double> GetNormal();
+    void SetPosition(vector<double> setPosition);
+    vector<double> GetPosition();
+    void SetPositionRange(vector<double> PositionRange);
+    vector<double> GetPositionRange();
+    vector<string> GetType();
+    void SetVariableName(vector<string> variableName);
+    vector<string> GetVariableName();
+    void SetColorLevel(int level);
+    vector<int> GetColorLevel();
+    //void initText();
+
+public:
+    double normal_x;
+    double normal_y;
+    double normal_z;
+    double Position_x;
+    double Position_y;
+    double Position_z;
+    double Position_x_range[2];
+    double Position_y_range[2];
+    double Position_z_range[2];
+    QString AreaRange;
+    int colorLevel;
+    vector<string> variableName;
+    string current_variablename;
+    string current_type;
+};
+#endif // SLICEWIDGET_H

+ 162 - 0
CAE_Solution/src/VTK/widget/solidsurfaceDisplaywidget.cpp

@@ -0,0 +1,162 @@
+#include "solidsurfacedisplaywidget.h"
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QColor>
+#include <QDebug>
+#include <vector>
+SolidSurfaceWidget::SolidSurfaceWidget()
+/**
+* @brief the constructor.
+*
+* @param[in]
+* @param[out]
+* @return
+* @author HeJingJing
+* @date 20230104
+*/
+{
+
+}
+
+/**
+ * @brief set the color.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230104
+ */
+void SolidSurfaceWidget::Setcolor(QColor color)
+{
+//   ldt_r->setText(QString::number(color.red()/255.0));
+//   ldt_g->setText(QString::number(color.green()/255.0));
+//   ldt_b->setText(QString::number(color.blue()/255.0));
+    number_r = color.red()/255.0;
+    number_g = color.green()/255.0;
+    number_b = color.blue()/255.0;
+}
+
+/**
+ * @brief get the color.
+ *
+ * @param[in]
+ * @param[out] vector<double> color
+ * @return
+ * @author zhaoyu
+ * @date 20230110
+ */
+vector<double> SolidSurfaceWidget::GetColor()
+{
+    vector<double> vec;
+//    vec.push_back(ldt_r->text().toDouble());
+//    vec.push_back(ldt_g->text().toDouble());
+//    vec.push_back(ldt_b->text().toDouble());
+    vec.push_back(number_r);
+    vec.push_back(number_g);
+    vec.push_back(number_b);
+    return vec;
+}
+/**
+ * @brief set the color.
+ *
+ * @param[in] vector<double> color
+ * @param[out]
+ * @return
+ * @author zhaoyu
+ * @date 20230110
+ */
+void SolidSurfaceWidget::SetColor(vector<double> color)
+{
+//    ldt_r->setText(QString::number(color.at(0)));
+//    ldt_g->setText(QString::number(color.at(1)));
+//    ldt_b->setText(QString::number(color.at(2)));
+    number_r = color.at(0);
+    number_g = color.at(1);
+    number_b = color.at(2);
+}
+/**
+ * @brief set the transparency.
+ *
+ * @param[in] double value
+ * @param[out]
+ * @return
+ * @author zhaoyu
+ * @date 20230110
+ */
+void SolidSurfaceWidget::SetTransparency(double value)
+{
+//    ldt_trans->setText(QString::number(value));
+    number_transparency = value;
+}
+
+
+/**
+ * @brief get transparency value
+ *
+ * @param[in]
+ * @param[out] double value
+ * @return
+ * @author zhaoyu
+ * @date 20230110
+ */
+double SolidSurfaceWidget::GetTransparency()
+{
+//    double value = ldt_trans->text().toDouble();
+
+//    return value;
+    return number_transparency;
+}
+
+/**
+ * @brief get show or hide state
+ * true is show, false is hide.
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author zhaoyu
+ * @date 20230110
+ */
+bool SolidSurfaceWidget::GetShowHideState()
+{
+//    if (rbt_show->isChecked())
+//    {
+        return true;
+//    }else
+//    {
+//        return false;
+//    }
+}
+/**
+ * @brief the destructor.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230104
+ */
+SolidSurfaceWidget::~SolidSurfaceWidget()
+{
+
+}
+/**
+ * @brief
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author ZhaoYu
+ * @date 20230224
+ */
+void SolidSurfaceWidget::SetShowHideState(bool flag)
+{
+//    if(flag)
+//    {
+//        rbt_hide->setChecked(true);
+//    }else
+//    {
+//        rbt_show->setChecked(true);
+//    }
+}
+

+ 26 - 0
CAE_Solution/src/VTK/widget/solidsurfaceDisplaywidget.h

@@ -0,0 +1,26 @@
+#ifndef SOLIDSURFACEWIDGET_H
+#define SOLIDSURFACEWIDGET_H
+
+#include <vector>
+#include <QColor>
+
+using namespace std;
+class SolidSurfaceWidget
+{
+public:
+    SolidSurfaceWidget();
+    ~SolidSurfaceWidget();
+    void Setcolor(QColor color);
+    vector<double> GetColor();
+    void SetColor(vector<double> color);
+    void SetTransparency(double value);
+    double GetTransparency();
+    bool GetShowHideState();
+    void SetShowHideState(bool flag);
+public:
+     double number_r;
+     double number_g;
+     double number_b;
+     double number_transparency;
+};
+#endif // SOLIDSURFACEWIDGET_H

+ 383 - 0
CAE_Solution/src/VTK/widget/streamDisplaywidget.cpp

@@ -0,0 +1,383 @@
+#include "streamDisplaywidget.h"
+#include <QDebug>
+
+StreamDisplayWidget::StreamDisplayWidget()
+/**
+* @brief the constructor.
+*
+* @param[in]
+* @param[out]
+* @return
+* @author HeJingJing
+* @date 20230301
+*/
+{
+}
+
+/**
+ * @brief get the data to cbx_u.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230301
+ */
+void StreamDisplayWidget::SetData_u(vector<string> dataU)
+{
+//    cbx_u->clearEditText();
+//    for(int  i = 0 ; i < dataU.size() ; i++)
+//    {
+//        cbx_u->addItem(QString::fromStdString(dataU.at(i)));
+//    }
+//    cbx_u->setCurrentIndex(-1);
+    this->dataU = dataU;
+}
+/**
+ * @brief get the data to cbx_v.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230301
+ */
+void StreamDisplayWidget::SetData_v(vector<string> dataV)
+{
+//    cbx_v->clearEditText();
+//    for(int j = 0 ; j < dataV.size(); j++)
+//    {
+//        cbx_v->addItem(QString::fromStdString(dataV.at(j)));
+//    }
+//    cbx_v->setCurrentIndex(-1);
+    this->dataV = dataV;
+}
+/**
+ * @brief get the data to cbx_w.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230301
+ */
+void StreamDisplayWidget::SetData_w(vector<string> dataW)
+{
+//    cbx_w->clearEditText();
+//    for(int k = 0 ; k < dataW.size() ; k++)
+//    {
+//        cbx_w->addItem(QString::fromStdString(dataW.at(k)));
+//    }
+//    cbx_w->setCurrentIndex(-1);
+    this->dataW = dataW;
+}
+/**
+ * @brief Get u v w combobox current index.
+ *
+ * @param[in]
+ * @param[out] vector<int> index
+ * @return
+ * @author HeJingJing
+ * @date 20230301
+ */
+vector<int> StreamDisplayWidget::GetUVWIndex()
+{
+    vector<int> index;
+//    int u = cbx_u->currentIndex();
+//    int v = cbx_v->currentIndex();
+//    int w = cbx_w->currentIndex();
+//    index.push_back(u);
+//    index.push_back(v);
+//    index.push_back(w);
+    index.push_back(current_u);
+    index.push_back(current_v);
+    index.push_back(current_w);
+    return index;
+}
+/**
+ * @brief get vector_u data.
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230303
+ */
+string StreamDisplayWidget::GetUData()
+{
+    //return cbx_u->currentText().toStdString();
+    return value_u;
+}
+/**
+ * @brief get vector_v data.
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230303
+ */
+string StreamDisplayWidget::GetVData()
+{
+    //return cbx_v->currentText().toStdString();
+    return value_v;
+}
+/**
+ * @brief get vector_w data.
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230303
+ */
+string StreamDisplayWidget::GetWData()
+{
+    //return cbx_w->currentText().toStdString();
+    return value_w;
+}
+/**
+ * @brief get the data to speed_XYZ.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230301
+ */
+void StreamDisplayWidget::SetData_seed(vector<double> seed_xyz)
+{
+//    ldt_x->setText(QString::number(seed_xyz.at(0)));
+//    ldt_y->setText(QString::number(seed_xyz.at(1)));
+//    ldt_z->setText(QString::number(seed_xyz.at(2)));
+    seed_x = seed_xyz.at(0);
+    seed_y = seed_xyz.at(1);
+    seed_z = seed_xyz.at(2);
+    this->seed_xyz = seed_xyz;
+}
+
+/**
+ * @brief set seed_xyz data.
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author zhaoyu
+ * @date 20230309
+ */
+void StreamDisplayWidget::SetXYZValue(double x, double y, double z)
+{
+//    ldt_x->setText(QString::number(x));
+//    ldt_y->setText(QString::number(y));
+//    ldt_z->setText(QString::number(z));
+    seed_x = x;
+    seed_y = y;
+    seed_z = z;
+}
+/**
+ * @brief get seed_xyz data.
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230303
+ */
+QStringList StreamDisplayWidget::GetSeedData_XYZ()
+{
+    QStringList xyz;
+    //xyz << ldt_x->text() << ","<< ldt_y->text() << ","<< ldt_z->text();
+    xyz<<QString::number(seed_x)<<","<<QString::number(seed_y)<<","<<QString::number(seed_z);
+    return xyz;
+}
+/**
+ * @brief get the size to step_size.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230301
+ */
+void StreamDisplayWidget::SetSize_step(vector<double> stepSize)
+{
+//    for(int i = 0 ; i < stepSize.size(); i++)
+//    {
+//        ldt_step->setText(QString::number(stepSize.at(i))); //to do
+//    }
+}
+/**
+ * @brief get the size to max_size.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230301
+ */
+void StreamDisplayWidget::SetSize_max(vector<double> maxSize)
+{
+//    for(int j = 0 ; j < maxSize.size() ;j++)
+//    {
+//        ldt_max->setText(QString::number(maxSize.at(j)));
+//    }
+}
+/**
+ * @brief get the size to min_size.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230301
+ */
+void StreamDisplayWidget::SetSize_min(vector<double> minSize)
+{
+//    for(int k = 0 ; k < minSize.size() ; k++)
+//    {
+//        ldt_min->setText(QString::number(minSize.at(k)));
+//    }
+}
+/**
+ * @brief get stepsize data.
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230303
+ */
+double StreamDisplayWidget::GetInitStepData()
+{
+    //return ldt_step->text().toDouble();
+    return this->initialStep;
+}
+/**
+ * @brief get MaxPropagation data.
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230303
+ */
+double StreamDisplayWidget::GetMaxPropgationData()
+{
+    //return ldt_max->text().toDouble();
+    return this->MaxPropagation;
+}
+/**
+ * @brief get MinPropagation data.
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230303
+ */
+double StreamDisplayWidget::GetMinStepData()
+{
+    //return ldt_min->text().toDouble();
+    return MinimumStep;
+}
+
+void StreamDisplayWidget::SetInitStepData(double d)
+{
+    //ldt_step->setText(QString::number(d));
+    this->initialStep = d;
+}
+void StreamDisplayWidget::SetMaxPropgationData(double d)
+{
+    //ldt_max->setText(QString::number(d));
+    this->MaxPropagation = d;
+}
+void StreamDisplayWidget::SetMinStepData(double d)
+{
+    //ldt_min->setText(QString::number(d));
+    this->MinimumStep = d;
+}
+
+bool StreamDisplayWidget::GetShowHideState()
+{
+//    return ckx_show->isChecked();
+    return true;
+    //to do 选择show
+}
+bool StreamDisplayWidget::GetToolState()
+{
+//    return  ckx_tool->isChecked();
+    return true;
+    //to  do 选择tool
+}
+
+void StreamDisplayWidget::Select()
+{
+    //ResultMeshManager::getInstance()->SetStreamSelectState(true);
+    //to do
+}
+void StreamDisplayWidget::SelectOff()
+{
+    //ResultMeshManager::getInstance()->SetStreamSelectState(false);
+    // todo
+}
+void StreamDisplayWidget::DeleteAll()
+{
+    //ResultMeshManager::getInstance()->DeleteAllStream();
+    //to do
+}
+
+/**
+ * @brief select scalar names creat datasource
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author zhaoyu
+ * @date 20230309
+ */
+void StreamDisplayWidget::Creat()
+{
+   if(((!value_u.empty()) && (!value_v.empty()) && (!value_w.empty()))
+           &&(value_u != value_v && value_u != value_w && value_v != value_w))
+   {
+//       QString u = cbx_u->currentText();
+//       QString v = cbx_v->currentText();
+//       QString w = cbx_w->currentText();
+
+       //ResultMeshManager::getInstance()->CreatVectorSource(u.toStdString(), v.toStdString(), w.toStdString());
+   //to do
+   }
+}
+
+/**
+ * @brief get direction type
+ * @param[in]
+ * @param[out] direction type
+ * @return
+ * @author zhaoyu
+ * @date 20230309
+ */
+string StreamDisplayWidget::GetDirection()
+{
+    //return cbx_direction->currentText().toStdString();
+    return this->current_direction;
+}
+
+/**
+ * @brief get stream line type
+ * @param[in]
+ * @param[out] streamline type
+ * @return
+ * @author zhaoyu
+ * @date 20230309
+ */
+string StreamDisplayWidget::GetType()
+{
+    //return cbx_type->currentText().toStdString();
+    return this->current_StreamStyle;
+}
+
+/**
+ * @brief the destructor.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20230301
+ */
+StreamDisplayWidget::~StreamDisplayWidget()
+{
+
+}

+ 64 - 0
CAE_Solution/src/VTK/widget/streamDisplaywidget.h

@@ -0,0 +1,64 @@
+#ifndef STREAMWIDGET_H
+#define STREAMWIDGET_H
+#include <vector>
+#include <QStringList>
+
+using namespace std;
+
+class StreamDisplayWidget
+{
+public:
+    StreamDisplayWidget();
+    ~StreamDisplayWidget();
+     void SetData_u(vector<string> dataU);
+     void SetData_v(vector<string> dataV);
+     void SetData_w(vector<string> dataW);
+     vector<int> GetUVWIndex();
+     void SetData_seed(vector<double> seed_xyz);
+     void SetSize_step(vector<double> stepSize);
+     void SetSize_max(vector<double> maxSize);
+     void SetSize_min(vector<double> minSize);
+     double GetInitStepData();
+     double GetMaxPropgationData();
+     double GetMinStepData();
+     void SetInitStepData(double);
+     void SetMaxPropgationData(double);
+     void SetMinStepData(double);
+     string GetUData();
+     string GetVData();
+     string GetWData();
+     void SetXYZValue(double x, double y, double z);
+     QStringList GetSeedData_XYZ();
+     string GetDirection();
+     string GetType();
+     bool GetShowHideState();
+     bool GetToolState();
+public:
+     vector<string> dataU;
+     vector<string> dataV;
+     vector<string> dataW;
+     int current_u;//页面选择
+     int current_v;
+     int current_w;
+     string value_u;//页面选择
+     string value_v;
+     string value_w;
+
+     vector<double> seed_xyz;//data_seed
+     double seed_x;
+     double seed_y;
+     double seed_z;
+
+     double initialStep;//输入参数
+     double MaxPropagation;
+     double MinimumStep;
+
+     string current_direction;
+     string current_StreamStyle;
+
+    void Select();
+    void SelectOff();
+    void DeleteAll();
+    void Creat();
+};
+#endif // STREAMWIDGET_H

+ 144 - 0
CAE_Solution/src/VTK/widget/vectorDisplaywidget.cpp

@@ -0,0 +1,144 @@
+#include "vectordisplaywidget.h"
+
+VectorW::VectorW()
+/**
+* @brief the constructor.
+*
+* @param[in]
+* @param[out]
+* @return
+* @author HeJingJing
+* @date 20221210
+*/
+{
+}
+
+/**
+ * @brief get the data to cbx_u.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20221210
+ */
+void VectorW::GetData_u(vector<string> dataU)
+{
+//    for(int i = 0 ;i < dataU.size(); i++)
+//    {
+//        cbx_u->addItem(QString::fromStdString(dataU.at(i)));
+//    }
+//    cbx_u->setCurrentIndex(-1);
+    this->dataU = dataU;
+}
+/**
+ * @brief get the data to cbx_v.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20221210
+ */
+void VectorW::GetData_v(vector<string> dataV)
+{
+//    for(int j = 0 ; j < dataV.size(); j++)
+//    {
+//        cbx_v->addItem(QString::fromStdString(dataV.at(j)));
+//    }
+//    cbx_v->setCurrentIndex(-1);
+    this->dataV = dataV;
+}
+/**
+ * @brief get the data to cbx_w.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20221210
+ */
+void VectorW::GetData_w(vector<string> dataW)
+{
+//    for(int k = 0; k < dataW.size(); k++)
+//    {
+//        cbx_w->addItem(QString::fromStdString(dataW.at(k)));
+//    }
+//    cbx_w->setCurrentIndex(-1);
+    this->dataW = dataW;
+}
+
+/**
+ * @brief Get u v w combobox current index.
+ *
+ * @param[in]
+ * @param[out] vector<int> index
+ * @return
+ * @author zhaoyu
+ * @date 20221226
+ */
+vector<int> VectorW::GetUVWIndex()
+{
+    vector<int> indexVec;
+//    int u = cbx_u->currentIndex();
+//    int v = cbx_v->currentIndex();
+//    int w = cbx_w->currentIndex();
+//    indexVec.push_back(u);
+//    indexVec.push_back(v);
+//    indexVec.push_back(w);
+    indexVec.push_back(current_u);
+    indexVec.push_back(current_v);
+    indexVec.push_back(current_w);
+    return indexVec;
+}
+/**
+ * @brief the destructor.
+ *
+ * @param[in]
+ * @param[out]
+ * @return
+ * @author HeJingJing
+ * @date 20221210
+ */
+VectorW::~VectorW()
+{
+
+}
+
+/**
+ * @brief set ScaleFactor.
+ *
+ * @param[in] double scaleFactor
+ * @param[out]
+ * @return
+ * @author zhaoyu
+ * @date 20230103
+ */
+void VectorW::SetScaleFactor(double scaleFactor)
+{
+//    ldt_scalefactor->setText(QString::number(scaleFactor));
+   this->current_scalefactor = scaleFactor;
+}
+
+/**
+ * @brief get ScaleFactor.
+ *
+ * @param[in]
+ * @param[out] double scaleFactor
+ * @return
+ * @author zhaoyu
+ * @date 20230103
+ */
+double VectorW::GetScaleFactor()
+{
+//    if (!ldt_scalefactor->text().isEmpty())
+    if(current_scalefactor!=0)
+    {
+//        double factor = ldt_scalefactor->text().toDouble();
+        //return factor;
+        return current_scalefactor;
+    }else
+    {
+        return 0;
+    }
+}

+ 27 - 0
CAE_Solution/src/VTK/widget/vectorDisplaywidget.h

@@ -0,0 +1,27 @@
+#ifndef VECTOR_H
+#define VECTOR_H
+
+#include <vector>
+using namespace std;
+class VectorW
+{
+public:
+    VectorW();
+    ~VectorW();
+    void GetData_u(vector<string> dataU);
+    void GetData_v(vector<string> dataV);
+    void GetData_w(vector<string> dataW);
+    vector<int> GetUVWIndex();
+    void SetScaleFactor(double scaleFactor);
+    double GetScaleFactor();
+public:
+    vector<string> dataU;
+    vector<string> dataV;
+    vector<string> dataW;
+    int current_u;
+    int current_v;
+    int current_w;
+
+    double current_scalefactor;
+};
+#endif // VECTOR_H

+ 7 - 0
CAE_Solution/src/VTK/widget/widget.pri

@@ -0,0 +1,7 @@
+HEADERS += \
+     $$PWD/*.h
+
+
+SOURCES += \
+     $$PWD/*.cpp
+

+ 20 - 18
CAE_Solution/src/main.cpp

@@ -38,8 +38,8 @@ int main(int argc, char *argv[])
     QApplication a(argc, argv);
         Widget w;
 
-        //w.resize(QApplication::desktop()->availableGeometry().size());//最大化
-        w.resize(1750,620);
+        w.resize(QApplication::desktop()->availableGeometry().size());//最大化
+        //w.resize(1750,620);
         w.move(0,0);
         w.show();
 //    //初始化状态机
@@ -63,24 +63,25 @@ int main(int argc, char *argv[])
 //        QVTKRenderer* render_ = new QVTKRenderer();
 //        render_->init();
 
-    //    QString m_filePath="F:\\czm\\vtkfile\\tfg.ugrid";
+//        QString m_filePath="F:\\czm\\vtkfile\\tfg.ugrid";
 
-    //    MeshManager *meshmanager = new MeshManager();
+//        MeshManager *meshmanager = new MeshManager();
 
-    //    bool f = meshmanager->LoadData(m_filePath);
+//        bool f = meshmanager->LoadData(m_filePath);
 
-    //    cout<<"f:"<<f<<endl;
-    //    if(f){
-    //        if(render_){
-    //            meshmanager->DisplayMesh(render_);
-    //            render_->ZoomToExtents();
-    //        }
-    //    }
-    //    handlePool hand;
-    //    hand.loadTecplotFile(m_filePath);
-    //    render_->GetRenderer()->AddActor(hand.actor);
-    //    render_->ZoomToExtents();
-       // w.addTab(render_->GetWidget(),"test");
+//        cout<<"f:"<<f<<endl;
+//        if(f){
+//            if(render_){
+//                meshmanager->DisplayMesh(render_);
+//                render_->ZoomToExtents();
+//            }
+//        }
+//        w.addTab(render_->GetWidget(),"test");
+//        w.SetMeshManager(meshmanager);
+//        w.SetQVTKRenderer(render_);
+/************************************************************************************/
+//                QVTKRenderer* render_ = new QVTKRenderer();
+//                render_->init();
 //        QString filePath = "C:\\Users\\Administrator\\Desktop\\Postprocess_Binary\\";
 //        QDir dir("C:\\Users\\Administrator\\Desktop\\Postprocess_Binary");
 //        dir.setFilter(QDir::Files);
@@ -92,7 +93,7 @@ int main(int argc, char *argv[])
 //            }
 //        }
 
-//        ResultMeshManager* meshmanager =ResultMeshManager::getInstance();
+//        ResultMeshManager* meshmanager =new ResultMeshManager();
 //        for(int i =0;i<string_list.size();i++){
 //            meshmanager->LoadData(filePath+string_list[i]);
 //            meshmanager->SetSaveIndex(i);
@@ -111,6 +112,7 @@ int main(int argc, char *argv[])
 
 //    meshmanager->DisplayMeshByIndex(0);
 //    meshmanager->SetNameTypeMap();
+//           w.addTab(render_->GetWidget(),"test");
 ///////////////////////////////////////////////////////////////////////////////////
       ///加载tecplot
 //      QVTKRenderer* render_ = new QVTKRenderer();

+ 2 - 1
CAE_Solution/src/threadPool_and_statemachine/dealWith/dealWith.pri

@@ -5,4 +5,5 @@ SOURCES += \
 
 HEADERS += \
     $$PWD/handlepool.h \
-    $$PWD/vtkjsonobject.h
+    $$PWD/vtkjsonobject.h \
+    $$PWD/map_manager.h

+ 256 - 173
CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.cpp

@@ -25,9 +25,9 @@ handlePool::handlePool(QTabWidget *w)
     this->w=w;
     map_contourdisplay.clear();
     map_linedisplay.clear();
-    map_manager.clear();
-    map_render.clear();
-    map_resultmanager.clear();
+    qmapManager.clear();
+    qmapRender.clear();
+    qmapResultmanager.clear();
 }
 
 
@@ -39,11 +39,11 @@ handlePool::handlePool(QTabWidget *w)
  */
 handlePool::~handlePool()
 {
-    qDeleteAll(map_render);
-    qDeleteAll(map_manager);
+    qDeleteAll(qmapRender);
+    qDeleteAll(qmapManager);
     qDeleteAll(map_contourdisplay);
     qDeleteAll(map_linedisplay);
-    qDeleteAll(map_resultmanager);
+    qDeleteAll(qmapResultmanager);
 }
 
 /*
@@ -76,80 +76,47 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
         object = NULL;
         return;
     }else if(object->action == "loaddata"){
-        if(!map_render.contains(object->proId)){
-            render_ = new QVTKRenderer();
-            map_render.insert(object->proId,render_);
-            render_->init();
-            w->addTab(render_->GetWidget(),object->proId);
-        }else{
-            render_ = map_render.value(object->proId);
-        }
-        QString m_filePath = object->filePath;
-        if(m_filePath.isEmpty()){
-            cout<<"file path is Empty!"<<endl;
-            return;
-        }
-        MeshManager* meshmanager = NULL;
-        if(!map_manager.contains(object->proId)){
-            meshmanager = new MeshManager();
-            map_manager.insert(object->proId,meshmanager);
-            bool f = meshmanager->LoadData(m_filePath);
-            if(f){
-                if(render_){
-                    meshmanager->DisplayMesh(render_);
-                    render_->ZoomToExtents();
-                }
-            }
-        }else{
-            meshmanager = map_manager.value(object->proId);
-            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;
-            return;
-        }
+        judgeLoaddata(object,render_);
+        return;
     }else if(object->action == "zoomout"){//缩小
-        if(!map_render.contains(object->proId))return;
-        render_ = map_render.value(object->proId);
+        if(!qmapRender.contains(object->proId))return;
+        render_ = qmapRender.value(object->proId);
         render_->camera_->ZoomOut();
     }else if(object->action == "zoomin"){
-        if(!map_render.contains(object->proId))return;
-        render_ = map_render.value(object->proId);
+        if(!qmapRender.contains(object->proId))return;
+        render_ = qmapRender.value(object->proId);
         render_->camera_->ZoomIn();
     }else if(object->action == "AlignToPlusAxisX"){//正x轴对齐
-        if(!map_render.contains(object->proId))return;
-        render_ = map_render.value(object->proId);
+        if(!qmapRender.contains(object->proId))return;
+        render_ = qmapRender.value(object->proId);
         render_->camera_->AlignToPlusAxisX();
     }else if(object->action == "AlignToPlusAxisY"){//正y轴对齐
-        if(!map_render.contains(object->proId))return;
-        render_ = map_render.value(object->proId);
+        if(!qmapRender.contains(object->proId))return;
+        render_ = qmapRender.value(object->proId);
         render_->camera_->AlignToPlusAxisY();
     }else if(object->action == "AlignToPlusAxisZ"){//正z轴对齐
-        if(!map_render.contains(object->proId))return;
-        render_ = map_render.value(object->proId);
+        if(!qmapRender.contains(object->proId))return;
+        render_ = qmapRender.value(object->proId);
         render_->camera_->AlignToPlusAxisZ();
     }else if(object->action == "AlignToMinusAxisX"){//负x轴对齐
-        if(!map_render.contains(object->proId))return;
-        render_ = map_render.value(object->proId);
+        if(!qmapRender.contains(object->proId))return;
+        render_ = qmapRender.value(object->proId);
         render_->camera_->AlignToMinusAxisX();
     }else if(object->action == "AlignToMinusAxisY"){//负y轴对齐
-        if(!map_render.contains(object->proId))return;
-        render_ = map_render.value(object->proId);
+        if(!qmapRender.contains(object->proId))return;
+        render_ = qmapRender.value(object->proId);
         render_->camera_->AlignToMinusAxisY();
     }else if(object->action == "AlignToMinusAxisZ"){//负z轴对齐
-        if(!map_render.contains(object->proId))return;
-        render_ = map_render.value(object->proId);
+        if(!qmapRender.contains(object->proId))return;
+        render_ = qmapRender.value(object->proId);
         render_->camera_->AlignToMinusAxisZ();
-    }else if(object->action == "TransformToIsometric"){
-        if(!map_render.contains(object->proId))return;
-        render_ = map_render.value(object->proId);
+    }else if(object->action == "TransformToIsometric"){//等距视图
+        if(!qmapRender.contains(object->proId))return;
+        render_ = qmapRender.value(object->proId);
         render_->camera_->TransformToIsometric();
     }else if(object->action == "ResultImport"){//导入结果
-        if(!resultImport(object,render_))return;
+        resultImport(object,render_);
+        return;
     }else if(object->action == "ContourDisplay"){//显示云图
         if(!result_contourdisplay(object,render_)){
             cout<<"please import tecplot result first!"<<endl;
@@ -161,45 +128,67 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
         }
         return;
     }
-    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;
+    send_picture(object,render_);//发送图片
 }
 
-//void handlePool::loadTecplotFile(QString fileName)
-//{
-//    vtkNew<vtkTecplotReader> reader;
-//    if (fileName == "") return;
-//    reader->SetFileName(fileName.toStdString().c_str());
-//    reader->Update();
-
-//    vtkNew<vtkAppendFilter> filter;
-//    filter->AddInputData(reader->GetOutput()->GetBlock(0));
-//    filter->Update();
-
-//    vtkUnstructuredGrid* grid = filter->GetOutput();
-//    vtkPoints* points = grid->GetPoints();
-//    vtkCellArray* cells = grid->GetCells();
+/*
+ * @brief: deal with msg about loaddata
+ * @param: vtkJsonObject QVTKRenderer
+ * @ret: bool
+ * @birth: created by czm in 20230425
+ */
+void handlePool::judgeLoaddata(vtkJsonObject *object, QVTKRenderer *render_)
+{
+    if(!qmapRender.contains(object->proId)){//判断有无窗口
+        render_ = new QVTKRenderer();
+        qmapRender.insert(object->proId,render_);
+        render_->init();
+        w->addTab(render_->GetWidget(),object->proId);
+    }else{
+        render_ = qmapRender.value(object->proId);
+        auto flag = render_->widgetFlag;
+        if(flag == QVTKRenderer::WidgetModel::NoModel){
+        }else if(flag == QVTKRenderer::WidgetModel::UgridModel){//判断窗口当前模型
+            if(qmapManager.value(object->proId)->filePath == object->filePath){
+                send_picture(object,render_);
+                return;
+            }
+            render_->HideAllActors();
+            render_->RemoveAllActors();
+        }else if(flag == QVTKRenderer::WidgetModel::ResultModel){
+            render_->HideAllActors();
+            render_->RemoveAllActors();
+        }
+    }
+    //QString m_filePath = object->filePath;//测试路径
+    QString m_filePath = "F:\\czm\\vtkfile\\tfg.ugrid";
+    QFileInfo fileinfo_(m_filePath);
+    if(!fileinfo_.isFile()){
+        cout<<"file path is Empty!"<<endl;
+        send_picture(object,render_);
+        return;
+    }
+    MeshManager* meshmanager = NULL;
 
-//    vtkNew<vtkPolyData> polydata;
-//    polydata->SetPoints(points);
-//    polydata->SetPolys(cells);
+    meshmanager = new MeshManager();
 
-//    vtkNew<vtkPolyDataMapper> mapper;
-//    mapper->SetInputData(polydata);
-//    mapper->Update();
+    bool f = meshmanager->LoadData(m_filePath);
+    if(f){
+        if(render_){
+            meshmanager->DisplayMesh(render_);
+            render_->ZoomToExtents();
+        }
+    }
+    qmapRender.value(object->proId)->widgetFlag = QVTKRenderer::WidgetModel::UgridModel;//设置widget中有模型
+    if(!qmapManager.contains(object->proId)){//判断加载模型和当前模型是不是一样
+        qmapManager.insert(object->proId,set_map_meshManager(object,meshmanager));
+    }else{
+        delete qmapManager.value(object->proId);//析构原来的
+        qmapManager[object->proId] = (set_map_meshManager(object,meshmanager));
+    }
+    send_picture(object,render_);
+}
 
-//    //to do
-//    vtkActor* actor_ = vtkActor::New();
-//    actor_->SetMapper(mapper);
-//    actor_->GetProperty()->SetColor(1, 1, 1);
-//    this->actor = actor_;
-//}
 
 /*
  * @brief: import result file
@@ -214,39 +203,75 @@ bool handlePool::resultImport(vtkJsonObject *object_, QVTKRenderer *renderer_)
         cout<< "No Tecplot file is ready to read!"<<endl;
         return false;
     }
-    ResultMeshManager* rsMeshManager = NULL;
-    if(map_resultmanager.contains(object_->proId)){
-        rsMeshManager = map_resultmanager.value(object_->proId);
-        return true;//同一个proid加载不同的file或结果,要销毁上一个结果和记录
-        //怎样判断和上次加载的file或结果不同?//to do
+    //判断有无窗口
+    if(!qmapRender.contains(object_->proId)){
+        renderer_ = new QVTKRenderer();
+        qmapRender.insert(object_->proId,renderer_);
+        renderer_->init();
+        w->addTab(renderer_->GetWidget(),object_->proId);
+        renderer_->widgetFlag = QVTKRenderer::WidgetModel::NoModel;
     }else{
-        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(object_->filePath+"/"+fileName_list[i]);
-            if(f){
-                rsMeshManager->SetSaveIndex(i);
-                if(renderer_){
-                    rsMeshManager->DisplayMesh(renderer_);
-                }
+        renderer_ = qmapRender[object_->proId];
+        auto flag = renderer_->widgetFlag;
+        if(flag==QVTKRenderer::WidgetModel::UgridModel){
+            renderer_ = qmapRender.value(object_->proId);
+            renderer_->HideAllActors();
+            renderer_->RemoveAllActors();
+        }else if(flag ==QVTKRenderer::WidgetModel::ResultModel){
+            if(qmapResultmanager.value(object_->proId)->fileName == object_->getFileName()){//to do 详细比对文件名
+                send_picture(object_,renderer_);
+                return true;
             }
+            //qmapResultmanager.value(object_->proId)->resultMeshManager_->HideAllActors();
+//            renderer_->HideAllActors();
+//            renderer_->RemoveAllActors();
         }
-        rsMeshManager->ShowAll();
-        rsMeshManager->DisplayMeshByIndex(0);
-        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",img_);
-        emit sendImg_handlePoolToSendstate(json_);//信号
+
+    ResultMeshManager* rsMeshManager = new ResultMeshManager(); 
+    rsMeshManager->Clear();
+    bool flag = true;
+    for(int i =0;i<fileName_list.size();i++){
+        bool f =rsMeshManager->LoadData(object_->filePath+"/"+fileName_list[i]);
+        if(f){
+            rsMeshManager->SetSaveIndex(i);
+            if(renderer_){
+                rsMeshManager->DisplayMesh(renderer_);
+            }
+        }else{
+            flag = false;
+            break;
+        }
     }
+    if(flag)
+        {
+            rsMeshManager->HideAllActors();
+            rsMeshManager->ShowAll();
+            rsMeshManager->DisplayMeshByIndex(0);
+            rsMeshManager->SetNameTypeMap();
+            rsMeshManager->InitWidgetsParameter();
+            renderer_->ZoomToExtents();
+        }
+
+    ContourDisplayW *contourdw = new ContourDisplayW();//云图窗口参数初始化
+    rsMeshManager->SetCotourWidget(contourdw);
+    rsMeshManager->SetWidgetRange();
+    rsMeshManager->SetWidgetScalarName();
 
-    delete object_;
-    object_ = NULL;
+    LineDisplayW *linedw = new LineDisplayW();
+    rsMeshManager->SetLineWidget(linedw);
+    rsMeshManager->SetWidgetRange();
+    rsMeshManager->SetWidgetScalarName();
+
+    renderer_->widgetFlag = QVTKRenderer::WidgetModel::ResultModel;//设置当前窗口模型状态
+    if(qmapResultmanager.contains(object_->proId)){//加载不同的结果文件
+        delete qmapResultmanager.value(object_->proId);
+        qmapResultmanager[object_->proId] = (set_map_resultManager(object_,rsMeshManager));
+    }else{
+        qmapResultmanager[object_->proId]=(set_map_resultManager(object_,rsMeshManager));
+    }
+    emit sendImg_handlePoolToSendstate(object_->ToJson("importResult",buildResultImport_msg(rsMeshManager)));//发送结果数据
+    send_picture(object_,renderer_);
     return true;
 }
 /*
@@ -258,22 +283,17 @@ bool handlePool::resultImport(vtkJsonObject *object_, QVTKRenderer *renderer_)
 bool handlePool::result_contourdisplay(vtkJsonObject *object_,QVTKRenderer* render_)
 {
     ContourDisplay* condis = NULL;
-    if(map_resultmanager.contains(object_->proId)) return false;
+
+    if(!qmapResultmanager.contains(object_->proId)) return false;
+    render_ = qmapRender[object_->proId];
     if(map_contourdisplay.contains(object_->proId)){
-       condis = map_contourdisplay.value(object_->proId);
+        condis = map_contourdisplay.value(object_->proId);//to do
     }else{
-        condis = new ContourDisplay(map_resultmanager.value(object_->proId));
+        condis = new ContourDisplay(qmapResultmanager[object_->proId]->resultMeshManager_);
         map_contourdisplay.insert(object_->proId,condis);
         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;
+    send_picture(object_,render_);
     return true;
 }
 
@@ -286,22 +306,16 @@ bool handlePool::result_contourdisplay(vtkJsonObject *object_,QVTKRenderer* rend
 bool handlePool::result_linedisplay(vtkJsonObject *object_,QVTKRenderer* render_)
 {
     LineDisplay* linedis = NULL;
-    if(map_resultmanager.contains(object_->proId))return false;
+    if(!qmapResultmanager.contains(object_->proId))return false;
+    render_ = qmapRender[object_->proId];
     if(map_linedisplay.contains(object_->proId)){
         linedis = map_linedisplay.value(object_->proId);
     }else{
-        linedis = new LineDisplay(map_resultmanager.value(object_->proId));
+        linedis = new LineDisplay(qmapResultmanager.value(object_->proId)->resultMeshManager_);
         map_linedisplay.insert(object_->proId,linedis);
         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;
+    send_picture(object_,render_);
     return true;
 }
 
@@ -335,46 +349,85 @@ bool handlePool::result_linedisplay(vtkJsonObject *object_,QVTKRenderer* render_
  * @ret: msg(QString)
  * @birth: created by czm in 20230424
  */
-QString handlePool::buildResultImport_msg(ResultMeshManager *cmanager)
+QMap<QString,string> handlePool::buildResultImport_msg(ResultMeshManager *cmanager)
 {
-    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);
+    QMap<QString,string> map_tmp;
+    cmanager->SetNameTypeMap();
+    map<string,int> map_ = cmanager->GetNameTypeMap();
+    string msg;
+    for(map<string,int>::iterator it=map_.begin();it!=map_.end();it++){
+        msg+=removeSpaces(it->first);
+        msg+="#";
+        msg+=to_string(it->second);//0-point scalar 1-cell scalar
         msg+=",";
     }
-    msg.replace(msg.size()-1,1,")");
-    msg+="ScalarName_vector(";
+    msg = msg.erase(msg.size()-1);
+    map_tmp.insert("nameTypes",msg);
+    msg.clear();
     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+=",";
+        msg += removeSpaces(cmanager->GetMeshScalarNameVec()[i]);
+        msg += ",";
     }
-    msg += "MinRange(";
-    msg += QString::number(cmanager->getRange()[0]);
-    msg += ")MaxRange(";
-    msg += QString::number(cmanager->getRange()[1]);
-    msg += ")scalarName(";
-    msg +=  QString::fromStdString(cmanager->getScalarName());
-    msg += ")";
+    msg = msg.erase(msg.size()-1);
+    map_tmp.insert("scalarNames",msg);
+    msg.clear();
 
-    return msg;
+    msg = to_string(cmanager->getRange()[0]);
+    map_tmp.insert("range0",msg);
+    msg.clear();
+    msg = to_string(cmanager->getRange()[1]);
+    map_tmp.insert("range1",msg);
+    msg.clear();
+    msg = cmanager->GetMeshScalarNameVec()[0];
+    map_tmp.insert("scalarName",removeSpaces(msg));
+    return map_tmp;
 }
 
 /*
- * @brief: get map which save render
+ * @brief: send picture
+ * @param: vtkJsonObject QVTKRenderer
+ * @ret: void
+ * @birth: created by czm in 20230425
+ */
+void handlePool::send_picture(vtkJsonObject *object, QVTKRenderer *render_)
+{
+    render_->CaptureWindowImages();
+    if(!render_->img.isEmpty()){
+        std::string img_ = render_->img.toStdString();
+        QMap<QString,string> map;
+        map["img"] = img_;
+        std::string json_ = object->ToJson("img",map);
+        emit sendImg_handlePoolToSendstate(json_);//信号
+    }
+    delete object;
+    object = NULL;
+}
+
+/*
+ * @brief: remove string's spaces
+ * @param: string
+ * @ret: string
+ * @birth: created by czm in 20230426
+ */
+string handlePool::removeSpaces(string str)//删除字符串中的\u0000
+{
+    QChar h0 = 0x00;
+    QString str_;
+    if(QString::fromStdString(str).contains(h0)){
+        str_=QString::fromStdString(str).replace(h0,"");
+    }
+    return str_.toStdString();
+}
+
+/*
+ * @brief: get map which save qvtkrender
  * @param: void
  * @ret: QMap<QString, QVTKRenderer *>
  * @birth: created by czm in 20230420
  */
 QMap<QString, QVTKRenderer *> handlePool::getMapRender()
 {
-    return this->map_render;
+    return this->qmapRender;
 }
 
 /*
@@ -383,9 +436,39 @@ QMap<QString, QVTKRenderer *> handlePool::getMapRender()
  * @ret: QMap<QString, ResultMeshManager *>
  * @birth: created by czm in 20230420
  */
-QMap<QString, ResultMeshManager *> handlePool::getMapResultManager()
+QMap<QString, pid_resultManager *> handlePool::getMapResultManager()
+{
+    return this->qmapResultmanager;
+}
+
+/*
+ * @brief: create a pid_meshManager
+ * @param: vtkJsonObject MeshManager
+ * @ret: map_meshManager
+ * @birth: created by czm in 20230425
+ */
+pid_meshManager *handlePool::set_map_meshManager(vtkJsonObject *object, MeshManager *mmanager_)
+{
+    pid_meshManager* meshManager_p = new pid_meshManager();
+    meshManager_p->meshManager_ = mmanager_;
+    meshManager_p->fileName = object->getFileName();
+    meshManager_p->filePath = object->filePath;
+    return meshManager_p;
+}
+
+/*
+ * @brief: create a pid_resultManager
+ * @param: vtkJsonObject ResultMeshManager
+ * @ret: pid_resultManager
+ * @birth: created by czm in 20230425
+ */
+pid_resultManager *handlePool::set_map_resultManager(vtkJsonObject *object, ResultMeshManager *rmanager_)
 {
-    return this->map_resultmanager;
+    pid_resultManager *resultManager_p = new pid_resultManager();
+    resultManager_p->resultMeshManager_ = rmanager_;
+    resultManager_p->fileName = object->getFileName();
+    resultManager_p->filePath = object->filePath;
+    return resultManager_p;
 }
 
 /*
@@ -394,8 +477,8 @@ QMap<QString, ResultMeshManager *> handlePool::getMapResultManager()
  * @ret: QMap<QString, MeshManager *>
  * @birth: created by czm in 20230420
  */
-QMap<QString, MeshManager *> handlePool::getMapManager()
+QMap<QString, pid_meshManager *> handlePool::getMapManager()
 {
-    return this->map_manager;
+    return this->qmapManager;
 }
 

+ 24 - 9
CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.h

@@ -7,12 +7,25 @@
 #include <QDir>
 #include <iostream>
 #include <QStringList>
+#include <QString>
 #include "../../VTK/QVTKRenderer/qvtkrenderer.h"
 #include "../../VTK/Manager/meshmanager.h"
 #include "../../VTK/Manager/ResultMeshManager.h"
 #include "../../VTK/display/contourdisplay.h"
 #include "../../VTK/display/linedisplay.h"
+#include "../../VTK/visualization_VTK/vtkVISUnContour.h"
+#include "../../VTK/widget/contourdispalyWidget.h"
+#include "../../VTK/widget/linedisplayWidget.h"
+#include "../../VTK/widget/slicedisplaywidget.h"
+#include "../../VTK/widget/solidsurfaceDisplaywidget.h"
+#include "../../VTK/widget/streamDisplaywidget.h"
+#include "../../VTK/widget/vectorDisplaywidget.h"
+#include <map>
+#include <QMap>
+#include <string>
+#include <QDebug>
 #include "vtkjsonobject.h"
+#include "map_manager.h"
 using namespace std;
 
 class handlePool : public QObject
@@ -24,27 +37,29 @@ public:
     ~handlePool();
 
     void operateRender(vtkJsonObject*,QVTKRenderer*);
-    //void loadTecplotFile(QString);
+    void judgeLoaddata(vtkJsonObject*,QVTKRenderer*);
     bool resultImport(vtkJsonObject*,QVTKRenderer*);
     bool result_contourdisplay(vtkJsonObject*, QVTKRenderer *);
     bool result_linedisplay(vtkJsonObject*, QVTKRenderer *);
     //QStringList getFileNameList(QString);
-    QString buildResultImport_msg(ResultMeshManager*);
-
+    QMap<QString,string> buildResultImport_msg(ResultMeshManager*);
+    void send_picture(vtkJsonObject*,QVTKRenderer*);
+    string removeSpaces(string);
 
     QMap<QString,QVTKRenderer*> getMapRender();
-    QMap<QString,MeshManager*> getMapManager();
-    QMap<QString,ResultMeshManager*> getMapResultManager();
+    QMap<QString,pid_meshManager*> getMapManager();
+    QMap<QString,pid_resultManager*> getMapResultManager();
+    pid_meshManager* set_map_meshManager(vtkJsonObject*,MeshManager*);
+    pid_resultManager* set_map_resultManager(vtkJsonObject*,ResultMeshManager*);
 
 
 private:
-    QMap<QString,QVTKRenderer*> map_render;
-    QMap<QString,MeshManager*> map_manager;
-    QMap<QString,ResultMeshManager*> map_resultmanager;
+    QMap<QString,QVTKRenderer*> qmapRender;
+    QMap<QString,pid_meshManager*> qmapManager;
+    QMap<QString,pid_resultManager*> qmapResultmanager;
     QMap<QString,ContourDisplay*> map_contourdisplay;
     QMap<QString,LineDisplay*> map_linedisplay;
     QTabWidget* w;
-    vtkActor* actor;
 
 signals:
     void sendImg_handlePoolToSendstate(std::string);

+ 55 - 0
CAE_Solution/src/threadPool_and_statemachine/dealWith/map_manager.h

@@ -0,0 +1,55 @@
+#ifndef MAP_MANAGER_H
+#define MAP_MANAGER_H
+
+#include <QString>
+#include "../../VTK/Manager/MeshManager.h"
+#include "../../VTK/Manager/ResultMeshManager.h"
+#include "../../VTK/QVTKRenderer/qvtkrenderer.h"
+
+class pid_manager//0425
+{
+public:
+    pid_manager(){
+    }
+    ~pid_manager(){
+        filePath.clear();
+        fileName.clear();
+    }
+
+public:
+    QString filePath;
+    QString fileName;
+};
+
+class pid_meshManager :public pid_manager
+{
+public:
+    pid_meshManager(){
+
+    }
+    ~pid_meshManager(){
+        if(meshManager_){
+            delete meshManager_;
+            meshManager_ = NULL;
+        }
+    }
+
+public:
+    MeshManager *meshManager_;
+};
+
+class pid_resultManager : public pid_manager
+{
+public:
+    pid_resultManager(){}
+    ~pid_resultManager(){
+        if(resultMeshManager_){
+            delete resultMeshManager_;
+            resultMeshManager_ = NULL;
+        }
+    }
+public:
+    ResultMeshManager* resultMeshManager_;
+};
+
+#endif // MAP_MANAGER_H

+ 113 - 101
CAE_Solution/src/threadPool_and_statemachine/dealWith/vtkjsonobject.cpp

@@ -8,7 +8,8 @@
  */
 vtkJsonObject::vtkJsonObject()
 {
-    range = new double[2];
+    cd_struct = NULL;
+    ld_struct = NULL;
 }
 
 /*
@@ -19,9 +20,13 @@ vtkJsonObject::vtkJsonObject()
  */
 vtkJsonObject::~vtkJsonObject()
 {
-    if(range){
-        delete[] range;
-        range = NULL;
+    if(cd_struct){
+        free(cd_struct);
+        cd_struct = NULL;
+    }
+    if(ld_struct){
+        free(ld_struct);
+        ld_struct = NULL;
     }
 }
 
@@ -79,65 +84,7 @@ void vtkJsonObject::FromJSON(std::string msg)
 
         }
     }
-
-    if(!this->paramJson.isEmpty()){
-       qDebug()<<"this->paramJson:"<<this->paramJson;
-
-       std::cout<<"std::string paramjson:"<<this->paramJson.toStdString()<<std::endl;
-        doucment = QJsonDocument::fromJson(this->paramJson.toStdString().c_str(),&jsonError);
-        if(jsonError.error!=QJsonParseError::NoError)qDebug()<<"error!"<<jsonError.errorString();
-        if (!doucment.isNull() && (jsonError.error == QJsonParseError::NoError)) {
-            if(doucment.isObject()){
-                QJsonObject object_ = doucment.object();
-                if(object_.contains("filePath")){
-                    QJsonValue value = object_.value("filePath");
-                    if (value.isString()) {
-                        this->filePath = value.toString();
-                        qDebug() << "filePath:" << this->filePath;
-                    }
-                }
-                if(object_.contains("fileType")){
-                    QJsonValue value = object_.value("fileType");
-                    if (value.isString()) {
-                        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;
-                    }
-                }
-            }
-        }
-
-    }
+    FromParamJson(this->paramJson.toStdString());//进一步解析paramjson
 }
 
 
@@ -157,9 +104,7 @@ vtkJsonObject *vtkJsonObject::operator=(vtkJsonObject *object)
     this->action = object->action;
     this->paramJson = object->paramJson;
     this->fileName = object->getFileName();
-    this->level = object->getLevel();
-    this->range = object->getRange();
-    this->scalarName = object->getScalarname();
+    this->cd_struct = object->cd_struct;
     return this;
 }
 
@@ -169,9 +114,9 @@ vtkJsonObject *vtkJsonObject::operator=(vtkJsonObject *object)
  * @brief: josn msg
  * @birth: created by czm in 20230404
  */
-std::string vtkJsonObject::ToJson(std::string type,std::string file)
+std::string vtkJsonObject::ToJson(std::string type,QMap<QString,string> file)
 {
-    qDebug()<<"imgfile"<<QString::fromStdString(file);
+    //qDebug()<<"imgfile"<<QString::fromStdString(file);
     QJsonObject pageObject;
     pageObject.insert("filePath",this->filePath);
     pageObject.insert("fileType",this->fileType);
@@ -187,9 +132,13 @@ std::string vtkJsonObject::ToJson(std::string type,std::string file)
     }
     json.insert("action",this->action);
     if(type == "img"){
-        json.insert("img",QString::fromStdString(file));
+        json.insert("img",QString::fromStdString(file["img"]));
     }else if(type == "importResult"){
-        json.insert("importResult",QString::fromStdString(file));
+        json.insert("scalarName",QString::fromStdString(file["scalarName"]));
+        json.insert("scalarNames",QString::fromStdString(file["scalarNames"]));
+        json.insert("nameTypes",QString::fromStdString(file["nameTypes"]));
+        json.insert("range0",QString::fromStdString(file["range0"]));
+        json.insert("range1",QString::fromStdString(file["range1"]));
     }
 
     QJsonDocument document;
@@ -201,48 +150,111 @@ std::string vtkJsonObject::ToJson(std::string type,std::string file)
 }
 
 /*
- * @brief: get filename
- * @param: void
- * @ret: filename
- * @birth: created by czm in 20230424
+ * @brief: analysis paramjson
+ * @param: paramjson
+ * @ret: void
+ * @birth: created by czm in 20230427
  */
-QString vtkJsonObject::getFileName()
+void vtkJsonObject::FromParamJson(string param)
 {
-    return this->fileName;
-}
-
-/*
- * @brief: get level
- * @param: void
- * @ret: level
- * @birth: created by czm in 20230424
- */
-int vtkJsonObject::getLevel()
-{
-    return this->level;
+    if(!param.empty()){
+        QJsonParseError jsonError;
+        std::cout<<"std::string paramjson:"<<param<<std::endl;
+        QJsonDocument doucment = QJsonDocument::fromJson(param.c_str(),&jsonError);
+        if(jsonError.error!=QJsonParseError::NoError)qDebug()<<"error!"<<jsonError.errorString();
+        if (!doucment.isNull() && (jsonError.error == QJsonParseError::NoError)) {
+            if(doucment.isObject()){
+                QJsonObject object_ = doucment.object();
+                if(object_.contains("filePath")){
+                    QJsonValue value = object_.value("filePath");
+                    if (value.isString()) {
+                        this->filePath = value.toString();
+                        qDebug() << "filePath:" << this->filePath;
+                    }
+                }
+                if(object_.contains("fileType")){
+                    QJsonValue value = object_.value("fileType");
+                    if (value.isString()) {
+                        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(this->action == "ContourDisplay"){
+                    this->cd_struct = (struct contourDisplay_struct*)malloc(sizeof(struct contourDisplay_struct));
+                    if(object_.contains("level")){
+                        QJsonValue value = object_.value("level");
+                        if (value.isString()) {
+                            QString level_ = value.toString();
+                            cd_struct->level = level_.toInt();
+                        }
+                    }
+                    if(object_.contains("range")){
+                        QJsonValue value = object_.value("range");
+                        if (value.isString()) {
+                            QString range_= value.toString();
+                            QStringList range_list= range_.split(",");
+                            cd_struct->range[0] = range_list[0].toDouble();
+                            cd_struct->range[1] = range_list[1].toDouble();
+                        }
+                    }
+                    if(object_.contains("scalarName")){
+                        QJsonValue value = object_.value("scalarName");
+                        if (value.isString()) {
+                            QString scalar= value.toString();
+                            //cd_struct->scalarName = scalar.toLatin1().data();
+                            strcpy(cd_struct->scalarName,scalar.toStdString().c_str());
+                        }
+                    }
+                }
+                if(this->action == "LineDisplay"){
+                    this->ld_struct = (struct contourDisplay_struct*)malloc(sizeof(struct contourDisplay_struct));
+                    if(object_.contains("level")){
+                        QJsonValue value = object_.value("level");
+                        if (value.isString()) {
+                            ld_struct->level = value.toInt();
+                        }
+                    }
+                    if(object_.contains("range")){
+                        QJsonValue value = object_.value("range");
+                        if (value.isString()) {
+                            QString range_= value.toString();
+                            QStringList range_list= range_.split(",");
+                            ld_struct->range[0] = range_list[0].toDouble();
+                            ld_struct->range[1] = range_list[1].toDouble();
+                        }
+                    }
+                    if(object_.contains("scalarName")){
+                        QJsonValue value = object_.value("scalarName");
+                        if (value.isString()) {
+                            QString scalar= value.toString();
+                            //ld_struct->scalarName = scalar.toStdString();
+                            strcpy(ld_struct->scalarName,scalar.toStdString().c_str());
+                        }
+                    }
+                }
+            }
+        }
+    }
 }
 
 /*
- * @brief: get range
+ * @brief: get filename
  * @param: void
- * @ret: range
+ * @ret: filename
  * @birth: created by czm in 20230424
  */
-double *vtkJsonObject::getRange()
+QString vtkJsonObject::getFileName()
 {
-    return this->range;
+    return this->fileName;
 }
 
-/*
- * @brief: get scalarname
- * @param: void
- * @ret: scalarname
- * @birth: created by czm in 20230424
- */
-QString vtkJsonObject::getScalarname()
-{
-    return this->scalarName;
-}
 
 
 

+ 26 - 18
CAE_Solution/src/threadPool_and_statemachine/dealWith/vtkjsonobject.h

@@ -11,9 +11,11 @@
 #include <iostream>
 #include <QDebug>
 #include <QStringList>
+#include <string>
 
-
-
+using namespace std;
+struct contourDisplay_struct;
+//struct lineDisplay_struct;
 class vtkJsonObject
 {
 public:
@@ -21,27 +23,33 @@ public:
     ~vtkJsonObject();
     void FromJSON(std::string msg);
     vtkJsonObject* operator=(vtkJsonObject* object);
-    std::string ToJson(std::string type,std::string file);
+    std::string ToJson(std::string type,QMap<QString,string> file);
+    void FromParamJson(std::string);
 
     QString getFileName();
-    int getLevel();
-    double* getRange();
-    QString getScalarname();
 
 public:
-     QString usrId;
-     QString solverConfigid;
-     QString proId;
-     QString paramJson;
-     QString filePath;
-     QString fileType;
-     QString action;
-
+    QString usrId;
+    QString solverConfigid;
+    QString proId;
+    QString paramJson;
+    QString filePath;
+    QString fileType;
+    QString action;
+    struct contourDisplay_struct *cd_struct;//contour
+    struct contourDisplay_struct *ld_struct;//line
 private:
-     QString fileName;
-     int level;
-     double* range;
-     QString scalarName;
+    QString fileName;
 };
 
+struct contourDisplay_struct
+//typedef struct contourDisplay_struct_
+{
+public:
+    int level;
+    //string scalarName;
+    char scalarName[5];
+    double range[2];
+//}contourDisplay_struct,lineDisplay_struct;
+};
 #endif // VTKJSONOBJECT_H

+ 1 - 7
CAE_Solution/src/widget.cpp

@@ -3,14 +3,8 @@
 
 Widget::Widget(QTabWidget *parent)
 {
-    num =0;
+
 }
 Widget::~Widget(){
 
 }
-
-//void Widget::getWidget_handlePoolToWidget(QTabWidget *widget)
-//{
-//    num++;
-//    this->addTab(widget,"test"+QString::number(num));
-//}

+ 47 - 3
CAE_Solution/src/widget.h

@@ -3,6 +3,13 @@
 
 #include <QObject>
 #include <QTabWidget>
+#include <QMouseEvent>
+#include <QDebug>
+#include <QThread>
+#include <iostream>
+using namespace std;
+#include "VTK/Manager/MeshManager.h"
+#include "VTK/QVTKRenderer/qvtkrenderer.h"
 
 class Widget :public QTabWidget
 {
@@ -11,9 +18,46 @@ public:
     Widget(QTabWidget *parent = 0);
     ~Widget();
 
-    int num;
-//public slots:
-//    void getWidget_handlePoolToWidget(QTabWidget*);
+//    void mousePressEvent(QMouseEvent* event){
+//        if(event->button() == Qt::LeftButton){
+//            qDebug()<<"mousePress!";
+//            render->HideAllActors();
+//            mesh->Clear();
+//            delete mesh;
+//            mesh = NULL;
+//            qDebug()<<"____________load data again_____________";
+
+//            mesh = new MeshManager();
+//            bool f = mesh->LoadData("F:\\czm\\vtkfile\\tfg.ugrid");
+
+//            qDebug()<<"f:"<<f;
+//            if(f){
+//               if(render){
+//                    mesh->DisplayMesh(render);
+//                    render->ZoomToExtents();
+//                }
+//            }
+//        }
+
+//    }
+
+//    void mouseDoubleClickEvent(QMouseEvent* event){
+//        if(event->button() == Qt::LeftButton){
+//            qDebug()<<"mouseDoubleClick";
+
+//        }
+//    }
+
+//    void SetMeshManager(MeshManager* mesh_){
+//        mesh = mesh_;
+//    }
+
+//    void SetQVTKRenderer(QVTKRenderer* render_){
+//        render = render_;
+//    }
+//private:
+//    MeshManager* mesh;
+//    QVTKRenderer* render;
 };
 
 #endif // WIDGET_H