如何精确获取AcDbText文本串的长度?
如题可能是我表达的不清楚,我要的不是字符个数,而是图形的长度,类似WIN32 API 函数 GetTextExtentPoint32 获取输出文本图形的长度。
如图中所示,文本串“123456789”的长度就是起点和端点的坐标X的差(x2 - x1)
/************************************************************************
*函数名: getTextLength
*功能: 计算CAD中文字字符串长度的函数
*调用函数表:
*被调用函数表:
*输入参数: textId -- 字符串在CAD中的Id
*输出参数:
*返回值: CAD状态
*其他:
************************************************************************/
Acad::ErrorStatus getTextLength(AcDbObjectId textId,double& textLengh)
{
Acad::ErrorStatus es=Acad::eOk;
AcDbEntity *pEnt=NULL;
if((es=acdbOpenObject(pEnt,textId,AcDb::kForRead))!=Acad::eOk)
return es;
AcDbExtents Ext;
pEnt->getGeomExtents(Ext);
pEnt->close();
AcGePoint3d minPt,maxPt;
minPt = Ext.minPoint();
maxPt = Ext.maxPoint();
textLengh = acutDistance(asDblArray(minPt),asDblArray(maxPt));
return es;
}
谢谢楼上的!
这方法我已经试过,对大部分的文本是正确的。但有一些文本就不正确。不知道是什么原因。
角度不为0,就不能使用该方法。
页:
[1]