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.
75 lines
2.4 KiB
C++
75 lines
2.4 KiB
C++
#include "StdAfx.h"
|
|
#include "CreaterCutFlow.h"
|
|
#include "GlobalFunction.h"
|
|
#include "MarkAreaMgr.h"
|
|
#include "WorkCmdMovePlatformXY.h"
|
|
#include "WorkCmdPciPortSwitch.h"
|
|
#include "Laser.h"
|
|
#include "PciPortMgr.h"
|
|
|
|
#define MARK_ALL "ALL"
|
|
#define MARK_SEL "SEL"
|
|
|
|
CCreaterCutFlow::CCreaterCutFlow(const CString &str)
|
|
:CCreaterWorkCmd(str)
|
|
{
|
|
}
|
|
CCreaterCutFlow::~CCreaterCutFlow(void)
|
|
{
|
|
}
|
|
//根据工作区域的数据来创建切割流程
|
|
void CCreaterCutFlow::Creat()
|
|
{
|
|
//参数1 表示是否全部加工
|
|
CString MarkType = GetPar(1);
|
|
//搜集工作数据-------------------------------------------------
|
|
if(MarkType == MARK_SEL)
|
|
CollectWorkData(true);
|
|
else
|
|
CollectWorkData(false);
|
|
|
|
//使用数据来创建工作流程
|
|
vector<CMarkArea> &AreaVec = gMarkAreaMgr->GetAreaVec();
|
|
vector<CMarkArea>::iterator iter = AreaVec.begin();
|
|
vector<CMarkArea>::iterator iter_end = AreaVec.end();
|
|
for(;iter!=iter_end;iter++)
|
|
{
|
|
vector<vector<Dbxy>> &Vec = (*iter).GetDataVec();
|
|
CreatExt(Vec);
|
|
}
|
|
}
|
|
void CCreaterCutFlow::CreatExt(vector<vector<Dbxy>> &Vec)
|
|
{
|
|
vector<vector<Dbxy>>::iterator iter = Vec.begin();
|
|
vector<vector<Dbxy>>::iterator iter_end = Vec.end();
|
|
for(int i=0;iter!=iter_end;i++,iter++)
|
|
{
|
|
vector<Dbxy>::iterator iter1 = (*iter).begin();
|
|
vector<Dbxy>::iterator iter1_end = (*iter).end();
|
|
for(;iter1!=iter1_end;iter1++)
|
|
{
|
|
//移动平台---------------------------------------------
|
|
{
|
|
CWorkCmdMovePlatformXY *pCmd = new CWorkCmdMovePlatformXY();
|
|
pCmd->MoveToTargetPt((*iter1),gLaser->GetCoord());
|
|
if(iter1 != (*iter).begin())//移动到第一个点是空移
|
|
{
|
|
pCmd->InWorkState();//其他点是工作点
|
|
}
|
|
AddCmd(pCmd);
|
|
}
|
|
//开激光-------------------------------------------------
|
|
if(iter1==(*iter).begin())
|
|
{
|
|
CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_LASER,true);
|
|
AddCmd(pCmd);
|
|
}
|
|
}
|
|
//关激光-------------------------------------------------
|
|
{
|
|
CWorkCmd *pCmd = new CWorkCmdPciPortSwitch(PCI_PORT_LASER,false);
|
|
pCmd->CanNotCancel();//不能取消
|
|
AddCmd(pCmd);
|
|
}
|
|
}
|
|
} |