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.

98 lines
4.3 KiB
C

4 years ago
#pragma once
#include "GlobalDefine.h"
#include "LabVecRang.h"
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ
class CProduct
{
friend class CProductMgr;
public:
CProduct(void);
~CProduct(void);
void Draw(CDC* pDC);
void WriteWorkFile(vector<CLab> &LabVec);
void ReadWorkFile(CLabVecRang &LabVecRang);
void SetBasePt(Dbxy pt){m_BasePt = pt;};
Dbxy &GetProductBasePt(){return m_BasePt;};
Dbxy &GetOffset(){return m_Offset;};
double GetRotateAng();
bool &IsUsed(){return m_bUsed;};
void SetUsed(bool b){m_bUsed = b;};
void GetMarkCoord(Dbxy &mark1,Dbxy &mark2);
void SetRealMarkPt(Dbxy pt);
void ResetRealMarkPt();
void SetTheoryMarkPt(Dbxy pt1,Dbxy pt2);
void SetbHasMarkPt3(bool b){m_bHasMarkPt3 = b;};
void SetTheoryMark3Pt(Dbxy pt){m_TheoryMarkPt3 = pt;};
void SetRealMark3Pt(Dbxy pt){m_RealMarkPt3 = pt;};
Dbxy TheoryPtToRealPt(Dbxy TheoryMarkPt);
void StretchDataToRealSize(vector<vector<Dbxy>> &vec);
void TheoryDataToRealData(vector<vector<Dbxy>> &vec, Dbxy &Offset);
void TheoryDataToRealData(vector<Dbxy> &vec, Dbxy &Offset);
void TheoryDataToRealData(vector<Dbxy>& vec, Dbxy & BaseOffset, Dbxy CutAdjust);
void ResetAffinePars();//<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><E4BBBB><EFBFBD><EFBFBD>
void TheoryDataToRealData(vector<vector<Dbxy>>& vec, Dbxy & BaseOffset, Dbxy CutAdjust);
void TheoryDataToRealData(vector<vector<Dbxy>> &SrcVec,vector<vector<Dbxy>> &DecVec,Dbxy &Offset);
void TheoryDataToRealData(vector<Dbxy> &SrcVec,vector<Dbxy> &DecVec,Dbxy &Offset);
bool IsSetRealMarkPt1();
bool IsSetRealMarkPt2();
void UseDefualtOffset();
bool IsMarkReady();
bool IsbLastOne(){return m_bLastOne;};
void SetbLastOne(bool b){m_bLastOne = b;};
void SetbNewAddProduct(bool bNew) { m_bNewAddProduct = bNew; };//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD>Ʒ
bool IsbNewAddProduct() { return m_bNewAddProduct; };//<2F><>ѯ<EFBFBD>Ƿ<EFBFBD><C7B7>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD>Ʒ
private:
void CalAffinePars();
void CalTheoryToRealPar();
Dbxy CalRealProductScale();
void StretchPt(Dbxy &Pt,SObjOperatePar &Par);
void CalRealStretchPar();
double CalRealProductScaleExt(Dbxy TheoryMarkPt1,Dbxy TheoryMarkPt2,Dbxy RealMarkPt1,Dbxy RealMarkPt2);
private:
Dbxy m_BasePt;//<2F><><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool m_bUsed;//<2F>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>
bool m_bLastOne;//<2F>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
bool m_bHasMarkPt3;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>mark3
bool m_bNewAddProduct = false;//<2F>Ƿ<EFBFBD><C7B7>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD>Ʒ(201910)
public:
//<2F><><EFBFBD>ڶ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>---------------------------
Dbxy m_TheoryMarkPt1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(layer <20>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>) mm
Dbxy m_TheoryMarkPt2;
Dbxy m_TheoryMarkPt3;
//ccd ץȡ<D7A5><C8A1>ʵ<EFBFBD><CAB5>ֵ------------------------------------
Dbxy m_RealMarkPt1;//<2F><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>) mm
Dbxy m_RealMarkPt2;
Dbxy m_RealMarkPt3;
public:
Dbxy o_TheoryMarkPt1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>ƶ<EFBFBD>ʱ) mm
Dbxy o_TheoryMarkPt2;
Dbxy o_TheoryMarkPt3;
//ccd ץȡ<D7A5><C8A1>ʵ<EFBFBD><CAB5>ֵ------------------------------------
Dbxy o_RealMarkPt1;//<2F><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>(<28><><EFBFBD>ƶ<EFBFBD>ʱ) mm
Dbxy o_RealMarkPt2;
Dbxy o_RealMarkPt3;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>------------------------------------
float m_p00=1;
float m_p01=0;
float m_p02=0;
float m_p10=0;
float m_p11=1;
float m_p12=0;
public:
//ʵ<><CAB5>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>---------------------------------
Dbxy m_Offset;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3>Ϊƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
double m_RotateAng;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3>Ϊƽ̨<C6BD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD>)
double m_MaxRotateAng;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>(360 <20>Ƚ<EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕȳ<C7B6><C8B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
SObjOperatePar m_StretchParX;//X <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SObjOperatePar m_StretchParY;//Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};