#pragma once #include "DataContainer.h" #include class CDrawSectionSymbol { public: CDrawSectionSymbol(); void SetDataContainer(CDataContainer *pData); bool DrawPipe(const AcDbObjectId& idPipe, AcDbEntity*& pOutEnt); bool DrawText(const AcGePoint3d &ptLoc, LPCTSTR pszText, BOOL bDir, AcDbEntity*& pOutText); bool DrawArrow(AcDbEntity*& pArrow); bool DrawDivision(AcDbVoidPtrArray& arPtr); bool DrawRoadway(AcDbPolyline*& pOutLine, AcDbVoidPtrArray& arSplitLine, AcDbVoidPtrArray& arSubPtr, BOOL bCreateSub); bool DrawRoadDist(AcDbVoidPtrArray& arPtr); private: bool IsIntersect(const AcDbLine &line1, const AcDbLine &line2, AcGePoint3d &ptInt); bool DrawLabel(const AcGePoint3dArray &arPt, AcDbVoidPtrArray& arPtr); bool DrawNameInfo(const AcGePoint3d &ptIns, AcDbVoidPtrArray& arPtr, bool bGeneral = false); bool DrawWayBorder(const AcGePoint3d &ptL, const AcGePoint3d &ptR, AcDbVoidPtrArray& arPtr); bool DrawPipeInfo(const std::map& mapData, AcDbVoidPtrArray& arPtr); bool GetWayInfo(double &dWayWidth, std::set &setWay, bool bMidPt = false); bool GetScaleXY(double &dX, double &dY); bool GetMaxVal(double &dMax); // 获取道牙最大值 private: CDataContainer* m_pmapData; // 道路信息 std::map m_mapPipe; // 用于保存管线id和管线与横断面的交点 };