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/FITKInterfaceGeometry/FITKAbsGeoShapeAgent.h

145 lines
4.2 KiB
C

/**
*
* @file FITKAbsGeoShapeAgent.h
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-30
*
*/
#ifndef _FITK_ABS_GEOSHAPE_AGENT_H___
#define _FITK_ABS_GEOSHAPE_AGENT_H___
#include "FITK_Interface/FITKInterfaceModel/FITKAbstractGeoModel.h"
#include "FITKInterfaceGeometryAPI.h"
#include "FITKGeoEnum.h"
namespace Interface
{
class FITKAbsGeoCommand;
class FITKVirtualTopoManager;
class FITKGeometryMeshVS;
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-30
*/
class FITKInterfaceGeometryAPI FITKAbsGeoShapeAgent :
public Interface::FITKAbstractGeoModel
{
public:
/**
* @brief Construct a new FITKAbsGeoShapeAgent object
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-30
*/
explicit FITKAbsGeoShapeAgent(FITKAbsGeoCommand* command);
/**
* @brief Destroy the FITKAbsGeoShapeAgent object
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-30
*/
virtual ~FITKAbsGeoShapeAgent() = 0;
/**
* @brief
* @return FITKGeoEnum::FITKGeoEngine
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-12
*/
virtual FITKGeoEnum::FITKGeoEngine getGeoEngine() = 0;
/**
* @brief
* @return FITKAbsGeoCommand
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-31
*/
FITKAbsGeoCommand* getGeoCommand();
template <class T>
/**
* @brief
* @return T*
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-31
*/
T* getTGeoCommand()
{
return dynamic_cast<T*> (_command);
}
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-08-13
*/
virtual void buildVirtualTopo() = 0;
/**
* @brief
* @return FITKVirtualTopoManager*
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-08-13
*/
FITKVirtualTopoManager* getVirtualTopoManager();
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-08-13
*/
virtual void triangulation() = 0;
/**
* @brief
* @return FITKGeometryMeshVS*
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-08-13
*/
FITKGeometryMeshVS* getMeshVS();
/**
* @brief
* @return int
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-08-13
*/
virtual int shapeHashCode() = 0;
/**
* @brief STL
* @param filePath
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-08-22
*/
virtual bool writeSTLFile(QString filePath) override;
/**
* @brief []
* @param points[]
* @param normal
* @author ChengHaotian (yeguangbaozi@foxmail.com)
* @date 2024-08-22
*/
static void GetFaceNormal(QList<QVector3D> & points, double* normal);
protected:
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-07-31
*/
FITKAbsGeoCommand* _command{};
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-08-13
*/
FITKVirtualTopoManager* _vtmanager{};
/**
* @brief
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-08-13
*/
FITKGeometryMeshVS* _meshVS{};
};
}
#endif