#pragma once #include "SymbolAnnotateJig.h" #include "TRoadGradeArrowJig.h" class CRoadElevStyle { public: enum ReturnValue{ kRetContinue, kRetEsc, kRetDynamicStyle }; CRoadElevStyle(); ~CRoadElevStyle(); int SelectStyle(TDbSymbElevation *pSymbElevEnt); CString CalcElevData(XPoly2D &RoadBaseLine, XPoint ptSelect); //计算标高 void FindClosePoint(XPoly2D &RoadBaseLine, TDbSymbElevation *pSymbElev, XPoint &ptShort, int iNum);//找出最近的投影点,就是正确的投影点 private: bool JudgeSelectRoadElevation(PickSet &ss); //判断选择的标高是否满足规定的个数 int SelectRoadBaseLine(PickSet &ssRoadBaseLine, XPoly2D &roadBaseLine); //选择道路基准线 bool JudgeRoadBaseLineIsContinue(const PickSet &ssRoadBaseLine, XPoly2D &roadBaseLine2d);//判断选择道路基准线是否连续 void InputBaseLineGrade(); //只选择了一个标高对象,输入“W”,输入坡度处理 //判断标高是否在选择的线上 bool JudgeElevationOnRoadCenter(const XPoly2D &roadCenterLine2d, const PickSet &ssElevation); TDbSymbElevation* GetFirstElevEnty(const PickSet &ss); //获取第一个实体对象 void AutoMendElev(PickSet& ss, XPoly2D &RoadBaseLine, int iNum); //更改标高 void GetBaseLinept(PickSet& ss); //获取道路基线的起点终点 bool GetDefaultLine(const PickSet ssElevation, XPoly2D &polyDefalutLine); private: static double m_dRoadGrade; //坡度 static int m_iRoadGradePrecision; //坡度精度 add tyj 20160906 static double m_dStartElevation; //起点标高值 static double m_dEndElevation; //最后一个点的标高值 static double m_dRoadLenth; //投影点间的道路长度 static XPoint m_ptProjectStart; //第一个标高投影点坐标 static XPoint m_ptProjectend; //最后一个标高投影点坐标 static XPoint m_ptElevStart; //第一个标高点坐标 static XPoint m_ptElevEnd; //第二个标高点坐标 static XPoint m_ptBaselineStart; //道路基线起点 static XPoint m_ptBaseLineEnd; //道路基线终点 static bool m_bsingleElev; //只点取了一个标高 static bool m_bSelectRoadLine; //道路中心线 };