void CDrawCircle::OnBnClickedBtnSelectinfo()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
BeginEditorCommand();
AcDbObjectIdArray idarr;
bool b=CSelectUtil::SelectSomeEntityForBox(idarr, _T("\n选择需要提取的文字"));
if (!b)
{
return;
}
std::map<CString, AcGePoint3d> mapTextToPt;
int iNum = idarr.length();
for (int i = 0; i < iNum;i++)
{
AcDbObjectId idTemp = idarr[i];
AcDbEntity *pEnt = NULL;
Acad::ErrorStatus es;
es=acdbOpenAcDbEntity(pEnt, idTemp,AcDb::kForWrite);
if (es!=eOk)
{
continue;
}
if (!pEnt->isKindOf(AcDbText::desc()))
{
continue;
}
AcDbText *pText = AcDbText::cast(pEnt);
CString sText = pText->textString();
AcGePoint3d pt = pText->position();
mapTextToPt.insert(std::pair<CString, AcGePoint3d>(sText, pt));
pText->close();
}
std::vector<std::pair<CString, AcGePoint3d>> vecInfo(mapTextToPt.begin(), mapTextToPt.end());
std::sort(vecInfo.begin(), vecInfo.end(), [](const std::pair<CString, AcGePoint3d>&a, const std::pair<CString, AcGePoint3d>&b){return a.second.x<b.second.x; });
int iCount = 1;
for (size_t i = 0; i < vecInfo.size();i++)
{
CString sText = vecInfo[i].first;
switch (iCount)
{
case 1:
m_sNum1 = sText;
break;
case 2:
m_sNum2 = sText;
break;
case 3:
m_sNum3 = sText;
break;
case 4:
m_sNum4 = sText;
break;
case 5:
m_sNum5 = sText;
break;
case 6:
m_sNum6 = sText;
break;
case 7:
m_sNum7 = sText;
break;
case 8:
m_sNum8 = sText;
break;
case 9:
m_sNum9 = sText;
break;
case 10:
m_sNum10 = sText;
break;
case 11:
m_sNum11 = sText;
break;
case 12:
m_sNum12 = sText;
break;
case 13:
m_sNum13 = sText;
break;
case 14:
m_sNum14 = sText;
break;
default:
break;
}
iCount++;
}
CompleteEditorCommand(TRUE);
UpdateData(FALSE);
}