📄 dlqdoc.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 + -