|
@@ -65,10 +65,22 @@ void handlePool::getmsg_recvstateTohandlePool(std::string recvmsg)
|
|
std::cout<<"recvmsg"<<recvmsg<<std::endl;
|
|
std::cout<<"recvmsg"<<recvmsg<<std::endl;
|
|
boostJsonObject* json_object = new boostJsonObject();
|
|
boostJsonObject* json_object = new boostJsonObject();
|
|
QVTKRenderer* render_=NULL;
|
|
QVTKRenderer* render_=NULL;
|
|
- json_object->FromJson(recvmsg);
|
|
|
|
-
|
|
|
|
- operateRender(json_object,render_);//解析命令
|
|
|
|
-
|
|
|
|
|
|
+ try{//处理异常
|
|
|
|
+ json_object->FromJson(recvmsg);
|
|
|
|
+ }catch(exception ex){
|
|
|
|
+ QMap<QString,string> map_;
|
|
|
|
+ map_.insert("exception",ex.what());
|
|
|
|
+ emit sendImg_handlePoolToSendstate(json_object->ToJson("exception",map_));
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ try{
|
|
|
|
+ operateRender(json_object,render_);//解析命令
|
|
|
|
+ }catch(exception ex){
|
|
|
|
+ QMap<QString,string> map_2;
|
|
|
|
+ map_2.insert("exception",ex.what());
|
|
|
|
+ emit sendImg_handlePoolToSendstate(json_object->ToJson("exception",map_2));
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -165,6 +177,31 @@ void handlePool::operateRender(boostJsonObject* object,QVTKRenderer* render_)
|
|
cout<<"please import tecplot result first!"<<endl;
|
|
cout<<"please import tecplot result first!"<<endl;
|
|
}
|
|
}
|
|
return;
|
|
return;
|
|
|
|
+ }else if(object->action == "StreamDisplayCreate"){//流线创造
|
|
|
|
+ if(!result_streamdisplay(object,render_,"create")){
|
|
|
|
+ cout<<"please import tecplot result first!"<<endl;
|
|
|
|
+ }
|
|
|
|
+ return;
|
|
|
|
+ }else if(object->action == "StreamDisplaySelect"){//流线选择
|
|
|
|
+ if(!result_streamdisplay(object,render_,"select")){
|
|
|
|
+ cout<<"please import tecplot result first!"<<endl;
|
|
|
|
+ }
|
|
|
|
+ return;
|
|
|
|
+ }else if(object->action == "StreamDisplayDeleteLast"){//流线删除最后
|
|
|
|
+ if(!result_streamdisplay(object,render_,"deletelast")){
|
|
|
|
+ cout<<"please import tecplot result first!"<<endl;
|
|
|
|
+ }
|
|
|
|
+ return;
|
|
|
|
+ }else if(object->action == "StreamDisplayDeleteAll"){//流线删除全部
|
|
|
|
+ if(!result_streamdisplay(object,render_,"deleteall")){
|
|
|
|
+ cout<<"please import tecplot result first!"<<endl;
|
|
|
|
+ }
|
|
|
|
+ return;
|
|
|
|
+ }else if(object->action == "StreamDisplayApply"){//流线删除全部
|
|
|
|
+ if(!result_streamdisplay(object,render_,"apply")){
|
|
|
|
+ cout<<"please import tecplot result first!"<<endl;
|
|
|
|
+ }
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
send_picture(object,render_);//发送图片
|
|
send_picture(object,render_);//发送图片
|
|
}
|
|
}
|
|
@@ -198,8 +235,8 @@ void handlePool::judgeLoaddata(boostJsonObject *object, QVTKRenderer *render_)
|
|
render_->RemoveAllActors();
|
|
render_->RemoveAllActors();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- //QString m_filePath = object->filePath;//测试路径
|
|
|
|
- QString m_filePath = "F:\\czm\\vtkfile\\tfg.ugrid";
|
|
|
|
|
|
+ QString m_filePath = object->filePath;//测试路径
|
|
|
|
+ //QString m_filePath = "F:\\czm\\vtkfile\\tfg.ugrid";
|
|
QFileInfo fileinfo_(m_filePath);
|
|
QFileInfo fileinfo_(m_filePath);
|
|
if(!fileinfo_.isFile()){
|
|
if(!fileinfo_.isFile()){
|
|
cout<<"file path is Empty!"<<endl;
|
|
cout<<"file path is Empty!"<<endl;
|
|
@@ -269,7 +306,7 @@ bool handlePool::resultImport(boostJsonObject *object_, QVTKRenderer *renderer_)
|
|
// renderer_->RemoveAllActors();
|
|
// renderer_->RemoveAllActors();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- object_->filePath = "C:\\Users\\Administrator\\Desktop\\Postprocess_Binary";//测试路径
|
|
|
|
|
|
+ //object_->filePath = "C:\\Users\\Administrator\\Desktop\\Postprocess_Binary";//测试路径
|
|
QDir dir(QString::fromStdString(object_->filePath));
|
|
QDir dir(QString::fromStdString(object_->filePath));
|
|
if(!dir.exists()){
|
|
if(!dir.exists()){
|
|
return false;
|
|
return false;
|
|
@@ -316,8 +353,11 @@ bool handlePool::resultImport(boostJsonObject *object_, QVTKRenderer *renderer_)
|
|
SolidSurfaceWidget* solidfW = new SolidSurfaceWidget();//实体表面窗口初始化参数
|
|
SolidSurfaceWidget* solidfW = new SolidSurfaceWidget();//实体表面窗口初始化参数
|
|
rsMeshManager->SetSurfaceSolidWidget(solidfW);
|
|
rsMeshManager->SetSurfaceSolidWidget(solidfW);
|
|
|
|
|
|
- //SsliceWidget * ssliceW = new SsliceWidget();
|
|
|
|
- //rsMeshManager->SetSliceWidget(ssliceW);
|
|
|
|
|
|
+ SsliceWidget * ssliceW = new SsliceWidget();//切片窗口初始化参数
|
|
|
|
+ rsMeshManager->SetSliceWidget(ssliceW);
|
|
|
|
+
|
|
|
|
+ StreamDisplayWidget* streamW = new StreamDisplayWidget();//流线窗口初始化参数
|
|
|
|
+ rsMeshManager->SetStremWidget(streamW);
|
|
/********************************************/
|
|
/********************************************/
|
|
renderer_->widgetFlag = QVTKRenderer::WidgetModel::ResultModel;//设置当前窗口模型状态
|
|
renderer_->widgetFlag = QVTKRenderer::WidgetModel::ResultModel;//设置当前窗口模型状态
|
|
if(qmapResultmanager.contains(object_->proId)){//加载不同的结果文件
|
|
if(qmapResultmanager.contains(object_->proId)){//加载不同的结果文件
|
|
@@ -332,6 +372,7 @@ bool handlePool::resultImport(boostJsonObject *object_, QVTKRenderer *renderer_)
|
|
emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_line",buildResultImport_msg("Line",rsMeshManager)));//发送等值线结果数据
|
|
emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_line",buildResultImport_msg("Line",rsMeshManager)));//发送等值线结果数据
|
|
emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_vector",buildResultImport_msg("Vector",rsMeshManager)));//发送矢量结果数据
|
|
emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_vector",buildResultImport_msg("Vector",rsMeshManager)));//发送矢量结果数据
|
|
emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_solidsurface",buildResultImport_msg("Solidsurface",rsMeshManager)));//发送矢量结果数据
|
|
emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_solidsurface",buildResultImport_msg("Solidsurface",rsMeshManager)));//发送矢量结果数据
|
|
|
|
+ emit sendImg_handlePoolToSendstate(object_->ToJson("importResult_stream",buildResultImport_msg("Stream",rsMeshManager)));//发送流线结果数据
|
|
send_picture(object_,renderer_);
|
|
send_picture(object_,renderer_);
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
@@ -466,19 +507,61 @@ bool handlePool::result_slicedisplay(boostJsonObject *object_, QVTKRenderer *ren
|
|
resultmm->MakeVISUnStructGrid();
|
|
resultmm->MakeVISUnStructGrid();
|
|
resultmm->DisplayUnstructGrid();
|
|
resultmm->DisplayUnstructGrid();
|
|
resultmm->sliceW_->AddPage();
|
|
resultmm->sliceW_->AddPage();
|
|
- resultmm->sliceW_->get_map_SliceDisplayWidget().value(tmp_index)->SetPosition(resultmm->GetUnslicePosition(tmp_index));
|
|
|
|
- resultmm->sliceW_->get_map_SliceDisplayWidget().value(tmp_index)->SetPositionRange(resultmm->GetUnsliceSourceBounds(tmp_index));
|
|
|
|
|
|
+ resultmm->sliceW_->get_map_SliceDisplayWidget()[tmp_index]->SetPosition(resultmm->GetUnslicePosition(tmp_index));
|
|
|
|
+ resultmm->sliceW_->get_map_SliceDisplayWidget()[tmp_index]->SetPositionRange(resultmm->GetUnsliceSourceBounds(tmp_index));
|
|
emit sendImg_handlePoolToSendstate(object_->ToJson("addPage_slice",buildResultImport_msg("addpage_slice",resultmm,object_)));//发送切片结果数据
|
|
emit sendImg_handlePoolToSendstate(object_->ToJson("addPage_slice",buildResultImport_msg("addpage_slice",resultmm,object_)));//发送切片结果数据
|
|
}else if(type == "update"){
|
|
}else if(type == "update"){
|
|
resultmm->UpdataSliceWidgetParameter();
|
|
resultmm->UpdataSliceWidgetParameter();
|
|
resultmm->sliceW_->UpdateWidget();
|
|
resultmm->sliceW_->UpdateWidget();
|
|
- emit sendImg_handlePoolToSendstate(object_->ToJson("update_slice",buildResultImport_msg("update_slice",resultmm,object_)));//发送切片结果数据
|
|
|
|
|
|
+ emit sendImg_handlePoolToSendstate(object_->ToJson_updateslice(resultmm->sliceW_->get_map_SliceDisplayWidget()));//发送切片刷新数据
|
|
}else if(type == "clear"){
|
|
}else if(type == "clear"){
|
|
- //resultmm->UpdataSliceWidgetParameter();//先刷新再删除会有问题?
|
|
|
|
- //resultmm->sliceW_->UpdateWidget();
|
|
|
|
|
|
+ resultmm->UpdataSliceWidgetParameter();//先刷新再删除会有问题?
|
|
|
|
+ resultmm->sliceW_->UpdateWidget();
|
|
resultmm->sliceW_->remove_map_SliceDisplayWidget(object_->sd_struct->index);
|
|
resultmm->sliceW_->remove_map_SliceDisplayWidget(object_->sd_struct->index);
|
|
}else if(type == "apply"){
|
|
}else if(type == "apply"){
|
|
slicedis->slicewidget_execute(object_);
|
|
slicedis->slicewidget_execute(object_);
|
|
|
|
+ }
|
|
|
|
+ send_picture(object_,render_);
|
|
|
|
+ return true;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * @brief: analysis msg about streamdisplay
|
|
|
|
+ * @param: object and render
|
|
|
|
+ * @ret: bool
|
|
|
|
+ * @birth: created by czm in 20230505
|
|
|
|
+ */
|
|
|
|
+bool handlePool::result_streamdisplay(boostJsonObject *object_, QVTKRenderer *render_,QString type)
|
|
|
|
+{
|
|
|
|
+ StreamWidget* streamdis = NULL;
|
|
|
|
+ if(!qmapResultmanager.contains(object_->proId))return false;
|
|
|
|
+ render_ = qmapRender[object_->proId];
|
|
|
|
+ ResultMeshManager* resultmm = qmapResultmanager[object_->proId]->resultMeshManager_;
|
|
|
|
+ if(map_streamdisplay.contains(object_->proId)){
|
|
|
|
+ streamdis = map_streamdisplay[object_->proId];
|
|
|
|
+ }else{
|
|
|
|
+ streamdis = new StreamWidget(resultmm);
|
|
|
|
+ map_streamdisplay.insert(object_->proId,streamdis);
|
|
|
|
+ }
|
|
|
|
+ if(type == "create"){
|
|
|
|
+ resultmm->streamW_->current_u = stoi(object_->sm_struct->u.c_str());
|
|
|
|
+ resultmm->streamW_->current_v = stoi(object_->sm_struct->v.c_str());
|
|
|
|
+ resultmm->streamW_->current_w = stoi(object_->sm_struct->w.c_str());
|
|
|
|
+ string u = resultmm->streamW_->GetUData();
|
|
|
|
+ string v = resultmm->streamW_->GetVData();
|
|
|
|
+ string w = resultmm->streamW_->GetWData();
|
|
|
|
+ resultmm->CreatVectorSource(u,v,w);
|
|
|
|
+ if(resultmm->currAddDataSource_){
|
|
|
|
+ emit sendImg_handlePoolToSendstate(object_->ToJson("create_stream",buildResultImport_msg("create_stream",resultmm,object_)));//发送流线数据
|
|
|
|
+ }
|
|
|
|
+ }else if(type == "select"){
|
|
|
|
+ resultmm->SetStreamSelectState(true);
|
|
|
|
+ }else if(type == "deletelast"){
|
|
|
|
+ resultmm->SetStreamSelectState(false);
|
|
|
|
+ }else if(type == "deleteall"){
|
|
|
|
+ resultmm->DeleteAllStream();
|
|
|
|
+ }else if(type == "apply"){
|
|
|
|
+ streamdis->StreamWidget_execute(object_);
|
|
send_picture(object_,render_);
|
|
send_picture(object_,render_);
|
|
}
|
|
}
|
|
return true;
|
|
return true;
|
|
@@ -586,6 +669,30 @@ QMap<QString,string> handlePool::buildResultImport_msg(QString type,ResultMeshMa
|
|
}else{
|
|
}else{
|
|
map_tmp.insert("showHideState",QString("false").toStdString());
|
|
map_tmp.insert("showHideState",QString("false").toStdString());
|
|
}
|
|
}
|
|
|
|
+ }else if(type == "Stream"){
|
|
|
|
+ string msg;
|
|
|
|
+ StreamDisplayWidget* smdW = cmanager->streamW_;
|
|
|
|
+ for(int i = 0; i<smdW->dataU.size();i++){
|
|
|
|
+ msg+=removeSpaces(smdW->dataU[i]);
|
|
|
|
+ msg+=",";
|
|
|
|
+ }
|
|
|
|
+ msg = msg.erase(msg.size()-1);
|
|
|
|
+ map_tmp.insert("dataU",msg);
|
|
|
|
+ msg.clear();
|
|
|
|
+ for(int j = 0;j<smdW->dataV.size();j++){
|
|
|
|
+ msg+=removeSpaces(smdW->dataV[j]);
|
|
|
|
+ msg+=",";
|
|
|
|
+ }
|
|
|
|
+ msg=msg.erase(msg.size()-1);
|
|
|
|
+ map_tmp.insert("dataV",msg);
|
|
|
|
+ msg.clear();
|
|
|
|
+ for(int k = 0; k <smdW->dataW.size();k++){
|
|
|
|
+ msg+=removeSpaces(smdW->dataW[k]);
|
|
|
|
+ msg+=",";
|
|
|
|
+ }
|
|
|
|
+ msg = msg.erase(msg.size()-1);
|
|
|
|
+ map_tmp.insert("dataW",msg);
|
|
|
|
+ msg.clear();
|
|
}
|
|
}
|
|
return map_tmp;
|
|
return map_tmp;
|
|
}
|
|
}
|
|
@@ -603,6 +710,7 @@ QMap<QString, string> handlePool::buildResultImport_msg(QString type, ResultMesh
|
|
int tmp_index = object->sd_struct->index;
|
|
int tmp_index = object->sd_struct->index;
|
|
SliceDisplayWidget* sdwidget = cmanager->sliceW_->get_map_SliceDisplayWidget().value(tmp_index);
|
|
SliceDisplayWidget* sdwidget = cmanager->sliceW_->get_map_SliceDisplayWidget().value(tmp_index);
|
|
string msg;
|
|
string msg;
|
|
|
|
+ map_tmp.insert("index",to_string(tmp_index+1));//修改index
|
|
map_tmp.insert("position_x",to_string(sdwidget->GetPosition()[0]));
|
|
map_tmp.insert("position_x",to_string(sdwidget->GetPosition()[0]));
|
|
map_tmp.insert("position_y",to_string(sdwidget->GetPosition()[1]));
|
|
map_tmp.insert("position_y",to_string(sdwidget->GetPosition()[1]));
|
|
map_tmp.insert("position_z",to_string(sdwidget->GetPosition()[2]));
|
|
map_tmp.insert("position_z",to_string(sdwidget->GetPosition()[2]));
|
|
@@ -613,24 +721,29 @@ QMap<QString, string> handlePool::buildResultImport_msg(QString type, ResultMesh
|
|
map_tmp.insert("min_position_z",to_string(sdwidget->GetPositionRange()[4]));
|
|
map_tmp.insert("min_position_z",to_string(sdwidget->GetPositionRange()[4]));
|
|
map_tmp.insert("max_position_z",to_string(sdwidget->GetPositionRange()[5]));
|
|
map_tmp.insert("max_position_z",to_string(sdwidget->GetPositionRange()[5]));
|
|
for(int i =0; i<sdwidget->GetVariableName_vector().size();i++){
|
|
for(int i =0; i<sdwidget->GetVariableName_vector().size();i++){
|
|
- msg+=sdwidget->GetVariableName_vector()[i];
|
|
|
|
|
|
+ msg+= removeSpaces(sdwidget->GetVariableName_vector()[i]);
|
|
msg+=",";
|
|
msg+=",";
|
|
}
|
|
}
|
|
msg = msg.erase(msg.size()-1);
|
|
msg = msg.erase(msg.size()-1);
|
|
map_tmp.insert("variableName",msg);
|
|
map_tmp.insert("variableName",msg);
|
|
msg.clear();
|
|
msg.clear();
|
|
map_tmp.insert("arearange",sdwidget->getAreaRange().toStdString());
|
|
map_tmp.insert("arearange",sdwidget->getAreaRange().toStdString());
|
|
- }else if((type == "update_slice")|| (type == "clear_slice")){
|
|
|
|
|
|
+ }else if(type == "clear_slice"){
|
|
QMap<int,SliceDisplayWidget*> sdw_map = cmanager->sliceW_->get_map_SliceDisplayWidget();
|
|
QMap<int,SliceDisplayWidget*> sdw_map = cmanager->sliceW_->get_map_SliceDisplayWidget();
|
|
for(auto iter = sdw_map.begin();iter!=sdw_map.end();iter++){
|
|
for(auto iter = sdw_map.begin();iter!=sdw_map.end();iter++){
|
|
- map_tmp.insert("index",to_string(iter.key()));
|
|
|
|
|
|
+ map_tmp.insert("index",to_string(iter.key()+1));//修改index
|
|
map_tmp.insert("normal_x",to_string(iter.value()->GetNormal()[0]));
|
|
map_tmp.insert("normal_x",to_string(iter.value()->GetNormal()[0]));
|
|
map_tmp.insert("normal_y",to_string(iter.value()->GetNormal()[1]));
|
|
map_tmp.insert("normal_y",to_string(iter.value()->GetNormal()[1]));
|
|
map_tmp.insert("normal_z",to_string(iter.value()->GetNormal()[2]));
|
|
map_tmp.insert("normal_z",to_string(iter.value()->GetNormal()[2]));
|
|
map_tmp.insert("position_x",to_string(iter.value()->GetPosition()[0]));
|
|
map_tmp.insert("position_x",to_string(iter.value()->GetPosition()[0]));
|
|
- map_tmp.insert("position_y",to_string(iter.value()->GetPosition()[0]));
|
|
|
|
- map_tmp.insert("position_z",to_string(iter.value()->GetPosition()[0]));
|
|
|
|
|
|
+ map_tmp.insert("position_y",to_string(iter.value()->GetPosition()[1]));
|
|
|
|
+ map_tmp.insert("position_z",to_string(iter.value()->GetPosition()[2]));
|
|
}
|
|
}
|
|
|
|
+ }else if(type == "create_stream"){
|
|
|
|
+ StreamDisplayWidget* smdW = cmanager->streamW_;
|
|
|
|
+ map_tmp.insert("initialStep",to_string(smdW->initialStep));
|
|
|
|
+ map_tmp.insert("maxPropagation",to_string(smdW->MaxPropagation));
|
|
|
|
+ map_tmp.insert("minimumStep",to_string(smdW->MinimumStep));
|
|
}
|
|
}
|
|
return map_tmp;
|
|
return map_tmp;
|
|
}
|
|
}
|