// CornerDistSetDlg.cpp : ʵÏÖÎļþ
|
//
|
|
#include "stdafx.h"
|
#include "BlVisionPro.h"
|
#include "CornerDistSetDlg.h"
|
#include "afxdialogex.h"
|
#include "VisionBufferPro.h"
|
#include "VisionSetDlg.h"
|
#include "VisionBufferPro.h"
|
#include "MeasureSetDlg.h"
|
|
// CCornerDistSetDlg ¶Ô»°¿ò
|
|
IMPLEMENT_DYNAMIC(CCornerDistSetDlg, CDialogEx)
|
|
CCornerDistSetDlg::CCornerDistSetDlg(CWnd* pParent /*=NULL*/)
|
: CDialogEx(IDD_DLG_DIST_CORNER, pParent)
|
, m_id(0)
|
, m_strName(_T("NULL"))
|
, m_refer(100)
|
, m_refer_(100)
|
, m_minValue(0)
|
, m_maxValue(0)
|
, m_minValue2(0)
|
, m_maxValue2(0)
|
, m_incValue(0)
|
, m_incValue2(0)
|
{
|
m_topMark.x = 0;
|
m_topMark.y = 0;
|
m_botMark.x = 0;
|
m_botMark.y = 0;
|
m_topPoint.x = 0;
|
m_topPoint.y = 0;
|
m_botPoint.x = 0;
|
m_botPoint.y = 0;
|
|
m_pos.x = 0;
|
m_pos.y = 0;
|
|
m_eDir = DIMENSION_NONE;
|
|
m_dotDist = NULL;
|
m_dot = NULL;
|
}
|
|
CCornerDistSetDlg::~CCornerDistSetDlg()
|
{
|
SaveDistCorner();
|
SaveDistDotProcess();
|
}
|
|
void CCornerDistSetDlg::DoDataExchange(CDataExchange* pDX)
|
{
|
CDialogEx::DoDataExchange(pDX);
|
DDX_Control(pDX, IDC_LIST_DIST_DOT, m_listCornerPoint);
|
DDX_Control(pDX, IDC_COMBOMK_FIRST_REFER_TYPE_DIST, m_combFrirtRefer); //First Refer
|
|
DDX_Text(pDX, IDC_EDIT_TOP_MARK_X_DIST, m_topMark.x); //Top Mark
|
DDX_Text(pDX, IDC_EDIT_TOP_MARK_Y_DIST, m_topMark.y);
|
DDX_Text(pDX, IDC_EDIT_BOT_MARK_X_DIST, m_botMark.x); //Bot Mark
|
DDX_Text(pDX, IDC_EDIT_BOT_MARK_Y_DIST, m_botMark.y);
|
DDX_Text(pDX, IDC_EDIT_TOP_POINT_X_DIST, m_topPoint.x); //Top Point
|
DDX_Text(pDX, IDC_EDIT_TOP_POINT_Y_DIST, m_topPoint.y);
|
DDX_Text(pDX, IDC_EDIT_BOT_POINT_X_DIST, m_botPoint.x); //Bot Point
|
DDX_Text(pDX, IDC_EDIT_BOT_POINT_Y_DIST, m_botPoint.y);
|
|
DDX_Text(pDX, IDC_EDIT_ID_DIST, m_id);
|
DDX_Text(pDX, IDC_EDIT_NAME_DIST, m_strName);
|
|
DDX_Text(pDX, IDC_EDIT_POS_X_DIST, m_pos.x);
|
DDX_Text(pDX, IDC_EDIT_POS_Y_DIST, m_pos.y);
|
DDX_Text(pDX, IDC_EDIT_INC_REFER_DIST, m_refer);
|
DDX_Text(pDX, IDC_EDIT_DEC_REFER_DIST, m_refer_);
|
|
DDX_Control(pDX, IDC_COMBO_DIST_MODE_DIST, m_combDistMode); //DIST Mode
|
DDX_Text(pDX, IDC_EDIT_MIN_VAL_DIST, m_minValue);
|
DDX_Text(pDX, IDC_EDIT_MAX_VAL_DIST, m_maxValue);
|
|
DDX_Control(pDX, IDC_COMBO_DIST_MODE_DIST2, m_combDistMode2); //DIST Mode
|
DDX_Text(pDX, IDC_EDIT_MIN_VAL_DIST2, m_minValue2);
|
DDX_Text(pDX, IDC_EDIT_MAX_VAL_DIST2, m_maxValue2);
|
|
DDX_Control(pDX, IDC_COMBO_NG_TYPE_DIST, m_combNgType); //DIST Mode
|
DDX_Control(pDX, IDC_COMBO_NG_TYPE_DIST2, m_combNgType2); //DIST Mode
|
|
DDX_Text(pDX, IDC_EDIT_INC_DIST, m_incValue);
|
DDX_Text(pDX, IDC_EDIT_INC_DIST2, m_incValue2);
|
}
|
|
|
BEGIN_MESSAGE_MAP(CCornerDistSetDlg, CDialogEx)
|
ON_WM_CLOSE()
|
ON_NOTIFY(NM_CLICK, IDC_LIST_DIST_DOT, &CCornerDistSetDlg::OnNMClickListDistDot)
|
ON_BN_CLICKED(IDC_BUTTON_MODEL_ROI, &CCornerDistSetDlg::OnBnClickedButtonModelRoi)
|
ON_BN_CLICKED(IDC_BUTTON_MEASURE_ROI, &CCornerDistSetDlg::OnBnClickedButtonMeasureRoi)
|
ON_BN_CLICKED(IDC_BUTTON_DIST_TEST_ALL, &CCornerDistSetDlg::OnBnClickedButtonDistTestAll)
|
ON_BN_CLICKED(IDC_BUTTON_LOCK_MARK_DIST, &CCornerDistSetDlg::OnBnClickedButtonLockMarkDist)
|
ON_BN_CLICKED(IDC_BUTTON_COPY_TOP_MARK_DIST, &CCornerDistSetDlg::OnBnClickedButtonCopyTopMarkDist)
|
ON_NOTIFY(NM_RCLICK, IDC_LIST_DIST_DOT, &CCornerDistSetDlg::OnNMRClickListDistDot)
|
ON_COMMAND(ID_VISION_DELETE, &CCornerDistSetDlg::OnVisionDelete)
|
ON_COMMAND(ID_ADD_DIST, &CCornerDistSetDlg::OnAddDist)
|
ON_COMMAND(ID_Menu_Measure_Set, &CCornerDistSetDlg::OnMenuMeasureSet)
|
ON_COMMAND(ID_EDITROI_DRAWKEYROI, &CCornerDistSetDlg::OnEditroiDrawkeyroi)
|
ON_COMMAND(ID_EDITROI_DRAWMEASUREROI, &CCornerDistSetDlg::OnEditroiDrawmeasureroi)
|
ON_COMMAND(ID_EDITROI_DELETEALLROI, &CCornerDistSetDlg::OnEditroiDeleteallroi)
|
END_MESSAGE_MAP()
|
|
|
// CDistCornerSetDlg ÏûÏ¢´¦Àí³ÌÐò
|
|
|
BOOL CCornerDistSetDlg::OnInitDialog()
|
{
|
CDialogEx::OnInitDialog();
|
|
// TODO: ÔÚ´ËÌí¼Ó¶îÍâµÄ³õʼ»¯
|
//1. ´°ÌåUI
|
InitWindUi();
|
|
ChangeVisionType(DIMENSION_NONE);
|
|
m_eDotIndex = -1;
|
ChangeCornerDotIdx(-1);
|
|
//3. ÏÔʾËùÓеIJÎÊý
|
dispListParam();
|
|
LockImage(-1);
|
m_isLockPoint = TRUE;
|
LockMark(m_isLockPoint);
|
|
InitMenu();
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
// Òì³£: OCX ÊôÐÔÒ³Ó¦·µ»Ø FALSE
|
}
|
|
void CCornerDistSetDlg::InitWindUi(void) {
|
/* code */
|
InitPointUi();
|
|
m_combFrirtRefer.InsertString(0, _T("First Type"));
|
m_combFrirtRefer.InsertString(1, _T("Second Type"));
|
m_combFrirtRefer.InsertString(2, _T("Thrid Type"));
|
m_combFrirtRefer.InsertString(3, _T("Fourth Type"));
|
m_combFrirtRefer.SetCurSel(0);
|
|
m_combDistMode.InsertString(0, _T("false"));
|
m_combDistMode.InsertString(1, _T("Grind Size"));
|
m_combDistMode.InsertString(2, _T("Top Point"));
|
m_combDistMode.InsertString(3, _T("Bot Point"));
|
m_combDistMode.InsertString(4, _T("Key Dist"));
|
m_combDistMode.InsertString(5, _T("Cut Dist"));
|
m_combDistMode.SetCurSel(0);
|
|
m_combDistMode2.InsertString(0, _T("false"));
|
m_combDistMode2.InsertString(1, _T("Grind Size"));
|
m_combDistMode2.InsertString(2, _T("Top Point"));
|
m_combDistMode2.InsertString(3, _T("Bot Point"));
|
m_combDistMode2.InsertString(4, _T("Key Dist"));
|
m_combDistMode2.InsertString(5, _T("Cut Dist"));
|
m_combDistMode2.SetCurSel(0);
|
|
const CString ng_array_type[] = {
|
_T("Chip"),
|
_T("Broken"),
|
_T("Grind"),
|
_T("Dist Cut"),
|
_T("Corner Dist"),
|
_T("Unkown NG")
|
};
|
int ngNum = 6;
|
for (int i = 0; i < ngNum; i++) {
|
m_combNgType.InsertString(i, ng_array_type[i]);
|
m_combNgType2.InsertString(i, ng_array_type[i]);
|
}
|
m_combNgType.SetCurSel(2);
|
m_combNgType2.SetCurSel(3);
|
|
CString strCaption = _T("");
|
GetDlgItem(IDC_STATIC_DIST_RESULT_DIST)->SetWindowText(strCaption);
|
GetDlgItem(IDC_STATIC_DIST_RESULT_DIST2)->SetWindowText(strCaption);
|
}
|
|
void CCornerDistSetDlg::InitPointUi(void) {
|
/* code */
|
CRect rect;
|
m_listCornerPoint.GetClientRect(&rect);
|
|
// ΪÁбíÊÓͼ¿Ø¼þÌí¼ÓÈ«ÐÐÑ¡ÖкÍÕ¤¸ñ·ç¸ñ
|
m_listCornerPoint.SetExtendedStyle(m_listCornerPoint.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_DOUBLEBUFFER);
|
|
// ΪÁбíÊÓͼ¿Ø¼þÌí¼ÓÈýÁÐ
|
int nCount = 13;
|
m_listCornerPoint.InsertColumn(0, _T("ID"), LVCFMT_CENTER, rect.Width() / nCount, 0);
|
m_listCornerPoint.InsertColumn(1, _T("Name"), LVCFMT_CENTER, rect.Width() / nCount, 1);
|
m_listCornerPoint.InsertColumn(2, _T("Refer Index"), LVCFMT_CENTER, rect.Width() / nCount, 2);
|
m_listCornerPoint.InsertColumn(3, _T("X"), LVCFMT_CENTER, rect.Width() / nCount, 3);
|
m_listCornerPoint.InsertColumn(4, _T("Y"), LVCFMT_CENTER, rect.Width() / nCount, 4);
|
m_listCornerPoint.InsertColumn(5, _T("Pos+"), LVCFMT_CENTER, rect.Width() / nCount, 5);
|
m_listCornerPoint.InsertColumn(6, _T("Pos-"), LVCFMT_CENTER, rect.Width() / nCount, 6);
|
m_listCornerPoint.InsertColumn(7, _T("First Judge"), LVCFMT_CENTER, rect.Width() / nCount, 7);
|
m_listCornerPoint.InsertColumn(8, _T("Min1"), LVCFMT_CENTER, rect.Width() / nCount, 8);
|
m_listCornerPoint.InsertColumn(9, _T("Max1"), LVCFMT_CENTER, rect.Width() / nCount, 9);
|
m_listCornerPoint.InsertColumn(10, _T("Second Judge"), LVCFMT_CENTER, rect.Width() / nCount, 10);
|
m_listCornerPoint.InsertColumn(11, _T("Min2"), LVCFMT_CENTER, rect.Width() / nCount, 11);
|
m_listCornerPoint.InsertColumn(12, _T("Max2"), LVCFMT_CENTER, rect.Width() / nCount, 12);
|
}
|
|
|
void CCornerDistSetDlg::OnClose()
|
{
|
// TODO: ÔÚ´ËÌí¼ÓÏûÏ¢´¦Àí³ÌÐò´úÂëºÍ/»òµ÷ÓÃĬÈÏÖµ
|
|
CDialogEx::OnClose();
|
}
|
|
|
BOOL CCornerDistSetDlg::PreTranslateMessage(MSG* pMsg)
|
{
|
// TODO: ÔÚ´ËÌí¼ÓרÓôúÂëºÍ/»òµ÷ÓûùÀà
|
if (pMsg->message == WM_KEYDOWN) {
|
if ((pMsg->wParam == VK_RETURN) || (pMsg->wParam == VK_ESCAPE)) {
|
return TRUE;
|
}
|
}
|
|
return CDialogEx::PreTranslateMessage(pMsg);
|
}
|
|
void CCornerDistSetDlg::ChangeVisionType(DimensionDir eDir) {
|
/* code */
|
SaveDistCorner();
|
|
//2. ÏÔʾµ±Ç°µÄÊý¾Ý
|
m_eDir = eDir;
|
m_dot = CVisionRecipe::getInstance()->getCornerDistProcess(eDir);
|
ShowDistCornerParam();
|
|
ChangeCornerDotIdx(-1);
|
int curIndex = m_eDotIndex;
|
ChangeCornerDotIdx(curIndex);
|
|
LockMark(TRUE);
|
}
|
|
void CCornerDistSetDlg::ShowDistCornerParam(void) {
|
/* code */
|
if (DIMENSION_NONE == m_eDir) return;
|
if (NULL == m_dot) return;
|
|
m_topMark = m_dot->getPoint(0);
|
m_botMark = m_dot->getPoint(1);
|
m_topPoint = m_dot->getPoint(2);
|
m_botPoint = m_dot->getPoint(3);
|
|
UpdateData(FALSE);
|
}
|
|
void CCornerDistSetDlg::SaveDistCorner(void) {
|
/* code */
|
if (DIMENSION_NONE == m_eDir) return;
|
if (NULL == m_dot) return;
|
|
UpdateData(TRUE);
|
}
|
|
void CCornerDistSetDlg::ChangeCornerDotIdx(int eIdx) {
|
/* code */
|
SaveDistDotProcess();
|
|
if (eIdx == m_eDotIndex) {
|
return;
|
}
|
|
m_eDotIndex = eIdx;
|
m_dotDist = m_dot->getDot(eIdx);
|
|
ShowDistDotParam();
|
LockImage(-1);
|
}
|
|
void CCornerDistSetDlg::ShowDistDotParam(void) {
|
/* code */
|
if (-1 == m_eDotIndex) return;
|
if (NULL == m_dotDist) return;
|
|
m_combFrirtRefer.SetCurSel(m_dotDist->m_idxRefer);
|
m_strName = m_dotDist->m_strName;
|
m_pos = m_dotDist->getPose();
|
|
m_id = m_dotDist->getID();
|
m_refer = m_dotDist->m_nRef;
|
m_refer_ = m_dotDist->m_nRef_;
|
|
m_combDistMode.SetCurSel(m_dotDist->m_distMode);
|
m_minValue = m_dotDist->m_minValue;
|
m_maxValue = m_dotDist->m_maxValue;
|
m_combNgType.SetCurSel(m_dotDist->m_ngType - 1);
|
m_incValue = m_dotDist->m_incValue;
|
|
m_combDistMode2.SetCurSel(m_dotDist->m_distMode2);
|
m_minValue2 = m_dotDist->m_minValue2;
|
m_maxValue2 = m_dotDist->m_maxValue2;
|
m_combNgType2.SetCurSel(m_dotDist->m_ngType2 - 1);
|
m_incValue2 = m_dotDist->m_incValue2;
|
|
//±£´æ²ÎÊý
|
dispRegion();
|
|
UpdateData(FALSE);
|
}
|
|
void CCornerDistSetDlg::dispRegion(void) {
|
/* code */
|
}
|
|
void CCornerDistSetDlg::SaveDistDotProcess(void) {
|
/* code */
|
if (NULL == m_dotDist) return;
|
|
UpdateData(TRUE);
|
|
SaveDistCorner();
|
|
m_dotDist->m_idxRefer = m_combFrirtRefer.GetCurSel();
|
m_dotDist->m_strName = m_strName;
|
m_dotDist->m_nRef = m_refer;
|
m_dotDist->m_nRef_ = m_refer_;
|
|
m_dotDist->m_distMode = m_combDistMode.GetCurSel();
|
m_dotDist->m_minValue = m_minValue;
|
m_dotDist->m_maxValue = m_maxValue;
|
m_dotDist->m_ngType = m_combNgType.GetCurSel() + 1;
|
m_dotDist->m_incValue = m_incValue;
|
|
m_dotDist->m_distMode2 = m_combDistMode2.GetCurSel();
|
m_dotDist->m_minValue2 = m_minValue2;
|
m_dotDist->m_maxValue2 = m_maxValue2;
|
m_dotDist->m_ngType2 = m_combNgType2.GetCurSel() + 1;
|
m_dotDist->m_incValue2 = m_incValue2;
|
|
int nCount = m_listCornerPoint.GetItemCount();
|
int id = m_dotDist->getID();
|
std::vector<CDistDotProcess*> vDots = m_dot->getDots();
|
|
int nNum = (int)(vDots.size());
|
if (nCount != nNum) return;
|
|
Point2I pose;
|
for (int index = 0; index < nCount; index++){
|
CDistDotProcess *pSelectDot = vDots.at(index);
|
if (NULL == pSelectDot) continue;
|
if (pSelectDot->getID() != id) continue;
|
CDistDotProcess *dot = m_dotDist;
|
if (NULL == dot) return;
|
CString strText;
|
int i = index;
|
//0. IDÖµ
|
strText.Format(_T("%d"), dot->getID());
|
m_listCornerPoint.SetItemText(i, 0, strText);
|
|
//1. Ãû³Æ
|
strText = dot->m_strName;
|
m_listCornerPoint.SetItemText(i, 1, strText);
|
|
//2. Refer Type
|
strText = _T("First Type");
|
if (1 == dot->m_idxRefer) {
|
strText = _T("Second Type");
|
}
|
else if (2 == dot->m_idxRefer) {
|
strText = _T("Third Type");
|
}
|
else if (3 == dot->m_idxRefer) {
|
strText = _T("Fourth Type");
|
}
|
m_listCornerPoint.SetItemText(i, 2, strText);
|
|
//3. X
|
pose = dot->getPose();
|
strText.Format(_T("%d"), pose.x);
|
m_listCornerPoint.SetItemText(i, 3, strText);
|
|
//4. Y
|
strText.Format(_T("%d"), pose.y);
|
m_listCornerPoint.SetItemText(i, 4, strText);
|
|
//5.ref
|
strText.Format(_T("%d"), dot->m_nRef);
|
m_listCornerPoint.SetItemText(i, 5, strText);
|
|
//6. ref_
|
strText.Format(_T("%d"), dot->m_nRef_);
|
m_listCornerPoint.SetItemText(i, 6, strText);
|
|
//7. Dist Mode
|
strText = _T("false");
|
if (1 == dot->m_distMode) {
|
strText = _T("Grind Size");
|
}
|
else if (2 == dot->m_distMode) {
|
strText = _T("Top Point");
|
}
|
else if (3 == dot->m_distMode) {
|
strText = _T("Bot Point");
|
}
|
else if (4 == dot->m_distMode) {
|
strText = _T("Key Dist");
|
}
|
else if (5 == dot->m_distMode) {
|
strText = _T("Cut Dist");
|
}
|
m_listCornerPoint.SetItemText(i, 7, strText);
|
|
//8. ÁÚ½ü¾àÀë×îСֵ
|
strText.Format(_T("%d"), dot->m_minValue);
|
m_listCornerPoint.SetItemText(i, 8, strText);
|
|
//9. ÁÚ½ü¾àÀë×î´óÖµ
|
strText.Format(_T("%d"), dot->m_maxValue);
|
m_listCornerPoint.SetItemText(i, 9, strText);
|
|
//10. Dist Mode
|
strText = _T("false");
|
if (1 == dot->m_distMode2) {
|
strText = _T("Grind Size");
|
}
|
else if (2 == dot->m_distMode2) {
|
strText = _T("Top Point");
|
}
|
else if (3 == dot->m_distMode2) {
|
strText = _T("Bot Point");
|
}
|
else if (4 == dot->m_distMode2) {
|
strText = _T("Key Dist");
|
}
|
else if (5 == dot->m_distMode2) {
|
strText = _T("Cut Dist");
|
}
|
m_listCornerPoint.SetItemText(i, 10, strText);
|
|
//11. ÁÚ½ü¾àÀë×îСֵ
|
strText.Format(_T("%d"), dot->m_minValue2);
|
m_listCornerPoint.SetItemText(i, 11, strText);
|
|
//12. ÁÚ½ü¾àÀë×î´óÖµ
|
strText.Format(_T("%d"), dot->m_maxValue2);
|
m_listCornerPoint.SetItemText(i, 12, strText);
|
|
break;
|
}
|
}
|
|
|
int CCornerDistSetDlg::setDimensionDir(DimensionDir eDir) {
|
/* code */
|
ChangeVisionType(eDir);
|
dispListParam();
|
return 0;
|
}
|
|
void CCornerDistSetDlg::dispListParam(void) {
|
/* code */
|
m_listCornerPoint.DeleteAllItems();
|
if (NULL == m_dot) return;
|
|
//1. »ñÈ¡Êý¾Ý
|
std::vector<CDistDotProcess*> &vDots = m_dot->getDots();
|
int nCount = (int)(vDots.size());
|
if (nCount < 1) return;
|
|
CString strText;
|
Point2I pose;
|
for (int i = 0; i < nCount; i++) {
|
CDistDotProcess *dot = vDots.at(i);
|
if (NULL == dot) continue;
|
//0. IDÖµ
|
strText.Format(_T("%d"), dot->getID());
|
m_listCornerPoint.InsertItem(i, strText);
|
|
//1. Ãû³Æ
|
strText = dot->m_strName;
|
m_listCornerPoint.SetItemText(i, 1, strText);
|
|
//2. Refer Type
|
strText = _T("First Type");
|
if (1 == dot->m_idxRefer) {
|
strText = _T("Second Type");
|
}
|
else if (2 == dot->m_idxRefer) {
|
strText = _T("Third Type");
|
}
|
else if (3 == dot->m_idxRefer) {
|
strText = _T("Fourth Type");
|
}
|
m_listCornerPoint.SetItemText(i, 2, strText);
|
|
//3. X
|
pose = dot->getPose();
|
strText.Format(_T("%d"), pose.x);
|
m_listCornerPoint.SetItemText(i, 3, strText);
|
|
//4. Y
|
strText.Format(_T("%d"), pose.y);
|
m_listCornerPoint.SetItemText(i, 4, strText);
|
|
//5.ref
|
strText.Format(_T("%d"), dot->m_nRef);
|
m_listCornerPoint.SetItemText(i, 5, strText);
|
|
//6. ref_
|
strText.Format(_T("%d"), dot->m_nRef_);
|
m_listCornerPoint.SetItemText(i, 6, strText);
|
|
//7. Dist Mode
|
strText = _T("false");
|
if (1 == dot->m_distMode) {
|
strText = _T("Grind Size");
|
}
|
else if (2 == dot->m_distMode) {
|
strText = _T("Top Point");
|
}
|
else if (3 == dot->m_distMode) {
|
strText = _T("Bot Point");
|
}
|
else if (4 == dot->m_distMode) {
|
strText = _T("Key Dist");
|
}
|
else if (5 == dot->m_distMode) {
|
strText = _T("Cut Dist");
|
}
|
m_listCornerPoint.SetItemText(i, 7, strText);
|
|
//8. ÁÚ½ü¾àÀë×îСֵ
|
strText.Format(_T("%d"), dot->m_minValue);
|
m_listCornerPoint.SetItemText(i, 8, strText);
|
|
//9. ÁÚ½ü¾àÀë×î´óÖµ
|
strText.Format(_T("%d"), dot->m_maxValue);
|
m_listCornerPoint.SetItemText(i, 9, strText);
|
|
//10. Dist Mode
|
strText = _T("false");
|
if (1 == dot->m_distMode2) {
|
strText = _T("Grind Size");
|
}
|
else if (2 == dot->m_distMode2) {
|
strText = _T("Top Point");
|
}
|
else if (3 == dot->m_distMode2) {
|
strText = _T("Bot Point");
|
}
|
else if (4 == dot->m_distMode2) {
|
strText = _T("Key Dist");
|
}
|
else if (5 == dot->m_distMode2) {
|
strText = _T("Cut Dist");
|
}
|
m_listCornerPoint.SetItemText(i, 10, strText);
|
|
//11. ÁÚ½ü¾àÀë×îСֵ
|
strText.Format(_T("%d"), dot->m_minValue2);
|
m_listCornerPoint.SetItemText(i, 11, strText);
|
|
//12. ÁÚ½ü¾àÀë×î´óÖµ
|
strText.Format(_T("%d"), dot->m_maxValue2);
|
m_listCornerPoint.SetItemText(i, 12, strText);
|
}
|
}
|
|
|
void CCornerDistSetDlg::OnNMClickListDistDot(NMHDR *pNMHDR, LRESULT *pResult)
|
{
|
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
|
// TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë
|
NM_LISTVIEW *plisCtrl = (NM_LISTVIEW *)pNMHDR;
|
CString strID = m_listCornerPoint.GetItemText(plisCtrl->iItem, 0);
|
int id = atoi(CW2A(strID.GetString()));
|
int eIdx = id;
|
ChangeCornerDotIdx(eIdx);
|
|
*pResult = 0;
|
}
|
|
void CCornerDistSetDlg::OnBnClickedButtonModelRoi()
|
{
|
// TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë
|
}
|
|
void CCornerDistSetDlg::OnBnClickedButtonMeasureRoi()
|
{
|
// TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë
|
}
|
|
void CCornerDistSetDlg::LockImage(int nType) {
|
/* code */
|
if (1 == nType) {
|
GetDlgItem(IDC_BUTTON_MODEL_ROI)->EnableWindow(TRUE);
|
GetDlgItem(IDC_BUTTON_MEASURE_ROI)->EnableWindow(FALSE);
|
}
|
else if (2 == nType) {
|
GetDlgItem(IDC_BUTTON_MODEL_ROI)->EnableWindow(FALSE);
|
GetDlgItem(IDC_BUTTON_MEASURE_ROI)->EnableWindow(TRUE);
|
}
|
else{
|
GetDlgItem(IDC_BUTTON_MODEL_ROI)->EnableWindow(FALSE);
|
GetDlgItem(IDC_BUTTON_MEASURE_ROI)->EnableWindow(FALSE);
|
}
|
}
|
|
void CCornerDistSetDlg::LockMark(BOOL isLock) {
|
/* code */
|
m_isLockPoint = isLock;
|
if (isLock) {
|
GetDlgItem(IDC_BUTTON_COPY_TOP_MARK_DIST)->EnableWindow(FALSE);
|
GetDlgItem(IDC_BUTTON_LOCK_MARK_DIST)->SetWindowTextW(L"Unlock");
|
}
|
else {
|
GetDlgItem(IDC_BUTTON_COPY_TOP_MARK_DIST)->EnableWindow(TRUE);
|
GetDlgItem(IDC_BUTTON_LOCK_MARK_DIST)->SetWindowTextW(L"Lock");
|
}
|
}
|
|
void CCornerDistSetDlg::InitMenu(void) {
|
/* code */
|
m_visionMenu.LoadMenu(IDR_MENU1);
|
}
|
|
void CCornerDistSetDlg::OnBnClickedButtonDistTestAll()
|
{
|
// TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë
|
SaveDistCorner();
|
SaveDistDotProcess();
|
if (nullptr == m_dot) return;
|
|
CString strCaption = _T("");
|
GetDlgItem(IDC_STATIC_DIST_RESULT_DIST)->SetWindowText(strCaption);
|
GetDlgItem(IDC_STATIC_DIST_RESULT_DIST2)->SetWindowText(strCaption);
|
|
m_dot->execute(m_eDir);
|
|
dispAllPointResult();
|
}
|
|
void CCornerDistSetDlg::dispAllPointResult(void) {
|
/* code */
|
}
|
|
void CCornerDistSetDlg::OnBnClickedButtonLockMarkDist()
|
{
|
// TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë
|
if (m_isLockPoint) {
|
m_isLockPoint = FALSE;
|
}
|
else {
|
m_isLockPoint = TRUE;
|
}
|
LockMark(m_isLockPoint);
|
}
|
|
void CCornerDistSetDlg::OnBnClickedButtonCopyTopMarkDist()
|
{
|
// TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë
|
CBlSideData *pSideData = CVisionRecipe::getInstance()->getSideData(m_eDir);
|
if (NULL == pSideData) return;
|
|
if (pSideData->m_bTopMark_Find) {
|
m_topMark.x = pSideData->m_mTopMark.x;
|
m_topMark.y = pSideData->m_mTopMark.y;
|
if (nullptr != m_dot) {
|
m_dot->setPoint(m_topMark, 0);
|
}
|
}
|
|
if (pSideData->m_bBotMark_Find) {
|
m_botMark.x = pSideData->m_mBotMark.x;
|
m_botMark.y = pSideData->m_mBotMark.y;
|
if (nullptr != m_dot) {
|
m_dot->setPoint(m_botMark, 1);
|
}
|
}
|
|
if (pSideData->m_bTopPoint_Find) {
|
m_topPoint = pSideData->m_mTopPoint;
|
if (nullptr != m_dot) {
|
m_dot->setPoint(m_topPoint, 2);
|
}
|
}
|
|
if (pSideData->m_bBotPoint_Find) {
|
m_botPoint = pSideData->m_mBotPoint;
|
if (nullptr != m_dot) {
|
m_dot->setPoint(m_botPoint, 3);
|
}
|
}
|
|
UpdateData(FALSE);
|
}
|
|
void CCornerDistSetDlg::OnNMRClickListDistDot(NMHDR *pNMHDR, LRESULT *pResult)
|
{
|
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
|
// TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë
|
|
POINT pos; // pos1;
|
GetCursorPos(&pos);
|
|
CMenu *pDotMenu = m_visionMenu.GetSubMenu(0);
|
pDotMenu->TrackPopupMenu(TPM_LEFTALIGN, pos.x, pos.y, this);
|
|
*pResult = 0;
|
}
|
|
|
void CCornerDistSetDlg::OnVisionDelete()
|
{
|
// TODO: ÔÚ´ËÌí¼ÓÃüÁî´¦Àí³ÌÐò´úÂë
|
if (NULL == m_dot) return;
|
if (NULL == m_dotDist) return;
|
|
int idDel = m_dotDist->getID();
|
int id = m_dot->delDot(idDel);
|
dispListParam();
|
//if (id < 0) {
|
// m_dotDist = NULL;
|
// return;
|
//}
|
|
//m_eCornerIndex = id;
|
//m_dotDist = m_dot->getDot((int)id);
|
|
//ShowDistDotParam();
|
|
//LockImage(TRUE);
|
//LocTop(TRUE);
|
//LockBot(TRUE);
|
}
|
|
|
void CCornerDistSetDlg::OnAddDist()
|
{
|
// TODO: ÔÚ´ËÌí¼ÓÃüÁî´¦Àí³ÌÐò´úÂë
|
if (NULL == m_dot) return;
|
|
SaveDistCorner();
|
SaveDistDotProcess();
|
|
int id = m_dot->addDot();
|
dispListParam();
|
m_dotDist = m_dot->getDot(id);
|
m_eDotIndex = id;
|
|
ShowDistDotParam();
|
LockImage(-1);
|
}
|
|
void CCornerDistSetDlg::OnMenuMeasureSet()
|
{
|
// TODO: ÔÚ´ËÌí¼ÓÃüÁî´¦Àí³ÌÐò´úÂë
|
if (NULL == m_dot) return;
|
|
CMeasureSetDlg dlg;
|
dlg.SetDot(m_dot);
|
dlg.DoModal();
|
}
|
|
|
void CCornerDistSetDlg::OnEditroiDrawkeyroi()
|
{
|
// TODO: ÔÚ´ËÌí¼ÓÃüÁî´¦Àí³ÌÐò´úÂë
|
CVisionSetDlg *pMainDlg = (CVisionSetDlg *)(CVisionRecipe::getInstance()->GetMainDlg());
|
if (NULL == pMainDlg) return;
|
|
LockImage(1);
|
}
|
|
|
void CCornerDistSetDlg::OnEditroiDrawmeasureroi()
|
{
|
// TODO: ÔÚ´ËÌí¼ÓÃüÁî´¦Àí³ÌÐò´úÂë
|
CVisionSetDlg *pMainDlg = (CVisionSetDlg *)(CVisionRecipe::getInstance()->GetMainDlg());
|
if (NULL == pMainDlg) return;
|
|
LockImage(2);
|
}
|
|
|
void CCornerDistSetDlg::OnEditroiDeleteallroi()
|
{
|
// TODO: ÔÚ´ËÌí¼ÓÃüÁî´¦Àí³ÌÐò´úÂë
|
if (nullptr == m_dotDist) return;
|
|
HalconCpp::HObject hRegion;
|
HalconCpp::GenEmptyObj(&hRegion);
|
m_dotDist->setRoiRegion(hRegion);
|
m_dotDist->setLineRegion(hRegion);
|
|
dispRegion();
|
dispListParam();
|
ShowDistDotParam();
|
}
|