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.

134 lines
4.7 KiB
C++

#pragma once
#include "PenPar.h"
#include "GlobalDefine.h"
#include "module.h"
#define PEN_CNT 100 //笔的数量
#define SPECIAL_PEN_START 80 //特殊笔号开始的编号
#define PEN_COLOR_0 RGB(10,10,10)
#define PEN_COLOR_1 RGB(0,0,255)
#define PEN_COLOR_2 RGB(255,0,0)
#define PEN_COLOR_3 RGB(0,255,0)
#define PEN_COLOR_4 RGB(255,0,255)
#define PEN_COLOR_5 RGB(255,255,0)
#define PEN_COLOR_6 RGB(255,125,125)
#define PEN_COLOR_7 RGB(125,0,0)
#define PEN_COLOR_8 RGB(125,0,125)
#define PEN_COLOR_9 RGB(0,125,125)
#define PEN_COLOR_10 RGB(255,255,255)
#define PEN_COLOR_11 RGB(185,122,87)
#define PEN_COLOR_12 RGB(255,201,14)
#define PEN_COLOR_13 RGB(181,230,29)
#define PEN_COLOR_14 RGB(153,217,234)
#define PEN_COLOR_15 RGB(112,146,190)
#define PEN_COLOR_16 RGB(200,191,231)
#define PEN_COLOR_17 RGB(63,72,204)
#define PEN_COLOR_18 RGB(163,73,164)
#define PEN_COLOR_19 RGB(34,177,76)
#define PEN_COLOR_20 RGB(127,127,127)
#define MAX_RECIPE_PAR_CNT 12//最大recipe 参数的数量
//笔所控制的参数的类型(数量需要小于VAR_PAR_CNT 20)
//不能随意更改顺序
enum PEN_CTRL_PAR
{
_PAR_NULL = 0,//不控制任何参数
_PAR_SCAN_TRACK_TYPE,//扫描方式
_PAR_LASER_SET_POWER,//激光设定的功率W
_PAR_PLAT_SCAN_SPEED,//扫描速度
_PAR_SCAN_OVERLAP_RATIO_X,//X扫描重叠率%
_PAR_SCAN_OVERLAP_RATIO_Y,//Y扫描重叠率%
_PAR_FOCUS_ADJUST_VAL,//焦距微调量mm
_PAR_LASER_CURR_1,//主激光LDD1 电流A
_PAR_LASER_CURR_2,//主激光LDD2 电流A
_PAR_LASER_PRF,//激光频率(Hz)
_PAR_LASER_PRF2_DELAY,//双脉冲激光器脉冲间隔延时ms
_PAR_RED_LASER_CURR,//辅助激光电流A
_PAR_RED_LASER_PULSE_W,//红光脉宽us
};
//特殊笔类型
enum SPECIAL_PEN
{
_SPECIAL_PEN_NULL = 0,
_SPECIAL_PEN_PLAT_MOVE_SPEED,//平台空移速度
_SPECIAL_PEN_S_MOVE_OFFSET_OBJ,//用于S 形移动时平移obj 对象的笔号
_SPECIAL_PEN_FIND_ORIGIN_XY,//XY 平台找原点的速度
_SPECIAL_PEN_MANUAL_MOVE_X,//手动移动平台X 速度
_SPECIAL_PEN_MANUAL_MOVE_Y,//手动移动平台X 速度
};
//recipe 加工所使用的参数
class CRecipePar
{
public:
CRecipePar()
{
m_MinVal = 0;//参数最小值
m_MaxVal = 0;//参数最大值
};
public:
CString m_RecipeParName;//参数的名字
PEN_CTRL_PAR m_PenCtrlType;//参数对应的笔参数控制类型
double m_MinVal;//参数最小值
double m_MaxVal;//参数最大值
};
//标刻参数管理
class CPenParMgr:public CModule
{
public:
CPenParMgr(void);
~CPenParMgr(void);
virtual void WriteWorkFileExt(vector<CLab> &LabVec);
virtual void ReadWorkFile(CLabVecRang &LabVecRang);
virtual CString GetParDirName(){return "CPenParMgr";};
virtual void OnAppInitialize();
void Copy(CPenParMgr &rls);
void InsertToList(CListCtrl &List);
COLORREF GetPenColor(int pen);
void SaveCurPen(int Pen,CPenPar CurPar);
CPenPar GetPen(int pen);
CPenPar& GetCurPen(){return m_ParVec[m_CurPen];};//获得当前选择的笔
void SetCurPenNum(int num);
int GetCurPenNum(){return m_CurPen;};
int GetCurWorkPenNum(){return m_CurWorkPen;};
void SetCurWorkPen(int n){m_CurWorkPen = n;};
void SaveOrLoad(bool bSave);
void SaveCurPen(CPenPar CurPar);
double GetPar(int PenNum,PEN_CTRL_PAR PenCtrlPar);
double GetPar(CPenPar &PenPar,PEN_CTRL_PAR PenCtrlPar);
bool IsSpecialPen(int n);
void SetPar(int PenNum,PEN_CTRL_PAR PenCtrlPar,double val);
vector<CPenPar> &GetParVec(){return m_ParVec;};
void SetParVec(vector<CPenPar> &vec){m_ParVec = vec;};
void SetParSelectState(vector<bool> &vec);
void SetFirstSelPenAsWorkPen();
void ResetAllSelState();
vector<CRecipePar> &GetRecipeParVec(){return m_PenParVec;};
private:
void IniParVec();
void InitRecipeParVec();
void SaveOrLoadExt(CArchive &ar);
void InsertPenParName(CMFCPropertyGridProperty* p);
void AdjustPenParOrder();
private:
vector<CPenPar> m_ParVec;//参数容器
vector<CRecipePar> m_PenParVec;//recipe 加工所使用的参数容器
int m_CurPen;//当前的笔号
int m_CurWorkPen;//当前工作的笔号
//特殊用途笔号 ---------------------------------------
int m_PenPlatMoveSpeed;//平台空移速度的笔号(运动控制卡)
int m_PenOffsetObj;//用于S 形移动时平移obj 对象的笔号
int m_PenFindOrignXY;//XY 平台找远点的速度
int m_PenManualMoveX;//手动移动平台X 速度
int m_PenManualMoveY;//手动移动平台Y 速度
};
extern CPenParMgr *gPenParMgr;