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.
AppFlow/FITK_Interface/FITKInterfaceMeshGen/FITKMeshGenInterface.h

219 lines
6.8 KiB
C++

/**
*
* @file FITKMeshGenInterface.h
* @brief 网格生成接口类
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-17
*
*/
#ifndef _FITKMESHGEN_INTERFACE_H___
#define _FITKMESHGEN_INTERFACE_H___
#include "FITKInterfaceMeshGenAPI.h"
#include "FITK_Kernel/FITKCore/FITKCoreMacros.h"
#include <QMutex>
#include <QObject>
namespace Interface
{
//前置声明
class FITKGlobalMeshSizeInfo;
class FITKRegionMeshSizeManager;
class FITKAbstractMeshSizeInfoGenerator;
class FITKAbstractGeometryMeshSizeGenerator;
class FITKAbstractMesherDriver;
class FITKAbstractMeshProcessor;
class FITKGeometryMeshSizeManager;
class FITKZonePointManager;
class FITKRegionGeometryRefineManager;
class FITKMeshGenInterfaceDeleator;
/**
* @brief 网格生成接口类
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
class FITKInterfaceMeshGenAPI FITKMeshGenInterface : public QObject
{
friend FITKMeshGenInterfaceDeleator;
//声明为单例
DeclSingleton(FITKMeshGenInterface);
public:
/**
* @brief 获取全局网格尺寸信息
* @return FITKGlobalMeshSizeInfo*
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
FITKGlobalMeshSizeInfo* getGlobalMeshSizeInfo();
/**
* @brief 注册网格尺寸生成器
* @param genator
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
void regMeshSizeGenerator(FITKAbstractMeshSizeInfoGenerator* genator);
/**
* @brief 获取网格尺寸生成器
* @return FITKAbstractGeometryMeshSizeGenerator*
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
FITKAbstractMeshSizeInfoGenerator* getMeshSizeGenerator();
/**
* @brief 注册几何网格尺寸生成器
* @param genator FITKAbstractMeshSizeInfoGenerator*
* @author liuzhonghua (liuzhonghuaszch@163.com)
* @date 2024-07-24
*/
void regGeometryMeshSizeGenerator(FITKAbstractGeometryMeshSizeGenerator* genator);
/**
* @brief 获取几何网格尺寸生成器
* @return FITKAbstractGeometryMeshSizeGenerator*
* @author liuzhonghua (liuzhonghuaszch@163.com)
* @date 2024-07-24
*/
FITKAbstractGeometryMeshSizeGenerator* getGeometryMeshSizeGenerator();
/**
* @brief 注册网格生成驱动器
* @param driver
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
void regMesherDriver(FITKAbstractMesherDriver* driver);
/**
* @brief 获取网格生成驱动器
* @return FITKAbstractMesherDriver*
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
FITKAbstractMesherDriver* getMesherDriver();
/**
* @brief 注册网格处理器
* @param p
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
void regMeshProcessor(FITKAbstractMeshProcessor* p );
/**
* @brief 获取网格处理器
* @return FITKAbstractMeshProcessor*
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
FITKAbstractMeshProcessor* getMeshProcessor();
/**
* @brief 获取区域网格尺寸管理器
* @return FITKRegionMeshSizeManager*
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
FITKRegionMeshSizeManager* getRegionMeshSizeMgr();
/**
* @brief 获取几何网格区域尺寸管理器
* @return FITKGeometryMeshSizeManager*
* @author liuzhonghua (liuzhonghuaszch@163.com)
* @date 2024-07-24
*/
FITKGeometryMeshSizeManager* getGeometryMeshSizeManager();
/**
* @brief 获取网格区域材料点
* @return FITKAbstractGeometryMeshSizeGenerator*
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-26
*/
FITKZonePointManager* getZonePointManager();
/**
* @brief 获取几何区域优化管理器
* @return FITKRegionGeometryRefineManager*
* @author liuzhonghua (liuzhonghuaszch@163.com)
* @date 2024-09-02
*/
FITKRegionGeometryRefineManager* getRegionGeometryRefineManager();
private:
/**
* @brief 初始化
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
void initialize();
/**
* @brief 析构
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
void finalize();
private:
/**
* @brief 网格尺寸生成器
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
FITKAbstractMeshSizeInfoGenerator* _meshSizeGenor{};
/**
* @brief 几何网格尺寸生成器
* @author liuzhonghua (liuzhonghuaszch@163.com)
* @date 2024-07-24
*/
FITKAbstractGeometryMeshSizeGenerator* _geoMeshSizeGenor{};
/**
* @brief 网格尺寸生成驱动器
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
FITKAbstractMesherDriver* _mesherDriver{};
/**
* @brief 网格文件处理器
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
FITKAbstractMeshProcessor* _meshProcessor{};
/**
* @brief 全局网格尺寸信息
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
FITKGlobalMeshSizeInfo* _globalSize{};
/**
* @brief 区域网格尺寸管理器
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
FITKRegionMeshSizeManager* _regionMeshMgr{};
/**
* @brief 几何网格区域尺寸管理器
* @author liuzhonghua (liuzhonghuaszch@163.com)
* @date 2024-07-24
*/
FITKGeometryMeshSizeManager* _geoMeshSizeMgr{};
/**
* @brief 网格区域分点生成器
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-26
*/
FITKZonePointManager* _zonePointsManager{};
/**
* @brief 几何区域优化管理器
* @author liuzhonghua (liuzhonghuaszch@163.com)
* @date 2024-09-02
*/
FITKRegionGeometryRefineManager* _regionGeoRefineMgr{};
};
class FITKMeshGenInterfaceDeleator
{
public:
explicit FITKMeshGenInterfaceDeleator() = default;
virtual ~FITKMeshGenInterfaceDeleator();
};
}
#endif