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

213 lines
5.9 KiB
C

/*****************************************************************//**
* @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<VirtualShape*> 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<VirtualShape*> getVShapes();
/**
* @brief ID
* @return
* @author fulipeng (fulipengqd@yeah.net)
* @date 2024-08-19
*/
QList<int> 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<VirtualShape*> 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