#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 &AreaVec = gMarkAreaMgr->GetAreaVec(); vector::iterator iter = AreaVec.begin(); vector::iterator iter_end = AreaVec.end(); for(;iter!=iter_end;iter++) { vector> &Vec = (*iter).GetDataVec(); CreatExt(Vec); } } void CCreaterCutFlow::CreatExt(vector> &Vec) { vector>::iterator iter = Vec.begin(); vector>::iterator iter_end = Vec.end(); for(int i=0;iter!=iter_end;i++,iter++) { vector::iterator iter1 = (*iter).begin(); vector::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); } } }