You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
4.7 KiB
C++
131 lines
4.7 KiB
C++
#include "OperatorsImport.h"
|
|
|
|
#include "GUIFrame/MainWindow.h"
|
|
#include "GUIDialog/FileDialogDirectory.h"
|
|
#include "OperatorsInterface/GraphEventOperator.h"
|
|
#include "OperatorsInterface/ParaWidgetInterfaceOperator.h"
|
|
|
|
#include "FITK_Kernel/FITKAppFramework/FITKAppFramework.h"
|
|
#include "FITK_Kernel/FITKAppFramework/FITKGlobalData.h"
|
|
#include "FITK_Kernel/FITKAppFramework/FITKAppSettings.h"
|
|
#include "FITK_Kernel/FITKCore/FITKThreadPool.h"
|
|
#include "FITK_Interface/FITKInterfaceCFDPost/FITKCFDPostData.h"
|
|
#include "FITK_Interface/FITKInterfaceCFDPost/FITKCFDPost3DManager.h"
|
|
#include "FITK_Interface/FITKInterfaceCFDPost/FITKCFDPostSteady.h"
|
|
#include "FITK_Interface/FITKInterfaceCFDPost/FITKCFDPostUnSteady.h"
|
|
|
|
#include <iostream>
|
|
#include <QDebug>
|
|
|
|
namespace OperModel {
|
|
OperatorsImport::OperatorsImport()
|
|
{
|
|
|
|
}
|
|
|
|
bool OperatorsImport::execGUI()
|
|
{
|
|
GUI::MainWindow* mainWin = dynamic_cast<GUI::MainWindow*>(FITKAPP->getGlobalData()->getMainWindow());
|
|
if (mainWin == nullptr)return false;
|
|
GUI::FileDialogDirectory* fileDialog = new GUI::FileDialogDirectory(this, mainWin);
|
|
fileDialog->iniFileFilterType("Support Files(*.vtk;;*.dat;;*.plt;;*.cgns)");
|
|
|
|
//设置对话框路径
|
|
AppFrame::FITKAppSettings* AppSetting = FITKAPP->getAppSettings();
|
|
if (AppSetting) {
|
|
QString workDir = AppSetting->getWorkingDir();
|
|
QString path = AppSetting->getValue<QString>(CFDPostSelectFilePath);
|
|
if (!path.isEmpty()) {
|
|
fileDialog->initWin(path);
|
|
}
|
|
else if (!workDir.isEmpty()) {
|
|
fileDialog->initWin(workDir);
|
|
}
|
|
}
|
|
|
|
fileDialog->show();
|
|
return false;
|
|
}
|
|
|
|
bool OperatorsImport::execProfession()
|
|
{
|
|
//获取线程池
|
|
Core::FITKThreadPool* pool = Core::FITKThreadPool::getInstance();
|
|
if (pool == nullptr)return false;
|
|
QString files = "";
|
|
QString filePath = "";
|
|
argValue("files", files);
|
|
argValue("filePath", filePath);
|
|
if (files.isEmpty())return false;
|
|
|
|
//存储选择路径
|
|
AppFrame::FITKAppSettings* AppSetting = FITKAPP->getAppSettings();
|
|
if (AppSetting) {
|
|
AppSetting->setValue(CFDPostSelectFilePath, filePath);
|
|
}
|
|
|
|
ImportReadThread* importThread = new ImportReadThread();
|
|
importThread->_fileName = files;
|
|
connect(importThread, SIGNAL(sigImportFinish(bool, int)), this, SLOT(slotImportFinish(bool, int)));
|
|
pool->execTask(importThread);
|
|
|
|
this->clearArgs();
|
|
return true;
|
|
}
|
|
|
|
void OperatorsImport::slotImportFinish(bool isOk, int objID)
|
|
{
|
|
if (isOk == false)return;
|
|
if (objID < 0)return;
|
|
EventOper::GraphEventOperator* graphOper = FITKOPERREPO->getOperatorT<EventOper::GraphEventOperator>("OperGraphPreprocess");
|
|
if (graphOper == nullptr)return;
|
|
EventOper::ParaWidgetInterfaceOperator* treeOper = FITKOPERREPO->getOperatorT<EventOper::ParaWidgetInterfaceOperator>("ModelTreeEvent");
|
|
if (treeOper == nullptr)return;
|
|
|
|
graphOper->updateSingle(objID);
|
|
treeOper->updateTree();
|
|
}
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
void ImportReadThread::run()
|
|
{
|
|
Interface::FITKCFDPost3DManager* manager = FITKAPP->getGlobalData()->getPostData<Interface::FITKCFDPostData>()->getPostDataManager();
|
|
if (manager == nullptr)return;
|
|
|
|
//文件信息获取
|
|
QString f(_fileName);
|
|
f = f.replace(QString("\\"), QString("/"));
|
|
const int index = _fileName.lastIndexOf(".");
|
|
const int nsize = _fileName.size();
|
|
QString suffix = _fileName.right(nsize - index - 1).toLower();
|
|
const int lIndex = f.lastIndexOf("/");
|
|
QString name = _fileName.right(nsize - lIndex - 1);
|
|
|
|
bool isGroup = false;
|
|
if (_fileName.indexOf("...") > 0)isGroup = true;
|
|
|
|
Interface::FITKAbstractCFDPostData* postData = nullptr;
|
|
if (isGroup) {
|
|
Interface::FITKCFDPostUnSteady* data = new Interface::FITKCFDPostUnSteady(suffix, _fileName);
|
|
QStringList fileList = data->getFiles();
|
|
if (fileList.size() <= 0) {
|
|
delete data;
|
|
return;
|
|
}
|
|
data->setFile(fileList[0]);
|
|
data->setDataObjectName(name);
|
|
postData = data;
|
|
}
|
|
else {
|
|
Interface::FITKCFDPostSteady* data = new Interface::FITKCFDPostSteady(suffix);
|
|
data->setFile(_fileName);
|
|
data->setDataObjectName(name);
|
|
postData = data;
|
|
}
|
|
|
|
manager->appendDataObj(postData);
|
|
|
|
emit sigImportFinish(true, postData->getDataObjectID());
|
|
}
|
|
}
|