/*****************************************************************//** * @file FITKAbsGeoModelOperLine.h * @brief 抽象线操作类 * * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-19 *********************************************************************/ #ifndef FITKABSGEOMODELOPERLINE_H #define FITKABSGEOMODELOPERLINE_H #include "FITKInterfaceGeometryAPI.h" #include "FITKAbsGeoCommand.h" namespace Interface { class FITKAbsGeoShapeAgent; /** * @brief 抽象线操作类 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-19 */ class FITKInterfaceGeometryAPI FITKAbsGeoModelOperLine : public FITKAbsGeoCommand { public: /** * @brief 线操作类型 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-19 */ enum GeoLineOperType { GBTNone, GBTMerge, GBTSplitByMiddlePosition, GBTSplitByAngle, }; public: FITKAbsGeoModelOperLine() = default; virtual ~FITKAbsGeoModelOperLine() = default; FITKGeoEnum::FITKGeometryComType getGeometryCommandType() override; /** * @brief 添加操作对象 * @param geoCommandID:操作对象 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-19 */ void add(VirtualShape* geoCommandID); /** * @brief 添加多个操作对象 * @param geoCommandIDs:操作对象链表 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-19 */ void add(QList geoCommandIDs); /** * @brief 移除操作对象 * @param index:操作对象 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-19 */ 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(GeoLineOperType t); /** * @brief 设置类型 * @return 返回操作类型 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-26 */ FITKAbsGeoModelOperLine::GeoLineOperType getType(); /** * @brief 获取虚拓扑图形 * @param geoCommand:操作对象 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-19 */ QList getVShapes(); /** * @brief 获取操作对象ID列表 * @return 操作对象列表 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-19 */ QList getModelOperLinesID(); /** * @brief 设置角度 * @param angle:角度 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-19 */ void setAngle(double angle); /** * @brief 获取角度 * @return 角度 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-19 */ double getAngle(); protected: /** * @brief 线操作类型 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-19 */ GeoLineOperType _lineOperType{ GBTNone }; /** * @brief 操作对象ID列表 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-19 */ QList m_tempVShapes{}; /** * @brief 角度 根据角度分割时使用 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-19 */ double _angle = 0; }; /** * @brief 抽象类 合并线数据结构 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-19 */ class FITKInterfaceGeometryAPI FITKAbsGeoModelMergeOperLine : public FITKAbsGeoModelOperLine { public: FITKAbsGeoModelMergeOperLine() = default; virtual ~FITKAbsGeoModelMergeOperLine() = default; /** * @brief 获取几何命令类型 * @param geoCommandID:操作对象 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-09-04 */ FITKGeoEnum::FITKGeometryComType getGeometryCommandType() override; }; /** * @brief 抽象类 线中点分割操作数据结构 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-19 */ class FITKInterfaceGeometryAPI FITKAbsGeoModelMiddleOperLine : public FITKAbsGeoModelOperLine { public: FITKAbsGeoModelMiddleOperLine() = default; virtual ~FITKAbsGeoModelMiddleOperLine() = default; /** * @brief 获取几何命令类型 * @param geoCommandID:操作对象 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-09-04 */ FITKGeoEnum::FITKGeometryComType getGeometryCommandType() override; }; /** * @brief 抽象类 线角度分割操作数据结构 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-08-19 */ class FITKInterfaceGeometryAPI FITKAbsGeoModelAngleOperLine : public FITKAbsGeoModelOperLine { public: FITKAbsGeoModelAngleOperLine() = default; virtual ~FITKAbsGeoModelAngleOperLine() = default; /** * @brief 获取几何命令类型 * @param geoCommandID:操作对象 * @author fulipeng (fulipengqd@yeah.net) * @date 2024-09-04 */ FITKGeoEnum::FITKGeometryComType getGeometryCommandType() override; }; } #endif // !FITKABSGEOMODELOPERLINE_H