237 lines
6.9 KiB
C++
237 lines
6.9 KiB
C++
#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 <set>
|
|
#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<AcDbObjectId, int> &data);
|
|
|
|
void SetColorPipe(const std::vector<AcDbObjectId> &data);
|
|
|
|
void SetRowforEndWell(int nRow); // 排出井所在行号
|
|
|
|
void SetModifyColorforEndWell(BOOL bModify);
|
|
|
|
// void SetDropWell(const std::vector<CString> &data); // 2011.7.26 add
|
|
// 跌水井对应颜色设置 cet 2011.11.28 add
|
|
void setWellColor(const std::map<CString,int> &mapWellColor);
|
|
// 跌水井提示信息 cet 2011.11.28 add
|
|
void setWellTip(const std::map<CString,CString> &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<AcDbObjectId, int> m_mapRow; // 管段对应的行号 用于根据管段选择行号操作
|
|
std::set<int> m_setRow; // 行号用于改变此行管段颜色
|
|
int m_nRowForEndWell; // 排出井行号
|
|
BOOL m_bModifyColor; // 是否改变排出井颜色
|
|
// std::vector<CString> m_vecWellName; // 跌水井 cet 2011.7.26 add
|
|
std::map<CString,int> m_mapWellColor; // 跌水井及对应颜色值 cet 2011.11.28 add
|
|
std::map<CString,CString> 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<CALCNODE> data); // 判断管段终点井是否是跌水井 cet 2011.6.20 add
|
|
|
|
void GetDropWell(std::vector<CString> &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<CString> &vecWell, std::map<CString, double> &mapEle);//获取跌水井井底标高
|
|
void UpdateDropWellByCustom(std::map<CString, double> &mapEle, std::vector<CString> &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<WELLNODE> m_vecWellInfo; // 图面赋值时井信息
|
|
|
|
std::map<AcDbObjectId,AcDbObjectId> m_mapWellDim;
|
|
|
|
BOOL m_bCalc; // 是否进行了标高计算
|
|
|
|
ElevationCalc *m_pElevationCalc;
|
|
ElevationCalc* m_pPositiveCalc; // 正算类
|
|
ElevationCalc* m_pReverseCalc; // 反算类
|
|
|
|
std::vector<CString> m_vecWellName; // cet 2011.7.26 add 记录跌水井
|
|
|
|
CString m_sPipeType;//zxl 2011.11.29 add 记录管线类型
|
|
|
|
std::map<AcDbObjectId,LayingDepthNode> 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_)
|