獲取標注文字包圍盒簡單實例


標注文字處於標注塊中

		ads_point pt;
		ads_name ent;
		if (RTNORM != acedEntSel(_T("\n選擇一個標注"),ent,pt))
		{
			return;
		}
		AcDbObjectId objId;
		acdbGetObjectId(objId,ent);
		AcDbObjectPointer<AcDbDimension> pDim(objId,AcDb::kForRead);
		Acad::ErrorStatus es=pDim.openStatus();
		if (Acad::eOk != es)
		{
			acutPrintf(_T("\n錯誤碼= %s"),acadErrorStatusText(es));
			return;
		}
		AcDbObjectId blkdefId=pDim->dimBlockId();
		AcDbBlockTableRecordPointer pBlkRcd(blkdefId,AcDb::kForRead);
		es=pBlkRcd.openStatus();
		if (Acad::eOk != es)
		{
			acutPrintf(_T("\n錯誤碼= %s"),acadErrorStatusText(es));
				return;
		}
		AcDbBlockTableRecordIterator *pIter=NULL;
		es = pBlkRcd->newIterator(pIter);
		if (Acad::eOk != es ||  pIter==NULL)
		{
			acutPrintf(_T("\n錯誤碼= %s"),acadErrorStatusText(es));
			return;
		}
		AcDbExtents ext;
		bool bIsFind=false;
		for (pIter->start();!pIter->done();pIter->step())
		{
			AcDbObjectId entId;
			pIter->getEntityId(entId);
			AcDbEntityPointer pEnt(entId,AcDb::kForRead);
			if (pEnt->isKindOf(AcDbMText::desc()))
			{				
				es= pEnt->getGeomExtents(ext);
				if (Acad::eOk == es)
				{
					bIsFind=true;
				}
			}
		}
		if (bIsFind)
		{
			AcGePoint3d ptMin=ext.minPoint();
			AcGePoint3d ptMax=ext.maxPoint();
			acedCommand(RTSTR,_T("._RECTANG"),RTSTR,_T("_non"),RT3DPOINT,asDblArray(ptMin),RTSTR,_T("_non"),RT3DPOINT,asDblArray(ptMax),RTNONE);
			acutPrintf(_T("\n包圍盒((%0.4lf %0.4lf %0.4lf)(%0.4lf %0.4lf %0.4lf))"),ptMin.x,ptMin.y,ptMin.z,ptMax.x,ptMax.y,ptMax.z);
		}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM