#pragma once #include "MarkArea.h" #include "Module.h" #include "EnumDirection.h" //标刻区域管理 class CMarkAreaMgr :public CModule { public: CMarkAreaMgr(void); ~CMarkAreaMgr(void); virtual void Ini(); virtual void Draw(CDC* pDC);//在pDC 绘制一些内容 virtual MODULE GetModuleType(){return _MARK_AREA_PROP;}; virtual void WriteWorkFileExt(vector &LabVec); virtual void ReadWorkFile(CLabVecRang &LabVecRang); void Add(); void AddArea(CMarkArea &Area){m_AreaVec.push_back(Area);}; void InsertList(CListCtrl &List); void DelSel(int &idx); void DelAll(); void OpArea(int idx,CMarkArea &Area,bool bRead); void Order(int &idx,bool bMoveUp); void SetCurSelIdx(int idx){m_CurSelIdx = idx;}; int GetCurSelIdx(); bool GetbDraw(){return m_bDraw;}; void SetbDraw(bool b){m_bDraw = b;}; void SaveOrLoad(bool bSave,bool bFixed = false); void SaveOrLoadExt(CArchive &ar); bool Empty(){return m_AreaVec.empty();}; bool HasWorkData(); vector &GetAreaVec(){return m_AreaVec;} void ArrayCreat(int CntX,int CntY); void ResetAllAreaSelState(); void MoveAllArea(double Val,DIRECTION dir); void SelAreaByPt(Dbxy pt); void SetAllMarkSize(); void CollectWorkData(bool bNeedSel,CProduct &Product); void SelFristArea(); void SetbDrawIdx(bool b){m_bDrawIdx = b;}; void AdjustByObj(); void CalRealBasePt(CProduct &Product); void ReReadFixMarkArea(); void SetbShowReadDate(){m_bShowReadDate = !m_bShowReadDate;}; bool IsbShowReadDate(){return m_bShowReadDate;}; bool CheckAllObjDataConsistency(); void CreatCenterCrossObj(); void CollectSrcWorkData();//搜集数据源 void ClearSrcWorkData();//清除数据源 void MoveAllAreaToTargetPt(Dbxy Offset); Dbxy GetAllAreaCenterPt(); private: bool IdxValid(int idx); void SwapArea(int &idx1,int idx2); private: vector m_AreaVec; int m_CurSelIdx;//当前选择的area 索引值 bool m_bDraw;//是否绘制 bool m_bDrawIdx;//是否显示area 的索引值 bool m_bShowReadDate;//显示实际数据 double m_CenterCrossR;//中心十字的半径mm }; extern CMarkAreaMgr *gMarkAreaMgr;