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.

794 lines
30 KiB
C++

#include "StdAfx.h"
#include "ProductMgr.h"
#include "Propertie.h"
#include "PropertieMgr.h"
#include "AuthorityMgr.h"
#include "GlobalFunction.h"
#include "CStringFuc.h"
#include "LogMgr.h"
#include "GlobalDrawMgr.h"
#include "DrawSimpleShape.h"
#include "ObjComponentMgr.h"
#include "PlatformXY.h"
#include "WorkFileMgr.h"
#include "ObjComponentMgr.h"
#include "Motor.h"
#include "Layer.h"
#include "CommandMgr.h"
#include "CameraHawkvis.h"
#include "MsgBox.h"
#include "ProgramCutMgr.h"
#define PRODUCT_STR _T("<22><><EFBFBD><EFBFBD>")
CProductMgr *gProductMgr = new CProductMgr;
CProductMgr::CProductMgr(void)
{
m_UseProductCnt = 1;//ʹ<>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_CurProductIdx = -1;//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
m_CurWorkTimes = 0;//<2F>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD>
m_TotalWorkTimes = 0;//<2F>ܼӹ<DCBC><D3B9><EFBFBD><EFBFBD><EFBFBD>
m_FocalAdjustCnt = 0;//<2F><EFBFBD><E4BDB9><EFBFBD><EFBFBD>
m_FocalAdjustDis = 0;//<2F><EFBFBD><E4BDB9><EFBFBD><EFBFBD>mm
m_BaseFocAdjustDis = 0;//<2F><>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mm
m_AngleAdjust = 0;//<2F>Ƕ<EFBFBD>΢<EFBFBD><CEA2>ֵ
m_BasePtDir = _DIR_M;//<2F><>Ʒ<EFBFBD><C6B7>׼<EFBFBD><D7BC><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
m_MaxMarkDisDiff = 0.3;//<2F><><EFBFBD><EFBFBD>mark <20><>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>ʵ<EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><DBBE><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
}
CProductMgr::~CProductMgr(void)
{
}
#if 1//<2F><>дmodule <20>ĺ<EFBFBD><C4BA><EFBFBD>
void CProductMgr::Ini()
{
ResetProductVec(m_UseProductCnt);
GetFrame()->m_DlgCutDeviceCtrl.Update();
}
void CProductMgr::ResetProductVec(int cnt)
{
m_ProductVec.clear();
for(int i=0;i<cnt;i++)
{
CProduct Product;
m_ProductVec.push_back(Product);
}
}
CMFCPropertyGridProperty *CProductMgr::CreatGridProperty()
{
CPropertieMgr &PropertieMgr = gDevicePropertieMgr;
CString PropertyName;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString Description;//<2F><><EFBFBD><EFBFBD>
CString Path = _T("Product");//<2F>洢·<E6B4A2><C2B7>
CString Name;
//-------------------------------------------------------------------------------//
PropertyName = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
CMFCPropertyGridProperty* pGroup = new CMFCPropertyGridProperty(PropertyName);
//-------------------------------------------------------------------------------//
if(gAuthorityMgr->CheckAuthority(_FACTORY))
{
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_UseProductCnt");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_UseProductCnt);
pPropertie->SetType(_PROP_TYPE_INT);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Description = _T("<EFBFBD><EFBFBD>ǰ<EFBFBD>о<EFBFBD>֧<EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>޸ĺ<DEB8><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_UseProductCnt, Description);
//p->AllowEdit(FALSE);//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
pGroup->AddSubItem(p);
PropertieMgr.Insert(p, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_ProductSize_w");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_ProductSize.w);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Description = _T("<EFBFBD><EFBFBD>ǰ<EFBFBD>о߹<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ijߴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mm");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ProductSize.w, Description);
//p->AllowEdit(FALSE);//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
pGroup->AddSubItem(p);
PropertieMgr.Insert(p, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_ProductSize_h");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_ProductSize.h);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>");
Description = _T("<EFBFBD><EFBFBD>ǰ<EFBFBD>о߹<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ijߴ<EFBFBD><EFBFBD>߶<EFBFBD>mm");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_ProductSize.h, Description);
//p->AllowEdit(FALSE);//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
pGroup->AddSubItem(p);
PropertieMgr.Insert(p, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_TotalWorkTimes");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_TotalWorkTimes);
pPropertie->SetType(_PROP_TYPE_INT);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD>ܼӹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Description = _T("<EFBFBD><EFBFBD>ǰ<EFBFBD>ܹ<EFBFBD><EFBFBD>ļӹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_TotalWorkTimes, Description);
//p->AllowEdit(FALSE);//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
pGroup->AddSubItem(p);
PropertieMgr.Insert(p, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_AngleAdjust");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_AngleAdjust);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD>Ƕ<EFBFBD>΢<EFBFBD><EFBFBD>");
Description = _T("<EFBFBD><EFBFBD>Ʒƫ<EFBFBD>ƽǶȵ<EFBFBD>΢<EFBFBD><EFBFBD>ֵ(<28><><EFBFBD><EFBFBD>ֵ)");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_AngleAdjust, Description);
//p->AllowEdit(FALSE);//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
pGroup->AddSubItem(p);
PropertieMgr.Insert(p, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_MaxMarkDisDiff");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_MaxMarkDisDiff);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("mark<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Description = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>mark <20><>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>ʵ<EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۾<EFBFBD><DBBE><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>λ:mm)");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_MaxMarkDisDiff, Description);
//p->AllowEdit(FALSE);//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
pGroup->AddSubItem(p);
PropertieMgr.Insert(p, pPropertie);
}
{
PropertyName = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName);
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_BaseFocAdjustDis");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_BaseFocAdjustDis);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD>׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Description = _T("<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>󽹵<EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>λ:mm)");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_BaseFocAdjustDis, Description);
pGroup1->AddSubItem(p);
PropertieMgr.Insert(p, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_FocalAdjustCnt");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_FocalAdjustCnt);
pPropertie->SetType(_PROP_TYPE_INT);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Description = _T("<EFBFBD><EFBFBD><EFBFBD>ڱȽϺ<EFBFBD><EFBFBD>IJ<EFBFBD>Ʒ,<2C>ӹ<EFBFBD>һ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٴμӹ<CEBC>");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_FocalAdjustCnt, Description);
p->AllowEdit(FALSE);//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
pGroup1->AddSubItem(p);
PropertieMgr.Insert(p, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = _T("m_FocalAdjustDis");//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&m_FocalAdjustDis);
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Description = _T("<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>,<2C><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>(<28><>λ:mm)");
CMFCPropertyGridProperty* p = new CMFCPropertyGridProperty(PropertyName, (_variant_t)m_FocalAdjustDis, Description);
pGroup1->AddSubItem(p);
PropertieMgr.Insert(p, pPropertie);
}
pGroup->AddSubItem(pGroup1);
}
{
PropertyName = _T("<EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD>λ<EFBFBD><EFBFBD>");
CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName);
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = "m_TheoryMarkPt1_x";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&(m_TheoryMarkPt1.x));
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("mark1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>X");
Description = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>mark <20><>1<EFBFBD><31><EFBFBD><EFBFBD>X(<28>Զ<EFBFBD>)");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_TheoryMarkPt1.x, Description);
p1->AllowEdit(FALSE);//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
pGroup1->AddSubItem(p1);
PropertieMgr.Insert(p1, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = "m_TheoryMarkPt1_y";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&(m_TheoryMarkPt1.y));
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("mark1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y");
Description = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>mark <20><>1<EFBFBD><31><EFBFBD><EFBFBD>Y(<28>Զ<EFBFBD>)");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_TheoryMarkPt1.y, Description);
p1->AllowEdit(FALSE);//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
pGroup1->AddSubItem(p1);
PropertieMgr.Insert(p1, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = "m_TheoryMarkPt2_x";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&(m_TheoryMarkPt2.x));
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("mark2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>X");
Description = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>mark <20><>2<EFBFBD><32><EFBFBD><EFBFBD>X(<28>Զ<EFBFBD>)");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_TheoryMarkPt2.x, Description);
p1->AllowEdit(FALSE);//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
pGroup1->AddSubItem(p1);
PropertieMgr.Insert(p1, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = "m_TheoryMarkPt2_y";//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&(m_TheoryMarkPt2.y));
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("mark2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y");
Description = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>mark <20><>2<EFBFBD><32><EFBFBD><EFBFBD>Y(<28>Զ<EFBFBD>)");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_TheoryMarkPt2.y, Description);
p1->AllowEdit(FALSE);//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
pGroup1->AddSubItem(p1);
PropertieMgr.Insert(p1, pPropertie);
}
pGroup->AddSubItem(pGroup1);
}
int size = m_ProductVec.size();
for(int i=0;i<size;i++)
{
CString Idx;
Idx.Format("%ld",i+1);
PropertyName = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + Idx;
CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(PropertyName);
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = "m_ProductVec_bUsed" + Idx;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&(m_ProductVec[i].m_bUsed));
pPropertie->SetType(_PROP_TYPE_BOOL);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD>׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>X");
Description = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X (mm)");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)m_ProductVec[i].m_bUsed, Description);
pGroup1->AddSubItem(p1);
PropertieMgr.Insert(p1, pPropertie);
}
Dbxy &BasePt = m_ProductVec[i].GetProductBasePt();
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = "m_ProductVec_X" + Idx;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&(BasePt.x));
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD>׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>X");
Description = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X (mm)");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)BasePt.x, Description);
pGroup1->AddSubItem(p1);
PropertieMgr.Insert(p1, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = "m_ProductVec_Y" + Idx;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&(BasePt.y));
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
pPropertie->SetPath(Path);
pPropertie->SetName(Name);
pPropertie->WriteRead(true);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD>׼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y");
Description = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ̨ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y (mm)");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)BasePt.y, Description);
pGroup1->AddSubItem(p1);
PropertieMgr.Insert(p1, pPropertie);
}
Dbxy &Offset = m_ProductVec[i].GetOffset();
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = "m_Offset_X" + Idx;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&(Offset.x));
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("ƫ<EFBFBD><EFBFBD>X");
Description = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>ƫ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>X (mm)(<28>Զ<EFBFBD>)");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)Offset.x, Description);
p1->AllowEdit(FALSE);//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
pGroup1->AddSubItem(p1);
PropertieMgr.Insert(p1, pPropertie);
}
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = "m_Offset_Y" + Idx;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&(Offset.y));
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("ƫ<EFBFBD><EFBFBD>Y");
Description = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>ƫ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>Y (mm)(<28>Զ<EFBFBD>)");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)Offset.y, Description);
p1->AllowEdit(FALSE);//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
pGroup1->AddSubItem(p1);
PropertieMgr.Insert(p1, pPropertie);
}
double Angle = m_ProductVec[i].GetRotateAng();
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>ӳ<EFBFBD><D3B3>
Name = "m_Angle_Y" + Idx;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPropertie *pPropertie = new CPropertie;
pPropertie->SetpVal((void*)&(Angle));
pPropertie->SetType(_PROP_TYPE_DOUBLE);
pPropertie->SetpModule(this);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
PropertyName = _T("<EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>");
Description = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>(<28>Զ<EFBFBD>)");
CMFCPropertyGridProperty* p1 = new CMFCPropertyGridProperty(PropertyName,(_variant_t)Angle, Description);
p1->AllowEdit(FALSE);//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
pGroup1->AddSubItem(p1);
PropertieMgr.Insert(p1, pPropertie);
}
pGroup->AddSubItem(pGroup1);
}
}
return pGroup;
}
void CProductMgr::InsertProduct(CMFCPropertyGridProperty* p)
{
for(int i=0;i<m_UseProductCnt;i++)
{
CString Idx;
Idx.Format("%ld",i+1);
CString str = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + Idx;
p->AddOption(str);
}
}
void CProductMgr::ExportPar(ofstream *pFile)
{
(*pFile)<<"<><C4A3>] [CProductMgr]------------------------------------------------"<<endl;
}
#endif
#if 1
void CProductMgr::WriteWorkFileExt(vector<CLab> &LabVec)
{
//<2F><>ȡҲҪ<D2B2><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>
LabVec.push_back(CLab(LAB_NULL,m_TheoryMarkPt1.x));
LabVec.push_back(CLab(LAB_NULL,m_TheoryMarkPt1.y));
LabVec.push_back(CLab(LAB_NULL,m_TheoryMarkPt2.x));
LabVec.push_back(CLab(LAB_NULL,m_TheoryMarkPt2.y));
LabVec.push_back(CLab(LAB_NULL,m_BaseFocAdjustDis));
LabVec.push_back(CLab(LAB_NULL,m_FocalAdjustCnt));
LabVec.push_back(CLab(LAB_NULL,m_FocalAdjustDis));
LabVec.push_back(CLab(LAB_NULL,m_UseProductCnt));
for(int i=0;i<m_UseProductCnt;i++)
{
LabVec.push_back(CLab(LAB_PRODUCT_START));
m_ProductVec[i].WriteWorkFile(LabVec);
LabVec.push_back(CLab(LAB_PRODUCT_END));
}
}
void CProductMgr::ReadWorkFile(CLabVecRang &LabVecRang)
{
int idx = LabVecRang.GetStart()+1;
m_TheoryMarkPt1.x = LabVecRang.GetDouble(idx++);
m_TheoryMarkPt1.y = LabVecRang.GetDouble(idx++);
m_TheoryMarkPt2.x = LabVecRang.GetDouble(idx++);
m_TheoryMarkPt2.y = LabVecRang.GetDouble(idx++);
SetTheoryMarkPt(m_TheoryMarkPt1,m_TheoryMarkPt2);
m_BaseFocAdjustDis = LabVecRang.GetDouble(idx++);
m_FocalAdjustCnt = LabVecRang.GetInt(idx++);
m_FocalAdjustDis = LabVecRang.GetDouble(idx++);
m_UseProductCnt = LabVecRang.GetInt(idx++);
ResetProductVec(m_UseProductCnt);
vector<CLabVecRang> LabVecRangVec;
CWorkFileMgr WorkFileMgr;
WorkFileMgr.SeparateStrVec(LabVecRang,LabVecRangVec,LAB_PRODUCT_START,LAB_PRODUCT_END);
//<2F><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>ģ<EFBFBD><C4A3>
if(!LabVecRangVec.empty())
{
size_t size = LabVecRangVec.size();
for(size_t i=0;i<size;i++)
{
m_ProductVec[i].ReadWorkFile(LabVecRangVec[i]);
}
}
}
#endif
#if 1
//<2F><><EFBFBD>ƶ<EFBFBD>λ<EFBFBD><CEBB>
void CProductMgr::DrawMarkPoint(CDC* pDC,Dbxy pt,CString str)
{
if(!IsDbxyZero(pt))
{
DbRect Rect(pt,gDraw->GetCatchNodeSize());
DrawCrossX(pDC,gDraw->GetMarkPointPen(),Rect);
gDraw->DrawTxt(pDC,str,pt);
}
}
void CProductMgr::Draw(CDC* pDC)
{
}
DbRect CProductMgr::GetRect(Dbxy pt)
{
DbRect rect;
switch(m_BasePtDir)
{
case _DIR_M:
rect.L = pt.x - m_ProductSize.w/2;
rect.T = pt.y + m_ProductSize.h/2;
rect.R = pt.x + m_ProductSize.w/2;
rect.B = pt.y - m_ProductSize.h/2;
break;
case _DIR_LT:
rect.L = pt.x;
rect.T = pt.y;
rect.R = pt.x + m_ProductSize.w;
rect.B = pt.y - m_ProductSize.h;
break;
case _DIR_LB:
rect.L = pt.x;
rect.B = pt.y;
rect.R = pt.x + m_ProductSize.w;
rect.T = pt.y + m_ProductSize.h;
break;
case _DIR_RT:
rect.R = pt.x;
rect.T = pt.y;
rect.L = pt.x - m_ProductSize.w;
rect.B = pt.y - m_ProductSize.h;
break;
case _DIR_RB:
rect.R = pt.x;
rect.B = pt.y;
rect.L = pt.x - m_ProductSize.w;
rect.T = pt.y + m_ProductSize.h;
break;
default:
break;
}
return rect;
}
#endif
#if 1
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CProductMgr::ReSetTheoryMarkPt()
{
m_TheoryMarkPt1.x = 0;
m_TheoryMarkPt1.y = 0;
m_TheoryMarkPt2.x = 0;
m_TheoryMarkPt2.y = 0;
for(int i=0;i<m_UseProductCnt;i++)
{
m_ProductVec[i].SetTheoryMarkPt(m_TheoryMarkPt1,m_TheoryMarkPt2);
}
}
//<2F><><EFBFBD>ö<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CProductMgr::SetTheoryMarkPt(Dbxy pt1,Dbxy pt2)
{
if(pt1.x>pt2.x)//<2F><>֤<EFBFBD><D6A4>λ<EFBFBD><CEBB>1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
SwapTwoPt(pt1,pt2);
}
m_TheoryMarkPt1 = pt1;
m_TheoryMarkPt2 = pt2;
for(int i=0;i<m_UseProductCnt;i++)
{
m_ProductVec[i].SetTheoryMarkPt(pt1,pt2);
}
}
Dbxy CProductMgr::TheoryPtToRealPt(Dbxy TheoryMarkPt)
{
return m_ProductVec[m_CurProductIdx].TheoryPtToRealPt(TheoryMarkPt);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CProductMgr::TheoryDataToRealData(vector<vector<Dbxy>> &vec,Dbxy &Offset)
{
vector<vector<Dbxy>>::iterator iter = vec.begin();
vector<vector<Dbxy>>::iterator iter_end = vec.end();
for(;iter!=iter_end;iter++)
{
TheoryDataToRealData(*iter,Offset);
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CProductMgr::TheoryDataToRealData(vector<Dbxy> &vec,Dbxy &Offset)
{
vector<Dbxy>::iterator iter = vec.begin();
vector<Dbxy>::iterator iter_end = vec.end();
for(;iter!=iter_end;iter++)
{
(*iter) = TheoryPtToRealPt((*iter));
(*iter).x += Offset.x;
(*iter).y += Offset.y;
}
}
#endif
//<2F><>ȡ<EFBFBD><C8A1>ǰʹ<C7B0>õ<EFBFBD>product <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int CProductMgr::GetUsedProductCnt()
{
int cnt = 0;
for(int i=0;i<m_UseProductCnt;i++)
{
if(m_ProductVec[i].IsUsed())
cnt++;
}
return cnt;
}
void CProductMgr::ResetRealMarkPt()
{
vector<CProduct>::iterator iter = m_ProductVec.begin();
vector<CProduct>::iterator iter_end = m_ProductVec.end();
for(;iter!=iter_end;iter++)
{
(*iter).ResetRealMarkPt();
}
}
//<2F>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CProductMgr::WorkTimesInc()
{
m_CurWorkTimes++;//<2F>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD>
m_TotalWorkTimes++;//<2F>ܼӹ<DCBC><D3B9><EFBFBD><EFBFBD><EFBFBD>
}
//<2F>ƶ<EFBFBD>obj <20><><EFBFBD>оߵĻ<DFB5>׼<EFBFBD><D7BC>
void CProductMgr::MoveObjToBasePt(Dbxy BasePt)
{
int size = m_ProductVec.size();
if(size<=0)
return;
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>obj <20><>rect
CLayer &layer = GetLayerInstance();
CObjContainer &ObjContainer = layer.GetObjContainer();
ObjContainer.SelAllObj();
DbRect rect = ObjContainer.GetSelObjRect();
//<2F>ƶ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
Dbxy MovePt;
switch(m_BasePtDir)
{
case _DIR_M:
MovePt.x = (rect.R+rect.L)/2;
MovePt.y = (rect.T+rect.B)/2;
break;
case _DIR_LT:
MovePt.x = rect.L;
MovePt.y = rect.T;
break;
case _DIR_LB:
MovePt.x = rect.L;
MovePt.y = rect.B;
break;
case _DIR_RT:
MovePt.x = rect.R;
MovePt.y = rect.T;
break;
case _DIR_RB:
MovePt.x = rect.R;
MovePt.y = rect.B;
break;
default:
break;
}
Dbxy Offset;
Offset.x = BasePt.x - MovePt.x;
Offset.y = BasePt.y - MovePt.y;
//<2F>ƶ<EFBFBD>
layer.OnMove(Offset.x,Offset.y,true);
gObjComponentMgr->OnMove(Offset);
CString s;
s.Format(_T("Move Obj [Offset_x]= %f,[Offset_y]= %f"),Offset.x,Offset.y);
gLogMgr->WriteDebugLog(s);
gCommandMgr.DelAllCmd();//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
}
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>product <20><><EFBFBD><EFBFBD>ֵ
int CProductMgr::GetCurProductIdx()
{
int size = m_ProductVec.size();
if(m_CurProductIdx>=0 && m_CurProductIdx<size)
return m_CurProductIdx;
return -1;
}
//<2F><><EFBFBD><EFBFBD>product <20><>״̬(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>product)
void CProductMgr::UpdateProductState()
{
gLogMgr->WriteDebugLog("CProductMgr::UpdateProductState");
int size = m_ProductVec.size();
int LastIdx = -1;
for(int k=0;k<size;k++)
{
m_ProductVec[k].SetbLastOne(false);
if(m_ProductVec[k].IsUsed())//ʹ<>õ<EFBFBD>product <20>ű<EFBFBD><C5B1><EFBFBD>
LastIdx = k;
}
if(LastIdx>=0)
m_ProductVec[LastIdx].SetbLastOne(true);
}
//<2F><>ȡĬ<C8A1>ϵĻ<CFB5><C4BB><EFBFBD>λ<EFBFBD><CEBB>
Dbxy CProductMgr::GetDefualtBasePt()
{
Dbxy pt;
switch(m_BasePtDir)
{
case _DIR_M:
pt.x = (m_DefualtRect.R+m_DefualtRect.L)/2;
pt.y = (m_DefualtRect.T+m_DefualtRect.B)/2;
break;
case _DIR_LT:
pt.x = m_DefualtRect.L;
pt.y = m_DefualtRect.T;
break;
case _DIR_LB:
pt.x = m_DefualtRect.L;
pt.y = m_DefualtRect.B;
break;
case _DIR_RT:
pt.x = m_DefualtRect.R;
pt.y = m_DefualtRect.T;
break;
case _DIR_RB:
pt.x = m_DefualtRect.R;
pt.y = m_DefualtRect.B;
break;
default:
break;
}
return pt;
}
#if 1
//ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>product<63><74><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ץȡƫ<C8A1><C6AB>
//mark 1<>ƶ<EFBFBD><C6B6><EFBFBD>CCD <20><><EFBFBD><EFBFBD><><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CProductMgr::SetProductCenterPt()
{
//<2F><>ǰʵ<C7B0>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>ֵ
Dbxy CurPlatCoord = gPlatformXY->GetCoord();
CProduct &Product = m_ProductVec[0];
bool bETrackType_Track_2 = (CurPlatCoord.y>200);//<2F><>X2 <20><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>ǰproduct <20>Ļ<EFBFBD>׼<EFBFBD><D7BC><EFBFBD><EFBFBD>
Dbxy CurBasePt = Product.GetProductBasePt();
if(bETrackType_Track_2)
{
Dbxy Track2Offset = gProgram_SZ_XL->GetTrack2Offset();
CurBasePt.x += Track2Offset.x;
CurBasePt.y += Track2Offset.y;
}
gProgramCutMgr->MoveObjData(CurBasePt);
Dbxy MarkPt1;
Dbxy MarkPt2;
if(gObjComponentMgr->GetTwoMarkPt(MarkPt1,MarkPt2)==false)
{
CMsgBox MsgBox;
MsgBox.Show("û<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>!");
return;
}
CCamera &Camera = *gCameraHawkvis;
Dbxy CameraPt = Camera.GetCenterPt();
Dbxy PlatCoord;//MarkPt1 <20>Ƶ<EFBFBD>Camera <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
PlatCoord.x = CameraPt.x - MarkPt1.x;
PlatCoord.y = MarkPt1.y - CameraPt.y;
Dbxy Offset;//<2F>ƶ<EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
Offset.x = PlatCoord.x - CurPlatCoord.x;
Offset.y = CurPlatCoord.y - PlatCoord.y;
CurBasePt.x += Offset.x;
CurBasePt.y += Offset.y;
if(bETrackType_Track_2)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
Dbxy Track2Offset = gProgram_SZ_XL->GetTrack2Offset();
CurBasePt.x -= Track2Offset.x;
CurBasePt.y -= Track2Offset.y;
}
Product.SetBasePt(CurBasePt);
gDevicePropertieMgr.SaveAllPropertie();
CMsgBox MsgBox;
MsgBox.Show("λ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
}
#endif