Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

167 lines
4.0 KiB
C++

// DecompressBoardCalcDlg.cpp : implementation file
//
#include "stdafx.h"
#include "DecompressBoardCalcDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDecompressBoardCalcDlg dialog
void DecompressBoardCalc()
{
CTemporaryResourceOverride vTemp;
CDecompressBoardCalcDlg dlg;
dlg.DoModal();
}
CDecompressBoardCalcDlg::CDecompressBoardCalcDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDecompressBoardCalcDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CDecompressBoardCalcDlg)
m_bChange = FALSE;
m_csD1 = _T("150");
m_csD2 = _T("150");
m_csDn = _T("");
m_csPress = _T("10");
m_nQ = 25;
m_iUnit = 0;
m_iWant = 0;
//}}AFX_DATA_INIT
}
void CDecompressBoardCalcDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDecompressBoardCalcDlg)
DDX_Check(pDX, IDC_CHECK_CHANGE, m_bChange);
DDX_CBString(pDX, IDC_COMBO_D1, m_csD1);
DDX_CBString(pDX, IDC_COMBO_D2, m_csD2);
DDX_Text(pDX, IDC_EDIT_DN, m_csDn);
DDX_Text(pDX, IDC_EDIT_PRESS, m_csPress);
DDX_Text(pDX, IDC_EDIT_Q, m_nQ);
DDX_Radio(pDX, IDC_RADIO_UNIT1, m_iUnit);
DDX_Radio(pDX, IDC_RADIO_WANT_DN, m_iWant);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDecompressBoardCalcDlg, CDialog)
//{{AFX_MSG_MAP(CDecompressBoardCalcDlg)
ON_BN_CLICKED(IDC_CHECK_CHANGE, OnCheckChange)
ON_BN_CLICKED(IDC_RADIO_WANT_DN, OnRadioWantDn)
ON_BN_CLICKED(IDC_RADIO_WANT_PRESS, OnRadioWantPress)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDecompressBoardCalcDlg message handlers
BOOL CDecompressBoardCalcDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CWnd *pWnd = GetDlgItem(IDC_COMBO_D2);
pWnd->EnableWindow(FALSE);
OnRadioWantDn();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDecompressBoardCalcDlg::OnOK()
{
UpdateData();
double v(0), nBackDn(0), nFrontDn(0), nQ(0), nTmp(0)/*ξ*/, nDn(0);
if(m_bChange)
nBackDn = _tstof(m_csD2)/1000;
else
nBackDn = _tstof(m_csD1)/1000;
nFrontDn = _tstof(m_csD1);
if(m_iUnit == 0)
nQ = m_nQ/1000;
else
nQ = m_nQ / 3600;
v = nQ / (0.25*PI*nBackDn*nBackDn); //流速m/s
nDn = _tstof(m_csDn);
if(m_iWant == 0){
// H = 10*ξ×v^2/2*g
double nH = _tstof(m_csPress); //得到水流通过孔板的水头损失 把mH2O转换为kPa
nTmp = nH*2*9.8/v/v; //得到ξ
nTmp = sqrt(nTmp) + 1;
nTmp = nTmp / 1.75;
//解一元二次方程 ax2+bx+c=0 x=(-b+-sqrt(b^2-4ac))/2a
double a(0), b(0), c(0), x1(0), x2(0);
a = -nTmp;
b = 1.175*nTmp + 1;
c = -1.1;
x1 = (-b+sqrt(b*b-4*a*c))/2/a;
x2 = (-b-sqrt(b*b-4*a*c))/2/a;
x1 = sqrt(nFrontDn*nFrontDn*x1);
x2 = sqrt(nFrontDn*nFrontDn*x2);
if(x1 > 0 && x1 < nFrontDn) //2个解,取DN小于管径的
m_csDn.Format(_T("%.2f"), x1);
else
m_csDn.Format(_T("%.2f"), x2);
}
else{
double n(0), n2(0);
n = nFrontDn*nFrontDn/(nDn*nDn);
n2 = (nDn*nDn)/(nFrontDn*nFrontDn);
nTmp = (1.75*n*(1.1-n2)/(1.175-n2) -1);
nTmp = nTmp*nTmp;
double nH = 10*nTmp*v*v/2/9.8;
nH = nH /9.8;
m_csPress.Format(_T("%.2f"), nH);
}
UpdateData(FALSE);
}
void CDecompressBoardCalcDlg::OnCheckChange()
{
UpdateData();
CWnd *pWnd = GetDlgItem(IDC_COMBO_D2);
if(m_bChange)
pWnd->EnableWindow(TRUE);
else
pWnd->EnableWindow(FALSE);
}
void CDecompressBoardCalcDlg::OnRadioWantDn()
{
UpdateData();
CWnd *pWnd1 = GetDlgItem(IDC_EDIT_PRESS);
CWnd *pWnd2 = GetDlgItem(IDC_EDIT_DN);
if(m_iWant == 0){
pWnd1->EnableWindow(TRUE);
pWnd2->EnableWindow(FALSE);
}
else{
pWnd1->EnableWindow(FALSE);
pWnd2->EnableWindow(TRUE);
}
}
void CDecompressBoardCalcDlg::OnRadioWantPress()
{
UpdateData();
CWnd *pWnd1 = GetDlgItem(IDC_EDIT_PRESS);
CWnd *pWnd2 = GetDlgItem(IDC_EDIT_DN);
if(m_iWant == 0){
pWnd1->EnableWindow(TRUE);
pWnd2->EnableWindow(FALSE);
}
else{
pWnd1->EnableWindow(FALSE);
pWnd2->EnableWindow(TRUE);
}
}