#pragma once #include "resource.h" #include "DataContainer.h" #include "DrawSectionSymbol.h" #include "WDGrid.h" #include "GsPreviewCtrl.h" class CHorizontalSectionDlg; class CRoadGrid : public WDGrid { public: CRoadGrid(); ~CRoadGrid(); void SetDlg(CHorizontalSectionDlg *pDlg) { m_pWnddlg = pDlg; } protected: virtual bool OnModified(WDGridCell&cell, CString &text); private: CHorizontalSectionDlg *m_pWnddlg; }; class CHorizontalSectionDlg : public CDialog { public: CHorizontalSectionDlg(CWnd* pParent = NULL); ~CHorizontalSectionDlg(); double GetScaleX() { return m_dScaleX; } void SetScaleX(double dVal) { m_dScaleX = dVal; } double GetScaleY() { return m_dScaleY; } void SetScaleY(double dVal) { m_dScaleY = dVal; } double GetRoadEle() { return m_dRoadEle; } void SetRoadEle(double dVal) { m_dRoadEle = dVal; } double GetHeight1() { return m_dHeight1; } void SetHeight1(double dVal) { m_dHeight1 = dVal; } double GetHeight2() { return m_dHeight2; } void SetHeight2(double dVal) { m_dHeight2 = dVal; } double GetGreenWidth1() { return m_dGreenWidth1; } void SetGreenWidth1(double dVal) { m_dGreenWidth1 = dVal; } double GetGreenWidth2() { return m_dGreenWidth2; } void SetGreenWidth2(double dVal) { m_dGreenWidth2 = dVal; } double GetGreenGrad1() { return m_dGreenGrad1; } void SetGreenGrad1(double dVal) { m_dGreenGrad1 = dVal; } double GetGreenGrad2() { return m_dGreenGrad2; } void SetGreenGrad2(double dVal) { m_dGreenGrad2 = dVal; } double GetCarWidth() { return m_dCarWidth; } void SetCarWidth(double dVal) { m_dCarWidth = dVal; } double GetCarGrad() { return m_dCarGrad; } void SetCarGrad(double dVal) { m_dCarGrad = dVal; } double GetNoCarWidth() { return m_dNoCarWidth; } void SetNoCarWidth(double dVal) { m_dNoCarWidth = dVal; } double GetNoCarGrad() { return m_dNoCarGrad; } void SetNoCarGrad(double dVal) { m_dNoCarGrad = dVal; } double GetMenWidth() { return m_dMenWidth; } void SetMenWidth(double dVal) { m_dMenWidth = dVal; } double GetMenGrad() { return m_dMenGrad; } void SetMenGrad(double dVal) { m_dMenGrad = dVal; } int GetRoadType() { return m_nRoadType; } void SetRoadType(int nVal) { m_nRoadType = nVal; } CString GetNumber() { return m_strNumber; } void SetNumber(const CString &strNumber) { m_strNumber = strNumber; } AcGePoint3d GetPtS() { return m_ptS; } void SetPtS(const AcGePoint3d &ptS) { m_ptS = ptS; } AcGePoint3d GetPtE() { return m_ptE; } void SetPtE(const AcGePoint3d &ptE) { m_ptE = ptE; } AcGeVector3d GetVt() { return m_vt; } void SetVt(const AcGeVector3d &vt) { m_vt = vt; } AcDbObjectId GetRoadMidLineId() { return m_idMidLine; } void SetRoadMidLineId(const AcDbObjectId &idLine) { m_idMidLine = idLine; } const std::vector& GetPipesId() { return m_vecPipeId; } void SetPipesId(std::vector &vecId) { m_vecPipeId.clear(); std::vector::iterator it; for (it = vecId.begin(); it != vecId.end(); it++) { m_vecPipeId.push_back(*it); } } void UpdateInfo(); public: //{{AFX_DATA(CHorizontalSectionDlg) enum { IDD = IDD_HORIZONTALSECTION }; CComboBox m_wndCmbType; CRoadGrid m_wndLstRoadData; BOOL m_bWndChkGrad; //}}AFX_DATA //{{AFX_VIRTUAL(CHorizontalSectionDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); //}}AFX_VIRTUAL protected: //{{AFX_MSG(CHorizontalSectionDlg) virtual BOOL OnInitDialog(); virtual void OnOK(); afx_msg void OnCheckGrad(); afx_msg void OnSelchangeCmbType(); afx_msg void OnPaint(); afx_msg void OnKillfocusEdt(); afx_msg void OnChangeEdtHeight1(); afx_msg void OnChangeEdtHeight2(); afx_msg void OnSetfocusEdtHeight1(); afx_msg void OnSetfocusEdtHeight2(); afx_msg void OnStaticPreview(); //}}AFX_MSG DECLARE_MESSAGE_MAP() CGsPreviewCtrl m_PreviewCtrl; AcDbDatabase *m_pPreviewDb; private: void initLstData(); void ReadOrWriteData(bool bVal); //图形预览 void UpdateImage(); void GetRecordExtents(AcDbBlockTableRecord *pBlockTabRecord, AcDbExtents &extents); void DrawPreviewEntity(AcDbBlockTableRecord *&pBlockTableRecord, AcDbDatabase* pDb); void UpdateXDataMap(); bool InitDataContainer(); void GetMaxEleByPipe(double &dMax); private: double m_dScaleX; // 横向比例 double m_dScaleY; // 纵向比例 double m_dRoadEle; // 地面标高 double m_dHeight1; // 分隔带道牙高度 double m_dHeight2; // 人行道道牙高度 double m_dGreenWidth1; // 绿化带宽度(靠近道路中心) double m_dGreenGrad1; // 绿化带坡度(靠近道路中心) double m_dGreenWidth2; // 绿化带宽度(远离道路中心) double m_dGreenGrad2; // 绿化带坡度(远离道路中心) double m_dCarWidth; // 车行道宽度 double m_dCarGrad; // 车行道坡度 double m_dNoCarWidth; // 非机动车道宽度 double m_dNoCarGrad; // 非机动车道坡度 double m_dMenWidth; // 人行道宽度 double m_dMenGrad; // 人行道坡度 int m_nRoadType; // 板块类型 CString m_strNumber; // 横断面编号 AcGePoint3d m_ptS; // 剖切起点 AcGePoint3d m_ptE; // 剖切终点 AcGeVector3d m_vt; // 剖切方向 CDataContainer m_mapData; // 道路信息 CDrawSectionSymbol *m_pSecDraw; // 绘制横断面 AcDbObjectId m_idMidLine; // 道路中心线ID AcDbObjectId m_IdText; CString m_strHeight1; CString m_strHeight2; std::vector m_vecPipeId; };