⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlqdoc.cpp

📁 齿轮检测软件
💻 CPP
字号:
// dlqDoc.cpp : implementation of the CDlqDoc class
//

#include "stdafx.h"
#include "dlq.h"
#include  "clrdlg.h"
#include "dlqDoc.h"
#include "pardlg.h"
#include "gearsel.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlqDoc

IMPLEMENT_DYNCREATE(CDlqDoc, CDocument)

BEGIN_MESSAGE_MAP(CDlqDoc, CDocument)
	//{{AFX_MSG_MAP(CDlqDoc)
	ON_UPDATE_COMMAND_UI(ID_INDICATOR_NAME,onupdatename)
	ON_UPDATE_COMMAND_UI(ID_INDICATOR_MO,onupdatemo)
	ON_UPDATE_COMMAND_UI(ID_INDICATOR_Z,onupdatez)
	ON_UPDATE_COMMAND_UI(ID_INDICATOR_A,onupdatea)
	ON_UPDATE_COMMAND_UI(ID_INDICATOR_B,onupdateb)
	ON_UPDATE_COMMAND_UI(ID_INDICATOR_FX,onupdatefx)
	ON_UPDATE_COMMAND_UI(ID_INDICATOR_BEI,onupdatebeili)
	ON_UPDATE_COMMAND_UI(ID_INDICATOR_LINE,onupdateline)
	ON_COMMAND(ID_FILE_NEW, OnFileNew)
	ON_COMMAND(ID_CLEAR_DATA, OnClearData)
	ON_COMMAND(ID_1000_BEI, On1000Bei)
	ON_COMMAND(ID_2000_BEI, On2000Bei)
	ON_COMMAND(ID_250_BEI, On250Bei)
	ON_COMMAND(ID_500_BEI, On500Bei)
	ON_COMMAND(ID_MODIFY_PAR, OnModifyPar)
	ON_COMMAND(ID_DELET_PAR, OnDeletPar)
	ON_COMMAND(ID_ADD_PAR, OnAddPar)
	ON_UPDATE_COMMAND_UI(ID_1000_BEI, OnUpdate1000Bei)
	ON_UPDATE_COMMAND_UI(ID_2000_BEI, OnUpdate2000Bei)
	ON_UPDATE_COMMAND_UI(ID_250_BEI, OnUpdate250Bei)
	ON_UPDATE_COMMAND_UI(ID_500_BEI, OnUpdate500Bei)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlqDoc construction/destruction

CDlqDoc::CDlqDoc()
{
	for(int i=0;i<400;i++){for(int j=0;j<12;j++)data[j][i]=0;}count=0;
	for(int y=0;y<6;y++){start[y]=y*100+90;start[y+6]=y*100+90;}
	m_sizeDoc=CSize(850,1100);first=0;m_beili=2;
		char OneLine[100];	
		CStdioFile file;
		if(file.Open("gearpar.par",CFile::modeRead|CFile::typeText)){
		while(file.ReadString(OneLine,100))
				{
			Cgearpar* par=new Cgearpar;
			sscanf(OneLine,"%3d %1d %f %f %f %s",&par->m_z,&par->m_fx,&par->m_mo,&par->m_a,&par->m_b,par->m_name);
			m_par.Add(par);
				}
			file.Close();
						}
			modify=FALSE;

if(m_par.GetSize()>0){	m_name2=m_par[0]->m_name;see=m_name2;
	m_aa=m_par[0]->m_a;
	m_bb=m_par[0]->m_b;
	m_zz=m_par[0]->m_z;
	m_momo=m_par[0]->m_mo;
	m_fxfx=m_par[0]->m_fx;}
	// TODO: add one-time construction code here

}

CDlqDoc::~CDlqDoc()
{
if(modify){
	char OneLine[100];
	CStdioFile file;
	long count;
	//Cgearpar* par=new Cgearpar;
	count=m_par.GetSize();
	if(file.Open("gearpar.par",CFile::modeWrite|CFile::modeCreate|CFile::typeText)){
	while(count-->0){
			//par=m_par.GetAt(count);
			
			sprintf(OneLine,"%3d %1d %4.2f %4.4f %4.4f %s\n",m_par[count]->m_z,m_par[count]->m_fx,m_par[count]->m_mo,m_par[count]->m_a,m_par[count]->m_b,m_par[count]->m_name);
			file.WriteString(OneLine );
				}
			file.Close();//	delete par;	
			}
	}
}

BOOL CDlqDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: add reinitialization code here
	// (SDI documents will reuse this document)

	return TRUE;
}



/////////////////////////////////////////////////////////////////////////////
// CDlqDoc serialization

void CDlqDoc::Serialize(CArchive& ar)
{
	int i,j;
	if (ar.IsStoring())
	{
		for(j=0;j<12;j++){
		for(i=0;i<400;i++)ar<<data[j][i];
		}
		// TODO: add storing code here
	}
	else
	{
		for(j=0;j<12;j++){
		for(i=0;i<400;i++)ar>>data[0][i];
		}
	
		UpdateAllViews(NULL);
		// TODO: add loading code here
	}
}

/////////////////////////////////////////////////////////////////////////////
// CDlqDoc diagnostics

#ifdef _DEBUG
void CDlqDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CDlqDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CDlqDoc commands

CSize CDlqDoc::GetDocSize()
{
return m_sizeDoc;
}

void CDlqDoc::OnFileNew() 
{
	for(int i=0;i<400;i++){for(int j=0;j<12;j++)data[j][i]=0;}
	count=0;UpdateAllViews(NULL);first=0;
	for(int y=0;y<12;y++)start[y]=y*40+50;
	// TODO: Add your command handler code here
	
}

void CDlqDoc::OnClearData() 
{
	Cclrdlg  dlg;int j;
	dlg.m_select=first;
	if(dlg.DoModal()==IDOK){
		first=dlg.m_select;
		for(j=0;j<400;j++)data[first][j]=0;count=0;
		
	}
		delete dlg;
UpdateAllViews(NULL);
	// TODO: Add your command handler code here
	
}


void CDlqDoc::On1000Bei() 
{
	m_beili=2;UpdateAllViews(NULL);
	beilichang=1;
	// TODO: Add your command handler code here
	
}

void CDlqDoc::On2000Bei() 
{	m_beili=1;UpdateAllViews(NULL);
		beilichang=1;
	// TODO: Add your command handler code here
	
}

void CDlqDoc::On250Bei() 
{
		m_beili=8;UpdateAllViews(NULL);
	beilichang=1;
	// TODO: Add your command handler code here
	
}

void CDlqDoc::On500Bei() 
{
		m_beili=4;UpdateAllViews(NULL);
	beilichang=1;

	// TODO: Add your command handler code here
	
}

void CDlqDoc::OnModifyPar() 
{
long count;
	Cpardlg dlg;
//	Cgearpar* par=new Cgearpar;
	count=m_par.GetSize();
	while(count-->0){
	
	//	par=m_par.GetAt(count);
		if(m_par[count]->m_name==see)
					{
	dlg.m_a1=m_par[count]->m_a;dlg.m_b1=m_par[count]->m_b;
	dlg.m_fx1=m_par[count]->m_fx;dlg.m_mo1=m_par[count]->m_mo;
	dlg.m_name1=m_par[count]->m_name;dlg.m_z1=m_par[count]->m_z;
	if(dlg.DoModal()==IDOK){
	m_par[count]->m_a=dlg.m_a1;
	m_par[count]->m_b=dlg.m_b1;
	m_par[count]->m_mo=dlg.m_mo1;
	m_par[count]->m_fx=dlg.m_fx1;
	for(int j=0;j<dlg.m_name1.GetLength();j++)m_par[count]->m_name[j]=dlg.m_name1[j];

	m_par[count]->m_z=dlg.m_z1;
	m_name2=m_par[count]->m_name;
	m_aa=m_par[count]->m_a;
	m_bb=m_par[count]->m_b;
	m_zz=m_par[count]->m_z;
	m_momo=m_par[count]->m_mo;
	m_fxfx=m_par[count]->m_fx;
	modify=TRUE;
	}break;}}delete dlg;
	// TODO: Add your command handler code here
	UpdateAllViews(NULL);
}

/*void CDlqDoc::OnSelectPar() 
{
	long count;
	Cgearsel dlg;CString s;
	count=m_par.GetSize();dlg.count=count;
	while(count-->0)dlg.ch[count]=m_par[count]->m_name;
	dlg.DoModal();
	see=dlg.m_select;
	m_name2=see;
	count=m_par.GetSize();
	while(count-->0){
	
	//	par=m_par.GetAt(count);
		if(m_par[count]->m_name==see)
					{
	m_aa=m_par[count]->m_a;
	m_bb=m_par[count]->m_b;
	m_zz=m_par[count]->m_z;
	m_momo=m_par[count]->m_mo;
	m_fxfx=m_par[count]->m_fx;break;}}
	delete dlg;
	UpdateAllViews(NULL);	
	// TODO: Add your command handler code here
	
}*/

void CDlqDoc::OnDeletPar() 
{
	long count;
	count=m_par.GetSize();
	while(count-->0){
		if(m_par[count]->m_name==see)
		{m_par.RemoveAt(count);break;}}
	if(m_par.GetSize()>0){	m_name2=m_par[0]->m_name;see=m_name2;
	m_aa=m_par[0]->m_a;
	m_bb=m_par[0]->m_b;
	m_zz=m_par[0]->m_z;
	m_momo=m_par[0]->m_mo;
	m_fxfx=m_par[0]->m_fx;}
	UpdateAllViews(NULL);modify=TRUE;
	// TODO: Add your command handler code here
	
}

void CDlqDoc::OnAddPar() 
{
	Cpardlg dlg;bool c;
	c=0;
	while(dlg.DoModal()==IDOK){
	Cgearpar* par=new Cgearpar;
	par->m_a=dlg.m_a1;
	par->m_b=dlg.m_b1;
	par->m_fx=dlg.m_fx1;
	par->m_mo=dlg.m_mo1;
	for(int j=0;j<dlg.m_name1.GetLength();j++)par->m_name[j]=dlg.m_name1[j];
	par->m_z=dlg.m_z1;
	m_par.Add(par);c=1;
	dlg.m_a1=0;dlg.m_b1=0;dlg.m_fx1=1;
	dlg.m_mo1=0;dlg.m_name1="";dlg.m_z1=0;
	modify=TRUE;
	}
delete dlg;
	// TODO: Add your command handler code here
	
}
void CDlqDoc::onupdatename(CCmdUI *pCmdUI)
{
	pCmdUI->SetText("名称:   "+m_name2);
}
void CDlqDoc::onupdatemo(CCmdUI *pCmdUI)
{
	CString s;
	s.Format("%4.2f",m_momo);
	pCmdUI->SetText("模数:  "+s);
}
void CDlqDoc::onupdatez(CCmdUI *pCmdUI)
{
	CString s;
	s.Format("%d",m_zz);
	pCmdUI->SetText("齿数:  "+s);
}
void CDlqDoc::onupdatea(CCmdUI *pCmdUI)
{
	CString s;
	s.Format("%4.4f",m_aa);
	pCmdUI->SetText("压力角: "+s);
}
void CDlqDoc::onupdateb(CCmdUI *pCmdUI)
{
	CString s;
	s.Format("%4.4f",m_bb);
	pCmdUI->SetText("螺旋角: "+s);
}
void CDlqDoc::onupdatefx(CCmdUI *pCmdUI)
{
	CString s;
	if(m_fxfx==0)s="左旋";
	else if(m_fxfx==1)s="直齿";
	else if(m_fxfx==2)s="右旋";
	pCmdUI->SetText("齿型:  "+s);
}
void CDlqDoc::onupdatebeili(CCmdUI *pCmdUI)
{

	CString s;

	s.Format("%d",2000/m_beili);
	pCmdUI->SetText("倍数:  "+s);
}
void CDlqDoc::onupdateline(CCmdUI *pCmdUI)
{
	CString s;
	s.Format("%d",first+1);
	pCmdUI->SetText("第"+s+"条线");
}

void CDlqDoc::OnUpdate1000Bei(CCmdUI* pCmdUI) 
{
	if(m_beili==2)pCmdUI->SetCheck(1);
	else pCmdUI->SetCheck(0);
	// TODO: Add your command update UI handler code here
	
}

void CDlqDoc::OnUpdate2000Bei(CCmdUI* pCmdUI) 
{
	if(m_beili==1)pCmdUI->SetCheck(1);
	else pCmdUI->SetCheck(0);
		// TODO: Add your command update UI handler code here
	
}

void CDlqDoc::OnUpdate250Bei(CCmdUI* pCmdUI) 
{
	if(m_beili==8)pCmdUI->SetCheck(1);
	else pCmdUI->SetCheck(0);
	// TODO: Add your command update UI handler code here
	
}

void CDlqDoc::OnUpdate500Bei(CCmdUI* pCmdUI) 
{
	if(m_beili==4)pCmdUI->SetCheck(1);
	else pCmdUI->SetCheck(0);
	// TODO: Add your command update UI handler code here
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -