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.

105 lines
3.6 KiB
C++

#include "StdAfx.h"
#include "CreaterMarkFlow.h"
#include "GlobalFunction.h"
#include "MarkAreaMgr.h"
#include "WorkCmdMovePlatformXY.h"
#include "Laser.h"
#include "WorkCmdMarkArea.h"
#include "ProductMgr.h"
#include "Motor.h"
#include "WorkCmdMoveMotor.h"
#define MARK_ALL "ALL"
#define MARK_SEL "SEL"
CCreaterMarkFlow::CCreaterMarkFlow(const CString &str)
:CCreaterWorkCmd(str)
{
}
CCreaterMarkFlow::~CCreaterMarkFlow(void)
{
}
//<2F><><EFBFBD>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CCreaterMarkFlow::Creat()
{
//<2F><><EFBFBD><EFBFBD>1 <20><>ʾ<EFBFBD>Ƿ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>ӹ<EFBFBD>
CString MarkType = GetPar(1);
bool bMarkSel = (MarkType == MARK_SEL);
vector<CProduct> &ProductVec = gProductMgr->GetProductVec();
vector<CProduct>::iterator iter = ProductVec.begin();
vector<CProduct>::iterator iter_end = ProductVec.end();
for(int i=0;iter!=iter_end;i++,iter++)
{
if((*iter).IsUsed())
{
//<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>ת
gProductMgr->SetCurProductIdx(i);
CreatExt(bMarkSel);
}
#if 0
if(iter!=iter_end-1)//<2F>ӹ<EFBFBD><D3B9><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>ԭ<EFBFBD><D4AD>
{
CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY();
Dbxy MovePt;
Dbxy TargetPt;
pCmd->MoveToTargetPt(MovePt,TargetPt);
AddCmd(pCmd);
}
#endif
}
}
void CCreaterMarkFlow::CreatExt(bool bMarkSel)
{
//<2F>Ѽ<EFBFBD><D1BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-------------------------------------------------
CollectWorkData(bMarkSel);
//<2F><>area <20><><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-------------------------------
CMarkAreaMgr *MarkAreaMgr = gMarkAreaMgr;
//ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>----------------------------
vector<CMarkArea> &AreaVec = MarkAreaMgr->GetAreaVec();
vector<CMarkArea>::iterator iter = AreaVec.begin();
vector<CMarkArea>::iterator iter_end = AreaVec.end();
for(;iter!=iter_end;iter++)
{
if((*iter).HasWorkData())
{
//<2F>ƶ<EFBFBD>area ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD>ĵ㵽<C4B5><E3B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY();
// pCmd->MoveToTargetPt((*iter).GetRealBasePt(),gLaser->GetCoord());
pCmd->InWorkState();//<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
AddCmd(pCmd);
}
//<2F><EFBFBD><E4BDB9><EFBFBD><EFBFBD>
int FocalAdjustCnt = gProductMgr->GetFocalAdjustCnt();
double FocalAdjustDis = gProductMgr->GetFocalAdjustDis();
for(int i=0;i<FocalAdjustCnt+1;++i)
{
//<2F><><EFBFBD>̵<EFBFBD>ǰarea
{
CWorkCmdMarkArea *pCmd = new CWorkCmdMarkArea((*iter));
AddCmd(pCmd);
}
//<2F>
if(FocalAdjustCnt>0 && !IsDbEqualZero(FocalAdjustDis) && i<FocalAdjustCnt)
{
CMotor &Motor = *(CMotor::GetMotor(MOTOR_Z));
CWorkCmdMoveMotor *pCmd = new CWorkCmdMoveMotor(Motor,FocalAdjustDis);
AddCmd(pCmd);
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>
if(FocalAdjustCnt>0 && !IsDbEqualZero(FocalAdjustDis))
{
for(int i=0;i<FocalAdjustCnt;i++)
{
CMotor &Motor = *(CMotor::GetMotor(MOTOR_Z));
CWorkCmdMoveMotor *pCmd = new CWorkCmdMoveMotor(Motor,FocalAdjustDis*(-1));
AddCmd(pCmd);
}
}
}
}
}