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_Component/FITKGeoCompOCC/FITKOCCShapeTriangulate.h

108 lines
3.1 KiB
C++

/**
*
* @file FITKOCCShapeTriangulate.h
* @brief OCC模型三角化声明
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-10
*
*/
#ifndef _FITK_OCCSHAPE_TRIANGLE_H___
#define _FITK_OCCSHAPE_TRIANGLE_H___
class TopoDS_Shape;
namespace Interface
{
class FITKVirtualTopoManager;
class FITKGeometryMeshVS;
}
namespace OCC
{
class FITKAbstractOCCModel;
/**
* @brief occ模型三角化
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-10
*/
class FITKOCCShapeTriangulate
{
public:
/**
* @brief Construct a new FITKOCCShapeTriangulate object
* @param[i] occModel occ模型
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-10
*/
explicit FITKOCCShapeTriangulate(FITKAbstractOCCModel* occModel);
/**
* @brief Destroy the FITKOCCShapeTriangulate object
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-10
*/
virtual ~FITKOCCShapeTriangulate() = default;
/**
* @brief 三角化
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-10
*/
void triangulate();
private:
/**
* @brief 离散点模型
* @param[i] id 虚拟拓扑对象id
* @param[i] shape 点模型
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-10
*/
void discretePoint(const int id, const TopoDS_Shape& shape);
/**
* @brief 离散边
* @param[i] id 虚拟拓扑对象id
* @param[i] shape 边模型
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-10
*/
void discreteEdge(const int id, const TopoDS_Shape& shape);
/**
* @brief 离散面模型
* @param[i] id 虚拟拓扑对象id
* @param[i] shape 面模型
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-10
*/
void discreteFace(const int id, const TopoDS_Shape& shape);
/**
* @brief 三角化边和面
* @param[i] shape 尺寸形状
* @param[i] factor 容差
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-10
*/
void triangulate(const TopoDS_Shape & shape, double factor= 0.001);
private:
/**
* @brief OCC模型数据。
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-08-13
*/
FITKAbstractOCCModel* _occModel{ nullptr };
/**
* @brief 拓扑管理器
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-10
*/
Interface::FITKVirtualTopoManager* _vtmanager{};
/**
* @brief 可视化数据对象,存储三角形
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-08-10
*/
Interface::FITKGeometryMeshVS* _meshVS{};
};
}
#endif