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.

90 lines
2.6 KiB
C++

#include "FITKCFDPostDeform.h"
#include "FITKCFDPostData.h"
#include "FITKCFDPost3DManager.h"
#include "FITK_Kernel/FITKAppFramework/FITKAppFramework.h"
#include "FITK_Kernel/FITKAppFramework/FITKGlobalData.h"
#include "FITK_Interface/FITKVTKAlgorithm/FITKDeformFilter.h"
#include <vtkUnstructuredGrid.h>
#include <vtkDataSetMapper.h>
namespace Interface
{
FITKCFDPostDeform::FITKCFDPostDeform(int parentID)
{
_CFDPostParentID = parentID;
Interface::FITKCFDPost3DManager* dataManger = FITKAPP->getGlobalData()->getPostData<Interface::FITKCFDPostData>()->getPostDataManager();
if (dataManger == nullptr)return;
Interface::FITKAbstractCFDPostData* parentData = dataManger->getDataByID(_CFDPostParentID);
if (parentData == nullptr)return;
_deformFilter = FITKDeformFilter::New();
_deformFilter->SetInputConnection(parentData->getOutputPort());
vtkDataSetMapper* mapper = vtkDataSetMapper::New();
mapper->SetInputConnection(_deformFilter->GetOutputPort());
_mappers.append(mapper);
}
FITKCFDPostDeform::~FITKCFDPostDeform()
{
if (_deformFilter) {
_deformFilter->Delete();
_deformFilter = nullptr;
}
}
FITKPostDataType FITKCFDPostDeform::getPostDataType()
{
return FITKPostDataType::Post_Deform;
}
vtkDataSet* FITKCFDPostDeform::getOutput()
{
return _deformFilter->GetOutput();
}
void FITKCFDPostDeform::setDeformFactor(const double fac)
{
_deformFactor = fac;
if (_deformFilter)
{
double cd = _deformFilter->GetScaleFactor();
double d = _unDeformFactor + _deformFactor;
//变形一致,不进行更新操作
if (fabs(d - cd) < 1e-9) return;
_deformFilter->SetScaleFactor(d);
}
}
double FITKCFDPostDeform::getDeformFactor()
{
return _deformFactor;
}
void FITKCFDPostDeform::setUnDeformFactor(const double fac)
{
_unDeformFactor = fac;
}
double FITKCFDPostDeform::getUnDeformFactor()
{
return _unDeformFactor;
}
void FITKCFDPostDeform::setDeformVariable(const QString & va)
{
if (_deformFilter == nullptr) return;
//变量相同不进行操作
QString cv = this->getDeformVariable();
if (cv == va) return;
QByteArray ba = va.toLocal8Bit();
_deformFilter->SetDeformArrayName(ba.data());
}
QString FITKCFDPostDeform::getDeformVariable()
{
return QString::fromLocal8Bit(_deformFilter->GetDeformArrayName());
}
}