简单代码 void ChangeText() { ads_name entText; ads_point ptSel; if(ads_entsel(_T("\n请选择文字内容样本:"),entText,ptSel) != RTNORM) return; AcDbObjectId idText; Acad::ErrorStatus es = acdbGetObjectId(idText,entText); if (es != Acad::eOk) return; AcDbEntity * pEnt = NULL; acdbOpenAcDbEntity(pEnt,idText,AcDb::kForWrite); if (!pEnt) return; if (!pEnt->isKindOf(AcDbText::desc())) { pEnt->close(); return; } AcDbText * pText = (AcDbText*)pEnt; CString strTextCon = pText->textString(); pEnt->close(); ads_name entChange; //只要acdbText struct resbuf * out = ads_buildlist(RTDXF0,"TEXT",0); ads_printf(_T("\n选择要替换内容的文字")); if(ads_ssget(NULL,NULL,NULL,out,entChange)!=RTNORM) { ads_relrb(out); return; } //遍历选择集,替换内容 long nNums = 0; ads_sslength(entChange,&nNums); int i = 0; for (;i < nNums;i++) { ads_name curEnt; ads_ssname(entChange,i,curEnt); AcDbObjectId curID; es = acdbGetObjectId(curID,curEnt); if (es != Acad::eOk) continue; AcDbText * pCurText = NULL; acdbOpenAcDbEntity((AcDbEntity*&)pText,curID,AcDb::kForWrite); if (!pText) continue; pText->setTextString(strTextCon); pText->close(); } ads_relrb(out); ads_ssfree(entChange); } |