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.

128 lines
4.2 KiB
C++

#include "FITKCFDPostSteady.h"
#include "FITKAlgDatReader.h"
#include "FITKAlgPltReader.h"
#include "FITKAlgCGNSReader.h"
#include "FITK_Component/FITKRenderWindowVTK/FITKGraphObjectVTK.h"
#include <vtkDataSetReader.h>
#include <vtkAlgorithm.h>
#include <vtkAlgorithm.h>
#include <vtkActor.h>
#include <vtkDataSetMapper.h>
#include <vtkLookupTable.h>
#include <vtkUnstructuredGrid.h>
#include <QFile>
namespace Interface
{
FITKCFDPostSteady::FITKCFDPostSteady(QString fileType) :
_fileType(fileType)
{
if (fileType == "vtk") {
_dataReader = vtkDataSetReader::New();
}
else if (fileType == "cgns") {
_dataReader = FITKAlgCGNSReader::New();
}
else if (fileType == "dat") {
_dataReader = FITKAlgDatReader::New();
}
else if (fileType == "plt") {
_dataReader = FITKAlgPltReader::New();
}
if (_dataReader == nullptr)return;
vtkDataSetMapper* mapper = vtkDataSetMapper::New();
mapper->SetScalarVisibility(false);
mapper->SetLookupTable(_lookUpTable);
mapper->SetInterpolateScalarsBeforeMapping(true);
mapper->SetInputConnection(_dataReader->GetOutputPort());
_mappers.append(mapper);
}
FITKCFDPostSteady::~FITKCFDPostSteady()
{
if (_dataReader) {
_dataReader->Delete();
_dataReader = nullptr;
}
}
FITKPostDataType FITKCFDPostSteady::getPostDataType()
{
return FITKPostDataType::Post_Steady;
}
void FITKCFDPostSteady::setFile(QString & fileName)
{
if (_mappers.isEmpty())return;
_fileName = fileName;
if (_fileName.isEmpty())return;
QByteArray ba = fileName.toLocal8Bit();
char* cstr = ba.data();
if (_fileType == "vtk") {
vtkDataSetReader* dataSetReader = vtkDataSetReader::SafeDownCast(_dataReader);
if (dataSetReader == nullptr)return;
dataSetReader->SetFileName(cstr);
dataSetReader->ReadAllScalarsOn();
dataSetReader->ReadAllVectorsOn();
dataSetReader->ReadAllTensorsOn();
dataSetReader->ReadAllFieldsOn();
dataSetReader->ReadAllColorScalarsOn();
dataSetReader->ReadAllNormalsOn();
dataSetReader->ReadAllTCoordsOn();
}
else if (_fileType == "cgns") {
FITKAlgCGNSReader* datReader = dynamic_cast<FITKAlgCGNSReader*>(_dataReader);
if (datReader == nullptr)return;
datReader->setFileName(_fileName);
}
else if (_fileType == "dat") {
FITKAlgDatReader* datReader = dynamic_cast<FITKAlgDatReader*>(_dataReader);
if (datReader == nullptr)return;
datReader->setFileName(_fileName);
}
else if (_fileType == "plt") {
FITKAlgPltReader* datReader = dynamic_cast<FITKAlgPltReader*>(_dataReader);
if (datReader == nullptr)return;
datReader->setFileName(_fileName);
}
}
vtkDataSet* FITKCFDPostSteady::getOutput()
{
if (_dataReader == nullptr)return nullptr;
if (_fileType == "vtk") {
vtkDataSetReader* dataSetReader = vtkDataSetReader::SafeDownCast(_dataReader);
if (dataSetReader == nullptr)return nullptr;
return dataSetReader->GetOutput();
}
else if (_fileType == "cgns") {
FITKAlgCGNSReader* dataSetReader = FITKAlgCGNSReader::SafeDownCast(_dataReader);
if (dataSetReader == nullptr)return nullptr;
return dataSetReader->GetOutput();
}
else if (_fileType == "dat") {
FITKAlgDatReader* datReader = dynamic_cast<FITKAlgDatReader*>(_dataReader);
if (datReader == nullptr)return nullptr;
return datReader->GetOutput();
}
else if (_fileType == "plt") {
FITKAlgPltReader* datReader = dynamic_cast<FITKAlgPltReader*>(_dataReader);
if (datReader == nullptr)return nullptr;
return datReader->GetOutput();
}
return nullptr;
}
vtkAlgorithmOutput * FITKCFDPostSteady::getOutputPort()
{
if (_dataReader == nullptr)return nullptr;
return _dataReader->GetOutputPort();
}
}