#if !defined(AFX_SPHONRAINWATERDLG_H__4868AD63_3FB4_496C_8A55_0A58EF1539D1__INCLUDED_) #define AFX_SPHONRAINWATERDLG_H__4868AD63_3FB4_496C_8A55_0A58EF1539D1__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "resource.h" typedef struct SiphonInfo { CString strName; //管段名称 AcDbObjectId id; //管道或雨水斗id AcDbObjectId id2; //与当前管段存在变径关系的管段 double dQ; //流量 double dLen; //管长 double dPipeDia; //管径 double dT; //局部阻力系数 bool bDia; //变径 int nType; //0 管 1 雨水斗 double dEle; //高差 BOOL bVertical; //立管 double dv; //流速 double dhf; //沿程阻力损失 double dhj; //局部阻力损失 double dH; //总阻力损失 double dH2; //∑总阻力损失 double dP; //压力 double dA; //管道沿程阻力损失系数λ double dDeep; //斗前水深 BOOL bLinkWaterBucket; //是否连着雨水斗 }SIPHONINFO; class CSiphonRainwaterCalcDlg; class CSiphonRainwaterCalcGrid: public WDGrid { public: CSiphonRainwaterCalcGrid(); void SetPipeMaterial(const CString& strMaterial); void SetWnd(CSiphonRainwaterCalcDlg* pWnd); void SetData(std::set &data); std::set& GetData(); protected: virtual void OnCellComboString(WDGridCell&cell,CComboBox&combo); virtual void OnDblClick(WDGridRow&row); virtual bool OnModified(WDGridCell&cell,CString &text); virtual void OnBeforeRefresh(WDGridCell&cell); private: CString m_strPipeMaterial; CSiphonRainwaterCalcDlg* m_pWnd; std::set m_setRow; }; class CSiphonRainwaterCalcDlg : public CDialog { public: CSiphonRainwaterCalcDlg(CWnd* pParent = NULL); void SetSiphonInfo(std::vector &data); void SetMapInfo(std::map &mapPipe, std::map &mapDim, std::map &map2PipeId); void SetPipeMaterial(const CString& strMaterial); void SetChamferPipe(std::map &mapPipe); // cet 2011.7.6 add void SetPlan2Sys(BOOL bExist); void DblClickLst(); // WGrid双击事件 void UpDatePipeDia(long nIndex, CString &strText); //更新管径 void UpDateT(long nIndex, CString &strText); //更新局部阻力系数 //{{AFX_DATA(CSiphonRainwaterCalcDlg) enum { IDD = IDD_CALC_SIPHONRAINWATER }; CSiphonRainwaterCalcGrid m_listCtrl; static CString m_strWndCmbT; double m_dWndEdtDelta; //}}AFX_DATA //{{AFX_VIRTUAL(CSiphonRainwaterCalcDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); //}}AFX_VIRTUAL protected: //{{AFX_MSG(CSiphonRainwaterCalcDlg) virtual BOOL OnInitDialog(); afx_msg void OnButtonTabale(); afx_msg void OnButtonHide(); afx_msg void OnButtonCalc(); afx_msg void OnButtonCheck(); afx_msg void OnButtonWord(); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: void ResetList(); void CleanUseless0(CString &strText); double GetU(); //运动粘性系数 void UpdataInfo(); AcDbObjectId GetPipeId(int nIndex); //获得选定行管段id void ShowPipe(AcDbObjectId&); void UpDatePipeDia(AcDbObjectId &id, double dDia); int ComparePipeDia(const AcDbObjectId &id1, const AcDbObjectId &id2); BOOL GetPressure(const AcDbObjectId &id1, const AcDbObjectId &id2, double &dPressure, CString &strName1, CString &strName2); //各节点(斜三通)压力差 std::vector::iterator Find(const AcDbObjectId &id); BOOL GetPipeDn(const AcDbObjectId &id, double &dDn); // cet 2011.10.13 add private: std::vector m_vecData; std::map m_mapPipe; //原图与系统图中管段对应关系 std::map m_mapDim; //原图与系统图中各管标注对应关系 std::map m_map2PipeId; //原图中斜三通中干管与支管对应关系 std::map m_mapChamferPipe; // cet 2011.7.6 add 倒角管段管径随对应的管段 CString m_strPipeMaterial; BOOL m_bExistPlan2Sys; // 系统图是否存在 }; #endif // !defined(AFX_SPHONRAINWATERDLG_H__4868AD63_3FB4_496C_8A55_0A58EF1539D1__INCLUDED_)