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.

96 lines
2.9 KiB
C++

#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<vector<Dbxy>> &DataVec = m_MarkArea.GetDataVec();//数据容器
vector<vector<Dbxy>> &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<vector<Dbxy>> &DataVec = m_MarkArea.GetDataVec();//数据容器
vector<vector<Dbxy>>::iterator iter = DataVec.begin();
vector<vector<Dbxy>>::iterator iter_end = DataVec.end();
for(;iter!=iter_end;iter++)
{
vector<Dbxy> VecTmp = *iter;
for(int i=1;i<times;i++)
{
vector<Dbxy>::iterator iter1 = VecTmp.begin();
vector<Dbxy>::iterator iter1_end = VecTmp.end();
for(;iter1!=iter1_end;iter1++)
{
(*iter).push_back(*iter1);
}
}
}
}
}
void CWorkCmdMarkArea::WirteLog()
{
CString str1 = "[WorkCmd][MarkArea]";
gLogMgr->WriteDebugLog(str1);
}