#if !defined(AFX_PIPEINTERCHECKDLG_H__EBA007B6_ED08_4D7D_A251_1AB654F37E07__INCLUDED_) #define AFX_PIPEINTERCHECKDLG_H__EBA007B6_ED08_4D7D_A251_1AB654F37E07__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "Resource.h" #include "DbVerticalSection.h" #include "DbWell.h" #include "DbPool.h" #include "DbEquipment.h" #include "WGroupCtrl.h" ///////////////////////////////////////////////////////////////////////////// // CPipeInterCheckDlg dialog // 交叉碰撞点信息 class InterPipesInfo { public: AcDbObjectId idLow; AcDbObjectId idUp; TPipeSys::SysType sysLow; TPipeSys::SysType sysUp; double dElevLow; double dElevUp; double dDnLow; double dDnUp; AcGePoint3d ptInter; }; class CPipeInterCheckDlg : public WGroupDlg { // Construction public: CPipeInterCheckDlg(CWnd* pParent = NULL); // standard constructor void SetSelectedPipes(PickSet ss); bool HasIntersectPipe(); // Dialog Data //{{AFX_DATA(CPipeInterCheckDlg) enum { IDD = IDD_PIPEINTER_CHECK }; CComboBox m_cmbPipeType; double m_dDownLen; CString m_csDownLen; double m_dSafeDist; CString m_csSafeDist; int m_iDimType; int m_iDownPipeType; int m_iDimPipeNotInter; int m_iOldDownPipeType; CString m_sElevUp; CString m_sElevLow; int m_iCmbType; //}}AFX_DATA // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CPipeInterCheckDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: // Generated message map functions //{{AFX_MSG(CPipeInterCheckDlg) virtual BOOL OnInitDialog(); afx_msg void OnRadioPipetype1(); afx_msg void OnRadioPipetype2(); afx_msg void OnRadioPipetype3(); afx_msg void OnRadioPipetype4(); afx_msg void OnSelchangeComboType(); afx_msg void OnDestroy(); afx_msg void OnClose(); afx_msg void OnTimer(UINT_PTR nIDEvent); afx_msg void OnBtnQuit(); afx_msg void OnBtnNotdown(); afx_msg void OnBtnDown(); afx_msg void OnRadioDimtype1(); afx_msg void OnRadioDimtype2(); afx_msg void OnKillfocusEditDownlen(); afx_msg void OnKillfocusEditSafedist(); afx_msg void OnPaint(); afx_msg void OnBtnAutoDown(); //}}AFX_MSG // 初始化交叉碰撞管线信息 void InitInterPipeInfo(); void ModifyInterPipeInfo(); void UpdateInterPipeInfo(const InterPipesInfo infoOld); // 设置对话框状态 void SetCurrentDlgData(); void ModifyDlgRadioStu(); void SetDlgCtrlStu(bool bEnableWindow = false); double GetPipeStartEle(Entity entPipe); double GetPipeThick(Entity& ent); // 更新对话框记忆数据 void UpdateDlgData(bool bRead); // 当前检查的管线 void SetCurSelPipe(); void DrawXLineByPt(); void ShowLine(); // 移动管线使其不碰撞 void ResetSelPipeSysElev(); // 对话框显示标注内容 void SetDimText(); // 标注交叉点 void DoDimIntersectPipes(InterPipesInfo infoPipe); // 计算管线连带的管网 void ModifyWellSysByLastWell(DList &lstWellSys, const PickSet &ss); void CalcWellPipeSys(double nDeepStart, DList &lstWellSys); void ModifyWellPipeElev(DList &lstWellSys); private: WGroupCtrl m_grpSet; // 伸缩编组框控件 static BOOL m_bGrpSetStatus; // 伸缩编组框控件的状态 PickSet m_ssPipe; InterPipesInfo m_infoPipe; // 当前要处理的交叉管线 AcDbObjectId m_idMove; // 降管 std::multimap m_mapInterPipeInfo; // 交叉碰撞点信息 std::multimap::reverse_iterator m_itCurPipe; std::vector m_vecPtUnInter;// 交叉不碰撞点信息 PickSet m_ssLine; bool m_bIsVisible; int m_iPreWelldDeep; DECLARE_MESSAGE_MAP() }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_PIPEINTERCHECKDLG_H__EBA007B6_ED08_4D7D_A251_1AB654F37E07__INCLUDED_)