ソースを参照

0424 LineDisplay

caizm 2 年 前
コミット
2690cca52c

+ 58 - 2
CAE_Solution/src/VTK/display/linedisplay.cpp

@@ -11,6 +11,10 @@ LineDisplay::LineDisplay(ResultMeshManager* rs)
 {
     //ResultMeshManager::getInstance()->SetLineWidget(static_cast<LineDisplayW*>(m_pWidget));
     this->Cmanager = rs;
+    if(this->Cmanager->getMeshObj_()!=NULL){
+        nametype_map = this->Cmanager->GetNameTypeMap();
+        scalarname_vector = this->Cmanager->GetMeshScalarNameVec();
+    }
 }
 
 /*
@@ -22,10 +26,17 @@ LineDisplay::LineDisplay(ResultMeshManager* rs)
 LineDisplay::~LineDisplay()
 {
     this->Cmanager = NULL;
+    nametype_map.clear();
+    scalarname_vector.clear();
 }
 
-
-void LineDisplay::linedisplay_execute()
+/*
+ * @brief: display line
+ * @param:
+ * @ret: void
+ * @birth: created by czm in 20230424
+ */
+void LineDisplay::linedisplay_execute(QString str)
 { 
     //string str = static_cast<LineDisplayW*>(m_pWidget)->GetScalarName();
     //if (!str.empty())
@@ -36,6 +47,14 @@ void LineDisplay::linedisplay_execute()
     //ResultMeshManager::getInstance()->SetDisplayType(2);
     //ResultMeshManager::getInstance()->DisplayMeshByIndex(ResultMeshManager::getInstance()->GetCurrIndex());
     //}
+#if 0
+    Cmanager->ModifyScalarDisplay(str);//传入combox的current text(scalar name)
+    Cmanager->SetLevel(str);//传level的值,初始默认值为10
+    double* range;
+    Cmanager->SetRange(range);
+    Cmanager->SetDisplayType(2);//0-contour 2-line 3-vector
+    Cmanager->DisplayMeshByIndex(Cmanager->GetCurrIndex());
+#endif
 }
 
 /*
@@ -49,3 +68,40 @@ ResultMeshManager *LineDisplay::getResultMeshManager()
     return this->Cmanager;
 }
 
+/*
+ * @brief: build line message
+ * @param: void
+ * @ret: msg(QString)
+ * @birth: created by czm in 20230424
+ */
+QString LineDisplay::buildLineMsg()
+{
+    QString msg;
+    msg+="NameTypeMap(";
+    for(auto it = nametype_map.begin();it!=nametype_map.end();it++){
+        msg+=QString::fromStdString(it->first);
+        msg+=" ";
+        msg+=QString::number(it->second);
+        msg+=",";
+    }
+    msg.replace(msg.size()-1,1,")");
+    msg+="ScalarName_vector(";
+    for(int i=0;i<scalarname_vector.size();i++){
+        if(i == scalarname_vector.size()-1){
+            msg+=QString::fromStdString(scalarname_vector[i]);
+            msg+=")";
+        }
+        msg += QString::fromStdString(scalarname_vector[i]);
+        msg+=",";
+    }
+    msg += "MinRange(";
+    msg += QString::number(this->Cmanager->getRange()[0]);
+    msg += ")MaxRange(";
+    msg += QString::number(this->Cmanager->getRange()[1]);
+    msg += ")scalarName(";
+    msg +=  QString::fromStdString(this->Cmanager->getScalarName());
+    msg += ")";
+
+    return msg;
+}
+

+ 6 - 3
CAE_Solution/src/VTK/display/linedisplay.h

@@ -1,21 +1,24 @@
 #pragma once
 
 #include <QObject>
-
+#include <map>
+#include <string>
 #include "../manager/ResultMeshManager.h"
 
 
-
 class LineDisplay
 {
 public:
     LineDisplay(ResultMeshManager* rs);
     virtual ~LineDisplay();
     virtual QString getName() { return QObject::tr("Line"); }
-    virtual void linedisplay_execute();
+    virtual void linedisplay_execute(QString);
 
     ResultMeshManager* getResultMeshManager();
+    QString buildLineMsg();
 private:
     ResultMeshManager* Cmanager;
+    map<string,int> nametype_map;
+    vector<string> scalarname_vector;
 };
 

+ 21 - 13
CAE_Solution/src/VTK/display/slicewidget.cpp

@@ -1,26 +1,34 @@
 #include "slicewidget.h"
 #include "../manager/ResultMeshManager.h"
 
-
-SliceWidget::SliceWidget()
+/*
+ * @brief: the constructor
+ * @param:
+ * @ret:
+ * @birth: created by czm in 20230424
+ */
+SliceWidget::SliceWidget(ResultMeshManager* rs)
 {
+    this->Cmanager = rs;
 }
 
+/*
+ * @brief: the destructor
+ * @param:
+ * @ret:
+ * @birth: created by czm in 20230424
+ */
 SliceWidget::~SliceWidget()
 {
 }
 
-void SliceWidget::updateFromInters()
-{
-    //update setting data from widgets.
-}
-
-void SliceWidget::updateFromParams()
-{
-
-}
-
-void SliceWidget::slicewidget_execute()
+/*
+ * @brief: display slice
+ * @param: str
+ * @ret: void
+ * @birth: created by czm in 20230424
+ */
+void SliceWidget::slicewidget_execute(QString str)
 {
     //apply setting data.
 //    ResultMeshManager::getInstance()->InitSliceWidget();

+ 4 - 4
CAE_Solution/src/VTK/display/slicewidget.h

@@ -1,16 +1,16 @@
 #pragma once
 #include <QObject>
+#include "../manager/ResultMeshManager.h"
 
 class SliceWidget
 {
 public:
-    SliceWidget();
+    SliceWidget(ResultMeshManager* rs);
     virtual ~SliceWidget();
     virtual QString getName() { return QObject::tr("Slice"); }
 
-    virtual void updateFromInters();
-    virtual void updateFromParams();
-    virtual void slicewidget_execute();
+    virtual void slicewidget_execute(QString str);
 private:
+    ResultMeshManager* Cmanager;
 
 };

+ 4 - 1
CAE_Solution/src/main.cpp

@@ -41,7 +41,7 @@ int main(int argc, char *argv[])
         w.resize(QApplication::desktop()->availableGeometry().size());//最大化
         w.move(0,0);
         w.show();
-    //初始化状态机
+//    //初始化状态机
         stateMachine* recvstate= new stateMachine("recvClient");
         QThread *thread_recvsate = new QThread();
         QThread *thread_sendstate = new QThread();
@@ -112,10 +112,13 @@ int main(int argc, char *argv[])
 //    meshmanager->SetNameTypeMap();
 ///////////////////////////////////////////////////////////////////////////////////
       ///加载tecplot
+//      QVTKRenderer* render_ = new QVTKRenderer();
+//     render_->init();
 //    handlePool* hand = new handlePool();
 //    QString filePath = "C:\\Users\\Administrator\\Desktop\\Postprocess_Binary\\";
 //    QStringList fileName_list = hand->getFileNameList(filePath);
 //    ResultMeshManager *rsMeshManager = new ResultMeshManager();
+//    w.addTab(render_->GetWidget(),"test");
 
 //    for(int i =0;i<fileName_list.size();i++){
 //        bool f =rsMeshManager->LoadData(filePath+fileName_list[i]);

+ 45 - 7
CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.cpp

@@ -23,6 +23,11 @@ handlePool::handlePool(QObject *parent) : QObject(parent)
 handlePool::handlePool(QTabWidget *w)
 {
     this->w=w;
+    map_contourdisplay.clear();
+    map_linedisplay.clear();
+    map_manager.clear();
+    map_render.clear();
+    map_resultmanager.clear();
 }
 
 
@@ -36,6 +41,9 @@ handlePool::~handlePool()
 {
     qDeleteAll(map_render);
     qDeleteAll(map_manager);
+    qDeleteAll(map_contourdisplay);
+    qDeleteAll(map_linedisplay);
+    qDeleteAll(map_resultmanager);
 }
 
 /*
@@ -136,15 +144,20 @@ void handlePool::operateRender(vtkJsonObject* object,QVTKRenderer* render_)
         if(!map_render.contains(object->proId))return;
         render_ = map_render.value(object->proId);
         render_->camera_->AlignToMinusAxisZ();
-    }else if(object->action == "RelocateToCenter"){
+    }else if(object->action == "TransformToIsometric"){
         if(!map_render.contains(object->proId))return;
         render_ = map_render.value(object->proId);
-        render_->camera_->RelocateToCenter();
+        render_->camera_->TransformToIsometric();
     }else if(object->action == "ResultImport"){//导入结果
         if(!resultImport(object,render_))return;
-    }else if(object->action == "ContourDisplay"){
-        if(!result_contourdisplay(object,render_)){
-            cout<<"please import tecplot result!"<<endl;
+    }else if(object->action == "ContourDisplay"){//显示云图
+        if(!result_contourdisplay(object)){
+            cout<<"please import tecplot result first!"<<endl;
+        }
+        return;
+    }else if(object->action == "LineDisplay"){//显示等值线图
+        if(!result_linedisplay(object)){
+            cout<<"please import tecplot result first!"<<endl;
         }
         return;
     }
@@ -239,15 +252,16 @@ bool handlePool::resultImport(vtkJsonObject *object_, QVTKRenderer *renderer_)
  * @ret: bool
  * @birth: created by czm in 20230421
  */
-bool handlePool::result_contourdisplay(vtkJsonObject *object_, QVTKRenderer *renderer_)
+bool handlePool::result_contourdisplay(vtkJsonObject *object_)
 {
     ContourDisplay* condis = NULL;
     if(map_resultmanager.contains(object_->proId)) return false;
     if(map_contourdisplay.contains(object_->proId)){
        condis = map_contourdisplay.value(object_->proId);
-       //condis->contourdisplay_execute();//需传入参数
     }else{
         condis = new ContourDisplay(map_resultmanager.value(object_->proId));
+        map_contourdisplay.insert(object_->proId,condis);
+        //condis->contourdisplay_execute();//需传入参数
         std::string json_= object_->ToJson(condis->buildContourMsg().toStdString());
         emit sendImg_handlePoolToSendstate(json_);
     }
@@ -256,6 +270,30 @@ bool handlePool::result_contourdisplay(vtkJsonObject *object_, QVTKRenderer *ren
     return true;
 }
 
+/*
+ * @brief: analysis msg about linedisplay
+ * @param: object
+ * @ret: bool
+ * @birth: created by czm in 20230424
+ */
+bool handlePool::result_linedisplay(vtkJsonObject *object_)
+{
+    LineDisplay* linedis = NULL;
+    if(map_resultmanager.contains(object_->proId))return false;
+    if(map_linedisplay.contains(object_->proId)){
+        linedis = map_linedisplay.value(object_->proId);
+    }else{
+        linedis = new LineDisplay(map_resultmanager.value(object_->proId));
+        map_linedisplay.insert(object_->proId,linedis);
+        //linedis->linedisplay_execute();//需传入参数
+        std::string json_ = object_->ToJson(linedis->buildLineMsg().toStdString());
+        emit sendImg_handlePoolToSendstate(json_);
+    }
+    delete object_;
+    object_ = NULL;
+    return true;
+}
+
 /*
  * @brief: save the tecplot filename into QStringList
  * @param: filePath

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

@@ -11,6 +11,7 @@
 #include "../../VTK/Manager/meshmanager.h"
 #include "../../VTK/Manager/ResultMeshManager.h"
 #include "../../VTK/display/contourdisplay.h"
+#include "../../VTK/display/linedisplay.h"
 #include "vtkjsonobject.h"
 using namespace std;
 
@@ -25,7 +26,8 @@ public:
     void operateRender(vtkJsonObject*,QVTKRenderer*);
     //void loadTecplotFile(QString);
     bool resultImport(vtkJsonObject*,QVTKRenderer*);
-    bool result_contourdisplay(vtkJsonObject*,QVTKRenderer*);
+    bool result_contourdisplay(vtkJsonObject*);
+    bool result_linedisplay(vtkJsonObject*);
     QStringList getFileNameList(QString);
 
 
@@ -39,6 +41,7 @@ private:
     QMap<QString,MeshManager*> map_manager;
     QMap<QString,ResultMeshManager*> map_resultmanager;
     QMap<QString,ContourDisplay*> map_contourdisplay;
+    QMap<QString,LineDisplay*> map_linedisplay;
     QTabWidget* w;
     vtkActor* actor;