?? hellor14.cpp
字號(hào):
#include "stdafx.h"
#include <stdlib.h>
#include <string.h>
#include <rxobject.h>
#include <rxregsvc.h>
#include <aced.h>
#include <math.h>
#include <dbsymtb.h>
#include <dbents.h>
#include "acestext.h"
////
#include "zyjDialog.h"
#include "zyjTree.h"
#include "aced.h"
#include "RESOURCEHELPER.H"
#include "hellor14.h"
#include "Afxdb.h"
// new added! yb 2004,4,17
#include "math.h"
#include "afxinet.h" //for internet
#include <sqlext.h>
#include <afxdb.h>
// #include "TolInput.h" for tolerance inquiry! yb
#include "Tol.h"
#include "AutoTol.h"
#include "toleranceset.h"
#include "sjc.h"
#include "sun.h"
//
#include "ljbin.h"
#include "ljbset.h"
#include "zl.h"
#include "zli.h"
//
#include "loginin.h"
#include "lmm.h"
#include "forbit.h"
#include "tree.h"
#include "pjset1.h"
//
#include "toleranceoutput.h"
void initApp();
void unloadApp();
extern "C"
AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode, void*);
extern "C" HINSTANCE _hdllInstance;
extern BOOL InitModule(HINSTANCE, DWORD, LPVOID);
static AFX_EXTENSION_MODULE arxmfcDLL;
void InitMFC();
void EndMFC();
int sucess=0;
//new added! yb 2004,4,17
void autoTolCal(double dimCls,double dievTop,double dievBottom,
AcDbVoidPtrArray &wwgListBaseDim,
AcDbVoidPtrArray &wwgListLoopStyle,AcDbVoidPtrArray &wwgListResult)
{
AcDbVoidPtrArray wwgListITData;
//AcDbVoidPtrArray wwgListResult;
double wwgITData[20];
AcDbVoidPtrArray wwgListITGrad;
double m_dbNum=0.0,m_dbCoef=0.0,m_dbTolCls,m_dbDimAdjust=0.0,dbCal=0.0,dbCal2=0.0;
int easiest;
m_dbTolCls=dievTop-dievBottom;
for(int i=0;i<LEN;i++) //零件數(shù)量循環(huán)
{
for(int j=0;j<13;j++)//對(duì)公差單位進(jìn)行循環(huán)
{
double* BaseDim1=(double*)wwgListBaseDim.at(i);
if(*BaseDim1>=m_nBsDimGrad[j]&&*BaseDim1<m_nBsDimGrad[j+1])
{
//根據(jù)《機(jī)械精度設(shè)計(jì)》155頁(yè)公式(4-54),先求分母
m_dbCoef+=pow(m_nTolDanwei[j],2);
break;
}
}
}
m_dbCoef=1000.0*m_dbTolCls/sqrt(m_dbCoef);
//設(shè)置循環(huán)判斷各組成環(huán)公差等級(jí)系數(shù)更靠近哪一個(gè)公差等級(jí)系數(shù)并記錄在數(shù)組中
CString kk;
kk.Format("%8.4f",m_dbCoef);
AfxMessageBox(kk);
//設(shè)置循環(huán)判斷各組成環(huán)公差等級(jí)系數(shù)更靠近哪一個(gè)公差等級(jí)系數(shù)并記錄在數(shù)組中
for(int k=0;k<LEN;k++)
{
if(k>1)
{
double* BaseDim2=(double*)wwgListBaseDim.at(k);
ads_printf("\n%f",*BaseDim2);
if(*BaseDim2>*BaseDim3)
easiest=k;
}
if(m_dbCoef>=m_nTolGradCoef[14])
{
int *data=new int;
*data=14;
wwgListITGrad.append(data);
}
else
{
for(int m_nITGradi=0;m_nITGradi<14;m_nITGradi++)
{
if (m_dbCoef>=m_nTolGradCoef[m_nITGradi]&&m_dbCoef<m_nTolGradCoef[m_nITGradi+1])
{
int *data=new int;
*data=m_nITGradi;
wwgListITGrad.append(data);
break;
}
}
}
}
/////////////////////////////////////////////訪問(wèn)數(shù)據(jù)庫(kù)部分
CString strDataName="Tol";
CDatabase db;
CTol* pMasterSet = NULL;
CString m_column;
double min=0.0,max=1000.0;
double m_ComposedIT[16];//
try
{
if (db.Open(strDataName))
{
pMasterSet = new CTol();
pMasterSet->Open();
for(int i=0;i<LEN;i++) //設(shè)置循環(huán)查詢(xún)各組成環(huán)標(biāo)準(zhǔn)公差
{
for(int zz=0;zz<LEN;zz++)
double* BaseDim4=(double*)wwgListBaseDim.at(i);
double basedim=0;//
int *itGrad=(int*)wwgListITGrad.at(i);//
ads_printf("\n *itGrad=%d",*itGrad);
pMasterSet->MoveFirst();//
while (!pMasterSet->IsEOF())
{
double *BaseDim4=(double*)wwgListBaseDim.at(i);
m_column = pMasterSet->m_columnRecord;
if(*BaseDim4>basedim)
{
if (*BaseDim4<=atof(m_column))
{
if(*itGrad==0)
{
m_ComposedIT[i]=0;
ads_alert("該公差精度等級(jí)低于五級(jí)!");
}
else if(*itGrad==1)
m_ComposedIT[i]=(pMasterSet->m_IT5 )/1000.0;
else if(*itGrad==2)
m_ComposedIT[i]=(pMasterSet->m_IT6 )/1000.0;
else if(*itGrad==3)
m_ComposedIT[i]=(pMasterSet->m_IT7 )/1000.0;
else if(*itGrad==4)
m_ComposedIT[i]=(pMasterSet->m_IT8 )/1000.0;
else if(*itGrad==5)
m_ComposedIT[i]=(pMasterSet->m_IT9 )/1000.0;
else if(*itGrad==6)
m_ComposedIT[i]=(pMasterSet->m_IT10 )/1000.0;
else if(*itGrad==7)
m_ComposedIT[i]=(pMasterSet->m_IT11 )/1000.0;
else if(*itGrad==8)
m_ComposedIT[i]=(pMasterSet->m_IT12 )/1000.0;
else if(*itGrad==9)
m_ComposedIT[i]=(pMasterSet->m_IT13 )/1000.0;
else if(*itGrad==10)
m_ComposedIT[i]=(pMasterSet->m_IT14 )/1000.0;
else if(*itGrad==11)
m_ComposedIT[i]=(pMasterSet->m_IT15 )/1000.0;
else if(*itGrad==12)
m_ComposedIT[i]=(pMasterSet->m_IT16 )/1000.0;
else if(*itGrad==13)
m_ComposedIT[i]=(pMasterSet->m_IT17 )/1000.0;
else if(*itGrad==14)
m_ComposedIT[i]=(pMasterSet->m_IT18 )/1000.0;
else
m_ComposedIT[i]=1000.0;
break;
}
basedim=atof(m_column);
}
pMasterSet->MoveNext(); //沒(méi)有查到則查詢(xún)下一記錄
}
}
pMasterSet->Close();
delete pMasterSet;
db.Close();
}
////////////////////////
}
catch(CDBException* pe)
{
AfxMessageBox(pe->m_strError);
if (pMasterSet)
{
if (pMasterSet->IsOpen())
{
pMasterSet->Close();
}
delete pMasterSet;
}
if (db.IsOpen())
{
db.Close();
}
pe->Delete();
}
for(int m=0;m<LEN;m++)
{
//計(jì)算出除協(xié)調(diào)環(huán)外各組成環(huán)公差平方之合
wwgITData[m]=m_ComposedIT[m];//
m_dbDimAdjust+=pow(m_ComposedIT[m],2.0);//
}
/////////////////////計(jì)算需要調(diào)整的公差 部分/////////
// double dbCal1;//zying delete
if (!(m_dbDimAdjust>pow(m_dbTolCls,2)))
;
/* else if(m_dbDimAdjust>=pow(m_dbTolCls,2))
{
double* itData2=(double*)wwgListITData.at(easiest);
m_dbDimAdjust=m_dbDimAdjust-pow(*itData2,2);
dbCal1=sqrt(pow(m_dbTolCls,2)-m_dbDimAdjust);
for(int i=0;i<=13;i++)
{
if(((m_ComposedIT[easiest][i+2]+m_ComposedIT[easiest][i+1])/2.0)>=dbCal1
&&dbCal1>=(m_ComposedIT[easiest][i]+m_ComposedIT[easiest][i+1])/2.0)
{
//輸出大于等于計(jì)算公差的標(biāo)準(zhǔn)公差的最小值
void* aaa=&m_ComposedIT[easiest][i+1];
wwgListITData.insertAt(easiest,aaa);
int a=i+1;
void* b=&a;
wwgListITGrad.insertAt(easiest,b);
break;
}
}
}*/
///////////////計(jì)算極限偏差部分//////////////
double *data;
for(int q=0;q<LEN;q++)
{
data= new double;
*data=wwgITData[q]/2;
wwgListResult.append(data);
double* w=(double*)wwgListResult.at(q);
ads_printf("\n%f\n",*w);
}
}
double f(double B,double P,double k,double Td,double x1,double x2)
{
return (B/exp(P*log(Td)))+k*pow((x2-x1)/(6*Td),2);
}
void tolerance()
{
// if(sucess==1)
// {
CString strDataName="公差優(yōu)化";
CDatabase db;
double m_measure[9]={0,0.599,0.999,1.499,2.799,4.499,7.799,13.599,20.999};
int m_row[8]={0,8,16,30,38,24,46};
toleranceset* p_Set = NULL;
int row;
try
{
sjc dd;
if (db.Open(strDataName))
{
if(dd.DoModal()==IDOK)
{
int i;
if (dd.m_input1=="Lap/Hone") i=0;
if (dd.m_input1=="Grind/Diamond turn") i=1;
if (dd.m_input1=="Broach") i=2;
if (dd.m_input1=="Turn/bore/shape") i=3;
if (dd.m_input1=="Mill") i=4;
if (dd.m_input1=="Ream") i=5;
if (dd.m_input1=="Drill") i=6;
p_Set = new toleranceset() ;
p_Set->Open();
p_Set ->MoveFirst();
while (!p_Set->IsEOF())
{
if (i<5)
{
row=m_row[i]+1;
p_Set->SetAbsolutePosition(row);
for (int j=0;j<8;j++)
{
if ((dd.m_measure1/25.4)>m_measure[j])
{
row=row+1;
p_Set->SetAbsolutePosition(row);
}
}
p_Set->MovePrev();
}
else if(i==5)
{
row=m_row[i]+1;
p_Set->SetAbsolutePosition(row);
for (int x=0;x<6;x++)
{
if((dd.m_measure1/25.4)>m_measure[x])
{
row=row+1;
p_Set->SetAbsolutePosition(row);
}
}
p_Set->MovePrev();
}
else if (i==6)
{
row=m_row[i]+1;
p_Set->SetAbsolutePosition(row);
for (int z=0;z<5;z++)
{
if((dd.m_measure1/25.4)>m_measure[z])
{
row=row+1;
p_Set->SetAbsolutePosition(row);
}
}
p_Set->MovePrev();
}
break;
}
double B1,P1,x1,y1;
B1=p_Set->m_B;
P1=p_Set->m_P;
x1=p_Set->m_MINTol;
y1=p_Set->m_MAXTol;
int t;
if (dd.m_input2=="Lap/Hone") t=0;
if (dd.m_input2=="Grind/Diamond turn") t=1;
if (dd.m_input2=="Broach") t=2;
if (dd.m_input2=="Turn/bore/shape") t=3;
if (dd.m_input2=="Mill") t=4;
if (dd.m_input2=="Ream") t=5;
if (dd.m_input2=="Drill") t=6;
p_Set = new toleranceset() ;
p_Set->Open();
p_Set ->MoveFirst();
while (!p_Set->IsEOF())
{
if (t<5)
{
row=m_row[t]+1;
p_Set->SetAbsolutePosition(row);
for (int j=0;j<8;j++)
{
if ((dd.m_measure2/25.4)>m_measure[j])
{
row=row+1;
p_Set->SetAbsolutePosition(row);
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -