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.

125 lines
3.3 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**********************************************************************
* @file FITKAlgDatReader.h
* @brief Tecplot中dat文件格式读取
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*********************************************************************/
#ifndef _FITKAlgDatReader_H_
#define _FITKAlgDatReader_H_
#include "FITKInterfaceCFDPostAPI.h"
#include <vtkSmartPointer.h>
#include <vtkMultiBlockDataSetAlgorithm.h>
#include <QHash>
#include <QStringList>
#include <vtkDataSetAlgorithm.h>
#include <vtkUnstructuredGridAlgorithm.h>
class vtkMultiBlockDataSet;
class vtkAlgorithmOutput;
class vtkInformation;
class vtkDataSet;
namespace Interface
{
/**
* @brief 补充属性信息结构体
* @since Version: 1.0.0
**/
typedef struct tpArrayInfo
{
int components;
int tuples;
} tArrayInfo;
class FITKInterfaceCFDPostAPI FITKAlgDatReader : public vtkUnstructuredGridAlgorithm
{
public:
/**
* @brief 创建Plot3DReader对象
* @since Version: 1.0.0
**/
static FITKAlgDatReader *New();
/**
* @brief 信息打印函数
* @since Version: 1.0.0
**/
void PrintSelf(ostream &os, vtkIndent indent);
void setFileName(QString fileName);
QString getFileName();
int getNumberOfBlocks();
void setVisible(int blockIndex, bool vis);
QStringList getBlockNames();
QStringList getBlockBCTypes();
/**
* @brief 设置输出信息
* @since Version: 1.0.0
**/
int FillOutputPortInformation(int nPort, vtkInformation *info);
protected:
FITKAlgDatReader();
~FITKAlgDatReader();
/**
* @brief 请求数据函数
* @note 需重写
* @since Version: 1.0.0
**/
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
/**
* @brief 处理请求函数
* @note 需重写
* @since Version: 1.0.0
**/
int ProcessRequest(vtkInformation *request, vtkInformationVector **inputVector,
vtkInformationVector *outputVector);
private:
/**
* @note 防止拷贝使类创建统一走New()函数
* @since Version: 1.0.0
**/
FITKAlgDatReader(const FITKAlgDatReader &);
void operator=(const FITKAlgDatReader &);
/**
* @brief 递归遍历数据块
* @since Version: 1.0.0
**/
void getBlocks(vtkDataObject *blockData);
protected:
/**
* @brief 文件名称
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
QString _fileName = "";
private:
/**
* @brief 拆分成的数据链表
* @note 将multiblock拆分成dataset数据,存入链表
* @since Version: 1.0.0
**/
QList<vtkDataSet *> _blockList;
/**
* @brief 属性全集哈希
* @note QString-属性名称, int-属性维度
* @since Version: 1.0.0
**/
QHash<QString, tArrayInfo> _attributesPointList;
QHash<QString, tArrayInfo> _attributesCellList;
QList<bool> _visibleStates{};
QStringList _blockNames{};
};
}
#endif