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.
TwoLaserHead-PushJig/LaiPuLaser/ProductMgr.h

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;