15,979
社区成员
发帖
与我相关
我的任务
分享
typedef struct tagDXFLine
{
CPoint startPoint;
CPoint endPoint;
}DXFLINE;
typedef std::vector<tagDXFLine> CDXFLineList;
int TxtSize;
TxtSize=m_mDXFTxtList.size();//有多少个文字
int LineSize=0;
CDXFLineList tempDXFLineList;//保存临时的线条
m_mDXFTxtList.sort();
BOOL bAdd = FALSE;
list <tagDXFTxt>::iterator tempDXFTxtList;
DXFLINE srcLine;
m_myBufferList.clear();
//文字进行排序
for ( tempDXFTxtList = m_mDXFTxtList.begin();tempDXFTxtList != m_mDXFTxtList.end(); tempDXFTxtList++ )
{
CString test;
test.Format(_T("%d\n%sx:%d\ny:%d\n"),tempDXFTxtList->Num,tempDXFTxtList->TxtContents,tempDXFTxtList->point.x,tempDXFTxtList->point.y);
//AfxMessageBox(test);
tempDXFLineList.clear();
LineSize=m_myDXFLineList.size();//有多少条
for (int i=0;i<LineSize;i++)
{
if ((tempDXFTxtList->point ==m_myDXFLineList.at(i).startPoint))
{
srcLine.startPoint = m_myDXFLineList.at(i).startPoint;
srcLine.endPoint = m_myDXFLineList.at(i).endPoint;
tempDXFLineList.push_back(srcLine);
m_myDXFLineList.erase(m_myDXFLineList.begin()+i);
break;
}else if(tempDXFTxtList->point == m_myDXFLineList.at(i).endPoint)
{
srcLine.startPoint = m_myDXFLineList.at(i).endPoint;
srcLine.endPoint = m_myDXFLineList.at(i).startPoint;
tempDXFLineList.push_back(srcLine);
m_myDXFLineList.erase(m_myDXFLineList.begin()+i);
break;
}
}
//AfxMessageBox(_T("3"));
DWORD t1 = timeGetTime();
int LineCount=m_myDXFLineList.size();
for (int j=m_myDXFLineList.size()-1; j>=0; j--)
{
DXFLINE tempLine;
int x2=tempDXFLineList.at(tempDXFLineList.size()-1).endPoint.x;
int y2=tempDXFLineList.at(tempDXFLineList.size()-1).endPoint.y;
int x1= m_myDXFLineList.at(j).startPoint.x;
int y1= m_myDXFLineList.at(j).startPoint.y;
int endx1= m_myDXFLineList.at(j).endPoint.x;
int endy1= m_myDXFLineList.at(j).endPoint.y;
bAdd = FALSE;
if ((m_myDXFLineList.at(j).startPoint==tempDXFLineList.at(tempDXFLineList.size()-1).endPoint))
{
tempLine.startPoint=m_myDXFLineList.at(j).startPoint;
tempLine.endPoint=m_myDXFLineList.at(j).endPoint;
tempDXFLineList.push_back(tempLine);
m_myDXFLineList.erase(m_myDXFLineList.begin()+j);
bAdd = TRUE;
}else if (m_myDXFLineList.at(j).endPoint==tempDXFLineList.at(tempDXFLineList.size()-1).endPoint)
{
tempLine.startPoint=m_myDXFLineList.at(j).endPoint;
tempLine.endPoint=m_myDXFLineList.at(j).startPoint;
tempDXFLineList.push_back(tempLine);
m_myDXFLineList.erase(m_myDXFLineList.begin()+j);
bAdd = TRUE;
}
if (bAdd)
{
j=m_myDXFLineList.size();
}
}
m_myBufferList.push_back(tempDXFLineList);
DWORD t2 = timeGetTime();
double spend=(double)(t2-t1);
CString msg;
msg.Format(_T("运行完成,一共花费时间为:%d毫秒"),(int)spend);
// AfxMessageBox(msg);
}