|
|
|
|
#include "StdAfx.h"
|
|
|
|
|
#include "MarkArea.h"
|
|
|
|
|
#include "DrawSimpleShape.h"
|
|
|
|
|
#include "Layer.h"
|
|
|
|
|
#include "ProductMgr.h"
|
|
|
|
|
#include "Mirror.h"
|
|
|
|
|
#include "TemplateMgr.h"
|
|
|
|
|
#include "ObjComponentMgr.h"
|
|
|
|
|
#include "GlobalFunction.h"
|
|
|
|
|
#include "LogMgr.h"
|
|
|
|
|
#include "CommonFlowMgr.h"
|
|
|
|
|
#include "MarkAreaMgr.h"
|
|
|
|
|
#include "GlobalDrawMgr.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define MIN_OBJ_CNT 5 //<2F><><EFBFBD><EFBFBD>obj <20><><EFBFBD><EFBFBD>
|
|
|
|
|
#define DATA_VECTOR_SIZE 800 //<2F><><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>push_backʱvector <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
#define DIGITAL_10000 10000
|
|
|
|
|
|
|
|
|
|
CMarkArea::CMarkArea()
|
|
|
|
|
{
|
|
|
|
|
UpdateSize();
|
|
|
|
|
m_bSel = false;//ѡ<><D1A1>״̬
|
|
|
|
|
}
|
|
|
|
|
CMarkArea::CMarkArea(Dbxy pt, DbSize size)
|
|
|
|
|
{
|
|
|
|
|
m_RealBasePt = m_BasePt = pt;//<2F><><EFBFBD><D7BC>
|
|
|
|
|
m_Size = size;//<2F>ߴ<EFBFBD>
|
|
|
|
|
}
|
|
|
|
|
CMarkArea::~CMarkArea(void)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
#if 1
|
|
|
|
|
void CMarkArea::Serialize(CArchive& ar)
|
|
|
|
|
{
|
|
|
|
|
if (ar.IsStoring())
|
|
|
|
|
{
|
|
|
|
|
ar << m_BasePt.x;
|
|
|
|
|
ar << m_BasePt.y;
|
|
|
|
|
ar << m_Size.w + DIGITAL_10000;//<2F><><EFBFBD><EFBFBD><EFBFBD>;ɰ<CDBE><C9B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
ar << m_Size.h;
|
|
|
|
|
ar << m_Offset.x;
|
|
|
|
|
ar << m_Offset.y;
|
|
|
|
|
|
|
|
|
|
ar << m_Offset2.x;
|
|
|
|
|
ar << m_Offset2.y;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
ar >> m_BasePt.x;
|
|
|
|
|
ar >> m_BasePt.y;
|
|
|
|
|
double val;
|
|
|
|
|
ar >> val;
|
|
|
|
|
bool bNewVersions = (val >= DIGITAL_10000);
|
|
|
|
|
if (bNewVersions)
|
|
|
|
|
val -= DIGITAL_10000;
|
|
|
|
|
m_Size.w = val;
|
|
|
|
|
|
|
|
|
|
ar >> m_Size.h;
|
|
|
|
|
ar >> m_Offset.x;
|
|
|
|
|
ar >> m_Offset.y;
|
|
|
|
|
if (bNewVersions)
|
|
|
|
|
{
|
|
|
|
|
ar >> m_Offset2.x;
|
|
|
|
|
ar >> m_Offset2.y;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
m_Offset2.x = m_Offset.x;
|
|
|
|
|
m_Offset2.y = m_Offset.y;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void CMarkArea::WriteWorkFile(vector<CLab> &LabVec)
|
|
|
|
|
{
|
|
|
|
|
LabVec.push_back(CLab(LAB_NULL, m_BasePt.x));
|
|
|
|
|
LabVec.push_back(CLab(LAB_NULL, m_BasePt.y));
|
|
|
|
|
LabVec.push_back(CLab(LAB_NULL, m_Size.w));
|
|
|
|
|
LabVec.push_back(CLab(LAB_NULL, m_Size.h));
|
|
|
|
|
LabVec.push_back(CLab(LAB_NULL, m_Offset.x));
|
|
|
|
|
LabVec.push_back(CLab(LAB_NULL, m_Offset.y));
|
|
|
|
|
}
|
|
|
|
|
void CMarkArea::ReadWorkFile(CLabVecRang &LabVecRang)
|
|
|
|
|
{
|
|
|
|
|
int idx = LabVecRang.GetStart();
|
|
|
|
|
m_BasePt.x = LabVecRang.GetDouble(idx++);
|
|
|
|
|
m_BasePt.y = LabVecRang.GetDouble(idx++);
|
|
|
|
|
m_Size.w = LabVecRang.GetDouble(idx++);
|
|
|
|
|
m_Size.h = LabVecRang.GetDouble(idx++);
|
|
|
|
|
m_Offset.x = LabVecRang.GetDouble(idx++);
|
|
|
|
|
m_Offset.y = LabVecRang.GetDouble(idx++);
|
|
|
|
|
}
|
|
|
|
|
//<2F><><EFBFBD>³ߴ<C2B3>Ϊ<EFBFBD><EFBFBD>Χ
|
|
|
|
|
void CMarkArea::UpdateSize()
|
|
|
|
|
{
|
|
|
|
|
m_Size = gMirror->GetRange();
|
|
|
|
|
}
|
|
|
|
|
//<2F><>ȡarea <20><><EFBFBD><EFBFBD><EFBFBD>۷<EFBFBD>Χ
|
|
|
|
|
DbRect CMarkArea::GetRect()
|
|
|
|
|
{
|
|
|
|
|
DbRect rect(m_BasePt, m_Size);
|
|
|
|
|
return rect;
|
|
|
|
|
}
|
|
|
|
|
void CMarkArea::Draw(CDC* pDC, bool bSel)
|
|
|
|
|
{
|
|
|
|
|
CPen pen;
|
|
|
|
|
if (bSel || m_bSel)
|
|
|
|
|
{
|
|
|
|
|
pen.CreatePen(PS_DOT, 1, RGB_RED);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
pen.CreatePen(PS_DOT, 1, RGB_PINK);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DbSize size = GetSize();
|
|
|
|
|
DbRect rect;
|
|
|
|
|
rect.Creat(m_BasePt, size);
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
DrawRect(pDC, pen, rect, false);
|
|
|
|
|
//ѡ<><D1A1>״̬ʱ<CCAC><CAB1><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if (m_bSel)
|
|
|
|
|
{
|
|
|
|
|
Drawgridding(pDC, pen, rect, 1);
|
|
|
|
|
}
|
|
|
|
|
//<2F><>ʾʵ<CABE><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if (gMarkAreaMgr->IsbShowReadDate())
|
|
|
|
|
{
|
|
|
|
|
vector<vector<Dbxy>> &DataVec = m_WorkData.GetDataVec();
|
|
|
|
|
gDraw->DrawDbxyVec(pDC, DataVec, m_BasePt);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CMarkArea::IsPtInArea(Dbxy pt)
|
|
|
|
|
{
|
|
|
|
|
return IsPointInRect(pt, DbRect(m_BasePt, m_Size));
|
|
|
|
|
}
|
|
|
|
|
void CMarkArea::SetBasePt(Dbxy pt)
|
|
|
|
|
{
|
|
|
|
|
m_BasePt = pt;
|
|
|
|
|
SetRealBasePt(pt);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#if 1
|
|
|
|
|
//<2F><>ȡʵ<C8A1><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
Dbxy CMarkArea::GetRealBasePt()
|
|
|
|
|
{
|
|
|
|
|
/*if (m_RealBasePt.Equal(Dbxy(0, 0)))*/
|
|
|
|
|
m_RealBasePt = m_BasePt;
|
|
|
|
|
return m_RealBasePt;
|
|
|
|
|
}
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
|
|
|
|
|
void CMarkArea::CalRealBasePt(CProduct &Product)
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>markarea <20><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
m_RealBasePt = Product.TheoryPtToRealPt(m_BasePt);
|
|
|
|
|
}
|
|
|
|
|
//<2F>Ѽ<EFBFBD>layer <20>ڵ<EFBFBD>obj
|
|
|
|
|
void CMarkArea::CollectLayerObj(CObjContainer &ObjContainer)
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>layer <20><>obj <20><><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>
|
|
|
|
|
CLayer &Layer = CLayer::Instance();
|
|
|
|
|
CObjContainer &LayerObjContainer = Layer.GetObjContainer();
|
|
|
|
|
vector<Sptr<CObjBase>> &ObjVec = LayerObjContainer.GetObjVec();
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ÿ<EFBFBD><C3BF>obj <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>markarea
|
|
|
|
|
DbRect Rect = GetRect();
|
|
|
|
|
vector<Sptr<CObjBase>>::iterator iter = ObjVec.begin();
|
|
|
|
|
vector<Sptr<CObjBase>>::iterator iter_end = ObjVec.end();
|
|
|
|
|
for (; iter != iter_end; iter++)
|
|
|
|
|
{
|
|
|
|
|
if ((*iter)->IsInRect(Rect, false))//ֻҪһ<D2AA><D2BB><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>rect <20>ڶ<EFBFBD><DAB6><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
ObjContainer.AddObject((*iter));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//<2F>Ѽ<EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>obj <20>ᱻ<EFBFBD><E1B1BB><EFBFBD><EFBFBD>,<2C><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>area <20>ظ<EFBFBD><D8B8>ռ<EFBFBD>)
|
|
|
|
|
void CMarkArea::CollectComponentObj(vector<vector<Dbxy>> &vec, bool bNeedSel)
|
|
|
|
|
{
|
|
|
|
|
//<2F>ռ<EFBFBD>area <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
gObjComponentMgr->CollectWorkData(GetRect(), vec, bNeedSel);
|
|
|
|
|
}
|
|
|
|
|
//ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>area <20><><EFBFBD><EFBFBD><EFBFBD>ĺͳߴ<CDB3>
|
|
|
|
|
void CMarkArea::AdjustByObj()
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>area <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ݷ<EFBFBD>Χ
|
|
|
|
|
DbRect DataRect = gObjComponentMgr->SetMarkedStateRect(GetRect(), false);
|
|
|
|
|
DbSize size = DataRect.GetSize();
|
|
|
|
|
if (size.w > 0 && size.h > 0)
|
|
|
|
|
{
|
|
|
|
|
m_BasePt = DataRect.GetCenterPt();
|
|
|
|
|
m_Size = size;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
|
|
|
|
void CMarkArea::ClearSrcWorkData()
|
|
|
|
|
{
|
|
|
|
|
m_SrcWorkData.Clear();
|
|
|
|
|
m_DecWorkData.Clear();
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>㹻<EFBFBD>Ŀռ<C4BF>
|
|
|
|
|
m_SrcWorkData.Resize(DATA_VECTOR_SIZE);
|
|
|
|
|
m_DecWorkData.Resize(DATA_VECTOR_SIZE);
|
|
|
|
|
}
|
|
|
|
|
//<2F>Ѽ<EFBFBD><D1BC><EFBFBD><EFBFBD><EFBFBD>Դ
|
|
|
|
|
void CMarkArea::CollectSrcWorkData()
|
|
|
|
|
{
|
|
|
|
|
CollectComponentObj(m_SrcWorkData.GetDataVec(), false);
|
|
|
|
|
m_DecWorkData = m_SrcWorkData;//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|
|
|
|
}
|
|
|
|
|
//<2F>Ƿ<EFBFBD><C7B7>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
bool CMarkArea::HasWorkData()
|
|
|
|
|
{
|
|
|
|
|
if (m_bSelMarkMode)
|
|
|
|
|
return !m_WorkData.Empty();
|
|
|
|
|
else//ȫ<><C8AB><EFBFBD>ӹ<EFBFBD>ʱʹ<CAB1><CAB9>֮ǰ<D6AE><C7B0><EFBFBD><D7BC><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
|
|
|
|
|
return (!m_DecWorkData.Empty() && m_bNeedMark);
|
|
|
|
|
}
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD>ӹ<EFBFBD>
|
|
|
|
|
bool CMarkArea::CheckbNeedMark()
|
|
|
|
|
{
|
|
|
|
|
m_bNeedMark = gObjComponentMgr->HasObjInRect(GetRect());
|
|
|
|
|
return m_bNeedMark;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
//<2F>Ѽ<EFBFBD><D1BC><EFBFBD>area <20><>Χ<EFBFBD>ڵ<EFBFBD>obj <20><><EFBFBD><EFBFBD>(Product <20>ǵ<EFBFBD>ǰҪ<C7B0>ӹ<EFBFBD><D3B9>Ĺ<EFBFBD><C4B9><EFBFBD>,<2C><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>)
|
|
|
|
|
void CMarkArea::CollectOrgWorkData(bool bNeedSel)
|
|
|
|
|
{
|
|
|
|
|
m_OrgCenter = m_BasePt;
|
|
|
|
|
m_WorkData.Clear();
|
|
|
|
|
m_SpecialWorkData.Clear();//<2F><><EFBFBD><EFBFBD><E2B5B6><EFBFBD><EFBFBD>
|
|
|
|
|
vector<vector<Dbxy>> &WorkDataVec = m_WorkData.GetDataVec();
|
|
|
|
|
vector<vector<Dbxy>> &SpecialWorkDataVec = m_SpecialWorkData.GetDataVec();
|
|
|
|
|
//<2F><><EFBFBD>Ѽ<EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-----------------------------------
|
|
|
|
|
CollectComponentObj(WorkDataVec, bNeedSel);
|
|
|
|
|
//<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
gCommonFlowMgr->SetbCollectSpecialObj(true);
|
|
|
|
|
CollectComponentObj(SpecialWorkDataVec, bNeedSel);
|
|
|
|
|
gCommonFlowMgr->SetbCollectSpecialObj(false);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2>Ѽ<EFBFBD>layer <20><>obj <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if (WorkDataVec.empty() && !gObjComponentMgr->HasObj())
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>area <20>ڵ<EFBFBD>obj
|
|
|
|
|
CObjContainer ObjContainer;
|
|
|
|
|
CollectLayerObj(ObjContainer);
|
|
|
|
|
//<2F><>ȡobj <20><><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>(<28><><EFBFBD><EFBFBD>ֵ) <20><>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>layer <20><><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
ObjContainer.GetObjPtData(WorkDataVec, bNeedSel);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void CMarkArea::CollectWorkData(bool bNeedSel, CProduct &Product)
|
|
|
|
|
{
|
|
|
|
|
gLogMgr->WriteDebugLog("func : CMarkArea---->CollectWorkData");
|
|
|
|
|
|
|
|
|
|
m_bSelMarkMode = bNeedSel;//<2F>Ƿ<EFBFBD>Ϊѡ<CEAA><D1A1><EFBFBD>ӹ<EFBFBD>ģʽ
|
|
|
|
|
|
|
|
|
|
//<2F><>Ҫ<EFBFBD>ƶ<EFBFBD>area <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
//m_RealBasePt = m_BasePt;
|
|
|
|
|
auto AreaCenter = m_RealBasePt; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>layer <20><><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊarea ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
//<2F><><EFBFBD>ݵ<EFBFBD>ƫ<EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>(ÿ<><C3BF>area <20>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+ <20><><EFBFBD><EFBFBD><EFBFBD>Եĵ<D4B5><C4B5><EFBFBD><EFBFBD><EFBFBD>)
|
|
|
|
|
/*Dbxy Offset;
|
|
|
|
|
{
|
|
|
|
|
Offset.x = -m_RealBasePt.x;
|
|
|
|
|
Offset.y = -m_RealBasePt.y;
|
|
|
|
|
}*/
|
|
|
|
|
Dbxy CutOffsetAdjust; //<2F>и<EFBFBD>ƫ<EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
CutOffsetAdjust= gCommonFlowMgr->GetAdjustOffsetAll();
|
|
|
|
|
/*
|
|
|
|
|
Dbxy AllOffset = gCommonFlowMgr->GetAdjustOffset();
|
|
|
|
|
Dbxy AllOffset2 = gCommonFlowMgr->GetAdjustOffsetAll();
|
|
|
|
|
Dbxy AreaOffset;
|
|
|
|
|
//ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ò<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>ֵ
|
|
|
|
|
if(gProgram_SZ_XL->GetCurMarkingTrack()==_ETrackType_Track_1)
|
|
|
|
|
AreaOffset = m_Offset;
|
|
|
|
|
else
|
|
|
|
|
AreaOffset = m_Offset2;
|
|
|
|
|
CutOffsetAdjust.x = AreaOffset.x + AllOffset.x + AllOffset2.x;//-m_RealBasePt.x;
|
|
|
|
|
CutOffsetAdjust.y = AreaOffset.y + AllOffset.y + AllOffset2.y;// -m_RealBasePt.y;
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (1)
|
|
|
|
|
{
|
|
|
|
|
vector<vector<Dbxy>> &WorkDataVec = m_WorkData.GetDataVec();
|
|
|
|
|
vector<vector<Dbxy>> &SpecialWorkDataVec = m_SpecialWorkData.GetDataVec();
|
|
|
|
|
/*m_WorkData.Clear();
|
|
|
|
|
m_SpecialWorkData.Clear();//<2F><><EFBFBD><EFBFBD><E2B5B6><EFBFBD><EFBFBD>
|
|
|
|
|
vector<vector<Dbxy>> &WorkDataVec = m_WorkData.GetDataVec();
|
|
|
|
|
vector<vector<Dbxy>> &SpecialWorkDataVec = m_SpecialWorkData.GetDataVec();
|
|
|
|
|
//<2F><><EFBFBD>Ѽ<EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-----------------------------------
|
|
|
|
|
CollectComponentObj(WorkDataVec, bNeedSel);
|
|
|
|
|
//<2F>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
gCommonFlowMgr->SetbCollectSpecialObj(true);
|
|
|
|
|
CollectComponentObj(SpecialWorkDataVec, bNeedSel);
|
|
|
|
|
gCommonFlowMgr->SetbCollectSpecialObj(false);
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2>Ѽ<EFBFBD>layer <20><>obj <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if (WorkDataVec.empty() && !gObjComponentMgr->HasObj())
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>area <20>ڵ<EFBFBD>obj
|
|
|
|
|
CObjContainer ObjContainer;
|
|
|
|
|
CollectLayerObj(ObjContainer);
|
|
|
|
|
//<2F><>ȡobj <20><><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>(<28><><EFBFBD><EFBFBD>ֵ) <20><>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>layer <20><><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
ObjContainer.GetObjPtData(WorkDataVec, bNeedSel);
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
bool HasData = false;//<2F>ж<EFBFBD><D0B6><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
vector<vector<Dbxy>>::iterator iter = WorkDataVec.begin();
|
|
|
|
|
vector<vector<Dbxy>>::iterator iter_end = WorkDataVec.end();
|
|
|
|
|
for (; iter != iter_end; iter++)
|
|
|
|
|
{
|
|
|
|
|
if (!(*iter).empty())
|
|
|
|
|
{
|
|
|
|
|
HasData = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!HasData)
|
|
|
|
|
{
|
|
|
|
|
WorkDataVec.clear();
|
|
|
|
|
SpecialWorkDataVec.clear();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Product.TheoryDataToRealData(WorkDataVec, m_OrgCenter, CutOffsetAdjust);
|
|
|
|
|
Product.TheoryDataToRealData(SpecialWorkDataVec, m_OrgCenter, CutOffsetAdjust);
|
|
|
|
|
return;
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ץȡ<D7A5><C8A1><EFBFBD><EFBFBD>mark <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if (gCommonFlowMgr->IsbStretchDataToRealSize())
|
|
|
|
|
{
|
|
|
|
|
Product.StretchDataToRealSize(WorkDataVec);
|
|
|
|
|
Product.StretchDataToRealSize(SpecialWorkDataVec);
|
|
|
|
|
}
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>תƫ<D7AA>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ʵ<EFBFBD><CAB5>ֵ(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>layer <20><><EFBFBD><EFBFBD>)
|
|
|
|
|
Product.TheoryDataToRealData0(WorkDataVec, AreaCenter,CutOffsetAdjust);
|
|
|
|
|
Product.TheoryDataToRealData0(SpecialWorkDataVec, AreaCenter, CutOffsetAdjust);
|
|
|
|
|
}
|
|
|
|
|
else//ȫ<><C8AB><EFBFBD>ӹ<EFBFBD>ʱʹ<CAB1><CAB9>֮ǰ<C7B0><D7BC><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD>ӹ<EFBFBD>
|
|
|
|
|
if (CheckbNeedMark())
|
|
|
|
|
{
|
|
|
|
|
Product.TheoryDataToRealData(m_SrcWorkData.GetDataVec(), m_DecWorkData.GetDataVec(), CutOffsetAdjust);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
bool CMarkArea::DrawObjComponentVec(vector<Sptr<CObjComponent>> &vec, CDC* pDC, bool bSel)
|
|
|
|
|
{
|
|
|
|
|
vector<Sptr<CObjComponent>>::iterator iter = vec.begin();
|
|
|
|
|
vector<Sptr<CObjComponent>>::iterator iter_end = vec.end();
|
|
|
|
|
for (; iter != iter_end; iter++)
|
|
|
|
|
{
|
|
|
|
|
(*iter)->Draw(pDC);
|
|
|
|
|
if (IsShiftKeyDown())
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
//<2F><>ȡ<EFBFBD>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
vector<vector<Dbxy>> &CMarkArea::GetDataVec()
|
|
|
|
|
{
|
|
|
|
|
if (m_bSelMarkMode)
|
|
|
|
|
return m_WorkData.GetDataVec();
|
|
|
|
|
else//ȫ<><C8AB><EFBFBD>ӹ<EFBFBD>ʱʹ<CAB1><CAB9>֮ǰ<D6AE><C7B0><EFBFBD><D7BC><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
|
|
|
|
|
return m_DecWorkData.GetDataVec();
|
|
|
|
|
}
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
vector<vector<Dbxy>> &CMarkArea::GetSpecialDataVec()
|
|
|
|
|
{
|
|
|
|
|
return m_SpecialWorkData.GetDataVec();
|
|
|
|
|
}
|
|
|
|
|
bool CMarkArea::HasSpecialWorkData()
|
|
|
|
|
{
|
|
|
|
|
return !m_SpecialWorkData.Empty();
|
|
|
|
|
}
|
|
|
|
|
|