comet_h 发表于 2005-11-15 09:59:00

如何精确获取AcDbText文本串的长度?

如题

pglyxq 发表于 2005-11-15 22:52:00

可能是我表达的不清楚,我要的不是字符个数,而是图形的长度,类似WIN32 API 函数 GetTextExtentPoint32 获取输出文本图形的长度。

comet_h 发表于 2005-11-16 11:33:00

如图中所示,文本串“123456789”的长度就是起点和端点的坐标X的差(x2 - x1)


pglyxq 发表于 2005-11-16 12:14:00

/************************************************************************
    *函数名:       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;
}

comet_h 发表于 2005-11-16 15:02:00

谢谢楼上的!
这方法我已经试过,对大部分的文本是正确的。但有一些文本就不正确。不知道是什么原因。

missyou 发表于 2005-11-16 17:12:00

角度不为0,就不能使用该方法。
页: [1]
查看完整版本: 如何精确获取AcDbText文本串的长度?