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.
271 lines
8.2 KiB
C++
271 lines
8.2 KiB
C++
/**********************************************************************
|
|
* @file FITKRegionGeometryRefine.h
|
|
* @brief 几何区域优化接口
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*********************************************************************/
|
|
#ifndef __FITKREGIONGEOMETRYREFINE_H__
|
|
#define __FITKREGIONGEOMETRYREFINE_H__
|
|
|
|
#include "FITKInterfaceMeshGenAPI.h"
|
|
#include "FITK_Kernel/FITKCore/FITKAbstractNDataObject.h"
|
|
#include "FITK_Kernel/FITKCore/FITKVarientParams.h"
|
|
#include "FITK_Kernel/FITKCore/FITKAbstractDataManager.hpp"
|
|
|
|
namespace Interface
|
|
{
|
|
class FITKAbsGeoCommand;
|
|
/**
|
|
* @brief 几何划分网格尺寸类
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-07-22
|
|
*/
|
|
class FITKInterfaceMeshGenAPI FITKRegionGeometryRefine :
|
|
public Core::FITKAbstractDataObject, public Core::FITKVarientParams
|
|
{
|
|
Q_OBJECT
|
|
FITKCLASS(Interface, FITKRegionGeometryRefine);
|
|
public:
|
|
/**
|
|
* @brief 完善类型
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
enum RefineModelType
|
|
{
|
|
RefineDistance,
|
|
RefineInside,
|
|
RefineOutside,
|
|
};
|
|
Q_ENUM(RefineModelType);
|
|
/**
|
|
* @brief 间隙类型
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
enum GapModelType
|
|
{
|
|
GapNone,
|
|
GapMixed,
|
|
GapInside,
|
|
GapOutside,
|
|
};
|
|
Q_ENUM(GapModelType);
|
|
/**
|
|
* @brief Construct a new FITKRegionGeometryRefine object
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-07-22
|
|
*/
|
|
explicit FITKRegionGeometryRefine() = default;
|
|
/**
|
|
* @brief Destroy the FITKRegionGeometryRefine object
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-07-22
|
|
*/
|
|
virtual ~FITKRegionGeometryRefine() = default;
|
|
/**
|
|
* @brief 设置几何Id
|
|
* @param[i] geoId 几何Id
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-07-23
|
|
*/
|
|
void setGeometryId(int geoId);
|
|
/**
|
|
* @brief 获取几何Id
|
|
* @return int
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-07-23
|
|
*/
|
|
int getGeometryId();
|
|
/**
|
|
* @brief 获取几何数据对象
|
|
* @return Interface::FITKAbsGeoCommand*
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-07-26
|
|
*/
|
|
Interface::FITKAbsGeoCommand* getGeometryModel();
|
|
/**
|
|
* @brief 设置是否限制优化区域
|
|
* @param[i] limit
|
|
* @return void
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
void setLimitRefinement(bool limit);
|
|
/**
|
|
* @brief 获取是否限制优化区域
|
|
* @return bool
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
bool getLimitRefineMent();
|
|
/**
|
|
* @brief 设置优化模式类型
|
|
* @param[i] refineType
|
|
* @return void
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
void setRefineModel(RefineModelType refineType);
|
|
/**
|
|
* @brief 获取优化模式类型
|
|
* @return RefineModelType
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
RefineModelType getRefineModel();
|
|
/**
|
|
* @brief 设置距离
|
|
* @param[i] distance
|
|
* @return void
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
void setDistance(double distance);
|
|
/**
|
|
* @brief 获取距离
|
|
* @return double
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
double getDistance();
|
|
/**
|
|
* @brief 设置级别
|
|
* @param[i] level
|
|
* @return void
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
void setLevel(int level);
|
|
/**
|
|
* @brief 获取级别
|
|
* @return int
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
int getLevel();
|
|
/**
|
|
* @brief 设置间隙模式
|
|
* @param[i] gapType
|
|
* @return void
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
void setGapRefineModel(GapModelType gapType);
|
|
/**
|
|
* @brief 获取间隙模式
|
|
* @return GapModelType
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
GapModelType getGapRefineModel();
|
|
/**
|
|
* @brief 设置网格在间隙的数量
|
|
* @param[i] cells
|
|
* @return void
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
void setCellsInGapNum(int cells);
|
|
/**
|
|
* @brief 获取网格在间隙的数量
|
|
* @return int
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
int getCellsInGapNum();
|
|
/**
|
|
* @brief 设置最大间隙级别
|
|
* @param[i] maxGap
|
|
* @return void
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
void setMaxGapLevel(int maxGap);
|
|
/**
|
|
* @brief 获取最大间隙级别
|
|
* @return int
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
int getMaxGapLevel();
|
|
|
|
private:
|
|
/**
|
|
* @brief 几何Id
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-07-22
|
|
*/
|
|
int m_geometryId{ 0 };
|
|
/**
|
|
* @brief 是否进行优化限制
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
bool m_limitRefinement{ false };
|
|
/**
|
|
* @brief 优化模式
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
RefineModelType m_refineModel{ RefineModelType::RefineDistance };
|
|
/**
|
|
* @brief 距离
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
double m_distance{ 0.0 };
|
|
/**
|
|
* @brief 级别
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
int m_level{ 0 };
|
|
/**
|
|
* @brief 间隙模式
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
GapModelType m_gapModel{ GapModelType::GapNone };
|
|
/**
|
|
* @brief 网格在间隙
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
int m_cellInGapNum{ 4 };
|
|
/**
|
|
* @brief 最大间隙级别
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-09-02
|
|
*/
|
|
int m_maxGapLevel{ 8 };
|
|
};
|
|
}
|
|
|
|
namespace Interface
|
|
{
|
|
/**
|
|
* @brief 几何划分网格管理类
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-07-22
|
|
*/
|
|
class FITKInterfaceMeshGenAPI FITKRegionGeometryRefineManager :
|
|
public Core::FITKAbstractDataManager<FITKRegionGeometryRefine>
|
|
{
|
|
public:
|
|
/**
|
|
* @brief Construct a new FITKGeometryMeshSizeManager object
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-07-22
|
|
*/
|
|
explicit FITKRegionGeometryRefineManager() = default;
|
|
/**
|
|
* @brief Destroy the FITKGeometryMeshSizeManager object
|
|
* @author liuzhonghua (liuzhonghuaszch@163.com)
|
|
* @date 2024-07-22
|
|
*/
|
|
virtual ~FITKRegionGeometryRefineManager() = default;
|
|
};
|
|
}
|
|
|
|
#endif |