#pragma once #include "GlobalDefine.h" #include "ObjContainer.h" #include "WorkData.h" #include "SmartPtr.h" #include "ObjComponent.h" class CProduct; //标刻区域 class CMarkArea { friend class CDlgMarkArea; public: CMarkArea(); CMarkArea(Dbxy pt,DbSize size); ~CMarkArea(void); void Serialize(CArchive& ar); void WriteWorkFile(vector &LabVec); void ReadWorkFile(CLabVecRang &LabVecRang); void Draw(CDC* pDC,bool bSel); DbRect GetRect(); Dbxy GetBasePt(){return m_BasePt;}; void SetBasePt(Dbxy pt); DbSize GetSize(){return m_Size;}; void CollectOrgWorkData(bool bNeedSel, CProduct & Product); void CollectWorkData(bool bNeedSel,CProduct &Product); bool HasWorkData(); bool HasSpecialWorkData(); vector> &GetDataVec(); vector> &GetSpecialDataVec(); void SetSelState(bool b){m_bSel = b;}; bool IsSelected(){return m_bSel;}; bool IsPtInArea(Dbxy pt); void UpdateSize(); void AdjustByObj(); Dbxy GetRealBasePt();//获取实际中心位置 void SetRealBasePt(Dbxy pt){m_RealBasePt = pt;}; void CalRealBasePt(CProduct &Product); Dbxy GetOffset(){return m_Offset;}; Dbxy GetOffset2(){return m_Offset2;}; void CollectSrcWorkData();//搜集数据源 void ClearSrcWorkData();//清除数据源 private: void CollectLayerObj(CObjContainer &ObjContainer); void CollectComponentObj(vector> &vec,bool bNeedSel); bool DrawObjComponentVec(vector> &vec,CDC* pDC,bool bSel); void CollectObjExt(Sptr &pObj,DbRect &rect); void ResetObjCollectState(); bool CheckbNeedMark(); private: bool m_bSel;//选择状态 Dbxy m_BasePt;//区域的基准点(理论中心点) Dbxy m_RealBasePt;//区域的基准点(实际中心点)根据CCD 的抓取结果算出 DbSize m_Size;//区域的尺寸 Dbxy m_Offset;//区域强制偏移,用来针对区域进行调整(轨道1) Dbxy m_Offset2;//区域强制偏移,用来针对区域进行调整(轨道2) CWorkData m_WorkData;//工作数据 CWorkData m_SpecialWorkData;//特殊工作数据 CWorkData m_SrcWorkData;//工作数据源 CWorkData m_DecWorkData;//实际加工数据 bool m_bSelMarkMode;//是否为选择加工模式 bool m_bNeedMark;//是否需要加工 };