#pragma once #include "module.h" #include "Product.h" #include "Subject.h" #include "EnumDirection.h" //工件产品管理(一个工件指的是一个晶圆之类的) class CProductMgr :public CModule,public CSubject { public: CProductMgr(void); ~CProductMgr(void); virtual CMFCPropertyGridProperty *CreatGridProperty(); virtual void ExportPar(ofstream *pFile); virtual MODULE GetModuleType(){return _PRODUCT_PROP;}; virtual void Ini(); virtual void Draw(CDC* pDC); virtual void WriteWorkFileExt(vector &LabVec); virtual void ReadWorkFile(CLabVecRang &LabVecRang); vector &GetProductVec(){return m_ProductVec;}; CProduct &GetProduct(int idx){return m_ProductVec[idx];}; int GetProductCnt(){return m_ProductVec.size();}; void ReSetTheoryMarkPt(); void SetTheoryMarkPt(Dbxy pt1,Dbxy pt2); Dbxy TheoryPtToRealPt(Dbxy TheoryMarkPt); void TheoryDataToRealData(vector> &vec,Dbxy &Offset); void TheoryDataToRealData(vector &vec,Dbxy &Offset); int GetCurProductIdx(); void CurProductIdxInc(){m_CurProductIdx++;}; void SetCurProductIdx(int idx){m_CurProductIdx = idx;}; int GetUsedProductCnt(); void SetFocalAdjustCnt(int cnt){m_FocalAdjustCnt = cnt;}; void SetBaseFocAdjustDis(double Dis){m_BaseFocAdjustDis = Dis;}; void SetFocalAdjustDis(double Dis){m_FocalAdjustDis = Dis;}; int GetFocalAdjustCnt(){return m_FocalAdjustCnt;}; double GetBaseFocAdjustDis(){return m_BaseFocAdjustDis;}; double GetFocalAdjustDis(){return m_FocalAdjustDis;}; void ResetRealMarkPt(); void WorkTimesInc(); int GetCurWorkTimes(){return m_CurWorkTimes;}; int GetTotalWorkTimes(){return m_TotalWorkTimes;}; //double GetAngleAdjust(){return m_AngleAdjust;}; void MoveObjToBasePt(Dbxy BasePt); void UpdateProductState(); void SetDefualtRect(DbRect r){m_DefualtRect = r;}; Dbxy GetDefualtBasePt(); void SetProductCenterPt(); double GetMaxMarkDisDiff(){return m_MaxMarkDisDiff;}; double GetAdjustAngle() { return m_AngleAdjust; }; private: void InsertProduct(CMFCPropertyGridProperty* p); void DrawMarkPoint(CDC* pDC,Dbxy pt,CString str); void ResetProductVec(int cnt); DbRect GetRect(Dbxy pt); private: int m_UseProductCnt;//使用工件的数量 int m_CurProductIdx;//当前操作的工件索引值 vector m_ProductVec;//工件容器 DbSize m_ProductSize;//每个工件的尺寸(显示用) DIRECTION m_BasePtDir;//产品基准点的方向 int m_CurWorkTimes;//当前加工次数 int m_TotalWorkTimes;//总加工次数 double m_AngleAdjust;//角度微调值(弧度角) double m_MaxMarkDisDiff;//两个mark 点之间的实际距离和理论距离之间的最大差(用来避免识别误判) double m_BaseFocAdjustDis;//基准焦距调整距离mm (和产品的厚度相关) int m_FocalAdjustCnt;//变焦次数 double m_FocalAdjustDis;//变焦距离mm DbRect m_DefualtRect;//默认位置 //用于定位的两个定位点--------------------------- Dbxy m_TheoryMarkPt1;//理论坐标(layer 中的坐标) Dbxy m_TheoryMarkPt2; }; extern CProductMgr *gProductMgr;