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.

153 lines
4.5 KiB
C++

/**********************************************************************
* @file FITKAlgPltReader.h
* @brief plt文件读取算法
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*********************************************************************/
#ifndef READDATATECPLT_H
#define READDATATECPLT_H
#include "FITKInterfaceCFDPostAPI.h"
#include <QString>
#include <QStringList>
#include <QHash>
#include <vtkUnstructuredGridAlgorithm.h>
namespace Interface
{
/**
* @brief plt文件读取算法
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
class FITKInterfaceCFDPostAPI FITKAlgPltReader : public vtkUnstructuredGridAlgorithm
{
public:
/**
* @brief 创建对象(静态)
* @return FITKAlgPltReader* 对象
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
static FITKAlgPltReader* New();
/**
* @brief 信息数据
* @param[o] os 输出
* @param[i] indent
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
void PrintSelf(ostream& os, vtkIndent indent) override;
/**
* @brief 设置文件名称
* @param[i] fileName 文件名称
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
void setFileName(QString fileName);
/**
* @brief 获取文件名称
* @return QString 文件名称
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
QString getFileName();
/**
* @brief 获取block的数量
* @return int 数量
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
int getNumberOfBlocks();
void setVisible(int blockIndex, bool vis);
QStringList getBlockNames();
//QStringList getBlockBCTypes();
int FillOutputPortInformation(int nPort, vtkInformation* info);
/**
* @brief 获取点数据
* @param[i] dataset 所要获取的数据对象
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
void getPointArray(vtkDataSet* dataset);
/**
* @brief 获取单元数据
* @param[i] dataset 所要获取的数据对象
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
void getCellArray(vtkDataSet* dataset);
/**
* @brief 获取数据块
* @param[i] block 所要获取的数据对象
* @param[i] cuttentName 数据块名称
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
void getBlocks(vtkDataObject* block, const char* cuttentName = "");
protected:
/**
* @brief 构造函数
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
FITKAlgPltReader();
/**
* @brief 析构函数
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
~FITKAlgPltReader();
int ProcessRequest(vtkInformation* request, vtkInformationVector** inputVector, vtkInformationVector* outputVector);
/**
* @brief 算法实现
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*);
protected:
/**
* @brief 文件名称
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
QString _fileName = "";
private:
/**
* @brief 数据块名称链表
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
QStringList _blockNames{};
/**
* @brief 数据块链表
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
QList<vtkDataSet*> _blockList;
QList<bool> _visibleStates{};
/**
* @brief 点数据组
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
QHash<QString, int*> _pointDataArray{};
/**
* @brief 单元数据组
* @author BaGuijun (baguijun@163.com)
* @date 2024-10-09
*/
QHash<QString, int*> _cellDataArray{};
};
}
#endif