#if !defined(AFX_ELEVATIONCALCDLG_H__7FD7994C_3081_40B3_9897_4DC29534FC6F__INCLUDED_) #define AFX_ELEVATIONCALCDLG_H__7FD7994C_3081_40B3_9897_4DC29534FC6F__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "resource.h" #include #include "ElevationCalc.h" #include "WDGrid.h" //#include "LayDepthData.h" class ElevationCalc; class CElevationCalcDlg; class CElevationCalcGrid:public WDGrid { public: CElevationCalcGrid(); void SetWnd(CElevationCalcDlg* pWnd); void SetPipeRow(const std::map &data); void SetColorPipe(const std::vector &data); void SetRowforEndWell(int nRow); // 排出井所在行号 void SetModifyColorforEndWell(BOOL bModify); // void SetDropWell(const std::vector &data); // 2011.7.26 add // 跌水井对应颜色设置 cet 2011.11.28 add void setWellColor(const std::map &mapWellColor); // 跌水井提示信息 cet 2011.11.28 add void setWellTip(const std::map &mapWellTip); protected: virtual void OnDblClick(WDGridRow&row); virtual bool OnModified(WDGridCell&cell,CString &text); virtual void OnBeforeRefresh(WDGridCell&cell); virtual void OnCellComboString(WDGridCell&cell,CComboBox&combo); // cet 2011.6.16 add virtual BOOL PreTranslateMessage(MSG* pMsg); // cet 2011.7.26 add protected: //{{AFX_MSG(CElevationCalcGrid) afx_msg void OnMouseMove(UINT nFlags, CPoint point); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: void SetToolTipText(LPCTSTR pspText, BOOL bActivate); // cet 2011.7.26 add private: CElevationCalcDlg *m_pWnd; std::map m_mapRow; // 管段对应的行号 用于根据管段选择行号操作 std::set m_setRow; // 行号用于改变此行管段颜色 int m_nRowForEndWell; // 排出井行号 BOOL m_bModifyColor; // 是否改变排出井颜色 // std::vector m_vecWellName; // 跌水井 cet 2011.7.26 add std::map m_mapWellColor; // 跌水井及对应颜色值 cet 2011.11.28 add std::map m_mapWellTip;// 跌水井及对应提示 cet 2011.11.28 add CToolTipCtrl m_ToolTip; // cet 2011.7.26 add }; // 图面赋值时需要的井信息 typedef struct { AcDbObjectId id; CString strWellName; // 名称 BOOL bIsDropWell; // 是否为跌水井 double dGroundEle; // 自然地面标高 double dWellRadius; // 井半径 double dSand; // 沉沙量 double dWellEleDown; // 井底标高 double dWellEleUp; // 起点井地面标高 double dLayingDepth; // 埋深 BOOL bSysSWell; // 系统起点井 BOOL bWell; // 井时为真,化粪池时为假 }WELLNODE; class ElevationCalcError; class CElevationCalcDlg : public CDialog { public: CElevationCalcDlg(CWnd* pParent = NULL); ~CElevationCalcDlg(); void SetPipeSysList(SSearchPipeList *pList); void DblClickLst(); // WGrid双击事件 void UpdatePipeInfo(long nRow, long nCol, double dVal); void UpdateWellNode(); // 自动计算完成时更新井信息 void UpdateGrid(); // 管网是否已经计算过 void SetCalced(BOOL bCalced); void SetPipeType(CString &sPipeLayer); //zxl 2011.11.29 add 获取管线类型 CString GetPipeType(); //zxl 2011.11.29 add void SetDropWellByCalc(AcDbObjectId &id); //计算中产生的跌水井 //{{AFX_DATA(CElevationCalcDlg) enum { IDD = IDD_CALC_ELEVATION }; CElevationCalcGrid m_lstCtrl; double m_dWndEdtLayingDepth; double m_dMinThick; BOOL m_bWndChkReverseCalc; BOOL m_bWndChkLayingDepth; BOOL m_bWndChkMinThick; CString m_strPipeEleDown; //}}AFX_DATA //{{AFX_VIRTUAL(CElevationCalcDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); //}}AFX_VIRTUAL protected: //{{AFX_MSG(CElevationCalcDlg) virtual BOOL OnInitDialog(); afx_msg void OnBtnModifyele(); afx_msg void OnBtnCalc(); afx_msg void OnBtnLayingdepth(); afx_msg void OnBtnTodwg(); afx_msg void OnBtnTable(); afx_msg void OnCheckEdownele(); afx_msg void OnBtnLook(); afx_msg void OnChangeEditStartdeep(); afx_msg void OnChangeEditMinthick(); afx_msg void OnClose(); virtual void OnCancel(); afx_msg void OnChangeEditEnddownele(); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: void GetWellNodeInfo(); // 获得图面赋值时需要的井信息 void ShowPipe(AcDbObjectId &idPipe); // 显示管段 void UpdateWellNode(const AcDbObjectId &id, double dGroundEle, double dEleUp, double dWellRadius, double dSand, double dEleDown, BOOL bDrop); // 修改井标高时更新井信息 void UpdateWellNode(const CalcNode &node); // 自动计算时需更新井信息(跌水井、井底标高) void UpdateWellNode(const AcDbObjectId &id, double dLayingDepth); // 修改井埋设深度时更新系统起点井的埋设深度 AcDbObjectId InsertWellDim(const XPoint &pt, const CString &strText); void UpdateWellDim(const AcDbObjectId &idDim, const CString &strText); XPoint GetWellpt(const AcDbObjectId &id); XPoint GetWellLayingDepthDimPt(const AcDbObjectId &id); double GetWellEleDown(const AcDbObjectId &id); // 通过计算连接井的各管道的最小管道标高 得到井底标高 void ShowWellDim(BOOL bShow); void DeleteWellDim(); void UpdateWellDim(); void UpdateGroundEleForGrid(); // 更新表格中的地面标高值 bool isDropWell(int nIndex, const std::vector data); // 判断管段终点井是否是跌水井 cet 2011.6.20 add void GetDropWell(std::vector &vecWellName); // cet 2011.7.26 add 获取跌水井 void SetDropWellColor(); // cet 2011.7.26 add 改变计算过程中产生的跌水井的颜色 bool GetWellDropHeight(AcDbObjectId &id, CString &sWellDorp); // zxl 2011.11.15 add 计算井的跌落高度 void GetDropWellEle(std::vector &vecWell, std::map &mapEle);//获取跌水井井底标高 void UpdateDropWellByCustom(std::map &mapEle, std::vector &vecCalc);//设置计算后生成的跌水井 // 初始化起点井埋深数据 cet 2012.6.21 add void InitSWellLayDepth(); // 井面标高 cet 2012.6.21 add double GetWellEleUp(const AcDbObjectId &id); // 获得埋深类型和值 cet 2012.6.21 add void GetLayDepthData(const CString &sLayDepth, LayingDepthType &type, double &dLayDepth); // 修改特定井的时更新埋深 cet 2012.6.21 add void UpdatelayDepthData(const AcDbObjectId &idWell, double dLayDepth); // 计算完成时更新埋深 cet 2012.6.21 add void UpdatelayDepthData(); // 将埋深数据写入井的扩展数据中 cet 2012.6.21 add void WriteXDataToWell(); // 获得井底标高 cet 2012.6.21 add double GetWellEleDown2(const AcDbObjectId &id); // 当管网在命令执行前已经计算过时,直接获取管网信息 void UpdateCalcedData(); private: SSearchPipeList *m_pAllList; std::vector m_vecWellInfo; // 图面赋值时井信息 std::map m_mapWellDim; BOOL m_bCalc; // 是否进行了标高计算 ElevationCalc *m_pElevationCalc; ElevationCalc* m_pPositiveCalc; // 正算类 ElevationCalc* m_pReverseCalc; // 反算类 std::vector m_vecWellName; // cet 2011.7.26 add 记录跌水井 CString m_sPipeType;//zxl 2011.11.29 add 记录管线类型 std::map m_mapSWellLayDepth; // 系统起点井埋深值及埋深类型 cet 2012.6.21 add bool m_bFirstRunCmd; // 是否是第一次执行命令 cet 2012.6.21 add bool m_bOnlySWell; // 是否只有一个起点井 cet 2012.6.26 add }; #endif // !defined(AFX_ELEVATIONCALCDLG_H__7FD7994C_3081_40B3_9897_4DC29534FC6F__INCLUDED_)