108 lines
2.5 KiB
C++
108 lines
2.5 KiB
C++
#include "StdAfx.h"
|
|
#include "globalfunc.h"
|
|
#include "ImpDrawGeneralSection.h"
|
|
#include "dbelipse.h"
|
|
#include "DataContainer.h"
|
|
#include "DrawSectionSymbol.h"
|
|
#include "PickEntSet.h"
|
|
|
|
extern double GetPipeOutDByDn(int nMaterial, double dDn);
|
|
|
|
CImpDrawGeneralSection::CImpDrawGeneralSection()
|
|
{
|
|
m_dRoadMidEle = 0.0;
|
|
m_dScaleX = 1.0;
|
|
m_dScaleY = 1.0;
|
|
}
|
|
|
|
bool CImpDrawGeneralSection::DrawSection()
|
|
{
|
|
PickSet ssNew(SS_FREE);
|
|
ssNew.IncludeBegin();
|
|
|
|
CDataContainer* mapData = new CDataContainer();
|
|
mapData->SetData(_T("Type"), 0);
|
|
mapData->SetData(_T("CutS"), m_ptS);
|
|
mapData->SetData(_T("CutE"), m_ptE);
|
|
mapData->SetData(_T("vtView"), m_vt);
|
|
mapData->SetData(_T("RoadEle"), m_dRoadMidEle);
|
|
mapData->SetData(_T("Number"), m_strNumber);
|
|
mapData->SetData(_T("ScaleX"), m_dScaleX);
|
|
mapData->SetData(_T("ScaleY"), m_dScaleY);
|
|
mapData->SetData(_T("RoadEld"), m_dRoadMidEle);
|
|
|
|
CDrawSectionSymbol draw;
|
|
draw.SetDataContainer(mapData);
|
|
|
|
AcDbPolyline *pOutLine = NULL;
|
|
AcDbVoidPtrArray arSplitLine, arSubPtr;
|
|
draw.DrawRoadway(pOutLine, arSplitLine, arSubPtr, false);
|
|
|
|
if (pOutLine != NULL)
|
|
{
|
|
GlobalFunc::AddToCurrentSpace(pOutLine, Adesk::kTrue);
|
|
}
|
|
|
|
for (int i = 0; i < arSplitLine.length(); i++)
|
|
{
|
|
AcDbEntity *pEnt = (AcDbEntity *)arSplitLine.at(i);
|
|
if (pEnt != NULL)
|
|
{
|
|
GlobalFunc::AddToCurrentSpace(pEnt, Adesk::kTrue);
|
|
}
|
|
}
|
|
|
|
for (i = 0; i < arSubPtr.length(); i++)
|
|
{
|
|
AcDbEntity *pEnt = (AcDbEntity *)arSubPtr.at(i);
|
|
if (pEnt != NULL)
|
|
{
|
|
GlobalFunc::AddToCurrentSpace(pEnt, Adesk::kTrue);
|
|
}
|
|
}
|
|
|
|
std::vector<AcDbObjectId>::iterator it;
|
|
for (it = m_idVecPipe.begin(); it != m_idVecPipe.end(); it++)
|
|
{
|
|
AcDbEntity *pEnt = NULL;
|
|
draw.DrawPipe(*it, pEnt);
|
|
if (pEnt != NULL)
|
|
{
|
|
GlobalFunc::AddToCurrentSpace(pEnt, Adesk::kTrue);
|
|
}
|
|
}
|
|
|
|
AcDbVoidPtrArray arPtr;
|
|
draw.DrawRoadDist(arPtr);
|
|
for (i = 0; i < arPtr.length(); i++)
|
|
{
|
|
AcDbEntity *pEnt = (AcDbEntity *)arPtr.at(i);
|
|
if (pEnt != NULL)
|
|
{
|
|
GlobalFunc::AddToCurrentSpace(pEnt, Adesk::kTrue);
|
|
}
|
|
}
|
|
|
|
ssNew.IncludeEnd();
|
|
|
|
XPoint ptIns, xp;
|
|
double x,y,z;
|
|
ssNew.Redraw(2);
|
|
ssNew.GetExtend(ptIns, &x, &y, &z);
|
|
|
|
ptIns = GlobalFunc::Wcs2Ucs(ptIns);
|
|
ptIns.z = 0;
|
|
int nRet = GlobalFunc::DragMovePickSet(ssNew, _T("\n请点取系统图位置<退出>: "), ptIns, xp);
|
|
if(nRet != RTNORM)
|
|
{
|
|
ssNew.Erase();
|
|
return false;
|
|
}
|
|
ssNew.Redraw(1);
|
|
|
|
acedUpdateDisplay();
|
|
actrTransactionManager->flushGraphics(); //acad 刷新
|
|
|
|
return true;
|
|
}
|