2023-05-08 06:32:41 +00:00
|
|
|
|
#include "PostProcessPy.h"
|
|
|
|
|
#include "RenderDirector.h"
|
|
|
|
|
#include "PostTreeWidget.h"
|
|
|
|
|
#include "GraphWidget.h"
|
|
|
|
|
#include "RenderWindowManager.h"
|
|
|
|
|
#include "DialogFileDirectory.h"
|
|
|
|
|
#include "PostRenderData/RenderDataManager.h"
|
|
|
|
|
#include "PostRenderData/RenderDataObject.h"
|
|
|
|
|
#include "PostRenderData/RenderProperty.h"
|
|
|
|
|
#include "PostRenderData/RenderDataImportSteady.h"
|
|
|
|
|
#include "PostRenderData/RenderDataImportUnSteady.h"
|
|
|
|
|
#include "PostRenderData/ClipRenderDataAlg.h"
|
|
|
|
|
#include "PostRenderData/SliceRenderDataAlg.h"
|
|
|
|
|
#include "PostRenderData/ISOCurveRenderDataAlg.h"
|
|
|
|
|
#include "PostRenderData/ISORenderDataAlg.h"
|
|
|
|
|
#include "PostRenderData/GlyphingRenderDataAlg.h"
|
|
|
|
|
#include "PostRenderData/StreamLineRenderDataAlg.h"
|
|
|
|
|
#include "PostRenderData/CalculateRenderDataAlg.h"
|
|
|
|
|
#include "PostRenderData/ReflectionRenderDataAlg.h"
|
|
|
|
|
|
|
|
|
|
namespace Post
|
|
|
|
|
{
|
|
|
|
|
GUI::MainWindow *PostProcessPy::_mainWindow = nullptr;
|
|
|
|
|
PostTreeWidget *PostProcessPy::_tree = nullptr;
|
|
|
|
|
RenderDirector *PostProcessPy::_director = nullptr;
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::getBlockData(QMultiHash<int, int> &blockHash, char *blocks)
|
|
|
|
|
{
|
|
|
|
|
QString sblock = QString(blocks);
|
|
|
|
|
QStringList blockList = sblock.split(";");
|
|
|
|
|
for (auto objInfo : blockList)
|
|
|
|
|
{
|
|
|
|
|
QStringList info = objInfo.split(":");
|
|
|
|
|
auto objID = info.at(0).toInt();
|
|
|
|
|
QStringList bList = info.at(1).split(",");
|
|
|
|
|
for (auto block : bList)
|
|
|
|
|
{
|
|
|
|
|
auto index = block.toInt();
|
|
|
|
|
blockHash.insert(objID, index);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::init(GUI::MainWindow *mw, PostTreeWidget *tree)
|
|
|
|
|
{
|
|
|
|
|
_mainWindow = mw;
|
|
|
|
|
_tree = tree;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::setDirector(RenderDirector *dire)
|
|
|
|
|
{
|
|
|
|
|
_director = dire;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::openPostFile(int wID, QString file)
|
|
|
|
|
{
|
|
|
|
|
RenderDataObject *dataObj = nullptr;
|
|
|
|
|
if (FileDirectoryDialog::isGourpFiles(file))
|
2023-06-07 02:15:08 +00:00
|
|
|
|
{
|
|
|
|
|
dataObj = new RenderDataImportUnSteady(file);
|
|
|
|
|
}
|
2023-05-08 06:32:41 +00:00
|
|
|
|
else
|
2023-06-07 02:15:08 +00:00
|
|
|
|
{
|
|
|
|
|
dataObj = new RenderDataImportSteady(file);
|
|
|
|
|
}
|
2023-05-08 06:32:41 +00:00
|
|
|
|
dataObj->update();
|
|
|
|
|
|
|
|
|
|
auto dataset = dataObj->getOutputData();
|
|
|
|
|
|
|
|
|
|
RenderDataManager::getInstance()->appendRenderObjectList(dataObj);
|
2023-06-07 02:15:08 +00:00
|
|
|
|
// RenderDirector::getInstance()->renderDataObjectToWindow(dataObj, wID);
|
2023-05-08 06:32:41 +00:00
|
|
|
|
emit _director->signal_renderDataObject(dataObj, wID);
|
|
|
|
|
_tree->updatePostTree();
|
|
|
|
|
// emit _mainWindow->updatePostTreeSig();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::setDisplayMode(int wID, int type)
|
|
|
|
|
{
|
|
|
|
|
// auto rw = RenderWindowManager::getInstance()->getRenderWindowByID(wID);
|
|
|
|
|
// if (rw == nullptr) return;
|
|
|
|
|
// rw->setPostDisplayMode(type);
|
|
|
|
|
emit _director->signal_setDisplayMode(wID, type);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::savePostImage(int wID, QString file)
|
|
|
|
|
{
|
|
|
|
|
auto rw = RenderWindowManager::getInstance()->getRenderWindowByID(wID);
|
|
|
|
|
if (rw == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
rw->saveImage(file);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::savePostAnimation(int pID, QString file, int fps)
|
|
|
|
|
{
|
|
|
|
|
auto obj = RenderDataManager::getInstance()->getObjectByID(pID);
|
|
|
|
|
auto uObj = RenderDataImportUnSteady::SafeDownCast(obj);
|
|
|
|
|
if (uObj == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
emit _director->signal_saveAnimation(uObj, file, fps);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::setBlockColor(QMultiHash<int, int> blocks, QString name, int type, int component,
|
|
|
|
|
double red, double green, double blue, bool isVariable)
|
|
|
|
|
{
|
|
|
|
|
QList<RenderProperty *> proList{};
|
|
|
|
|
GraphWidget *gw = nullptr;
|
|
|
|
|
|
|
|
|
|
auto datalist = blocks.uniqueKeys();
|
|
|
|
|
for (auto id : datalist)
|
|
|
|
|
{
|
|
|
|
|
auto obj = RenderDataManager::getInstance()->getObjectByID(id);
|
|
|
|
|
if (obj == nullptr)
|
|
|
|
|
continue;
|
|
|
|
|
if (gw == nullptr)
|
|
|
|
|
gw = RenderWindowManager::getInstance()->getRenderWindowByID(obj->getRenderWinID());
|
|
|
|
|
|
|
|
|
|
for (auto bIndex : blocks.values(id))
|
|
|
|
|
{
|
|
|
|
|
if (bIndex == -1)
|
|
|
|
|
{
|
|
|
|
|
auto cPro = obj->getPropertyListAt(0);
|
|
|
|
|
if (cPro == nullptr)
|
|
|
|
|
continue;
|
|
|
|
|
proList.append(cPro);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
auto bPro = obj->getPropertyListAt(bIndex);
|
|
|
|
|
if (bPro == nullptr)
|
|
|
|
|
continue;
|
|
|
|
|
proList.append(bPro);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isVariable)
|
|
|
|
|
{
|
|
|
|
|
for (auto pro : proList)
|
|
|
|
|
pro->setCurrentVariable(type, name, component);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
for (auto pro : proList)
|
|
|
|
|
pro->setPropertyColor(red, green, blue);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
emit _director->signal_renderWindow(gw->getID());
|
|
|
|
|
// if (gw != nullptr) gw->reRender();
|
|
|
|
|
_tree->updatePostTree();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::createClip(int parentID, QMultiHash<int, int> blocks, QString name,
|
|
|
|
|
double *ori, double *nor, bool out)
|
|
|
|
|
{
|
|
|
|
|
auto parent = RenderDataManager::getInstance()->getObjectByID(parentID);
|
|
|
|
|
if (parent == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
auto clip = new ClipRenderDataAlg(parent);
|
|
|
|
|
clip->setName(name);
|
|
|
|
|
clip->setSelectedObjectHash(blocks);
|
|
|
|
|
clip->setPlaneOri(ori);
|
|
|
|
|
clip->setPlaneNormal(nor);
|
|
|
|
|
clip->setInsideOut(!out);
|
|
|
|
|
|
|
|
|
|
clip->updateParam();
|
|
|
|
|
clip->updateAlg();
|
|
|
|
|
clip->update();
|
|
|
|
|
|
|
|
|
|
parent->appendSubObjects(clip);
|
|
|
|
|
// RenderDirector::getInstance()->renderDataObjectToWindow(clip, parent->getRenderWinID());
|
|
|
|
|
emit _director->signal_renderDataObject(clip, parent->getRenderWinID());
|
|
|
|
|
_tree->updatePostTree();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::editClip(int id, QMultiHash<int, int> blocks, QString name, double *ori, double *nor, bool out)
|
|
|
|
|
{
|
|
|
|
|
auto obj = RenderDataManager::getInstance()->getObjectByID(id);
|
|
|
|
|
auto clip = dynamic_cast<ClipRenderDataAlg *>(obj);
|
|
|
|
|
if (clip == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
clip->setName(name);
|
|
|
|
|
clip->setSelectedObjectHash(blocks);
|
|
|
|
|
clip->setPlaneOri(ori);
|
|
|
|
|
clip->setPlaneNormal(nor);
|
|
|
|
|
clip->setInsideOut(!out);
|
|
|
|
|
|
|
|
|
|
clip->updateParam();
|
|
|
|
|
clip->updateAlg();
|
|
|
|
|
clip->update();
|
|
|
|
|
|
|
|
|
|
emit _director->signal_renderWindow(clip->getRenderWinID());
|
|
|
|
|
_tree->updatePostTree();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::createSlice(int parentID, QMultiHash<int, int> blocks, QString name, double *ori, double *nor)
|
|
|
|
|
{
|
|
|
|
|
auto parent = RenderDataManager::getInstance()->getObjectByID(parentID);
|
|
|
|
|
if (parent == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
auto slice = new SliceRenderDataAlg(parent);
|
|
|
|
|
slice->setName(name);
|
|
|
|
|
slice->setSelectedObjectHash(blocks);
|
|
|
|
|
slice->setPlaneOri(ori);
|
|
|
|
|
slice->setPlaneNormal(nor);
|
|
|
|
|
|
|
|
|
|
slice->updateParam();
|
|
|
|
|
slice->updateAlg();
|
|
|
|
|
slice->update();
|
|
|
|
|
|
|
|
|
|
parent->appendSubObjects(slice);
|
|
|
|
|
// RenderDirector::getInstance()->renderDataObjectToWindow(slice, parent->getRenderWinID());
|
|
|
|
|
emit _director->signal_renderDataObject(slice, parent->getRenderWinID());
|
|
|
|
|
_tree->updatePostTree();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::createISOSurface(int pID, QMultiHash<int, int> blocks, QString name,
|
|
|
|
|
QString variable, QStringList values)
|
|
|
|
|
{
|
|
|
|
|
auto parent = RenderDataManager::getInstance()->getObjectByID(pID);
|
|
|
|
|
if (parent == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
auto surface = new ISORenderDataAlg(parent);
|
|
|
|
|
surface->setSelectedObjectHash(blocks);
|
|
|
|
|
surface->setName(name);
|
|
|
|
|
surface->setVariable(variable);
|
|
|
|
|
|
|
|
|
|
for (auto value : values)
|
|
|
|
|
{
|
|
|
|
|
auto val = value.toDouble();
|
|
|
|
|
surface->appendToValueList(val);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
surface->updateParam();
|
|
|
|
|
surface->updateAlg();
|
|
|
|
|
surface->update();
|
|
|
|
|
|
|
|
|
|
parent->appendSubObjects(surface);
|
|
|
|
|
emit _director->signal_renderDataObject(surface, parent->getRenderWinID());
|
|
|
|
|
_tree->updatePostTree();
|
|
|
|
|
// RenderDirector::getInstance()->renderDataObjectToWindow(surface, parent->getRenderWinID());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::createISOCurve(int pID, QMultiHash<int, int> blocks, QString name,
|
|
|
|
|
QString variable, QStringList values)
|
|
|
|
|
{
|
|
|
|
|
auto parent = RenderDataManager::getInstance()->getObjectByID(pID);
|
|
|
|
|
if (parent == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
auto curve = new ISOCurveRenderDataAlg(parent);
|
|
|
|
|
curve->setSelectedObjectHash(blocks);
|
|
|
|
|
curve->setName(name);
|
|
|
|
|
curve->setVariable(variable);
|
|
|
|
|
|
|
|
|
|
for (auto value : values)
|
|
|
|
|
{
|
|
|
|
|
auto val = value.toDouble();
|
|
|
|
|
curve->appendToValueList(val);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
curve->updateParam();
|
|
|
|
|
curve->updateAlg();
|
|
|
|
|
curve->update();
|
|
|
|
|
|
|
|
|
|
parent->appendSubObjects(curve);
|
|
|
|
|
emit _director->signal_renderDataObject(curve, parent->getRenderWinID());
|
|
|
|
|
_tree->updatePostTree();
|
|
|
|
|
// RenderDirector::getInstance()->renderDataObjectToWindow(surface, parent->getRenderWinID());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::createVector(int pID, QMultiHash<int, int> blocks, QString name, QString vector,
|
|
|
|
|
int maxNumber, int scaleMode, double scaleFactor, bool isPointData)
|
|
|
|
|
{
|
|
|
|
|
auto parent = RenderDataManager::getInstance()->getObjectByID(pID);
|
|
|
|
|
if (parent == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
auto glyph = new GlyphingRenderDataAlg(parent);
|
|
|
|
|
glyph->setSelectedObjectHash(blocks);
|
|
|
|
|
glyph->setName(name);
|
|
|
|
|
glyph->setVector(vector);
|
|
|
|
|
glyph->setMaxNumber(maxNumber);
|
|
|
|
|
glyph->setUsePointData(isPointData);
|
|
|
|
|
glyph->setScaleMode(scaleMode);
|
|
|
|
|
glyph->setScaleFactor(scaleFactor);
|
|
|
|
|
|
|
|
|
|
glyph->updateParam();
|
|
|
|
|
glyph->updateAlg();
|
|
|
|
|
glyph->update();
|
|
|
|
|
|
|
|
|
|
parent->appendSubObjects(glyph);
|
|
|
|
|
emit _director->signal_renderDataObject(glyph, parent->getRenderWinID());
|
|
|
|
|
_tree->updatePostTree();
|
|
|
|
|
// RenderDirector::getInstance()->renderDataObjectToWindow(glyph, parent->getRenderWinID());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::createStreamLine(int pID, QMultiHash<int, int> blocks, QString name, QString vector,
|
|
|
|
|
double *start, double *end, int seeds, double maxLength, double initStep, double minStep,
|
|
|
|
|
double maxStep, int stepNumber, int direction, bool isPointData)
|
|
|
|
|
{
|
|
|
|
|
auto parent = RenderDataManager::getInstance()->getObjectByID(pID);
|
|
|
|
|
if (parent == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
auto sline = new StreamLineRenderDataAlg(parent);
|
|
|
|
|
sline->setSelectedObjectHash(blocks);
|
|
|
|
|
sline->setVector(vector);
|
|
|
|
|
sline->setName(name);
|
|
|
|
|
sline->setUsePointData(isPointData);
|
|
|
|
|
sline->setLineSource(start, end);
|
|
|
|
|
sline->setSeedCount(seeds);
|
|
|
|
|
sline->setMaxLength(maxLength);
|
|
|
|
|
sline->setInitStep(initStep);
|
|
|
|
|
sline->setMinStep(minStep);
|
|
|
|
|
sline->setMaxStep(maxStep);
|
|
|
|
|
sline->setStepNumber(stepNumber);
|
|
|
|
|
sline->setDirection(direction);
|
|
|
|
|
|
|
|
|
|
sline->updateParam();
|
|
|
|
|
sline->updateAlg();
|
|
|
|
|
sline->update();
|
|
|
|
|
|
|
|
|
|
parent->appendSubObjects(sline);
|
|
|
|
|
emit _director->signal_renderDataObject(sline, parent->getRenderWinID());
|
|
|
|
|
_tree->updatePostTree();
|
|
|
|
|
// RenderDirector::getInstance()->renderDataObjectToWindow(sline, parent->getRenderWinID());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::createCalaulate(int pID, QMultiHash<int, int> blocks, QString name, QString func,
|
|
|
|
|
QStringList scalars, QStringList vectors, bool isPointData)
|
|
|
|
|
{
|
|
|
|
|
auto parent = RenderDataManager::getInstance()->getObjectByID(pID);
|
|
|
|
|
if (parent == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
auto calculate = new CalculateRenderDataAlg(parent);
|
|
|
|
|
|
|
|
|
|
calculate->setName(name);
|
|
|
|
|
calculate->setSelectedObjectHash(blocks);
|
|
|
|
|
calculate->clearInputScalars();
|
|
|
|
|
calculate->clearInputVectors();
|
|
|
|
|
calculate->setUsePointData(isPointData);
|
|
|
|
|
calculate->setFunction(func);
|
|
|
|
|
calculate->setResultArrayName(name);
|
|
|
|
|
|
|
|
|
|
for (auto v : scalars)
|
|
|
|
|
calculate->appendInputScalars(v);
|
|
|
|
|
for (auto v : vectors)
|
|
|
|
|
calculate->appendInputVectors(v);
|
|
|
|
|
|
|
|
|
|
calculate->updateParam();
|
|
|
|
|
calculate->updateAlg();
|
|
|
|
|
calculate->update();
|
|
|
|
|
|
|
|
|
|
parent->appendSubObjects(calculate);
|
|
|
|
|
emit _director->signal_renderDataObject(calculate, parent->getRenderWinID());
|
|
|
|
|
_tree->updatePostTree();
|
|
|
|
|
// RenderDirector::getInstance()->renderDataObjectToWindow(calculate, parent->getRenderWinID());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::createReflection(int pID, QMultiHash<int, int> blocks, QString name, int plane, double center)
|
|
|
|
|
{
|
|
|
|
|
auto parent = RenderDataManager::getInstance()->getObjectByID(pID);
|
|
|
|
|
if (parent == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
auto reflection = new ReflectionRenderDataAlg(parent);
|
|
|
|
|
reflection->setSelectedObjectHash(blocks);
|
|
|
|
|
reflection->setPlane(plane);
|
|
|
|
|
reflection->setCenter(center);
|
|
|
|
|
|
|
|
|
|
reflection->updateParam();
|
|
|
|
|
reflection->updateAlg();
|
|
|
|
|
reflection->update();
|
|
|
|
|
|
|
|
|
|
parent->appendSubObjects(reflection);
|
|
|
|
|
emit _director->signal_renderDataObject(reflection, parent->getRenderWinID());
|
|
|
|
|
_tree->updatePostTree();
|
|
|
|
|
// RenderDirector::getInstance()->renderDataObjectToWindow(reflection, parent->getRenderWinID());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::runAnimation(int pID, int index)
|
|
|
|
|
{
|
|
|
|
|
auto obj = RenderDataManager::getInstance()->getObjectByID(pID);
|
|
|
|
|
auto uObj = RenderDataImportUnSteady::SafeDownCast(obj);
|
|
|
|
|
if (uObj == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
emit _director->signal_runAnimation(uObj, index);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::stopAnimation(int pID, int index)
|
|
|
|
|
{
|
|
|
|
|
auto obj = RenderDataManager::getInstance()->getObjectByID(pID);
|
|
|
|
|
auto uObj = RenderDataImportUnSteady::SafeDownCast(obj);
|
|
|
|
|
if (uObj == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
emit _director->signal_stopAnimation(uObj, index);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::firstFrame(int pID)
|
|
|
|
|
{
|
|
|
|
|
auto obj = RenderDataManager::getInstance()->getObjectByID(pID);
|
|
|
|
|
auto uObj = RenderDataImportUnSteady::SafeDownCast(obj);
|
|
|
|
|
if (uObj == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
emit _director->signal_firstFrame(uObj);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::proviousFrame(int pID)
|
|
|
|
|
{
|
|
|
|
|
auto obj = RenderDataManager::getInstance()->getObjectByID(pID);
|
|
|
|
|
auto uObj = RenderDataImportUnSteady::SafeDownCast(obj);
|
|
|
|
|
if (uObj == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
emit _director->signal_proviousFrame(uObj);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::nextFrame(int pID)
|
|
|
|
|
{
|
|
|
|
|
auto obj = RenderDataManager::getInstance()->getObjectByID(pID);
|
|
|
|
|
auto uObj = RenderDataImportUnSteady::SafeDownCast(obj);
|
|
|
|
|
if (uObj == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
emit _director->signal_nextFrame(uObj);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void PostProcessPy::lastFrame(int pID)
|
|
|
|
|
{
|
|
|
|
|
auto obj = RenderDataManager::getInstance()->getObjectByID(pID);
|
|
|
|
|
auto uObj = RenderDataImportUnSteady::SafeDownCast(obj);
|
|
|
|
|
if (uObj == nullptr)
|
|
|
|
|
return;
|
|
|
|
|
emit _director->signal_lastFrame(uObj);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI openPostFile(int id, char *type, char *file)
|
|
|
|
|
{
|
|
|
|
|
Q_UNUSED(type)
|
|
|
|
|
QString sfile = QString(file);
|
|
|
|
|
Post::PostProcessPy::openPostFile(id, sfile);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI createClip(int pID, char *blocks, char *name, double xOri, double yOri,
|
|
|
|
|
double zOri, double xNor, double yNor, double zNor, bool out)
|
|
|
|
|
{
|
|
|
|
|
QString sname = QString(name);
|
|
|
|
|
// QString sblock = QString(blocks);
|
|
|
|
|
// QStringList blockList = sblock.split(";");
|
|
|
|
|
// QMultiHash<int, int> dataHash;
|
|
|
|
|
// for (auto objInfo : blockList)
|
|
|
|
|
// {
|
|
|
|
|
// QStringList info = objInfo.split(":");
|
|
|
|
|
// auto objID = info.at(0).toInt();
|
|
|
|
|
// QStringList bList = info.at(1).split(",");
|
|
|
|
|
// for (auto block : bList)
|
|
|
|
|
// {
|
|
|
|
|
// auto index = block.toInt();
|
|
|
|
|
// dataHash.insert(objID, index);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
QMultiHash<int, int> dataHash;
|
|
|
|
|
|
|
|
|
|
double ori[3]{0};
|
|
|
|
|
double nor[3]{0};
|
|
|
|
|
ori[0] = xOri;
|
|
|
|
|
ori[1] = yOri;
|
|
|
|
|
ori[2] = zOri;
|
|
|
|
|
nor[0] = xNor;
|
|
|
|
|
nor[1] = yNor;
|
|
|
|
|
nor[2] = zNor;
|
|
|
|
|
|
|
|
|
|
Post::PostProcessPy::getBlockData(dataHash, blocks);
|
|
|
|
|
Post::PostProcessPy::createClip(pID, dataHash, sname, ori, nor, out);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI createSlice(int pID, char *blocks, char *name, double xOri, double yOri,
|
|
|
|
|
double zOri, double xNor, double yNor, double zNor)
|
|
|
|
|
{
|
|
|
|
|
QString sname = QString(name);
|
|
|
|
|
// QString sblock = QString(blocks);
|
|
|
|
|
// QStringList blockList = sblock.split(";");
|
|
|
|
|
// QMultiHash<int, int> dataHash;
|
|
|
|
|
// for (auto objInfo : blockList)
|
|
|
|
|
// {
|
|
|
|
|
// QStringList info = objInfo.split(":");
|
|
|
|
|
// auto objID = info.at(0).toInt();
|
|
|
|
|
// QStringList bList = info.at(1).split(",");
|
|
|
|
|
// for (auto block : bList)
|
|
|
|
|
// {
|
|
|
|
|
// auto index = block.toInt();
|
|
|
|
|
// dataHash.insert(objID, index);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
QMultiHash<int, int> dataHash;
|
|
|
|
|
|
|
|
|
|
double ori[3]{0};
|
|
|
|
|
double nor[3]{0};
|
|
|
|
|
ori[0] = xOri;
|
|
|
|
|
ori[1] = yOri;
|
|
|
|
|
ori[2] = zOri;
|
|
|
|
|
nor[0] = xNor;
|
|
|
|
|
nor[1] = yNor;
|
|
|
|
|
nor[2] = zNor;
|
|
|
|
|
|
|
|
|
|
Post::PostProcessPy::getBlockData(dataHash, blocks);
|
|
|
|
|
Post::PostProcessPy::createSlice(pID, dataHash, sname, ori, nor);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI createISOSurface(int pID, char *blocks, char *name, char *variable, char *values)
|
|
|
|
|
{
|
|
|
|
|
QString sname = QString(name);
|
|
|
|
|
QString svariable = QString(variable);
|
|
|
|
|
QString svalue = QString(values);
|
|
|
|
|
QStringList valueList = svalue.split(",");
|
|
|
|
|
QMultiHash<int, int> dataHash;
|
|
|
|
|
|
|
|
|
|
Post::PostProcessPy::getBlockData(dataHash, blocks);
|
|
|
|
|
Post::PostProcessPy::createISOSurface(pID, dataHash, sname, svariable, valueList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI createISOCurve(int pID, char *blocks, char *name, char *variable, char *values)
|
|
|
|
|
{
|
|
|
|
|
QString sname = QString(name);
|
|
|
|
|
QString svariable = QString(variable);
|
|
|
|
|
QString svalue = QString(values);
|
|
|
|
|
QStringList valueList = svalue.split(",");
|
|
|
|
|
QMultiHash<int, int> dataHash;
|
|
|
|
|
|
|
|
|
|
Post::PostProcessPy::getBlockData(dataHash, blocks);
|
|
|
|
|
Post::PostProcessPy::createISOCurve(pID, dataHash, sname, svariable, valueList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI createVector(int pID, char *blocks, char *name, char *vector, int maxNumber,
|
|
|
|
|
int scaleMode, double scaleFactor, bool isPointData)
|
|
|
|
|
{
|
|
|
|
|
QString sname = QString(name);
|
|
|
|
|
QString svector = QString(vector);
|
|
|
|
|
QMultiHash<int, int> dataHash;
|
|
|
|
|
|
|
|
|
|
Post::PostProcessPy::getBlockData(dataHash, blocks);
|
|
|
|
|
Post::PostProcessPy::createVector(pID, dataHash, sname, svector, maxNumber, scaleMode, scaleFactor, isPointData);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI createStreamLine(int pID, char *blocks, char *name, char *vector, double xStart,
|
|
|
|
|
double yStart, double zStart, double xEnd, double yEnd, double zEnd, int seeds, double maxLength,
|
|
|
|
|
double initStep, double minStep, double maxStep, int stepNumber, int direction, bool isPointData)
|
|
|
|
|
{
|
|
|
|
|
QString sname = QString(name);
|
|
|
|
|
QString svector = QString(vector);
|
|
|
|
|
QMultiHash<int, int> dataHash;
|
|
|
|
|
|
|
|
|
|
double start[3]{0};
|
|
|
|
|
double end[3]{0};
|
|
|
|
|
|
|
|
|
|
start[0] = xStart;
|
|
|
|
|
start[1] = yStart;
|
|
|
|
|
start[2] = zStart;
|
|
|
|
|
end[0] = xEnd;
|
|
|
|
|
end[1] = yEnd;
|
|
|
|
|
end[2] = zEnd;
|
|
|
|
|
|
|
|
|
|
Post::PostProcessPy::getBlockData(dataHash, blocks);
|
|
|
|
|
Post::PostProcessPy::createStreamLine(pID, dataHash, sname, svector, start, end, seeds, maxLength,
|
|
|
|
|
initStep, minStep, maxStep, stepNumber, direction, isPointData);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI createCalaulate(int pID, char *blocks, char *name, char *func,
|
|
|
|
|
char *scalars, char *vectors, bool isPoint)
|
|
|
|
|
{
|
|
|
|
|
QString sname = QString(name);
|
|
|
|
|
QString sfunc = QString(func);
|
|
|
|
|
QString scalar = QString(scalars);
|
|
|
|
|
QString vector = QString(vectors);
|
|
|
|
|
QStringList scalarList{};
|
|
|
|
|
if (!scalar.isEmpty())
|
|
|
|
|
scalarList = scalar.split(",");
|
|
|
|
|
QStringList vectorList{};
|
|
|
|
|
if (!vector.isEmpty())
|
|
|
|
|
vectorList = vector.split(",");
|
|
|
|
|
QMultiHash<int, int> dataHash;
|
|
|
|
|
|
|
|
|
|
Post::PostProcessPy::getBlockData(dataHash, blocks);
|
|
|
|
|
Post::PostProcessPy::createCalaulate(pID, dataHash, sname, sfunc, scalarList, vectorList, isPoint);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI createReflection(int pID, char *blocks, char *name, int plane, double center)
|
|
|
|
|
{
|
|
|
|
|
QString sname = QString(name);
|
|
|
|
|
QMultiHash<int, int> dataHash;
|
|
|
|
|
|
|
|
|
|
Post::PostProcessPy::getBlockData(dataHash, blocks);
|
|
|
|
|
Post::PostProcessPy::createReflection(pID, dataHash, sname, plane, center);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI savePostImage(int id, char *file)
|
|
|
|
|
{
|
|
|
|
|
QString sfile = QString(file);
|
|
|
|
|
Post::PostProcessPy::savePostImage(id, sfile);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI setDisplayMode(int id, int type)
|
|
|
|
|
{
|
|
|
|
|
Post::PostProcessPy::setDisplayMode(id, type);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI setBlockColor(char *blocks, char *name, int type, int component, double red, double green, double blue, bool isVariable)
|
|
|
|
|
{
|
|
|
|
|
QString vName = QString(name);
|
|
|
|
|
QMultiHash<int, int> dataHash;
|
|
|
|
|
Post::PostProcessPy::getBlockData(dataHash, blocks);
|
|
|
|
|
Post::PostProcessPy::setBlockColor(dataHash, vName, type, component, red, green, blue, isVariable);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI runAnimation(int pID, int index)
|
|
|
|
|
{
|
|
|
|
|
Post::PostProcessPy::runAnimation(pID, index);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI firstFrame(int pID)
|
|
|
|
|
{
|
|
|
|
|
Post::PostProcessPy::firstFrame(pID);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI proviousFrame(int pID)
|
|
|
|
|
{
|
|
|
|
|
Post::PostProcessPy::proviousFrame(pID);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI nextFrame(int pID)
|
|
|
|
|
{
|
|
|
|
|
Post::PostProcessPy::nextFrame(pID);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI lastFrame(int pID)
|
|
|
|
|
{
|
|
|
|
|
Post::PostProcessPy::lastFrame(pID);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI stopAnimation(int pID, int index)
|
|
|
|
|
{
|
|
|
|
|
Post::PostProcessPy::stopAnimation(pID, index);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI savePostAnimation(int id, char *file, int fps)
|
|
|
|
|
{
|
|
|
|
|
QString sfile = QString(file);
|
|
|
|
|
Post::PostProcessPy::savePostAnimation(id, file, fps);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void POSTINTERFACEAPI editClip(int id, char *blocks, char *name, double xOri, double yOri,
|
|
|
|
|
double zOri, double xNor, double yNor, double zNor, bool out)
|
|
|
|
|
{
|
|
|
|
|
QString sname = QString(name);
|
|
|
|
|
QMultiHash<int, int> dataHash;
|
|
|
|
|
|
|
|
|
|
double ori[3]{0};
|
|
|
|
|
double nor[3]{0};
|
|
|
|
|
ori[0] = xOri;
|
|
|
|
|
ori[1] = yOri;
|
|
|
|
|
ori[2] = zOri;
|
|
|
|
|
nor[0] = xNor;
|
|
|
|
|
nor[1] = yNor;
|
|
|
|
|
nor[2] = zNor;
|
|
|
|
|
|
|
|
|
|
Post::PostProcessPy::getBlockData(dataHash, blocks);
|
|
|
|
|
Post::PostProcessPy::editClip(id, dataHash, sname, ori, nor, out);
|
|
|
|
|
}
|