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.
109 lines
3.2 KiB
C++
109 lines
3.2 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"
|
|
#include "ClientMgr.h"
|
|
|
|
|
|
CWorkCmdMarkArea::CWorkCmdMarkArea(CMarkArea &m)
|
|
:m_MarkArea(m)
|
|
{
|
|
m_bSelMark = false;//是否为选择加工
|
|
}
|
|
CWorkCmdMarkArea::CWorkCmdMarkArea(CMarkArea & m, int AreaIndex)
|
|
: m_MarkArea(m)
|
|
{
|
|
m_bSelMark = false;//是否为选择加工
|
|
m_AreaIndex = AreaIndex;
|
|
}
|
|
CWorkCmdMarkArea::~CWorkCmdMarkArea(void)
|
|
{
|
|
}
|
|
bool CWorkCmdMarkArea::Excute()
|
|
{
|
|
if(!gLogMgr->IsDebuging())
|
|
{
|
|
//获取当前系统时间
|
|
CTime StartTime,CurTime;
|
|
CTimeSpan TimeSpan;//时间差
|
|
StartTime=CTime::GetCurrentTime();
|
|
CMarkCtrl MarkCtrl;
|
|
|
|
CWorkTime WorkTime;
|
|
WorkTime.StartExactTime();
|
|
|
|
vector<vector<Dbxy>> &DataVec = m_MarkArea.GetDataVec();//数据容器
|
|
vector<vector<Dbxy>> &SpecialDataVec = m_MarkArea.GetSpecialDataVec();//数据容器
|
|
int AreaCycleCnt = gCommonFlowMgr->GetAreaCycleCnt();//一个工作区域的循环加工次数
|
|
|
|
if (m_AreaIndex!=-1)
|
|
{
|
|
gClientMgr->SendCmd_StartLaserMark(m_AreaIndex);
|
|
}
|
|
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);
|
|
|
|
if (m_AreaIndex != -1)
|
|
{
|
|
gClientMgr->CheckServerDoneCmd();
|
|
}
|
|
|
|
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);
|
|
//可能会引起报错?
|
|
//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);
|
|
}
|