/*****************************************************************//** * @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 geoCommandID:操作对象ID * @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 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 getVShapes(); /** * @brief 获取操作对象列表 * @return 操作对象列表 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-21 */ QList 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 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