Тема: Как узнать размер текста надписи на AcDbAlignedDimension?

Координаты точек получаю с помощью xLine1Point() и xLine2Point().
Затем вычисляю расстояние между точками (L).
Надо проконтролировать размер текста надписи: если он шире 0.8L или выше 0.5L, надо уменьшить соотв.образом.

Затык в том, что не могу получить размер.
fieldToMText() возвращает код 22, eKeyNotFound.

Как получить размер надписи?

Re: Как узнать размер текста надписи на AcDbAlignedDimension?

например, так:

Acad::ErrorStatus getTextGeomExtents(CString textStr, double textHeight, AcDbObjectId txtStyleId,double &txt_width, double &txt_height)
{
     Acad::ErrorStatus es;
    if(textStr.IsEmpty()) return Acad::eInvalidInput;
 
    AcGiTextStyle *pTextStyle=new AcGiTextStyle;
    if((es=fromAcDbTextStyle(*pTextStyle,txtStyleId))!=Acad::eOk)
        return es;
    pTextStyle->setTextSize(textHeight);
 
    AcGePoint2d extentsPoint2d=pTextStyle->extents(textStr.GetString(),false,_tcslen(textStr.GetString()),false,NULL);

    txt_width = extentsPoint2d.x;
    txt_height = extentsPoint2d.y;
 
    delete pTextStyle;
    return Acad::eOk;
}
//...
//...
//...
// в своей функции
CString textStr; // сама строка текста
double textHeight; // высота текста
AcDbObjectId txtStyleId; // id текстового стиля текущего текста

AcGePoint2d ptSize;
Acad::ErrorStatus es = getTextGeomExtents(textStr, textHeight, txtStyleId,ptSize.x,ptSize.y);
acutPrintf(_T("\nШирина текст: \t<%f>."), ptSize.x); 
acutPrintf(L"\nВысота текста: \t<%f>.", ptSize.y); 


это нужно получить из твоего объекта AcDbAlignedDimension
textStr - это сама надпись
textHeight - высота этой самой надписи в единицах чертежа
txtStyleId - id текстового стиля текущего текста

Re: Как узнать размер текста надписи на AcDbAlignedDimension?

Спасибо, помогло.