1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#ifndef DIST_DOT_PROCESS
#define DIST_DOT_PROCESS
 
class CDistDotProcess
{
public:
    CDistDotProcess();
    CDistDotProcess(DimensionDir eDir, int id);
    ~CDistDotProcess();
 
public:
    //1. get id
    int getID(void);
 
    //2. Ö´Ðмì²â
    int Execute(DimensionDir eDir, MeasureInfo inf, Point2I offset);
 
    //3. ÐòÁл¯²ÎÊýºÍ·´ÐòÁкŲÎÊý
    int Serialized(void* pBuffer, int size);
    int Deserialized(void* pBuffer, int size);
 
    //4. ÉèÖÃROIÇøÓò
    void setRoiRegion(HalconCpp::HObject &hRegion);
 
    //5. ÉèÖòâÁ¿Ö±Ïß
    void setLineRegion(HalconCpp::HObject &hRegion);
 
    //6. »ñȡλÖÃ
    Point2I getPose(void);
 
    //7. ÉèÖÃλÖÃ
    void setPoint(Point2I pt, int nType);
 
public:
    DimensionDir m_eDir;                 //
    CString m_strName;                   //Name
    int m_idxRefer;                      //index
    int m_nRef;                          //Pos+
    int m_nRef_;                         //Pos-
 
    int m_distMode;
    int m_minValue;
    int m_maxValue;
    int m_ngType;
    int m_incValue;
 
    int m_distMode2;
    int m_minValue2;
    int m_maxValue2;
    int m_ngType2;
    int m_incValue2;
 
    Point2D m_ptMeasureResult;
    Point2D m_ptNearResult;
    Point2D m_ptMatchResult;
    Point2I m_locPointResult;
 
    HalconCpp::HObject m_hRegion;
    HalconCpp::HObject m_hLineRegion;
 
    std::vector<NgDotInfo> m_nNgInfo;
 
private:
    int m_id;            //ID
 
    double m_xPos;
    double m_yPos;
    
    double m_cx;
    double m_cy;
    double m_angle;
    double m_len1;
    double m_len2;
 
    double m_xMmvsp;
    double m_yMmvsp;
    Point2I m_topPoint;
    Point2I m_botPoint;
    Point2I m_topMark;
    Point2I m_botMark;
 
private:
    //1. ²éÕÒ²éÕÒ
    int findPairEdge(DimensionDir eDir, MeasureInfo infMeasure, Point2I offset);
 
    //2. ·ÖÎöÇøÓò
    Line2D GetTargeLine(void);
 
    //3. »ñȡĿ±êµãµÄλÖÃ
    int getKeyPose(Point2I offset);
 
    //4. ½á¹ûÅжÏ
    void JudgeResult(void);
 
    //5. ¼ì²âµÚÒ»¸öÅжÏ
    void JudgeFirstResult(void);
 
    //6. ¼ì²âµÚ¶þ¸öȱÏÝ
    void JudgeSecondResult(void);
 
    //7. »ñÈ¡·Ö±æÂÊ
    void getMmvsp(DimensionDir eDir);
};
 
#endif