You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
3.6 KiB
C++
82 lines
3.6 KiB
C++
#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<CLab> &LabVec);
|
|
virtual void ReadWorkFile(CLabVecRang &LabVecRang);
|
|
|
|
vector<CProduct> &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<vector<Dbxy>> &vec,Dbxy &Offset);
|
|
void TheoryDataToRealData(vector<Dbxy> &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();
|
|
void SetCamCoord();
|
|
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<CProduct> 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;
|
|
|