Files
envi-code/SourceCode/Code2026/Dimension/ImpDrawGeneralSection.cpp
T
2026-09-28 15:28:50 +08:00

108 lines
2.4 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;
}