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/FITKAbsGeoModelOperFace.h

241 lines
6.6 KiB
C

/*****************************************************************//**
* @file FITKAbsGeoModelOperFace.h
* @brief
*
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-21
*********************************************************************/
#ifndef FITKABSGEOMODELOPERFACE_H
#define FITKABSGEOMODELOPERFACE_H
#include "FITKInterfaceGeometryAPI.h"
#include "FITKAbsGeoCommand.h"
namespace Interface
{
class FITKAbsGeoShapeAgent;
/**
* @brief
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-21
*/
class FITKInterfaceGeometryAPI FITKAbsGeoModelOperFace : public FITKAbsGeoCommand
{
public:
/**
* @brief
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-21
*/
enum GeoFaceOperType
{
GBTNone,
GBTFillHoles, ///填补孔洞
GBTFillGaps, ///填补缝隙
GBTDeleteFloatingEdge, ///删除悬浮边
GBTImprintMapPointToFace, ///点映射到面
GBTImprintMapLineToFace, ///线映射到面
GBTImprintMapCircleToFace, ///圆映射到面
};
public:
FITKAbsGeoModelOperFace() = default;
virtual ~FITKAbsGeoModelOperFace() override = default;
/**
* @brief
* @param geoCommandIDID
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-21
*/
void add(VirtualShape* geoCommandID);
/**
* @brief
* @param geoCommandIDs
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-21
*/
void add(QList<VirtualShape*> geoCommandIDs);
/**
* @brief
* @param geoCommand
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-21
*/
void remove(int index);
/**
* @brief
* @param geoCommand
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-26
*/
void clear();
/**
* @brief
* @param t
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-26
*/
void setType(GeoFaceOperType t);
/**
* @brief
* @return
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-26
*/
FITKAbsGeoModelOperFace::GeoFaceOperType getType();
/**
* @brief
* @param geoCommand
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-19
*/
QList<VirtualShape*> getVShapes();
/**
* @brief
* @return
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-21
*/
QList<int> getModelOperFacesID();
/**
* @brief
* @return
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-23
*/
void setTolerance(double tolerance);
/**
* @brief
* @return
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-23
*/
double getTolerance();
protected:
/**
* @brief
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-21
*/
GeoFaceOperType _faceOperType{ GBTNone };
/**
* @brief
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-21
*/
QList<VirtualShape*> m_tempVShapes{};
/**
* @brief
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-23
*/
double _tolerance = 1e-2;
};
/**
* @brief
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-21
*/
class FITKInterfaceGeometryAPI FITKAbsGeoModelOperFaceFillGaps : public FITKAbsGeoModelOperFace
{
public:
FITKAbsGeoModelOperFaceFillGaps() = default;
~FITKAbsGeoModelOperFaceFillGaps() = default;
/**
* @brief
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-31
*/
FITKGeoEnum::FITKGeometryComType getGeometryCommandType() override;
protected:
};
/**
* @brief
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-21
*/
class FITKInterfaceGeometryAPI FITKAbsGeoModelOperFaceFillHoles : public FITKAbsGeoModelOperFace
{
public:
FITKAbsGeoModelOperFaceFillHoles() = default;
~FITKAbsGeoModelOperFaceFillHoles() = default;
/**
* @brief
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-31
*/
FITKGeoEnum::FITKGeometryComType getGeometryCommandType() override;
protected:
};
/**
* @brief
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-21
*/
class FITKInterfaceGeometryAPI FITKAbsGeoModelOperFaceDeleteFloatingEdge : public FITKAbsGeoModelOperFace
{
public:
FITKAbsGeoModelOperFaceDeleteFloatingEdge() = default;
~FITKAbsGeoModelOperFaceDeleteFloatingEdge() = default;
/**
* @brief
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-31
*/
FITKGeoEnum::FITKGeometryComType getGeometryCommandType() override;
/**
* @brief
* @param vface
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-31
*/
void setMFace(VirtualShape* vface);
/**
* @brief
* @return
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-31
*/
VirtualShape* getMFace();
protected:
/**
* @brief
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-31
*/
VirtualShape* m_face{};
};
}
#endif // !FITKAbsGeoModelOperFace_H