Files
envi-code/SourceCode/Code2026/tg_shs/shs_TwtPump/WaterTankCalcDlg.cpp
T
2026-09-28 15:28:50 +08:00

361 lines
10 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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();
}