#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 m_lstNode; SSearchPipeList *m_pListAll; PickSet m_ssAll; PickSet m_ssCalc; // 管线管径改变后的数值 std::map m_mapPipeDN; // 节点压力 struct NODEPRESS { SSearchPipeList *pList; // 待求压力节点 SSearchPipeList *pListClaced; // 已知压力值节点 double dPressDiff; // 压力差 double dPress; // plist压力值 }; // 初算时计算出的交叉点压力 std::map m_mapCalcedNodePress; // 实体颜色 std::map m_mapColor; // 不符合压力要求的消火栓 std::vector m_vecIds; // 控制实体是否亮显 bool m_bShow; // 是否是平面图 bool m_bPGraph; }; #endif // !defined(AFX_HYDRANTCALCDATA_H__4A1C9712_489F_4E6C_8CC3_B250798761BB__INCLUDED_)