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.

292 lines
7.9 KiB
C++

#include "StdAfx.h"
#include "WorkFileMgr.h"
#include "GlobalDefine.h"
#include "TemplateMgr.h"
#include "WorkFileLable.h"
#include "LogMgr.h"
#include "ModuleDeviceMgr.h"
#include "ModuleDrawMgr.h"
#include "ObjComponentMgr.h"
#include "MsgBox.h"
#include "ProductMgr.h"
#include "GlobalFunction.h"
#include "LaserDeviceMgr.h"
#include "MarkAreaMgr.h"
#include "FileMgr.h"
#include "OptoWaveLaserMgr.h"
#include "Laser.h"
#include "PlatformXY.h"
#include "CommonFlowMgr.h"
#include "GlobalDrawMgr.h"
#include "ProgramCutMgr.h"
CString CWorkFileMgr::m_CurOpenFile;
CWorkFileMgr::CWorkFileMgr(void)
{
}
CWorkFileMgr::~CWorkFileMgr(void)
{
}
#if 1
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
bool CWorkFileMgr::IsOpenFile()
{
if(m_CurOpenFile == "")
{
CMsgBox MsgBox;
MsgBox.Show("δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>!");
return false;
}
return true;
}
#include "DxfReadMgr.h"
void CWorkFileMgr::OnOpenFile()
{
TCHAR szFilters[]=("MAK <20>ļ<EFBFBD>(*.mak)|*.mak");
CFileDialog dlg(TRUE,("mak"),NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters);
CString FilePath = gServer->m_RcvFileName;
if (FilePath.IsEmpty())
{
/* CFileMgr fg;
CString exeDir = fg.GetWorkPath();
CString makDir = exeDir + "\\MAK";
dlg.m_ofn.lpstrInitialDir = makDir; //ָ<><D6B8><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>*/
if (dlg.DoModal() == IDOK)
{
FilePath = dlg.GetPathName();
}
else
{
throw (CString)"opencancle";
}
}
ReadWorkFile(FilePath);
//<2F><>¼<EFBFBD><C2BC>ǰ<EFBFBD>򿪵<EFBFBD><F2BFAAB5>ļ<EFBFBD><C4BC><EFBFBD>------------------------------------------
SaveFileName(FilePath);
//<2F><>¼<EFBFBD><C2BC>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CFileMgr FileMgr;
gProgramCutMgr->SetCurOpenFileName(FileMgr.GetFileNameFromPath(FilePath,true));
}
//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CWorkFileMgr::SaveFileName(CString FileName)
{
m_CurOpenFile = FileName;
GetCurDocPtr()->SetTitle(m_CurOpenFile);
}
//<2F><><EFBFBD>浱ǰ<E6B5B1>򿪵<EFBFBD><F2BFAAB5>ĵ<EFBFBD>
void CWorkFileMgr::OnSaveFile()
{
if(m_CurOpenFile == "")//<2F>µ<EFBFBD><C2B5>ļ<EFBFBD>
{
//<2F><><EFBFBD><EFBFBD>Ϊ
OnSaveFileAs();
}
else//<2F><><EFBFBD>浱ǰ<E6B5B1>򿪵<EFBFBD><F2BFAAB5>ļ<EFBFBD>
{
SaveFile(m_CurOpenFile);
CMsgBox MsgBox;
MsgBox.Show(m_CurOpenFile+" <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>!");
}
}
//<2F><><EFBFBD><EFBFBD>Ϊ
void CWorkFileMgr::OnSaveFileAs()
{
TCHAR szFilters[]=("MAK <20>ļ<EFBFBD>(*.mak)|*.mak");
CFileDialog dlg(FALSE,("mak"),("MarkFile"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters);
if(dlg.DoModal()==IDOK)
{
SaveFile(dlg.GetPathName());
}
}
void CWorkFileMgr::SaveFile(CString FileName)
{
SaveWorkFile(FileName);
SaveFileName(FileName);
}
#endif
#if 1
void CWorkFileMgr::SaveWorkFile(CString FilePath)
{
vector<CLab> LabVec;//<2F><EFBFBD><E6B4A2><EFBFBD>б<EFBFBD>ǩ<EFBFBD><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><E6B4A2>ģ<EFBFBD><C4A3>
//<2F>Ѽ<EFBFBD><D1BC><EFBFBD><EFBFBD>б<EFBFBD>ǩ
gTemplateMgr->SaveWorkFile(LabVec);
//gCommonFlowMgr->SaveWorkFile(LabVec);
SaveWorkFileExt(FilePath,LabVec);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD>
void CWorkFileMgr::SaveCutParFile(CString FilePath)
{
vector<CLab> LabVec;//<2F><EFBFBD><E6B4A2><EFBFBD>б<EFBFBD>ǩ<EFBFBD><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><E6B4A2>ģ<EFBFBD><C4A3>
//<2F>Ѽ<EFBFBD><D1BC><EFBFBD><EFBFBD>б<EFBFBD>ǩ
gCommonFlowMgr->SaveWorkFile(LabVec);
SaveWorkFileExt(FilePath,LabVec);
}
//<2F><><EFBFBD>б<EFBFBD>ǩд<C7A9><D0B4><EFBFBD>ļ<EFBFBD>
void CWorkFileMgr::SaveWorkFileExt(CString FilePath,vector<CLab> &LabVec)
{
CFile file(FilePath,CFile::modeReadWrite|CFile::modeCreate);
CArchive ar(&file,CArchive::store);
size_t LabCnt = LabVec.size();
ar<<LabCnt;//<2F><>ǩ<EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
vector<CLab>::iterator iter = LabVec.begin();
vector<CLab>::iterator iter_end = LabVec.end();
for(;iter!=iter_end;iter++)
{
(*iter).Serialize(ar);
}
}
#endif
#if 1
//<2F><><EFBFBD><EFBFBD>obj <20>ļ<EFBFBD>
void CWorkFileMgr::OpenObjFile()
{
TCHAR szFilters[]=("OBJ <20>ļ<EFBFBD>(*.obj)|*.obj");
CFileDialog dlg(TRUE,("obj"),("ObjFile"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters);
if(dlg.DoModal()==IDOK)
{
gDraw->SetbDelOldObj(false);//<2F><>Ҫɾ<D2AA><C9BE>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>obj
ReadObjTemplateFile(dlg.GetPathName());
GetCurViewPtr()->RefreshView();
gDraw->SetbDelOldObj(true);
}
}
//<2F><><EFBFBD><EFBFBD>obj <20>ļ<EFBFBD>
void CWorkFileMgr::SaveObjFile()
{
TCHAR szFilters[]=("OBJ <20>ļ<EFBFBD>(*.obj)|*.obj");
CFileDialog dlg(FALSE,("obj"),("ObjFile"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilters);
if(dlg.DoModal()==IDOK)
{
SaveObjTemplateFile(dlg.GetPathName());
}
}
//ͨ<><CDA8><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>obj <20>ļ<EFBFBD>(<28><><EFBFBD><EFBFBD>·<EFBFBD><C2B7>)
void CWorkFileMgr::ReadObjFileByName(CString FileName)
{
CFileMgr FileMgr;
CString FilePath;//<2F><><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
FileMgr.GetFullFilePath(FilePath,FileName);
ReadObjTemplateFile(FilePath);
}
//ͨ<><CDA8><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>obj <20>ļ<EFBFBD>(<28><><EFBFBD><EFBFBD>·<EFBFBD><C2B7>)
void CWorkFileMgr::ReadObjTemplateFile(CString FilePath)
{
ReadWorkFile(FilePath);
}
//ֻ<><D6BB><EFBFBD><EFBFBD>obj ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CWorkFileMgr::SaveObjTemplateFile(CString FilePath)
{
vector<CLab> LabVec;//<2F><EFBFBD><E6B4A2><EFBFBD>б<EFBFBD>ǩ<EFBFBD><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>Ѽ<EFBFBD><D1BC><EFBFBD><EFBFBD>б<EFBFBD>ǩ
gTemplateMgr->SaveWorkFile(LabVec);
//<2F><><EFBFBD>б<EFBFBD>ǩд<C7A9><D0B4><EFBFBD>ļ<EFBFBD>
SaveWorkFileExt(FilePath,LabVec);
}
#endif
#if 1
void CWorkFileMgr::ReadWorkFile(CString FilePath)
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>----------------------------------------------------------
vector<CLab> LabVec;
ReadWorkFileExt(FilePath,LabVec);
if(LabVec.empty())
return;
//<2F><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>ģ<EFBFBD><C4A3>------------------------------------------------------------
CLabVecRang LabVecRang(LabVec,0,LabVec.size()-1);
vector<CLabVecRang> LabVecRangVec;
SeparateStrVec(LabVecRang,LabVecRangVec,LAB_MODULE_START,LAB_MODULE_END);
//<2F><><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ÿ<EFBFBD><C3BF>ģ<EFBFBD><C4A3>---------------------------------------------------
vector<CLabVecRang>::iterator iter = LabVecRangVec.begin();
vector<CLabVecRang>::iterator iter_end = LabVecRangVec.end();
for(;iter!=iter_end;iter++)
{
if(gModuleDrawMgr.ReadWorkFile(*iter))
continue;//<2F><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>ȡ
gModuleDeviceMgr.ReadWorkFile(*iter);
}
}
void CWorkFileMgr::ReadWorkFileExt(CString FilePath,vector<CLab> &LabVec)
{
CFile file;
if(file.Open(FilePath,CFile::modeRead))
{
CArchive ar(&file,CArchive::load);
size_t LabCnt;
ar>>LabCnt;//<2F>ȶ<EFBFBD>ȡ<EFBFBD><C8A1>ǩ<EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
for(size_t i=0;i<LabCnt;i++)
{
CLab Lab;
Lab.Serialize(ar);
LabVec.push_back(Lab);
}
file.Close();
}
else
{
gLogMgr->WriteDebugLog("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ȡʧ<EFBFBD><EFBFBD>", _LOG_ERROR);
}
}
//<2F><>LabVecRang <20>и<EFBFBD><D0B8><EFBFBD>StrLabStart <20><>StrLabEnd <20><>ǩ<EFBFBD><C7A9>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>str <20><><EFBFBD>浽LabVecRangVec
void CWorkFileMgr::SeparateStrVec(CLabVecRang &LabVecRang,vector<CLabVecRang> &LabVecRangVec,LAB_TYPE StrLabStart,LAB_TYPE StrLabEnd)
{
size_t StartCnt = 0;//<2F><><EFBFBD><EFBFBD>Ƕ<EFBFBD>׵<EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD>
size_t StartIdx = 0;
size_t EndIdx = 0;
size_t Start = LabVecRang.GetStart();
size_t End = LabVecRang.GetEnd()+1;
for(size_t i=Start;i<End;i++)
{
if(LabVecRang.GetLabType(i)==StrLabStart)
{
if(StartCnt==0)//ֻ<>е<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ż<EFBFBD>¼
{
StartIdx = i+1;//<2F><>¼<EFBFBD><C2BC><EFBFBD>ʼλ<CABC><CEBB>
}
StartCnt++;
}
if(LabVecRang.GetLabType(i)==StrLabEnd)
{
if(StartCnt==1)
{
EndIdx = i-1;//Ŀ<><C4BF><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD>жϵ<D0B6><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǩ
//if(EndIdx>StartIdx)//<2F><>Ҫ<EFBFBD>Ѽ<EFBFBD><D1BC>յķ<D5B5>Χ
{
CLabVecRang Rang(LabVecRang.GetVec(),StartIdx,EndIdx);
LabVecRangVec.push_back(Rang);
}
}
StartCnt--;
}
}
}
//<2F><>StrVec <20><><EFBFBD>Һͱ<D2BA>ǩLabStr ƥ<><C6A5><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>ǩ<EFBFBD><C7A9>ֵ,û<><C3BB>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>""
CLab CWorkFileMgr::FindLab(CLabVecRang &LabVecRang,LAB_TYPE LabStr)
{
CLab ret;
size_t Start = LabVecRang.GetStart();
size_t End = LabVecRang.GetEnd()+1;
for(size_t i=Start;i<End;i++)
{
if(LabVecRang.GetLabType(i)==LabStr)
{
ret = LabVecRang.GetLab(i);
break;
}
}
return ret;
}
#endif