#include "StdAfx.h" #include "WorkCmdMarkArea.h" #include "MarkCtrl.h" #include "MarkAreaMgr.h" #include "CStringFuc.h" #include "GlobalFunction.h" #include "ObjComponentMgr.h" #include "ExceptionMsg.h" #include "Mirror.h" #include "WorkTime.h" #include "CommonFlowMgr.h" CWorkCmdMarkArea::CWorkCmdMarkArea(CMarkArea &m) :m_MarkArea(m) { m_bSelMark = false;//是否为选择加工 } CWorkCmdMarkArea::~CWorkCmdMarkArea(void) { } bool CWorkCmdMarkArea::Excute() { if(!gLogMgr->IsDebuging()) { //获取当前系统时间 CTime StartTime,CurTime; CTimeSpan TimeSpan;//时间差 StartTime=CTime::GetCurrentTime(); CMarkCtrl MarkCtrl; vector> &DataVec = m_MarkArea.GetDataVec();//数据容器 vector> &SpecialDataVec = m_MarkArea.GetSpecialDataVec();//数据容器 int AreaCycleCnt = gCommonFlowMgr->GetAreaCycleCnt();//一个工作区域的循环加工次数 CWorkTime WorkTime; WorkTime.StartExactTime(); MarkCtrl.StartMarkPci(DataVec,SpecialDataVec,AreaCycleCnt); CurTime=CTime::GetCurrentTime(); TimeSpan = CurTime - StartTime; CString Time = Time2Str(TimeSpan.GetHours())+":"+Time2Str(TimeSpan.GetMinutes())+":"+Time2Str(TimeSpan.GetSeconds()); gLogMgr->WriteDebugLog(Time); int ExactSpanTime = WorkTime.GetExactTime(); CString LogStr; LogStr.Format(_T("[ExactSpanTime] = [%d]"),ExactSpanTime); gLogMgr->WriteDebugLog(LogStr); } //绘制当前加工情况----------------------------------------------- { //重置所有area 的选择状态 gMarkAreaMgr->ResetAllAreaSelState(); //m_MarkArea.SetSelState(true);//选择当前加工的area //设置markarea 内的obj 为已加工状态 // gObjComponentMgr->SetMarkedStateRect(m_MarkArea.GetRect(), m_bSelMark); // gObjComponentMgr->SetMarkedStateRect(m_MarkArea.GetRect(),true); //可能会引起报错? //m_pView->MoveViewCenter(); //m_pView->RefreshView(); } return true; } //调整加工次数 void CWorkCmdMarkArea::CreatWorkDataByTimes(int times) { if(times>1) { vector> &DataVec = m_MarkArea.GetDataVec();//数据容器 vector>::iterator iter = DataVec.begin(); vector>::iterator iter_end = DataVec.end(); for(;iter!=iter_end;iter++) { vector VecTmp = *iter; for(int i=1;i::iterator iter1 = VecTmp.begin(); vector::iterator iter1_end = VecTmp.end(); for(;iter1!=iter1_end;iter1++) { (*iter).push_back(*iter1); } } } } } void CWorkCmdMarkArea::WirteLog() { CString str1 = "[WorkCmd][MarkArea]"; gLogMgr->WriteDebugLog(str1); }