#ifndef IYDISCHOLEPOSESTATUS_H #define IYDISCHOLEPOSESTATUS_H #include #include #include #include #include #include "IVisionApplicationStatus.h" // WorkStatus, WorkStatusToString 已在 IVisionApplicationStatus.h 中定义 // 砂轮盘孔信息结构体 struct DiscHoleInfo { // 孔中心点 double centerX = 0.0; double centerY = 0.0; double centerZ = 0.0; // 孔的法向量方向 double normDirX = 0.0; double normDirY = 0.0; double normDirZ = 0.0; DiscHoleInfo() = default; DiscHoleInfo(double cx, double cy, double cz, double nx, double ny, double nz) : centerX(cx), centerY(cy), centerZ(cz) , normDirX(nx), normDirY(ny), normDirZ(nz) {} DiscHoleInfo(const DiscHoleInfo&) = default; DiscHoleInfo& operator=(const DiscHoleInfo&) = default; }; // 砂轮盘架子信息结构体 struct DiscRackInfo { // 架子中心点 double centerX = 0.0; double centerY = 0.0; double centerZ = 0.0; // 姿态欧拉角(度) double roll = 0.0; double pitch = 0.0; double yaw = 0.0; DiscRackInfo() = default; DiscRackInfo(double cx, double cy, double cz, double r, double p, double yw) : centerX(cx), centerY(cy), centerZ(cz) , roll(r), pitch(p), yaw(yw) {} DiscRackInfo(const DiscRackInfo&) = default; DiscRackInfo& operator=(const DiscRackInfo&) = default; }; // 位置结构体(继承自 PositionData 模板) struct DiscHolePosition : public PositionData { DiscHolePosition() : PositionData() {} DiscHolePosition(double _x, double _y, double _z, double _roll, double _pitch, double _yaw) : PositionData(_x, _y, _z, _roll, _pitch, _yaw) {} DiscHolePosition(const DiscHolePosition&) = default; DiscHolePosition& operator=(const DiscHolePosition&) = default; DiscHolePosition(const PositionData& pos) : PositionData(pos) {} }; // 检测结果结构体 struct DetectionResult : public DetectionResultData { // 砂轮盘孔信息列表 std::vector discHoleInfoList; // 砂轮盘架子信息列表 std::vector discRackInfoList; bool success = true; QString message = "检测成功"; DetectionResult() = default; DetectionResult(const DetectionResult&) = default; DetectionResult& operator=(const DetectionResult&) = default; }; // 状态回调接口 class IYDiscHolePoseStatus : public IVisionApplicationStatus { public: virtual ~IYDiscHolePoseStatus() = default; }; Q_DECLARE_METATYPE(DiscHoleInfo) Q_DECLARE_METATYPE(DiscRackInfo) Q_DECLARE_METATYPE(DiscHolePosition) Q_DECLARE_METATYPE(DetectionResult) #endif // IYDISCHOLEPOSESTATUS_H