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

📄 轧机力能参数设计dlg.cpp

📁 本软件能根据轧制工艺条件快速准确地计算出轧制力
💻 CPP
字号:
// 轧机力能参数设计Dlg.cpp : implementation file
//

#include "stdafx.h"
#include "轧机力能参数设计.h"
#include "轧机力能参数设计Dlg.h"
#include "math.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyDlg dialog

CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CMyDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMyDlg)
	m_b0 = 0.0;
	m_b1 = 0.0;
	m_E = 0.0;
	m_H = 0.0;
	m_h0 = 0.0;
	m_Pp = 0.0;
	m_R = 0.0;
	m_T0 = 0.0;
	m_T1 = 0.0;
	m_ur = 0.0;
	m_u = 0.0;
	m_P2 = 0.0;
	m_P3 = 0.0;
	m_P4 = 0.0;
	m_P5 = 0.0;
	m_P6 = 0.0;
	m_P7 = 0.0;
	m_h1 = 0.0;
	m_h2 = 0.0;
	m_h3 = 0.0;
	m_h4 = 0.0;
	m_h5 = 0.0;
	m_h6 = 0.0;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMyDlg)
	DDX_Text(pDX, IDC_b0, m_b0);
	DDX_Text(pDX, IDC_b1, m_b1);
	DDX_Text(pDX, IDC_E, m_E);
	DDX_Text(pDX, IDC_H, m_H);
	DDX_Text(pDX, IDC_h0, m_h0);
	DDX_Text(pDX, IDC_Pp, m_Pp);
	DDX_Text(pDX, IDC_R, m_R);
	DDX_Text(pDX, IDC_T0, m_T0);
	DDX_Text(pDX, IDC_T1, m_T1);
	DDX_Text(pDX, IDC_ur, m_ur);
	DDX_Text(pDX, IDC_u, m_u);
	DDX_Text(pDX, IDC_P2, m_P2);
	DDX_Text(pDX, IDC_P3, m_P3);
	DDX_Text(pDX, IDC_P4, m_P4);
	DDX_Text(pDX, IDC_P5, m_P5);
	DDX_Text(pDX, IDC_P6, m_P6);
	DDX_Text(pDX, IDC_P7, m_P7);
	DDX_Text(pDX, IDC_h1, m_h1);
	DDX_Text(pDX, IDC_h2, m_h2);
	DDX_Text(pDX, IDC_h3, m_h3);
	DDX_Text(pDX, IDC_h4, m_h4);
	DDX_Text(pDX, IDC_h5, m_h5);
	DDX_Text(pDX, IDC_h6, m_h6);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
	//{{AFX_MSG_MAP(CMyDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_moren, Onmoren)
	ON_BN_CLICKED(IDC_jisuan, Onjisuan)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyDlg message handlers

BOOL CMyDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CMyDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CMyDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CMyDlg::Onmoren() 
{
	// TODO: Add your control notification handler code here
    UpdateData(true);
    m_b0=1010;
	m_b1=1010;
 	m_E=210000;
	m_H=5.0;
 	m_h0=3.85;
	m_h1=3.08;
	m_h2=2.57;
	m_h3=2.23;
	m_h4=2;
	m_h5=2;
	m_h6=2;
 
 	m_R=212.5;
 	m_T0=176400;
 	m_T1=308700;
 	m_ur=0.3;
 	m_u=0.082;


    UpdateData(false);


	
}

void CMyDlg::Onjisuan() 
{
	// TODO: Add your control notification handler code here
   
	UpdateData(true);

    //*********************************************//
	//                  计算kp值                   //
	//*********************************************//
	
	
	double k1,k2,k3,k4,k5,k6,k7;
	double m_kp2,m_kp3,m_kp4,m_kp5,m_kp6,m_kp7;
	double ptr1=0.29;                                       //**********修改参数;
	k1=pow(((m_H-m_h0)/m_H),ptr1);
	k2=pow((0.4*(m_H-m_h0)/m_H+0.6*(m_H-m_h1)/m_H),ptr1);
    k3=pow((0.4*(m_H-m_h1)/m_H+0.6*(m_H-m_h2)/m_H),ptr1);
	k4=pow((0.4*(m_H-m_h2)/m_H+0.6*(m_H-m_h3)/m_H),ptr1);
	k5=pow((0.4*(m_H-m_h3)/m_H+0.6*(m_H-m_h4)/m_H),ptr1);
	k6=pow((0.4*(m_H-m_h4)/m_H+0.6*(m_H-m_h5)/m_H),ptr1);
	k7=pow((0.4*(m_H-m_h5)/m_H+0.6*(m_H-m_h6)/m_H),ptr1);
	double ptr2=850.0;                                      //***********修改参数;

    m_kp=1.15*ptr2*k1;   //第一道次
    m_kp2=1.15*ptr2*k2;  //第二道次
    m_kp3=1.15*ptr2*k3;  //第三道次
    m_kp4=1.15*ptr2*k4;  //第四道次
    m_kp5=1.15*ptr2*k5;  //第五道次
    m_kp6=1.15*ptr2*k6;  //第六道次
    m_kp7=1.15*ptr2*k7;  //第七道次

                       

	//********************************************//
	//                 计算fp值                   //
	//********************************************//
	
	
	double m_fp2,m_fp3,m_fp4,m_fp5,m_fp6,m_fp7;
	m_fp=0.5*(m_T0/(m_H*m_b0)+m_T1/(m_h0*m_b1));
    m_fp2=0.5*(308700.0/(m_h0*m_b0)+308700.0/(m_h1*m_b1));
	m_fp3=0.5*(308700.0/(m_h1*m_b0)+308700.0/(m_h2*m_b1));
	m_fp4=0.5*(308700.0/(m_h2*m_b0)+308700.0/(m_h3*m_b1));
	m_fp5=0.5*(308700.0/(m_h3*m_b0)+39700.0/(m_h4*m_b1));
	m_fp6=0.5*(75000.0/(m_h4*m_b0)+79400.0/(m_h5*m_b1));
	m_fp7=0.5*(58800.0/(m_h5*m_b0)+49000.0/(m_h6*m_b1));
    






	//*********************************************//
	//                 计算Lc1-Lc7值               //
	//*********************************************//
	int t1=0;
	double x1,L1,L2,Pp1,hp,hp2,hp3,hp4,hp5,hp6,hp7,C;
	double Pp2,Pp3,Pp4,Pp5,Pp6,Pp7;
	double Lc1,Lc2,Lc3,Lc4,Lc5,Lc6,Lc7;
	L1=sqrt(m_R*(m_H-m_h0));
	hp=(m_H+m_h0)/2.0;
	C=8.0*(1-m_ur*m_ur)/(3.14*m_E);
    do
    {
		if(t1>=1)
			L1=L2;
        x1=m_u*L1/hp;
		Pp1=(m_kp-m_fp)*((exp(x1)-1)/x1);
        L2=(C*m_R*Pp1)+(sqrt(m_R*(m_H-m_h0)+(C*m_R*Pp1)*(C*m_R*Pp1)));
        t1++;
	}while((L2-L1)>=0.001);
    Lc1=L1;                          //计算Lc1

    
	int t2=0;
	double Ld1;
	Ld1=sqrt(m_R*(m_h0-m_h1));
	hp2=(m_h0+m_h1)/2.0;
	 do
    {
		if(t2>=1)
			Ld1=L2;
        x1=0.073*Ld1/hp2;
		Pp2=(m_kp2-m_fp2)*((exp(x1)-1)/x1);
        L2=(C*m_R*Pp2)+(sqrt(m_R*(m_h0-m_h1)+(C*m_R*Pp2)*(C*m_R*Pp2)));
        t2++;
	}while((L2-Ld1)>=0.001);
    Lc2=Ld1;                          //计算Lc2


	
	int t3=0;
	double Le1;
	Le1=sqrt(m_R*(m_h1-m_h2));
	hp3=(m_h1+m_h2)/2.0;
   do
    {
		if(t3>=1)
			Le1=L2;
        x1=0.065*Le1/hp3;
		Pp3=(m_kp3-m_fp3)*((exp(x1)-1)/x1);
        L2=(C*m_R*Pp2)+(sqrt(m_R*(m_h1-m_h2)+(C*m_R*Pp3)*(C*m_R*Pp3)));
        t3++;
	}while((L2-Le1)>=0.001);
    Lc3=Le1;                          //计算Lc3


	int t4=0;
    double Lf1;
	Lf1=sqrt(m_R*(m_h2-m_h3));
	hp4=(m_h2+m_h3)/2.0;

	do
    {
		if(t4>=1)
			Lf1=L2;
        x1=0.06*Lf1/hp4;
		Pp4=(m_kp4-m_fp4)*((exp(x1)-1)/x1);
        L2=(C*m_R*Pp4)+(sqrt(m_R*(m_h2-m_h3)+(C*m_R*Pp4)*(C*m_R*Pp4)));
        t4++;
	}while((L2-Lf1)>=0.001);
    Lc4=Lf1;                          //计算Lc4


	int t5=0;
    double Lg1;
	Lg1=sqrt(m_R*(m_h3-m_h4));
	hp5=(m_h4+m_h3)/2.0;
	do
    {
		if(t5>=1)
			Lg1=L2;
        x1=0.057*Lg1/hp5;
		Pp5=(m_kp5-m_fp5)*((exp(x1)-1)/x1);
        L2=(C*m_R*Pp5)+(sqrt(m_R*(m_h3-m_h4)+(C*m_R*Pp5)*(C*m_R*Pp5)));
        t5++;
	}while((L2-Lg1)>=0.001);
    Lc5=Lg1;                          //计算Lc5



	int t6=0;
    double Lh1;
	Lh1=sqrt(m_R*(m_h4-m_h5));
	hp6=(m_h5+m_h4)/2.0;
	do
    {
		if(t6>=1)
			Lh1=L2;
        x1=0.033*Lh1/hp6;
		Pp6=(m_kp6-m_fp6)*((exp(x1)-1)/x1);
        L2=(C*m_R*Pp6)+(sqrt(m_R*(m_h4-m_h5)+(C*m_R*Pp6)*(C*m_R*Pp6)));
        t6++;
	}while((L2-Lh1)>=0.001);
    Lc6=Lh1;                          //计算Lc6



	int t7=0;
    double Li1;
	Li1=sqrt(m_R*(m_h5-m_h6));
	hp7=(m_h5+m_h6)/2.0;

    do
    {
		if(t7>=1)
			Li1=L2;
        x1=0.033*Li1/hp7;
		Pp7=(m_kp7-m_fp7)*((exp(x1)-1)/x1);
        L2=(C*m_R*Pp7)+(sqrt(m_R*(m_h5-m_h6)+(C*m_R*Pp7)*(C*m_R*Pp7)));
        t7++;
	}while((L2-Li1)>=0.001);
    Lc7=Li1;                          //计算Lc7





	//*********************************************//
	//                  求x值                      //
	//*********************************************//
     double x,x2,x3,x4,x5,x6,x7;
     x=m_u*Lc1/hp;
	 x2=0.073*Lc2/hp2;
	 x3=0.065*Lc3/hp3;
	 x4=0.06*Lc4/hp4;
	 x5=0.057*Lc5/hp5;
	 x6=0.033*Lc6/hp6;
	 x7=0.033*Lc7/hp7;


  
    //**********************************************//
    //                   求轧制力     				//
    //**********************************************//
   
    m_Pp=(m_kp-m_fp)*((exp(x)-1)/x)*(0.5*m_b0+0.5*m_b1)*Lc1/10000;
    m_P2=(m_kp2-m_fp2)*((exp(x2)-1)/x2)*(0.5*m_b0+0.5*m_b1)*Lc2/10000;
	m_P3=(m_kp3-m_fp3)*((exp(x3)-1)/x3)*(0.5*m_b0+0.5*m_b1)*Lc3/10000;
	m_P4=(m_kp4-m_fp4)*((exp(x4)-1)/x4)*(0.5*m_b0+0.5*m_b1)*Lc4/10000;
	m_P5=(m_kp5-m_fp5)*((exp(x5)-1)/x5)*(0.5*m_b0+0.5*m_b1)*Lc5/10000;
    m_P6=(m_kp6-m_fp6)*((exp(x6)-1)/x6)*(0.5*m_b0+0.5*m_b1)*Lc6/10000;
    m_P7=(m_kp7-m_fp7)*((exp(x7)-1)/x7)*(0.5*m_b0+0.5*m_b1)*Lc7/10000;
  

	UpdateData(false);


               
	
}

⌨️ 快捷键说明

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