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

120 lines
3.1 KiB
C++

#if !defined(AFX_HYDRANTCALCDATA_H__4A1C9712_489F_4E6C_8CC3_B250798761BB__INCLUDED_)
#define AFX_HYDRANTCALCDATA_H__4A1C9712_489F_4E6C_8CC3_B250798761BB__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "resource.h"
#include "WDGRID.h"
class TGridHydrantData : public WRowData
{
public:
CString m_csNg; //当量
AcDbObjectId m_idPipe;
};
class CHydrantCalcDataDlg;
class TGridHydrantCalcGrid: public WDGrid
{
protected:
virtual bool OnCellButtonDown(WDGridCell &cell, CString &res);
virtual void OnCellComboString(WDGridCell&cell,CComboBox&combo);
virtual bool OnModified(WDGridCell&cell,CString &text);
virtual void OnDblClick(WDGridRow&row);
public:
TGridHydrantCalcGrid();
void SetDlg(CHydrantCalcDataDlg *pDlg);
void ShowPipe();
private:
CHydrantCalcDataDlg *m_pDlg;
};
class CHydrantCalcDlg;
class CHydrantCalcDataDlg : public CDialog
{
public:
CHydrantCalcDataDlg(CWnd* pParent = NULL);
~CHydrantCalcDataDlg();
void SetHydrantCalcDlg(CHydrantCalcDlg *pDlg);
void SetListAll(SSearchPipeList *pListAll);
void SetSSAll(PickSet &ssAll);
void SetSSCalc(PickSet &ssCalc);
void UpdatePipeDn(const AcDbObjectId &idPipe, double dDn);
//{{AFX_DATA(CHydrantCalcDataDlg)
enum { IDD = IDD_HYDRANT_CALC_DATA };
TGridHydrantCalcGrid m_wndGrid;
BOOL m_bNg;
double m_dPress;
//}}AFX_DATA
//{{AFX_VIRTUAL(CHydrantCalcDataDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);
//}}AFX_VIRTUAL
protected:
// Generated message map functions
//{{AFX_MSG(CHydrantCalcDataDlg)
virtual BOOL OnInitDialog();
afx_msg void OnBtnWord();
afx_msg void OnBtnSheet();
virtual void OnOK();
afx_msg void OnButtonShow();
afx_msg void OnBtnPress();
afx_msg void OnTimer(UINT_PTR nIDEvent);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
void Calc();
void ReCalc();
void UpdateGrid();
void UpdatePress();
CString GetPipeNg(SSearchPipeList *pListAll);
void DoCalcHydrantNg2(SSearchPipeList *pListAll, BOOL bOnlyFlow = TRUE);
void ResetList(SSearchPipeList *pListAll);
// 根据已知节点压力求解未知节点静态压力,构建节点求压关系
void ConstructNode();
// 显示不满足静态压力要求的消火栓
void ShowHydrant(bool bShow);
// 获取实体颜色
void GetEntityColor();
void Dim();
private:
CHydrantCalcDlg* m_pHydrantCalcDlg;
DList<SSearchPipeList> m_lstNode;
SSearchPipeList *m_pListAll;
PickSet m_ssAll;
PickSet m_ssCalc;
// 管线管径改变后的数值
std::map<AcDbObjectId,double> m_mapPipeDN;
// 节点压力
struct NODEPRESS
{
SSearchPipeList *pList; // 待求压力节点
SSearchPipeList *pListClaced; // 已知压力值节点
double dPressDiff; // 压力差
double dPress; // plist压力值
};
// 初算时计算出的交叉点压力
std::map<AcDbObjectId,NODEPRESS> m_mapCalcedNodePress;
// 实体颜色
std::map<AcDbObjectId, Adesk::UInt16> m_mapColor;
// 不符合压力要求的消火栓
std::vector<AcDbObjectId> m_vecIds;
// 控制实体是否亮显
bool m_bShow;
// 是否是平面图
bool m_bPGraph;
};
#endif // !defined(AFX_HYDRANTCALCDATA_H__4A1C9712_489F_4E6C_8CC3_B250798761BB__INCLUDED_)