Files
envi-code/SourceCode/Code2026/tg_shs/shs_TwtPump/WaterTankCalcDlg.cpp
T

360 lines
10 KiB
C++
Raw Normal View History

2026-09-28 15:28:50 +08:00
// WaterTankCalcDlg.cpp : implementation file
//
#include "stdafx.h"
#include "WaterTankCalcDlg.h"
#include "SelWaterTankDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CWaterTankCalcDlg dialog
void WaterTankCalc()
{
CTemporaryResourceOverride vTemp;
CWaterTankCalcDlg dlg;
dlg.DoModal();
}
CWaterTankCalcDlg::CWaterTankCalcDlg(CWnd* pParent /*=NULL*/)
: CDialog(CWaterTankCalcDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CWaterTankCalcDlg)
m_iCalcMode = 0;
m_iPurpose = 0;
m_iRunMode = 0;
m_csLive1 = _T("");
m_csLive2 = _T("");
m_csLive3 = _T("");
m_csLive4 = _T("");
m_csLiveVolume = _T("");
m_csFireQ = _T("");
m_csFireTime = _T("");
m_csLevel = _T("18");
m_csAllVolume = _T("");
m_csFireVolume = _T("");
//}}AFX_DATA_INIT
}
void CWaterTankCalcDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CWaterTankCalcDlg)
DDX_Radio(pDX, IDC_RADIO_CALCMODE1, m_iCalcMode);
DDX_Radio(pDX, IDC_RADIO_PURPOSE1, m_iPurpose);
DDX_Radio(pDX, IDC_RADIO_RUNMODE1, m_iRunMode);
DDX_Text(pDX, IDC_EDIT_LIVE_1, m_csLive1);
DDX_Text(pDX, IDC_EDIT_LIVE_2, m_csLive2);
DDX_Text(pDX, IDC_EDIT_LIVE_3, m_csLive3);
DDX_Text(pDX, IDC_EDIT_LIVE_4, m_csLive4);
DDX_Text(pDX, IDC_EDIT_LIVE_VOLUME, m_csLiveVolume);
DDX_Text(pDX, IDC_EDIT_FIRE_Q, m_csFireQ);
DDX_Text(pDX, IDC_EDIT_FIRE_TIME, m_csFireTime);
DDX_CBString(pDX, IDC_COMBO_ARCH_LEVEL, m_csLevel);
DDX_Text(pDX, IDC_EDIT_ALL_VOLUME, m_csAllVolume);
DDX_Text(pDX, IDC_EDIT_FIRE_VOLUME, m_csFireVolume);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CWaterTankCalcDlg, CDialog)
//{{AFX_MSG_MAP(CWaterTankCalcDlg)
ON_BN_CLICKED(IDC_BUTTON_LEVEL, OnButtonLevel)
ON_BN_CLICKED(IDC_RADIO_PURPOSE1, OnRadioPurpose1)
ON_BN_CLICKED(IDC_RADIO_PURPOSE2, OnRadioPurpose2)
ON_BN_CLICKED(IDC_RADIO_PURPOSE3, OnRadioPurpose3)
ON_BN_CLICKED(IDC_RADIO_RUNMODE1, OnRadioRunmode1)
ON_BN_CLICKED(IDC_RADIO_RUNMODE2, OnRadioRunmode2)
ON_BN_CLICKED(IDC_RADIO_RUNMODE3, OnRadioRunmode3)
ON_BN_CLICKED(IDC_RADIO_CALCMODE1, OnRadioCalcmode1)
ON_BN_CLICKED(IDC_RADIO_CALCMODE2, OnRadioCalcmode2)
ON_BN_CLICKED(IDC_BUTTON_CALC, OnButtonCalc)
ON_BN_CLICKED(IDC_BUTTON_DWG_SERIES, OnButtonDwgSeries)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWaterTankCalcDlg message handlers
void CWaterTankCalcDlg::OnButtonLevel()
{
AfxMessageBox(_T("各类建筑屋顶消防水箱最小容积(立方米)!\n\n一类公共建筑最小18\n二类公共建筑和一类住宅建筑最小12\n二类住宅建筑最小6\n\n"));
}
BOOL CWaterTankCalcDlg::OnInitDialog()
{
CDialog::OnInitDialog();
Reset();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CWaterTankCalcDlg::OnButtonCalc()
{
UpdateData();
double nRet(0), nAllRet(0);
if(m_iPurpose != 1){
if(m_iRunMode == 0){ //水泵自动
if(m_iCalcMode == 0){ //计算Vt=1.25Qb/4Nmax
double nQb = _tstof(m_csLive2);
double nNmax = _tstof(m_csLive1);
if(nNmax <= 0)
return;
nRet = 1.25*nQb/(4*nNmax);
m_csLiveVolume.Format(_T("%.2f"), nRet);
}
else if(m_iCalcMode == 1){ //估算Vt=(Q-Qb)T+QbTb
double nQ = _tstof(m_csLive1);
double nQb = _tstof(m_csLive2);
double nT = _tstof(m_csLive3);
double nTb = _tstof(m_csLive4);
nRet = (nQ - nQb)*nT + nQb*nTb;
m_csLiveVolume.Format(_T("%.2f"), nRet);
}
}
else if(m_iRunMode == 1){ //水泵人工 公式:Qd/n-Tb×Qm
double nQd = _tstof(m_csLive1);
double nQm = _tstof(m_csLive2);
double nTb = _tstof(m_csLive3);
double nN = _tstof(m_csLive4);
nRet = nQd/nN - nTb*nQm;
m_csLiveVolume.Format(_T("%.2f"), nRet);
}
else if(m_iRunMode == 2){ //单设水箱 公式:Qm×T
double nQm = _tstof(m_csLive1);
double nT = _tstof(m_csLive2);
nRet = nQm * nT;
m_csLiveVolume.Format(_T("%.2f"), nRet);
}
}
nAllRet = nRet;
if(m_iPurpose != 0){ //公式:Vf=Qx×Tx×60/1000
double nQx = _tstof(m_csFireQ);
double nTx = _tstof(m_csFireTime);
nRet = nQx * nTx * 60 / 1000;
double nLevel = _tstof(m_csLevel);
if(nRet < nLevel)
nRet = nLevel;
m_csFireVolume.Format(_T("%.2f"), nRet);
nAllRet += nRet;
}
m_csAllVolume.Format(_T("%.2f"), nAllRet);
UpdateData(FALSE);
}
void CWaterTankCalcDlg::Reset()
{
UpdateData();
m_csLive1 = _T("");
m_csLive2 = _T("");
m_csLive3 = _T("");
m_csLive4 = _T("");
m_csLiveVolume = _T("");
CWnd *pWnd1 = GetDlgItem(IDC_STATIC_FIRE1);
CWnd *pWnd2 = GetDlgItem(IDC_STATIC_FIRE2);
CWnd *pWnd3 = GetDlgItem(IDC_EDIT_FIRE_Q);
CWnd *pWnd4 = GetDlgItem(IDC_STATIC_FIRE3);
CWnd *pWnd5 = GetDlgItem(IDC_EDIT_FIRE_TIME);
CWnd *pWnd6 = GetDlgItem(IDC_BUTTON_LEVEL);
CWnd *pWnd7 = GetDlgItem(IDC_COMBO_ARCH_LEVEL);
CWnd *pWnd8 = GetDlgItem(IDC_STATIC_FIRE4);
CWnd *pWnd9 = GetDlgItem(IDC_EDIT_FIRE_VOLUME);
//生活
CWnd *pWnd10 = GetDlgItem(IDC_RADIO_CALCMODE1);
CWnd *pWnd11 = GetDlgItem(IDC_RADIO_CALCMODE2);
CWnd *pWnd12 = GetDlgItem(IDC_STATIC_FORMULA);
CWnd *pWnd13 = GetDlgItem(IDC_STATIC_LIVE_1);
CWnd *pWnd14 = GetDlgItem(IDC_STATIC_LIVE_2);
CWnd *pWnd15 = GetDlgItem(IDC_STATIC_LIVE_3);
CWnd *pWnd16 = GetDlgItem(IDC_STATIC_LIVE_4);
CWnd *pWnd17 = GetDlgItem(IDC_STATIC_LIVE_5);
CWnd *pWnd18 = GetDlgItem(IDC_EDIT_LIVE_1);
CWnd *pWnd19 = GetDlgItem(IDC_EDIT_LIVE_2);
CWnd *pWnd20 = GetDlgItem(IDC_EDIT_LIVE_3);
CWnd *pWnd21 = GetDlgItem(IDC_EDIT_LIVE_4);
CWnd *pWnd22 = GetDlgItem(IDC_EDIT_LIVE_VOLUME);
if(m_iPurpose == 0){
pWnd1->EnableWindow(FALSE);
pWnd2->EnableWindow(FALSE);
pWnd3->EnableWindow(FALSE);
pWnd4->EnableWindow(FALSE);
pWnd5->EnableWindow(FALSE);
pWnd6->EnableWindow(FALSE);
pWnd7->EnableWindow(FALSE);
pWnd8->EnableWindow(FALSE);
pWnd9->EnableWindow(FALSE);
pWnd10->EnableWindow(TRUE);
pWnd11->EnableWindow(TRUE);
pWnd12->EnableWindow(TRUE);
pWnd13->EnableWindow(TRUE);
pWnd14->EnableWindow(TRUE);
pWnd15->EnableWindow(TRUE);
pWnd16->EnableWindow(TRUE);
pWnd17->EnableWindow(TRUE);
pWnd18->EnableWindow(TRUE);
pWnd19->EnableWindow(TRUE);
pWnd20->EnableWindow(TRUE);
pWnd21->EnableWindow(TRUE);
pWnd22->EnableWindow(TRUE);
}
else if(m_iPurpose == 1){
pWnd1->EnableWindow(TRUE);
pWnd2->EnableWindow(TRUE);
pWnd3->EnableWindow(TRUE);
pWnd4->EnableWindow(TRUE);
pWnd5->EnableWindow(TRUE);
pWnd6->EnableWindow(TRUE);
pWnd7->EnableWindow(TRUE);
pWnd8->EnableWindow(TRUE);
pWnd9->EnableWindow(TRUE);
pWnd10->EnableWindow(FALSE);
pWnd11->EnableWindow(FALSE);
pWnd12->EnableWindow(FALSE);
pWnd13->EnableWindow(FALSE);
pWnd14->EnableWindow(FALSE);
pWnd15->EnableWindow(FALSE);
pWnd16->EnableWindow(FALSE);
pWnd17->EnableWindow(FALSE);
pWnd18->EnableWindow(FALSE);
pWnd19->EnableWindow(FALSE);
pWnd20->EnableWindow(FALSE);
pWnd21->EnableWindow(FALSE);
pWnd22->EnableWindow(FALSE);
}
else if(m_iPurpose == 2){
pWnd1->EnableWindow(TRUE);
pWnd2->EnableWindow(TRUE);
pWnd3->EnableWindow(TRUE);
pWnd4->EnableWindow(TRUE);
pWnd5->EnableWindow(TRUE);
pWnd6->EnableWindow(TRUE);
pWnd7->EnableWindow(TRUE);
pWnd8->EnableWindow(TRUE);
pWnd9->EnableWindow(TRUE);
pWnd10->EnableWindow(TRUE);
pWnd11->EnableWindow(TRUE);
pWnd12->EnableWindow(TRUE);
pWnd13->EnableWindow(TRUE);
pWnd14->EnableWindow(TRUE);
pWnd15->EnableWindow(TRUE);
pWnd16->EnableWindow(TRUE);
pWnd17->EnableWindow(TRUE);
pWnd18->EnableWindow(TRUE);
pWnd19->EnableWindow(TRUE);
pWnd20->EnableWindow(TRUE);
pWnd21->EnableWindow(TRUE);
pWnd22->EnableWindow(TRUE);
}
if(m_iRunMode == 0){ //水泵自动
pWnd10->ShowWindow(SW_SHOW);
pWnd11->ShowWindow(SW_SHOW);
pWnd12->ShowWindow(SW_HIDE);
if(m_iCalcMode == 0){ //计算
pWnd13->SetWindowText(_T("每小时最大启动次数Nmax:"));
pWnd14->SetWindowText(_T("水泵的出水量Qb(m3/h):"));
pWnd15->ShowWindow(SW_HIDE);
pWnd16->ShowWindow(SW_HIDE);
pWnd20->ShowWindow(SW_HIDE);
pWnd21->ShowWindow(SW_HIDE);
}
else if(m_iCalcMode == 1){//估算
pWnd13->SetWindowText(_T("设计秒流量Q(m3/h):"));
pWnd14->SetWindowText(_T("水泵的出水量Qb(m3/h):"));
pWnd15->SetWindowText(_T("秒流量持续时间T(0.5h):"));
pWnd16->SetWindowText(_T("最短运行时间Tb(0.25h):"));
pWnd15->ShowWindow(SW_SHOW);
pWnd16->ShowWindow(SW_SHOW);
pWnd20->ShowWindow(SW_SHOW);
pWnd21->ShowWindow(SW_SHOW);
}
}
else if(m_iRunMode == 1){ //水泵人工
pWnd10->ShowWindow(SW_HIDE);
pWnd11->ShowWindow(SW_HIDE);
pWnd12->ShowWindow(SW_SHOW);
pWnd15->ShowWindow(SW_SHOW);
pWnd16->ShowWindow(SW_SHOW);
pWnd20->ShowWindow(SW_SHOW);
pWnd21->ShowWindow(SW_SHOW);
pWnd12->SetWindowText(_T("公式:Qd/n-Tb×Qm"));
pWnd13->SetWindowText(_T("最高日用水量Qd(m3):"));
pWnd14->SetWindowText(_T("平均每小时用水量Qm(m3):"));
pWnd15->SetWindowText(_T("启动一次运行时间Tb(h):"));
pWnd16->SetWindowText(_T("水泵每天启动次数(n):"));
}
else if(m_iRunMode == 2){ //单设水箱
pWnd10->ShowWindow(SW_HIDE);
pWnd11->ShowWindow(SW_HIDE);
pWnd12->ShowWindow(SW_SHOW);
pWnd12->SetWindowText(_T("公式:Qm×T"));
pWnd13->SetWindowText(_T("平均每小时用水量Qm(m3):"));
pWnd14->SetWindowText(_T("最大连续时间T(h):"));
pWnd15->ShowWindow(SW_HIDE);
pWnd16->ShowWindow(SW_HIDE);
pWnd20->ShowWindow(SW_HIDE);
pWnd21->ShowWindow(SW_HIDE);
}
UpdateData(FALSE);
}
void CWaterTankCalcDlg::OnRadioPurpose1()
{
Reset();
}
void CWaterTankCalcDlg::OnRadioPurpose2()
{
Reset();
}
void CWaterTankCalcDlg::OnRadioPurpose3()
{
Reset();
}
void CWaterTankCalcDlg::OnRadioRunmode1()
{
Reset();
}
void CWaterTankCalcDlg::OnRadioRunmode2()
{
Reset();
}
void CWaterTankCalcDlg::OnRadioRunmode3()
{
Reset();
}
void CWaterTankCalcDlg::OnRadioCalcmode1()
{
Reset();
}
void CWaterTankCalcDlg::OnRadioCalcmode2()
{
Reset();
}
void CWaterTankCalcDlg::OnButtonDwgSeries()
{
CTemporaryResourceOverride vTemp;
CSelWaterTankDlg dlg;
UpdateData(TRUE);
double dV = _tstof(m_csAllVolume);
dlg.m_dV = dV;
dlg.DoModal();
}