50 lines
1.4 KiB
C++
50 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include "DataContainer.h"
|
|
#include <set>
|
|
|
|
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<AcDbObjectId, AcGePoint3d>& mapData, AcDbVoidPtrArray& arPtr);
|
|
|
|
bool GetWayInfo(double &dWayWidth, std::set<double> &setWay, bool bMidPt = false);
|
|
|
|
bool GetScaleXY(double &dX, double &dY);
|
|
|
|
bool GetMaxVal(double &dMax); // 获取道牙最大值
|
|
|
|
private:
|
|
|
|
CDataContainer* m_pmapData; // 道路信息
|
|
std::map<AcDbObjectId,AcGePoint3d> m_mapPipe; // 用于保存管线id和管线与横断面的交点
|
|
|
|
};
|