#pragma once #include "GlobalDefine.h" #include "ObjContainer.h" #include "WorkData.h" #include "SmartPtr.h" #include "ObjComponent.h" class CProduct; //标刻区域 class CMarkArea { 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 CollectWorkData(bool bNeedSel); bool HasWorkData(); vector> &GetDataVec(){return m_WorkData.GetDataVec();}; CWorkData &GetWorkData(){return m_WorkData;}; 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;}; int GetAreaIdx(){return m_AreaIdx;}; void SetAreaIdx(int n){m_AreaIdx = n;}; int GetAreaPenNum(){return m_AreaPenNum;}; private: void CollectLayerObjExt(CObjContainer &ObjContainer,bool bNeedSel); void CollectComponentObj(vector> &vec,bool bNeedSel); bool DrawObjComponentVec(vector> &vec,CDC* pDC,bool bSel); void CollectObjExt(Sptr &pObj,DbRect &rect); void ResetObjCollectState(); void Init(); private: Dbxy m_BasePt;//区域的基准点(理论中心点) Dbxy m_RealBasePt;//根据area 内的数据中心调整的基准点,用于保证尽量使用振镜的中心区域加工 DbSize m_Size;//区域的尺寸 Dbxy m_Offset;//区域强制偏移,用来针对区域进行调整 bool m_bSel;//选择状态 CWorkData m_WorkData;//工作数据(收集来的点数据) CObjContainer m_ObjContainer;//也可以加入图形obj 对象 int m_AreaIdx;//区域的编号 int m_AreaPenNum;//第一个区域内obj 的笔号 };