#include "StdAfx.h"
|
#include "CHReviewSetting/Sys_GlassTypeManager.h"
|
|
CSys_GlassTypeManager::CSys_GlassTypeManager(void)
|
{
|
}
|
|
CSys_GlassTypeManager::~CSys_GlassTypeManager(void)
|
{
|
}
|
|
CGlassTypeInfo* CSys_GlassTypeManager::GetGlassTypeInfo(int nIndex)
|
{
|
if (nIndex<0 || nIndex>=(int)m_vecGlassTypeInfo.size()) return NULL;
|
|
return &(m_vecGlassTypeInfo[nIndex]);
|
}
|
|
const CGlassTypeInfo* CSys_GlassTypeManager::GetGlassTypeInfo(int nIndex) const
|
{
|
if (nIndex<0 || nIndex>=(int)m_vecGlassTypeInfo.size()) return NULL;
|
|
return &(m_vecGlassTypeInfo[nIndex]);
|
}
|
|
void CSys_GlassTypeManager::SetProfile(CMacroFile& macroFile)
|
{
|
CString strItem, strTemplateImagePath;
|
|
int nGlassTypeCount = GetGlassTypeInfoCount();
|
strItem.Format(_T("SYS_GLASS_TYPE_COUNT"));
|
macroFile.SetItem(strItem, (int)nGlassTypeCount);
|
|
for(int i = 0; i < nGlassTypeCount; i++)
|
{
|
const CGlassTypeInfo* pGlassTypeInfo = GetGlassTypeInfo(i);
|
if (pGlassTypeInfo==NULL) continue;
|
|
strItem.Format(_T("SYS_GLASS_TYPE_STANDARD_GLASS_TYPE_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_bStandardGlassType);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_GLASS_SIZE_X_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_nGlassSizeX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_GLASS_SIZE_Y_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_nGlassSizeY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_USE_CENTER_COODINATE_SYSTEM_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_bUseCenterCoodinateSystem);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_INVERSE_COODINATE_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_bUseInverseCoordinate);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_CORNERCUT_DIRECTION_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_nCornerCutDirection);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_ORIGIN_DIRECTION_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_nOriginDirection);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_FIRST_ALIGN_GLASS_X_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_dFirstAlignGlassX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_FIRST_ALIGN_GLASS_Y_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_dFirstAlignGlassY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_SECOND_ALIGN_GLASS_X_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_dSecondAlignGlassX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_SECOND_ALIGN_GLASS_Y_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_dSecondAlignGlassY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_FIRST_ALIGN_MOTOR_X_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_dFirstAlignMotorX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_FIRST_ALIGN_MOTOR_Y_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_dFirstAlignMotorY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_SECOND_ALIGN_MOTOR_X_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_dSecondAlignMotorX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_SECOND_ALIGN_MOTOR_Y_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_dSecondAlignMotorY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_FIRST_ALIGN_FIND_PIXEL_X_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_nFirstAlignFindPixelX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_FIRST_ALIGN_FIND_PIXEL_Y_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_nFirstAlignFindPixelY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_SECOND_ALIGN_FIND_PIXEL_X_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_nSecondAlignFindPixelX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_SECOND_ALIGN_FIND_PIXEL_Y_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_nSecondAlignFindPixelY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_USE_ALIGN_POSITION_MOVE_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_nUseAlignPosMove);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_ORIGIN_MOTOR_X_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_dOriginMotorX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_ORIGIN_MOTOR_Y_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_dOriginMotorY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_ALIGN_ANGLE_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_dAlignAngle);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_MATCHING_THRESHOLD_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_dMatchingThreshold);
|
|
//181128
|
strItem.Format(_T("SYS_GLASS_TYPE_OFFSET_X_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_dMotorOffsetX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_OFFSET_Y_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_dMotorOffsetY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_NAME_%02d"), i);
|
macroFile.SetItem(strItem, pGlassTypeInfo->m_strGlassTypeName);
|
|
// template image
|
int nTemplateImageCount = pGlassTypeInfo->GetTemplateImagePathCount();
|
strItem.Format(_T("SYS_GLASS_TYPE_TEMPLATE_IMAGE_COUNT_%02d"), i);
|
macroFile.SetItem(strItem, nTemplateImageCount);
|
for(int j = 0; j < nTemplateImageCount; j++)
|
{
|
strTemplateImagePath = *pGlassTypeInfo->GetTemplateImagePath(j);
|
strItem.Format(_T("SYS_GLASS_TYPE_%02d_TEMPLATE_IMAGE_PATH_%02d"), i, j);
|
macroFile.SetItem(strItem, strTemplateImagePath);
|
}
|
|
// align position
|
int nPositionCount = pGlassTypeInfo->GetAlignPositionInfoCount();
|
strItem.Format(_T("SYS_GLASS_TYPE_ALIGN_POSITION_COUNT_%02d"), i);
|
macroFile.SetItem(strItem, nPositionCount);
|
for(int j = 0; j < nPositionCount; j++)
|
{
|
const CAlignPositionInfo* pPositionInfo = pGlassTypeInfo->GetAlignPositionInfo(j);
|
if (pPositionInfo==NULL) continue;
|
|
strItem.Format(_T("SYS_GLASS_TYPE_%02d_ALIGN_MOVE_TYPE_%02d"), i, j);
|
macroFile.SetItem(strItem, pPositionInfo->m_nMoveType);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_%02d_GANTRY_INDEX_%02d"), i, j);
|
macroFile.SetItem(strItem, pPositionInfo->m_nGantryIndex);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_%02d_HEADER_INDEX_%02d"), i, j);
|
macroFile.SetItem(strItem, pPositionInfo->m_nHeaderIndex);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_%02d_X_POS_%02d"), i, j);
|
macroFile.SetItem(strItem, pPositionInfo->m_dAlignPosX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_%02d_Y_POS_%02d"), i, j);
|
macroFile.SetItem(strItem, pPositionInfo->m_dAlignPosY);
|
}
|
}
|
}
|
|
void CSys_GlassTypeManager::GetProfile(CMacroFile& macroFile)
|
{
|
int nGlassTypeCount;
|
CString strItem, strTemplateImagePath;
|
CGlassTypeInfo glassTypeInfo;
|
|
strItem.Format(_T("SYS_GLASS_TYPE_COUNT"));
|
macroFile.GetItem(strItem, nGlassTypeCount);
|
|
m_vecGlassTypeInfo.clear();
|
|
for(int i = 0; i < nGlassTypeCount; i++)
|
{
|
glassTypeInfo.Reset();
|
|
strItem.Format(_T("SYS_GLASS_TYPE_STANDARD_GLASS_TYPE_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_bStandardGlassType);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_GLASS_SIZE_X_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_nGlassSizeX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_GLASS_SIZE_Y_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_nGlassSizeY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_USE_CENTER_COODINATE_SYSTEM_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_bUseCenterCoodinateSystem);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_INVERSE_COODINATE_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_bUseInverseCoordinate);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_CORNERCUT_DIRECTION_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_nCornerCutDirection);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_ORIGIN_DIRECTION_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_nOriginDirection);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_FIRST_ALIGN_GLASS_X_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_dFirstAlignGlassX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_FIRST_ALIGN_GLASS_Y_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_dFirstAlignGlassY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_SECOND_ALIGN_GLASS_X_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_dSecondAlignGlassX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_SECOND_ALIGN_GLASS_Y_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_dSecondAlignGlassY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_FIRST_ALIGN_MOTOR_X_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_dFirstAlignMotorX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_FIRST_ALIGN_MOTOR_Y_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_dFirstAlignMotorY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_SECOND_ALIGN_MOTOR_X_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_dSecondAlignMotorX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_SECOND_ALIGN_MOTOR_Y_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_dSecondAlignMotorY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_FIRST_ALIGN_FIND_PIXEL_X_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_nFirstAlignFindPixelX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_FIRST_ALIGN_FIND_PIXEL_Y_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_nFirstAlignFindPixelY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_SECOND_ALIGN_FIND_PIXEL_X_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_nSecondAlignFindPixelX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_SECOND_ALIGN_FIND_PIXEL_Y_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_nSecondAlignFindPixelY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_USE_ALIGN_POSITION_MOVE_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_nUseAlignPosMove);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_ORIGIN_MOTOR_X_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_dOriginMotorX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_ORIGIN_MOTOR_Y_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_dOriginMotorY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_ALIGN_ANGLE_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_dAlignAngle);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_MATCHING_THRESHOLD_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_dMatchingThreshold);
|
|
//181128 cmark
|
strItem.Format(_T("SYS_GLASS_TYPE_OFFSET_X_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_dMotorOffsetX);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_OFFSET_Y_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_dMotorOffsetY);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_NAME_%02d"), i);
|
macroFile.GetItem(strItem, glassTypeInfo.m_strGlassTypeName);
|
|
// template image
|
int nTemplateImageCount = 0;
|
strItem.Format(_T("SYS_GLASS_TYPE_TEMPLATE_IMAGE_COUNT_%02d"), i);
|
macroFile.GetItem(strItem, nTemplateImageCount);
|
for(int j = 0; j < nTemplateImageCount; j++)
|
{
|
strItem.Format(_T("SYS_GLASS_TYPE_%02d_TEMPLATE_IMAGE_PATH_%02d"), i, j);
|
macroFile.GetItem(strItem, strTemplateImagePath);
|
glassTypeInfo.m_vecTemplateImagePath.push_back(strTemplateImagePath);
|
}
|
|
// align position
|
int nPositionCount = 0;
|
strItem.Format(_T("SYS_GLASS_TYPE_ALIGN_POSITION_COUNT_%02d"), i);
|
macroFile.GetItem(strItem, nPositionCount);
|
glassTypeInfo.SetAlignPositionInfoCount(nPositionCount);
|
for(int j = 0; j < nPositionCount; j++)
|
{
|
CAlignPositionInfo* pPositionInfo = glassTypeInfo.GetAlignPositionInfo(j);
|
if (pPositionInfo==NULL) continue;
|
|
strItem.Format(_T("SYS_GLASS_TYPE_%02d_ALIGN_MOVE_TYPE_%02d"), i, j);
|
macroFile.GetItem(strItem, pPositionInfo->m_nMoveType, 0);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_%02d_GANTRY_INDEX_%02d"), i, j);
|
macroFile.GetItem(strItem, pPositionInfo->m_nGantryIndex, -1);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_%02d_HEADER_INDEX_%02d"), i, j);
|
macroFile.GetItem(strItem, pPositionInfo->m_nHeaderIndex, -1);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_%02d_X_POS_%02d"), i, j);
|
macroFile.GetItem(strItem, pPositionInfo->m_dAlignPosX, 0.0);
|
|
strItem.Format(_T("SYS_GLASS_TYPE_%02d_Y_POS_%02d"), i, j);
|
macroFile.GetItem(strItem, pPositionInfo->m_dAlignPosY, 0.0);
|
}
|
|
m_vecGlassTypeInfo.push_back(glassTypeInfo);
|
}
|
}
|
|
int CSys_GlassTypeManager::GetStandardGlassTypeIndex() const
|
{
|
int nIndex = 0;
|
for (constVectorGlassTypeInfoIt it=m_vecGlassTypeInfo.begin(); it!=m_vecGlassTypeInfo.end(); it++)
|
{
|
if (it->m_bStandardGlassType)
|
{
|
return nIndex;
|
}
|
nIndex++;
|
}
|
|
return -1;
|
}
|
|
CGlassTypeInfo* CSys_GlassTypeManager::GetStandardGlassTypeInfo()
|
{
|
for (VectorGlassTypeInfoIt it=m_vecGlassTypeInfo.begin(); it!=m_vecGlassTypeInfo.end(); it++)
|
{
|
if (it->m_bStandardGlassType)
|
{
|
return &(*it);
|
}
|
}
|
|
return NULL;
|
}
|
|
const CGlassTypeInfo* CSys_GlassTypeManager::GetStandardGlassTypeInfo() const
|
{
|
for (constVectorGlassTypeInfoIt it=m_vecGlassTypeInfo.begin(); it!=m_vecGlassTypeInfo.end(); it++)
|
{
|
if (it->m_bStandardGlassType)
|
{
|
return &(*it);
|
}
|
}
|
|
return NULL;
|
}
|